)]}'
{"dragonflow/neutron/ml2/mech_driver.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"63c4b067a953c70b5932f93a935e0e7d55dca464","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.vif_type \u003d portbindings.VIF_TYPE_OVS"},{"line_number":67,"context_line":"        self._set_base_port_binding()"},{"line_number":68,"context_line":"        self.port_status \u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":69,"context_line":"        self.subscribe_registries()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def post_fork_initialize(self, resource, event, trigger, **kwargs):"},{"line_number":72,"context_line":"        # NOTE(nick-ma-z): This will initialize all workers (API, RPC,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_f570880a","line":69,"updated":"2017-04-20 23:31:34.000000000","message":"Should qos driver be initialized here? qos driver will subscribe the qos plugin event, and qos plugin will be initialized before fork.\n\nhttps://github.com/openstack/neutron/blob/5ef7aca96ec75962d2dee02090fd2d48b2e36ae1/neutron/services/qos/drivers/base.py#L49-L53","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"059b284a2cf8cbb8f989f39f884b66155797da5c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.vif_type \u003d portbindings.VIF_TYPE_OVS"},{"line_number":67,"context_line":"        self._set_base_port_binding()"},{"line_number":68,"context_line":"        self.port_status \u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":69,"context_line":"        self.subscribe_registries()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def post_fork_initialize(self, resource, event, trigger, **kwargs):"},{"line_number":72,"context_line":"        # NOTE(nick-ma-z): This will initialize all workers (API, RPC,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_bfeccaf3","line":69,"in_reply_to":"7ffa3b31_f570880a","updated":"2017-04-23 10:31:05.000000000","message":"Done","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"63c4b067a953c70b5932f93a935e0e7d55dca464","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # NOTE(nick-ma-z): This will initialize all workers (API, RPC,"},{"line_number":73,"context_line":"        # plugin service, etc) and threads with network connections."},{"line_number":74,"context_line":"        self.nb_api \u003d api_nb.NbApi.get_instance(True)"},{"line_number":75,"context_line":"        if \u0027qos\u0027 in cfg.CONF.ml2.extension_drivers:"},{"line_number":76,"context_line":"            df_qos.initialize(self.nb_api)"},{"line_number":77,"context_line":"        if cfg.CONF.df.enable_port_status_notifier:"},{"line_number":78,"context_line":"            port_status_notifier \u003d df_utils.load_driver("},{"line_number":79,"context_line":"                cfg.CONF.df.port_status_notifier,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_75023871","line":76,"range":{"start_line":75,"start_character":0,"end_line":76,"end_character":42},"updated":"2017-04-20 23:31:34.000000000","message":"Maybe we can just initialize the qos driver.","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a9ff7ca17d2d4691744eb9a860ec4a74d19a79ba","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self._set_base_port_binding()"},{"line_number":68,"context_line":"        self.port_status \u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":69,"context_line":"        self.subscribe_registries()"},{"line_number":70,"context_line":"        if \u0027qos\u0027 in cfg.CONF.ml2.extension_drivers:"},{"line_number":71,"context_line":"            df_qos.register()"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def post_fork_initialize(self, resource, event, trigger, **kwargs):"},{"line_number":74,"context_line":"        # NOTE(nick-ma-z): This will initialize all workers (API, RPC,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_b062b915","line":71,"range":{"start_line":70,"start_character":0,"end_line":71,"end_character":29},"updated":"2017-04-24 02:24:12.000000000","message":"I guess it is safe to just register qos driver all the time, like openvswitch and linuxbridge mech_driver did.","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"738e0d466d2e0ee2f6f6932277048d33d5b127ec","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self._set_base_port_binding()"},{"line_number":68,"context_line":"        self.port_status \u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":69,"context_line":"        self.subscribe_registries()"},{"line_number":70,"context_line":"        if \u0027qos\u0027 in cfg.CONF.ml2.extension_drivers:"},{"line_number":71,"context_line":"            df_qos.register()"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def post_fork_initialize(self, resource, event, trigger, **kwargs):"},{"line_number":74,"context_line":"        # NOTE(nick-ma-z): This will initialize all workers (API, RPC,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_8e40b909","line":71,"range":{"start_line":70,"start_character":0,"end_line":71,"end_character":29},"in_reply_to":"5ff73747_b062b915","updated":"2017-04-24 06:53:18.000000000","message":"Ok.","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"}],"dragonflow/neutron/services/qos/drivers/df_qos.py":[{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"28578447a17ef2c336d0fecd545cf0831b0ae65b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from dragonflow.db.neutron import lockedobjects_db as lock_db"},{"line_number":21,"context_line":"from dragonflow.neutron.db.models import qos as n_qos"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"SUPPORTED_RULES \u003d ["},{"line_number":24,"context_line":"    qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":25,"context_line":"    qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":"VIF_TYPES \u003d ["},{"line_number":28,"context_line":"    portbindings.VIF_TYPE_OVS,"},{"line_number":29,"context_line":"    portbindings.VIF_TYPE_VHOST_USER,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_fd7d0eb2","line":26,"range":{"start_line":23,"start_character":0,"end_line":26,"end_character":1},"updated":"2017-04-21 03:05:34.000000000","message":"It should be dict, not list.","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"059b284a2cf8cbb8f989f39f884b66155797da5c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from dragonflow.db.neutron import lockedobjects_db as lock_db"},{"line_number":21,"context_line":"from dragonflow.neutron.db.models import qos as n_qos"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"SUPPORTED_RULES \u003d ["},{"line_number":24,"context_line":"    qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":25,"context_line":"    qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":"VIF_TYPES \u003d ["},{"line_number":28,"context_line":"    portbindings.VIF_TYPE_OVS,"},{"line_number":29,"context_line":"    portbindings.VIF_TYPE_VHOST_USER,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_5c5b9486","line":26,"range":{"start_line":23,"start_character":0,"end_line":26,"end_character":1},"in_reply_to":"7ffa3b31_fd7d0eb2","updated":"2017-04-23 10:31:05.000000000","message":"Thanks, changing.","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":23458,"name":"Dong Jun","email":"dongjun.01@bytedance.com","username":"Dongj"},"change_message_id":"28578447a17ef2c336d0fecd545cf0831b0ae65b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _plugin(self):"},{"line_number":41,"context_line":"        return directory.get_plugin(service_constants.QOS)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def get_description(self):"},{"line_number":44,"context_line":"        return \"QoS driver for Dragonflow\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_QOS)"},{"line_number":47,"context_line":"    def create_policy(self, context, policy):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_bd4d469b","line":44,"range":{"start_line":43,"start_character":0,"end_line":44,"end_character":42},"updated":"2017-04-21 03:05:34.000000000","message":"This is remnant of old driver, can be removed.","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"059b284a2cf8cbb8f989f39f884b66155797da5c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _plugin(self):"},{"line_number":41,"context_line":"        return directory.get_plugin(service_constants.QOS)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def get_description(self):"},{"line_number":44,"context_line":"        return \"QoS driver for Dragonflow\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_QOS)"},{"line_number":47,"context_line":"    def create_policy(self, context, policy):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_7c665054","line":44,"range":{"start_line":43,"start_character":0,"end_line":44,"end_character":42},"in_reply_to":"7ffa3b31_bd4d469b","updated":"2017-04-23 10:31:05.000000000","message":"Done","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"63c4b067a953c70b5932f93a935e0e7d55dca464","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    global _driver"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    if _driver is None:"},{"line_number":73,"context_line":"        _driver \u003d DfQosDriver("},{"line_number":74,"context_line":"            nb_api\u003dnb_api,"},{"line_number":75,"context_line":"            requires_rpc_notifications\u003dFalse,"},{"line_number":76,"context_line":"            supported_rules\u003dSUPPORTED_RULES,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_f5bf68a7","line":73,"range":{"start_line":73,"start_character":18,"end_line":73,"end_character":29},"updated":"2017-04-20 23:31:34.000000000","message":"it is better to give qos driver a name here.","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"059b284a2cf8cbb8f989f39f884b66155797da5c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    global _driver"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    if _driver is None:"},{"line_number":73,"context_line":"        _driver \u003d DfQosDriver("},{"line_number":74,"context_line":"            nb_api\u003dnb_api,"},{"line_number":75,"context_line":"            requires_rpc_notifications\u003dFalse,"},{"line_number":76,"context_line":"            supported_rules\u003dSUPPORTED_RULES,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_9fbb4ee4","line":73,"range":{"start_line":73,"start_character":18,"end_line":73,"end_character":29},"in_reply_to":"7ffa3b31_f5bf68a7","updated":"2017-04-23 10:31:05.000000000","message":"Done","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a9ff7ca17d2d4691744eb9a860ec4a74d19a79ba","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class DfQosDriver(base.DriverBase):"},{"line_number":50,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":51,"context_line":"        super(DfQosDriver, self).__init__(*args, **kwargs)"},{"line_number":52,"context_line":"        self.nb_api \u003d api_nb.NbApi.get_instance(True)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @property"},{"line_number":55,"context_line":"    def _plugin(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_300d893e","line":52,"range":{"start_line":52,"start_character":0,"end_line":52,"end_character":53},"updated":"2017-04-24 02:24:12.000000000","message":"This line of code will be hit during neutron ml2 initialization. That means api_nb will be initialized before neutron fork, which breaks the work here [1]. so I think it is better to keep the old way to get nb_api.\n\n[1] https://github.com/openstack/dragonflow/blob/0ee8776b2533313356d40a6be275531a524a1b6c/dragonflow/neutron/ml2/mech_driver.py#L71-L73","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"738e0d466d2e0ee2f6f6932277048d33d5b127ec","unresolved":false,"context_lines":[{"line_number":49,"context_line":"class DfQosDriver(base.DriverBase):"},{"line_number":50,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":51,"context_line":"        super(DfQosDriver, self).__init__(*args, **kwargs)"},{"line_number":52,"context_line":"        self.nb_api \u003d api_nb.NbApi.get_instance(True)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @property"},{"line_number":55,"context_line":"    def _plugin(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_eebbbd0b","line":52,"range":{"start_line":52,"start_character":0,"end_line":52,"end_character":53},"in_reply_to":"5ff73747_300d893e","updated":"2017-04-24 06:53:18.000000000","message":"Ok, I\u0027ll add an initialize function then.","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a9ff7ca17d2d4691744eb9a860ec4a74d19a79ba","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def register():"},{"line_number":93,"context_line":"    global _driver"},{"line_number":94,"context_line":"    with _init_lock:"},{"line_number":95,"context_line":"        if _driver is None:"},{"line_number":96,"context_line":"            _driver \u003d DfQosDriver.create()"},{"line_number":97,"context_line":"            LOG.error(\u0027DF QoS driver registered\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_abfec802","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":20},"updated":"2017-04-24 02:24:12.000000000","message":"why this is needed?","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"738e0d466d2e0ee2f6f6932277048d33d5b127ec","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def register():"},{"line_number":93,"context_line":"    global _driver"},{"line_number":94,"context_line":"    with _init_lock:"},{"line_number":95,"context_line":"        if _driver is None:"},{"line_number":96,"context_line":"            _driver \u003d DfQosDriver.create()"},{"line_number":97,"context_line":"            LOG.error(\u0027DF QoS driver registered\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_ce36c1b5","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":20},"in_reply_to":"5ff73747_abfec802","updated":"2017-04-24 06:53:18.000000000","message":"Debug leftovers","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a9ff7ca17d2d4691744eb9a860ec4a74d19a79ba","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    with _init_lock:"},{"line_number":95,"context_line":"        if _driver is None:"},{"line_number":96,"context_line":"            _driver \u003d DfQosDriver.create()"},{"line_number":97,"context_line":"            LOG.error(\u0027DF QoS driver registered\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_b094f9e9","line":97,"range":{"start_line":97,"start_character":12,"end_line":97,"end_character":22},"updated":"2017-04-24 02:24:12.000000000","message":"why error here?","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"738e0d466d2e0ee2f6f6932277048d33d5b127ec","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    with _init_lock:"},{"line_number":95,"context_line":"        if _driver is None:"},{"line_number":96,"context_line":"            _driver \u003d DfQosDriver.create()"},{"line_number":97,"context_line":"            LOG.error(\u0027DF QoS driver registered\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_ae3b759a","line":97,"range":{"start_line":97,"start_character":12,"end_line":97,"end_character":22},"in_reply_to":"5ff73747_b094f9e9","updated":"2017-04-24 06:53:18.000000000","message":"Same","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"682c9bc6182ece537708b7a378aa485032c2863b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_QOS)"},{"line_number":55,"context_line":"    def update_policy(self, context, policy):"},{"line_number":56,"context_line":"        policy_id \u003d policy[\u0027id\u0027]"},{"line_number":57,"context_line":"        # NOTE: Neutron will not pass policy with latest revision_number"},{"line_number":58,"context_line":"        # in argument. Get the latest policy from neutron."},{"line_number":59,"context_line":"        plugin \u003d directory.get_plugin(service_constants.QOS)"},{"line_number":60,"context_line":"        policy_neutron \u003d plugin.get_policy(context, policy_id)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_7a3ac7e7","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":58},"updated":"2017-04-24 09:24:39.000000000","message":"is this still true?","commit_id":"63ab27f882a5ece9a227a911ae67b6e958e5ebdc"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"a1415db6abdccf6c6703d9d94f5118ca43fbaea4","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_QOS)"},{"line_number":55,"context_line":"    def update_policy(self, context, policy):"},{"line_number":56,"context_line":"        policy_id \u003d policy[\u0027id\u0027]"},{"line_number":57,"context_line":"        # NOTE: Neutron will not pass policy with latest revision_number"},{"line_number":58,"context_line":"        # in argument. Get the latest policy from neutron."},{"line_number":59,"context_line":"        plugin \u003d directory.get_plugin(service_constants.QOS)"},{"line_number":60,"context_line":"        policy_neutron \u003d plugin.get_policy(context, policy_id)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_23b89328","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":58},"in_reply_to":"5ff73747_2aace88a","updated":"2017-04-24 13:03:03.000000000","message":"I just checked it and the revision number is still incorrect.","commit_id":"63ab27f882a5ece9a227a911ae67b6e958e5ebdc"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"080471cb4985d696ae54d6f7dd8c91dcd8aeb648","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_QOS)"},{"line_number":55,"context_line":"    def update_policy(self, context, policy):"},{"line_number":56,"context_line":"        policy_id \u003d policy[\u0027id\u0027]"},{"line_number":57,"context_line":"        # NOTE: Neutron will not pass policy with latest revision_number"},{"line_number":58,"context_line":"        # in argument. Get the latest policy from neutron."},{"line_number":59,"context_line":"        plugin \u003d directory.get_plugin(service_constants.QOS)"},{"line_number":60,"context_line":"        policy_neutron \u003d plugin.get_policy(context, policy_id)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_2aace88a","line":58,"range":{"start_line":57,"start_character":0,"end_line":58,"end_character":58},"in_reply_to":"5ff73747_7a3ac7e7","updated":"2017-04-24 11:49:46.000000000","message":"this might not be true as the mechanism changes. I guess we can take care of it in a separate patch.","commit_id":"63ab27f882a5ece9a227a911ae67b6e958e5ebdc"}],"dragonflow/tests/unit/test_df_qos_driver.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"63c4b067a953c70b5932f93a935e0e7d55dca464","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self._extension_drivers.append(\u0027qos\u0027)"},{"line_number":38,"context_line":"        super(TestDFQosDriver, self).setUp()"},{"line_number":39,"context_line":"        self.plugin \u003d directory.get_plugin(service_constants.QOS)"},{"line_number":40,"context_line":"        self.driver \u003d _get_df_qos_driver()"},{"line_number":41,"context_line":"        self.plugin.driver_manager.register_driver(self.driver)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _test_create_policy(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_55d29c01","line":40,"range":{"start_line":40,"start_character":22,"end_line":40,"end_character":40},"updated":"2017-04-20 23:31:34.000000000","message":"And you can get the driver from qos_plugin, by using the name of driver.","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"059b284a2cf8cbb8f989f39f884b66155797da5c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self._extension_drivers.append(\u0027qos\u0027)"},{"line_number":38,"context_line":"        super(TestDFQosDriver, self).setUp()"},{"line_number":39,"context_line":"        self.plugin \u003d directory.get_plugin(service_constants.QOS)"},{"line_number":40,"context_line":"        self.driver \u003d _get_df_qos_driver()"},{"line_number":41,"context_line":"        self.plugin.driver_manager.register_driver(self.driver)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _test_create_policy(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_dfef96e7","line":40,"range":{"start_line":40,"start_character":22,"end_line":40,"end_character":40},"in_reply_to":"7ffa3b31_55d29c01","updated":"2017-04-23 10:31:05.000000000","message":"Done","commit_id":"b9518deda750113e6f094a52342beda4f4d0f27a"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a9ff7ca17d2d4691744eb9a860ec4a74d19a79ba","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def setUp(self):"},{"line_number":32,"context_line":"        self._extension_drivers.append(\u0027qos\u0027)"},{"line_number":33,"context_line":"        mock.patch(\u0027dragonflow.db.neutron.lockedobjects_db.wrap_db_lock\u0027,"},{"line_number":34,"context_line":"                   side_effect\u003dutils.empty_wrapper).start()"},{"line_number":35,"context_line":"        mock.patch(\u0027dragonflow.neutron.services.qos.drivers.df_qos._driver\u0027,"},{"line_number":36,"context_line":"                   new\u003dNone).start()"},{"line_number":37,"context_line":"        super(TestDfQosDriver, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_ab27e8b6","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":59},"updated":"2017-04-24 02:24:12.000000000","message":"this has been done in DFMechanismDriverTestCase.setUp","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"738e0d466d2e0ee2f6f6932277048d33d5b127ec","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def setUp(self):"},{"line_number":32,"context_line":"        self._extension_drivers.append(\u0027qos\u0027)"},{"line_number":33,"context_line":"        mock.patch(\u0027dragonflow.db.neutron.lockedobjects_db.wrap_db_lock\u0027,"},{"line_number":34,"context_line":"                   side_effect\u003dutils.empty_wrapper).start()"},{"line_number":35,"context_line":"        mock.patch(\u0027dragonflow.neutron.services.qos.drivers.df_qos._driver\u0027,"},{"line_number":36,"context_line":"                   new\u003dNone).start()"},{"line_number":37,"context_line":"        super(TestDfQosDriver, self).setUp()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_6ed0cd51","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":59},"in_reply_to":"5ff73747_ab27e8b6","updated":"2017-04-24 06:53:18.000000000","message":"yes but line 35 causes import of df_qos and I need the lockobjects_db mock at import time of df_qos.","commit_id":"95c19520bd66d8557cca240e517762e44ffcf352"}]}
