def show_query(cloud_name, type_name, qry): data = [] fields = list(model.get_model(type_name).get_schema().fields.keys()) with model.Session() as session: for r in query.Query({type_name: [qry]}).search(session, cloud_name): data.append([str(getattr(r, f)) for f in fields]) return fields, data
def show_query(cloud_name, type_name, qry): data = [] fields = model.get_model(type_name).get_schema().fields.keys() with model.Session() as session: for r in query.Query({type_name: [qry]}).search(session, cloud_name): data.append([str(getattr(r, f)) for f in fields]) return fields, data
def get_objects(self, model_name, exclude_objects=None): klass = model.get_model(model_name) with model.Session() as session: for obj in self.migration.query.search(session, self.src_cloud, klass): if (obj.find_link(self.dst_cloud) or (exclude_objects is not None and obj.object_id in exclude_objects)): continue yield obj
def _deserialize(obj_dict): if not isinstance(obj_dict, dict): return obj_dict if 'type' not in obj_dict: return obj_dict try: model_cls = model.get_model(obj_dict['type']) except ImportError: return obj_dict if not issubclass(model_cls, model.Model): return obj_dict return model_cls.load(obj_dict['object'])
def check_override_rules(self, data): overrides = data['overrides'] for object_type, ovr in list(overrides.items()): try: model_cls = model.get_model(object_type) except ImportError: raise marshmallow.ValidationError( 'Invalid object type "{0}"'.format(object_type)) schema = model_cls.schema_class() for attribute, _ in list(ovr.items()): if attribute not in schema.fields: raise marshmallow.ValidationError( 'Invalid override rule: "{0}" schema don\'t have ' '"{1}" attribute.'.format(object_type, attribute))
def __init__(self, source, destination, objects, migration_flow_factories, overrides, **kwargs): self.source = source self.destination = destination self.query = query.Query(objects) self.migration_flow_factories = {} # Migration logic can be extended through migration_flow_factories # migration parameter for factory_class in migration_flow_factories: migrated_class = factory_class.migrated_class self.migration_flow_factories[migrated_class] = factory_class self.overrides = {model.get_model(k): v for k, v in overrides.items()} super(Migration, self).__init__(objects=objects, **kwargs)
def __init__(self, query): """ Accept dict as specified in configuration, compile all the JMESPath queries, and store it as internal immutable state. :param query: query dictionary """ assert isinstance(query, dict) self.queries = {} for type_name, subqueries in query.items(): cls = model.get_model(type_name) for subquery in subqueries: if isinstance(subquery, basestring): subquery = jmespath.compile(subquery) else: subquery = DictSubQuery(subquery) cls_queries = self.queries.setdefault(cls, []) cls_queries.append(subquery)
def __init__(self, query): """ Accept dict as specified in configuration, compile all the JMESPath queries, and store it as internal immutable state. :param query: query dictionary """ assert isinstance(query, dict) self.queries = {} for type_name, subqueries in list(query.items()): cls = model.get_model(type_name) for subquery in subqueries: if isinstance(subquery, str): subquery = jmespath.compile(subquery) else: subquery = DictSubQuery(subquery) cls_queries = self.queries.setdefault(cls, []) cls_queries.append(subquery)