Exemple #1
0
 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)
Exemple #5
0
 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),
             ), )
Exemple #7
0
 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())
Exemple #8
0
    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()
Exemple #9
0
    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)