)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4bbfa7f23ca6ce9d0a3bda191ee165fb66cb10d5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-03-13 13:15:24 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Dragonflow interoperablity with neutron openvswitch agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I6f9a2968ffaae366c0f0a30556085c4f50587cbf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a30ddce_8e7a7222","line":8,"updated":"2017-03-14 06:04:41.000000000","message":"bp/bug link? Please make sure to add bp to explain the feature","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"}],"dragonflow/cli/df_db.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"32a3f027445615d5236ee48a1219871abd78ebd9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"db_tables \u003d ("},{"line_number":27,"context_line":"    list(models.table_class_mapping) +"},{"line_number":28,"context_line":"    list(model_framework.iter_tables()) +"},{"line_number":29,"context_line":"    [\u0027unique_key\u0027, \u0027portstats\u0027, \u0027chassis\u0027]"},{"line_number":30,"context_line":")"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_8e2352bc","line":29,"range":{"start_line":29,"start_character":33,"end_line":29,"end_character":40},"updated":"2017-03-13 12:26:11.000000000","message":"This is an unrelated change\nWe need to modify df_db utility to import all the relevant modules so the models get registered.","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"}],"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":14249,"name":"Lionel Zerbib","email":"ariel.zerbib@gmail.com","username":"lionelz"},"change_message_id":"9c0e14a6ebbebec23c61f301ccce233cbd3ab4f9","unresolved":false,"context_lines":[{"line_number":532,"context_line":"            self.db_store2.update(c)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        old_chassis \u003d self.db_store2.get_one("},{"line_number":535,"context_line":"            core_models.Chassis(id\u003dself.chassis_name))"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        chassis \u003d core.Chassis("},{"line_number":538,"context_line":"            controller\u003d\u0027dragonflow\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_380b8c7e","line":535,"range":{"start_line":535,"start_character":12,"end_line":535,"end_character":23},"updated":"2017-03-13 11:28:33.000000000","message":"Why core is replaced by core_models?","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"32a3f027445615d5236ee48a1219871abd78ebd9","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            core_models.Chassis(id\u003dself.chassis_name))"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        chassis \u003d core.Chassis("},{"line_number":538,"context_line":"            controller\u003d\u0027dragonflow\u0027,"},{"line_number":539,"context_line":"            id\u003dself.chassis_name,"},{"line_number":540,"context_line":"            ip\u003dself.ip,"},{"line_number":541,"context_line":"            tunnel_types\u003dself.tunnel_types,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_497eb46a","line":538,"range":{"start_line":538,"start_character":24,"end_line":538,"end_character":34},"updated":"2017-03-13 12:26:11.000000000","message":"I think this should be both more specific (e.g. df-local-controller), and made a constant so we can access the same value in mech driver.","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"d90a48de311a69eee973337af8c9e705b4ffefc2","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            core.Chassis(id\u003dself.chassis_name))"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        chassis \u003d core.Chassis("},{"line_number":537,"context_line":"            controller\u003dconstants.DRAGONFLOW_LABEL,"},{"line_number":538,"context_line":"            id\u003dself.chassis_name,"},{"line_number":539,"context_line":"            ip\u003dself.ip,"},{"line_number":540,"context_line":"            tunnel_types\u003dself.tunnel_types,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_a01e0861","line":537,"range":{"start_line":537,"start_character":33,"end_line":537,"end_character":49},"updated":"2017-03-19 14:58:29.000000000","message":"Is DRAGONFLOW_AGENT_NAME better? Because you use agent_name in the alien chassis registration.","commit_id":"155e4fd67b46a427f887f0268b1d4a2655da3ce9"}],"dragonflow/db/neutron/lockedobjects_db.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"32a3f027445615d5236ee48a1219871abd78ebd9","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        lock_id \u003d args[1][\u0027security_group_id\u0027]"},{"line_number":115,"context_line":"    elif RESOURCE_QOS \u003d\u003d resource_type:"},{"line_number":116,"context_line":"        lock_id \u003d args[0][2][\u0027id\u0027]"},{"line_number":117,"context_line":"    elif RESOURCE_ALLIEN_CHASSIS \u003d\u003d resource_type:"},{"line_number":118,"context_line":"        lock_id \u003d args[0][2]"},{"line_number":119,"context_line":"    elif RESOURCE_NEUTRON_LISTENER \u003d\u003d resource_type:"},{"line_number":120,"context_line":"        # The db model of lock is uuid of 36 chars, but the neutron listener"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_6928d89a","line":117,"range":{"start_line":117,"start_character":18,"end_line":117,"end_character":25},"updated":"2017-03-13 12:26:11.000000000","message":"What does this mean?","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"d90a48de311a69eee973337af8c9e705b4ffefc2","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    elif RESOURCE_QOS \u003d\u003d resource_type:"},{"line_number":116,"context_line":"        lock_id \u003d args[0][2][\u0027id\u0027]"},{"line_number":117,"context_line":"    elif RESOURCE_ALIEN_CHASSIS \u003d\u003d resource_type:"},{"line_number":118,"context_line":"        lock_id \u003d args[0][2]"},{"line_number":119,"context_line":"    elif RESOURCE_NEUTRON_LISTENER \u003d\u003d resource_type:"},{"line_number":120,"context_line":"        # The db model of lock is uuid of 36 chars, but the neutron listener"},{"line_number":121,"context_line":"        # uses hostname as lock-id, so we need to truncate it."}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_200a1822","line":118,"range":{"start_line":118,"start_character":18,"end_line":118,"end_character":28},"updated":"2017-03-19 14:58:29.000000000","message":"Please add some comment about which parameter is used as lock-id.","commit_id":"155e4fd67b46a427f887f0268b1d4a2655da3ce9"}],"dragonflow/neutron/ml2/mech_driver.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"32a3f027445615d5236ee48a1219871abd78ebd9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from dragonflow import conf as cfg"},{"line_number":35,"context_line":"from dragonflow.db import api_nb"},{"line_number":36,"context_line":"from dragonflow.db import db_store2"},{"line_number":37,"context_line":"from dragonflow.db.models import core_models"},{"line_number":38,"context_line":"from dragonflow.db.neutron import lockedobjects_db as lock_db"},{"line_number":39,"context_line":"from dragonflow.neutron.common import constants as df_const"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_89db4c7b","line":37,"range":{"start_line":37,"start_character":33,"end_line":37,"end_character":44},"updated":"2017-03-13 12:26:11.000000000","message":"renamed","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"32a3f027445615d5236ee48a1219871abd78ebd9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def initialize(self):"},{"line_number":59,"context_line":"        LOG.info(_LI(\"Starting DFMechDriver\"))"},{"line_number":60,"context_line":"        self.nb_api \u003d None"},{"line_number":61,"context_line":"        db_store2.get_instance()"},{"line_number":62,"context_line":"        self.db_store2 \u003d db_store2.get_instance()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # When set to True, Nova plugs the VIF directly into the ovs bridge"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_69c7f895","line":61,"range":{"start_line":61,"start_character":7,"end_line":61,"end_character":32},"updated":"2017-03-13 12:26:11.000000000","message":"Not needed","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"32a3f027445615d5236ee48a1219871abd78ebd9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":110,"context_line":"                           resources.AGENT,"},{"line_number":111,"context_line":"                           events.AFTER_CREATE)"},{"line_number":112,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":113,"context_line":"                           resources.AGENT,"},{"line_number":114,"context_line":"                           events.AFTER_UPDATE)"},{"line_number":115,"context_line":"        registry.subscribe(self.process_agent_remove,"},{"line_number":116,"context_line":"                           resources.AGENT,"},{"line_number":117,"context_line":"                           events.BEFORE_DELETE)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_a9a9f025","line":114,"range":{"start_line":112,"start_character":0,"end_line":114,"end_character":47},"updated":"2017-03-13 12:26:11.000000000","message":"I think this means that we\u0027re deleting and updating twice for each operation, I think we only need to register to AFTER_*","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"3a667977ad98c2db635f9ccb06c1e6918d5291cd","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":110,"context_line":"                           resources.AGENT,"},{"line_number":111,"context_line":"                           events.AFTER_CREATE)"},{"line_number":112,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":113,"context_line":"                           resources.AGENT,"},{"line_number":114,"context_line":"                           events.AFTER_UPDATE)"},{"line_number":115,"context_line":"        registry.subscribe(self.process_agent_remove,"},{"line_number":116,"context_line":"                           resources.AGENT,"},{"line_number":117,"context_line":"                           events.BEFORE_DELETE)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a22e58a_daf25106","line":114,"range":{"start_line":112,"start_character":0,"end_line":114,"end_character":47},"in_reply_to":"9a30ddce_a9a9f025","updated":"2017-03-14 09:06:11.000000000","message":"Sorry, I accidentally though first 2 are BEFORE/AFTER update. This applies only to delete","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"32a3f027445615d5236ee48a1219871abd78ebd9","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        if cfg.CONF.df.networking_interop:"},{"line_number":106,"context_line":"            self._subscribe_for_agent_events()"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _subscribe_for_agent_events(self):"},{"line_number":109,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":110,"context_line":"                           resources.AGENT,"},{"line_number":111,"context_line":"                           events.AFTER_CREATE)"},{"line_number":112,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":113,"context_line":"                           resources.AGENT,"},{"line_number":114,"context_line":"                           events.AFTER_UPDATE)"},{"line_number":115,"context_line":"        registry.subscribe(self.process_agent_remove,"},{"line_number":116,"context_line":"                           resources.AGENT,"},{"line_number":117,"context_line":"                           events.BEFORE_DELETE)"},{"line_number":118,"context_line":"        registry.subscribe(self.process_agent_remove,"},{"line_number":119,"context_line":"                           resources.AGENT,"},{"line_number":120,"context_line":"                           events.AFTER_DELETE)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_ALLIEN_CHASSIS)"},{"line_number":123,"context_line":"    def process_agent_update(self, resource, event, trigger, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_893d0c2d","line":120,"range":{"start_line":108,"start_character":0,"end_line":120,"end_character":47},"updated":"2017-03-13 12:26:11.000000000","message":"How do we enable other SDN controllers to interop with us? Don\u0027t we need to add our chassis objects as agents in neutron for other implementations to use?","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"7c4cf264aa7ac81fdc875c4d6a54f34ed20b156b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        if cfg.CONF.df.networking_interop:"},{"line_number":106,"context_line":"            self._subscribe_for_agent_events()"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def _subscribe_for_agent_events(self):"},{"line_number":109,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":110,"context_line":"                           resources.AGENT,"},{"line_number":111,"context_line":"                           events.AFTER_CREATE)"},{"line_number":112,"context_line":"        registry.subscribe(self.process_agent_update,"},{"line_number":113,"context_line":"                           resources.AGENT,"},{"line_number":114,"context_line":"                           events.AFTER_UPDATE)"},{"line_number":115,"context_line":"        registry.subscribe(self.process_agent_remove,"},{"line_number":116,"context_line":"                           resources.AGENT,"},{"line_number":117,"context_line":"                           events.BEFORE_DELETE)"},{"line_number":118,"context_line":"        registry.subscribe(self.process_agent_remove,"},{"line_number":119,"context_line":"                           resources.AGENT,"},{"line_number":120,"context_line":"                           events.AFTER_DELETE)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_ALLIEN_CHASSIS)"},{"line_number":123,"context_line":"    def process_agent_update(self, resource, event, trigger, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_01e730ac","line":120,"range":{"start_line":108,"start_character":0,"end_line":120,"end_character":47},"in_reply_to":"9a30ddce_893d0c2d","updated":"2017-03-13 14:11:28.000000000","message":"Yes","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":14249,"name":"Lionel Zerbib","email":"ariel.zerbib@gmail.com","username":"lionelz"},"change_message_id":"9c0e14a6ebbebec23c61f301ccce233cbd3ab4f9","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_ALLIEN_CHASSIS)"},{"line_number":150,"context_line":"    def process_agent_remove(self, resource, event, trigger, **kwargs):"},{"line_number":151,"context_line":"        agent_name \u003d kwargs[\u0027agent\u0027].get(\u0027binary\u0027).encode(\u0027ascii\u0027, \u0027ignore\u0027)"},{"line_number":152,"context_line":"        if agent_name not in cfg.CONF.df.interop_networking_types:"},{"line_number":153,"context_line":"            return"},{"line_number":154,"context_line":"        compute_host \u003d kwargs[\u0027host\u0027]"},{"line_number":155,"context_line":"        self.nb_api.delete(id\u003dcompute_host)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_f8c9f426","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":26},"updated":"2017-03-13 11:28:33.000000000","message":"Should we check the agent_name for the delete action?","commit_id":"09a0b6ec5e1a9470163decc3e17d79f2a114693a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ce2877485aa9c1e7c91d6012b74b08dade175e4f","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_ALIEN_CHASSIS)"},{"line_number":119,"context_line":"    def process_agent_update(self, resource, event, trigger, **kwargs):"},{"line_number":120,"context_line":"        agent_name \u003d kwargs[\u0027agent\u0027].get(\u0027binary\u0027).encode(\u0027ascii\u0027, \u0027ignore\u0027)"},{"line_number":121,"context_line":"        if agent_name not in cfg.CONF.df.interop_networking_types:"},{"line_number":122,"context_line":"            return"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        compute_host \u003d kwargs[\u0027host\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_4e46ed7e","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":66},"updated":"2017-03-27 01:54:53.000000000","message":"Is it better to use the agent_type attribute of agent to distinguish agents? There are already agent type constants in neutron-lib.\n\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/constants.py#L100-L109","commit_id":"155e4fd67b46a427f887f0268b1d4a2655da3ce9"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ce2877485aa9c1e7c91d6012b74b08dade175e4f","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            return"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        compute_host \u003d kwargs[\u0027host\u0027]"},{"line_number":125,"context_line":"        tunneling_ip \u003d kwargs[\u0027agent\u0027][u\u0027configurations\u0027][u\u0027tunneling_ip\u0027]"},{"line_number":126,"context_line":"        tunnel_types \u003d kwargs[\u0027agent\u0027][u\u0027configurations\u0027][u\u0027tunnel_types\u0027]"},{"line_number":127,"context_line":"        for compute in self.nb_api.get_all(core.Chassis):"},{"line_number":128,"context_line":"            self.db_store2.update(compute)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_8e31950e","line":125,"range":{"start_line":125,"start_character":39,"end_line":125,"end_character":41},"updated":"2017-03-27 01:54:53.000000000","message":"Is the unicode prefix \u0027u\u0027 required here?","commit_id":"155e4fd67b46a427f887f0268b1d4a2655da3ce9"}]}
