def test_hierarchical_dependency(self): sorted_models = mf.iter_models_by_dependency_order() self.assertLess( sorted_models.index(ReffedModel), sorted_models.index(ReffingModel3) ) self.assertIn(ReffedModel, ReffingModel3.dependencies())
def _register_models(self): for model in model_framework.iter_models_by_dependency_order(): # FIXME (dimak) do not register topicless models for now if issubclass(model, mixins.Topic): df_db_objects_refresh.add_refresher( df_db_objects_refresh.DfObjectRefresher( model.__name__, functools.partial(self.db_store2.get_keys_by_topic, model), functools.partial(self.nb_api.get_all, model), self.update, functools.partial(self.delete_by_id, model), ), ) if (self.enable_db_consistency and issubclass(model, mixins.Version)): # Register only versioned models for now self.db_consistency_manager.add_handler( db_consistent.ModelHandler.create_using_controller( model, self, ), ) self._register_legacy_model_refreshers() self._register_legacy_model_consistency_handlers()
def _register_models(self): for model in model_framework.iter_models_by_dependency_order(): # FIXME (dimak) generalize sync to support non-northbound models # Adding OvsPort will cause sync to delete all OVS ports # periodically if model == ovs.OvsPort: continue self._sync.add_model(model)
def _register_models(self): #注册要同步的model ignore_models = self.switch_backend.sync_ignore_models() for model in model_framework.iter_models_by_dependency_order(): # FIXME (dimak) generalize sync to support non-northbound models if model not in ignore_models: #指明要同步的model self._sync.add_model(model)
def test_topological_sort(self): sorted_models = mf.iter_models_by_dependency_order( first_class_only=False, ) self.assertLess(sorted_models.index(ReffedModel), sorted_models.index(ReffingModel)) self.assertLess(sorted_models.index(ReffingModel), sorted_models.index(ReffingModel2)) self.assertLess(sorted_models.index(ReffingModel), sorted_models.index(ListReffingModel))
def register_bgp_models(self): for model in model_framework.iter_models_by_dependency_order(): df_db_objects_refresh.add_refresher( df_db_objects_refresh.DfObjectRefresher( model.__name__, functools.partial(self.db_store.get_keys_by_topic, model), functools.partial(self.nb_api.get_all, model), self.update_model_object, functools.partial(self.delete_model_object, model), ), )
def test_hierarchical_dependency_not_first_class(self): sorted_models = mf.iter_models_by_dependency_order( first_class_only=False) self.assertLess( sorted_models.index(ReffedModel), sorted_models.index(ReffingNonFirstClassModel) ) self.assertLess( sorted_models.index(ReffingNonFirstClassModel), sorted_models.index(ReffingModel3) ) self.assertIn(ReffedModel, ReffingModel3.dependencies())
def parse_models(self): """Iterates over the models and processes them with the printer This method iterates over all the models in the schema, sends them for processing and then, makes sure the unknown models are also handled """ self._printer.output_start() for model in model_framework.iter_models_by_dependency_order(False): self._process_model(model) # Handle unvisited models remaining_models = self._all_models - self._processed_models for model in remaining_models: self._process_unvisited_model(model) self._printer.output_end()
def test_loop_detection_with_ref_to_embedded(self): with clean_registry(): @mf.construct_nb_db_model class EmbeddedModel(mf.ModelBase): pass @mf.register_model @mf.construct_nb_db_model class EmbeddingModel(mf.ModelBase): table_name = '1' link = fields.EmbeddedField('EmbeddedModel') @mf.register_model @mf.construct_nb_db_model class ReferencingModel(mf.ModelBase): table_name = '2' link = df_fields.ReferenceField('EmbeddedModel') sorted_models = mf.iter_models_by_dependency_order( first_class_only=True, ) self.assertItemsEqual([EmbeddingModel, ReferencingModel], sorted_models)
def _register_models(self): for model in model_framework.iter_models_by_dependency_order(): self._sync.add_model(model)