)]}'
{"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d22d28f985f9246d5d8df11b26f97787dc7fcb7","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                self.open_flow_app.register_model(model)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            # FIXME do not register topicless models for now"},{"line_number":134,"context_line":"            if issubclass(model, models2.TopicMixin):"},{"line_number":135,"context_line":"                df_db_objects_refresh.add_refresher("},{"line_number":136,"context_line":"                    df_db_objects_refresh.DfObjectRefresher("},{"line_number":137,"context_line":"                        model.__name__,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_aa28ea86","line":134,"updated":"2017-02-01 10:13:30.000000000","message":"maybe log message if model without topic was attepted to be registered","commit_id":"b39388ba2bffdc0321d344526645f12f4836183b"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a7cdb9c82576f5cb2e898ee5b39bd03e9b6f16c8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                self.open_flow_app.register_model(model)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            # FIXME do not register topicless models for now"},{"line_number":134,"context_line":"            if issubclass(model, models2.TopicMixin):"},{"line_number":135,"context_line":"                df_db_objects_refresh.add_refresher("},{"line_number":136,"context_line":"                    df_db_objects_refresh.DfObjectRefresher("},{"line_number":137,"context_line":"                        model.__name__,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_b00f492d","line":134,"in_reply_to":"3a461143_aa28ea86","updated":"2017-02-02 11:43:47.000000000","message":"I don\u0027t think its needed, we attempt to register all models here and its natural some will be topic-less.\n\nIn the future we\u0027ll have to adapt df object refresher to support both models bound to a specific topic or models that are system-wide","commit_id":"b39388ba2bffdc0321d344526645f12f4836183b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"fd11f5bfd369c532924d9dcfb323865ecb3b47c2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.vswitch_api.set_controller_fail_mode("},{"line_number":121,"context_line":"                self.integration_bridge, \u0027secure\u0027)"},{"line_number":122,"context_line":"        self.open_flow_app.start()"},{"line_number":123,"context_line":"        self._register_models()"},{"line_number":124,"context_line":"        self.create_tunnels()"},{"line_number":125,"context_line":"        df_db_objects_refresh.initialize_object_refreshers(self)"},{"line_number":126,"context_line":"        self.db_sync_loop()"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a430d35_83bbdbc3","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":31},"updated":"2017-02-04 21:05:38.000000000","message":"Is it possible events from nb_api/pubsub will start coming in before this is done?","commit_id":"e9c094a4ab8664d74442dd897c1b57683709cebd"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"b1b8b03ef508b43897339bceb3d7ab4d0ca4d229","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self.vswitch_api.set_controller_fail_mode("},{"line_number":121,"context_line":"                self.integration_bridge, \u0027secure\u0027)"},{"line_number":122,"context_line":"        self.open_flow_app.start()"},{"line_number":123,"context_line":"        self._register_models()"},{"line_number":124,"context_line":"        self.create_tunnels()"},{"line_number":125,"context_line":"        df_db_objects_refresh.initialize_object_refreshers(self)"},{"line_number":126,"context_line":"        self.db_sync_loop()"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a430d35_4f04b27d","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":31},"in_reply_to":"1a430d35_83bbdbc3","updated":"2017-02-05 06:42:03.000000000","message":"It can happen and then it won\u0027t get dispatched to the apps, but apps are not loaded until L122 so the events won\u0027t get treated anyway if we\u0027ll move it up.","commit_id":"e9c094a4ab8664d74442dd897c1b57683709cebd"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"fd11f5bfd369c532924d9dcfb323865ecb3b47c2","unresolved":false,"context_lines":[{"line_number":589,"context_line":"    def _is_newer(self, obj, cached_obj):"},{"line_number":590,"context_line":"        try:"},{"line_number":591,"context_line":"            return obj.is_newer_than(cached_obj)"},{"line_number":592,"context_line":"        except AttributeError:"},{"line_number":593,"context_line":"            return True"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def update_model_object(self, obj):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a430d35_e3cadf4e","line":592,"range":{"start_line":592,"start_character":0,"end_line":592,"end_character":30},"updated":"2017-02-04 21:05:38.000000000","message":"When can this happen?","commit_id":"e9c094a4ab8664d74442dd897c1b57683709cebd"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"b1b8b03ef508b43897339bceb3d7ab4d0ca4d229","unresolved":false,"context_lines":[{"line_number":589,"context_line":"    def _is_newer(self, obj, cached_obj):"},{"line_number":590,"context_line":"        try:"},{"line_number":591,"context_line":"            return obj.is_newer_than(cached_obj)"},{"line_number":592,"context_line":"        except AttributeError:"},{"line_number":593,"context_line":"            return True"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def update_model_object(self, obj):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a430d35_0fdc6a11","line":592,"range":{"start_line":592,"start_character":0,"end_line":592,"end_character":30},"in_reply_to":"1a430d35_e3cadf4e","updated":"2017-02-05 06:42:03.000000000","message":"When an object doesn\u0027t have a version/revision field (e.g. Chassis, SFC types)","commit_id":"e9c094a4ab8664d74442dd897c1b57683709cebd"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"864c412a143f930b5ce3c148216f9f06667a2709","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self._register_old_model_refreshers()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        for model in model_framework.iter_models():"},{"line_number":183,"context_line":"            # FIXME do not register topicless models for now"},{"line_number":184,"context_line":"            if issubclass(model, mixins.Topic):"},{"line_number":185,"context_line":"                df_db_objects_refresh.add_refresher("},{"line_number":186,"context_line":"                    df_db_objects_refresh.DfObjectRefresher("}],"source_content_type":"text/x-python","patch_set":34,"id":"da36d5c6_fd02860a","line":183,"updated":"2017-02-28 13:22:45.000000000","message":"Add your name to the FIXME","commit_id":"eadb1cb3792548ce4ab84a949b9a8dfdd5b7cb89"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"900c49566d59701d28b34aca02f3901486c5b075","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self._register_old_model_refreshers()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        for model in model_framework.iter_models():"},{"line_number":183,"context_line":"            # FIXME do not register topicless models for now"},{"line_number":184,"context_line":"            if issubclass(model, mixins.Topic):"},{"line_number":185,"context_line":"                df_db_objects_refresh.add_refresher("},{"line_number":186,"context_line":"                    df_db_objects_refresh.DfObjectRefresher("}],"source_content_type":"text/x-python","patch_set":34,"id":"ba2be162_212b1d84","line":183,"in_reply_to":"da36d5c6_fd02860a","updated":"2017-03-01 09:30:03.000000000","message":"Done","commit_id":"eadb1cb3792548ce4ab84a949b9a8dfdd5b7cb89"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"864c412a143f930b5ce3c148216f9f06667a2709","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                        functools.partial(self.delete_by_id, model),"},{"line_number":193,"context_line":"                    ),"},{"line_number":194,"context_line":"                )"},{"line_number":195,"context_line":"            # FIXME add db_consistency for new models here"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def db_sync_loop(self):"},{"line_number":198,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":34,"id":"da36d5c6_18fe8805","line":195,"updated":"2017-02-28 13:22:45.000000000","message":"Same here","commit_id":"eadb1cb3792548ce4ab84a949b9a8dfdd5b7cb89"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"900c49566d59701d28b34aca02f3901486c5b075","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                        functools.partial(self.delete_by_id, model),"},{"line_number":193,"context_line":"                    ),"},{"line_number":194,"context_line":"                )"},{"line_number":195,"context_line":"            # FIXME add db_consistency for new models here"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def db_sync_loop(self):"},{"line_number":198,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba2be162_012619ba","line":195,"in_reply_to":"da36d5c6_18fe8805","updated":"2017-03-01 09:30:03.000000000","message":"Done","commit_id":"eadb1cb3792548ce4ab84a949b9a8dfdd5b7cb89"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"864c412a143f930b5ce3c148216f9f06667a2709","unresolved":false,"context_lines":[{"line_number":630,"context_line":"    def _is_newer(self, obj, cached_obj):"},{"line_number":631,"context_line":"        try:"},{"line_number":632,"context_line":"            return obj.is_newer_than(cached_obj)"},{"line_number":633,"context_line":"        except AttributeError:"},{"line_number":634,"context_line":"            return True"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def update_model_object(self, obj):"}],"source_content_type":"text/x-python","patch_set":34,"id":"da36d5c6_f830d4ea","line":633,"updated":"2017-02-28 13:22:45.000000000","message":"When can this happen?\n\nThis method needs a docstring.","commit_id":"eadb1cb3792548ce4ab84a949b9a8dfdd5b7cb89"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"900c49566d59701d28b34aca02f3901486c5b075","unresolved":false,"context_lines":[{"line_number":630,"context_line":"    def _is_newer(self, obj, cached_obj):"},{"line_number":631,"context_line":"        try:"},{"line_number":632,"context_line":"            return obj.is_newer_than(cached_obj)"},{"line_number":633,"context_line":"        except AttributeError:"},{"line_number":634,"context_line":"            return True"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def update_model_object(self, obj):"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba2be162_c14b2158","line":633,"in_reply_to":"da36d5c6_f830d4ea","updated":"2017-03-01 09:30:03.000000000","message":"When our class is not a subtype of Version mixin, (then we assume the just-received object is always newer than the cached one). Added this to docstring.","commit_id":"eadb1cb3792548ce4ab84a949b9a8dfdd5b7cb89"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"175350632619b248b2e0574d2766962471cc090b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    def _register_models(self):"},{"line_number":182,"context_line":"        self._register_legacy_model_refreshers()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        for model in model_framework.iter_models():"},{"line_number":185,"context_line":"            # FIXME (dimak) do not register topicless models for now"},{"line_number":186,"context_line":"            if issubclass(model, mixins.Topic):"},{"line_number":187,"context_line":"                df_db_objects_refresh.add_refresher("}],"source_content_type":"text/x-python","patch_set":35,"id":"ba2be162_cb023709","line":184,"range":{"start_line":184,"start_character":0,"end_line":184,"end_character":51},"updated":"2017-03-02 01:13:52.000000000","message":"The order of DfObjectRefresher for each resource matters(e.g. router and floatingip should come after ports). How would you make sure they show up in expected order?","commit_id":"d3330ff2628bb853eaeb8544d1fd71150000c6d9"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"aa66810eec9f214eb7b31f182000581d78ca9b9d","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    def _register_models(self):"},{"line_number":182,"context_line":"        self._register_legacy_model_refreshers()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        for model in model_framework.iter_models():"},{"line_number":185,"context_line":"            # FIXME (dimak) do not register topicless models for now"},{"line_number":186,"context_line":"            if issubclass(model, mixins.Topic):"},{"line_number":187,"context_line":"                df_db_objects_refresh.add_refresher("}],"source_content_type":"text/x-python","patch_set":35,"id":"ba2be162_0c937ba4","line":184,"range":{"start_line":184,"start_character":0,"end_line":184,"end_character":51},"in_reply_to":"ba2be162_cb023709","updated":"2017-03-02 08:18:19.000000000","message":"A later patch adds iteration method that detects dependencies and performs a topological sort:\n\nhttps://review.openstack.org/#/c/436065/13","commit_id":"d3330ff2628bb853eaeb8544d1fd71150000c6d9"}]}
