)]}'
{"dragonflow/controller/l2_ml2_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"0108c6d340846cb2e6e13476ecfe59ad75f34e12","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"            # delete local_networks"},{"line_number":229,"context_line":"            remote_ports \u003d network.get(\u0027remote\u0027)"},{"line_number":230,"context_line":"            if remote_ports is None or len(remote_ports) \u003d\u003d 0:"},{"line_number":231,"context_line":"                del self.local_networks[local_network_id]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3ac371cc_d48f4f21","line":230,"range":{"start_line":230,"start_character":12,"end_line":230,"end_character":62},"updated":"2016-08-16 12:41:50.000000000","message":"nit: you could just use \"if not remote_ports:\" here","commit_id":"8f599b3316b1b364cacb03e5b00f7da61fd2c628"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"0cb7cee05382c1a078864374d1b03cd43c9e377b","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"            # delete local_networks"},{"line_number":229,"context_line":"            remote_ports \u003d network.get(\u0027remote\u0027)"},{"line_number":230,"context_line":"            if remote_ports is None or len(remote_ports) \u003d\u003d 0:"},{"line_number":231,"context_line":"                del self.local_networks[local_network_id]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_993b5ed1","line":230,"range":{"start_line":230,"start_character":12,"end_line":230,"end_character":62},"in_reply_to":"3ac371cc_d48f4f21","updated":"2016-08-22 01:35:31.000000000","message":"Done","commit_id":"8f599b3316b1b364cacb03e5b00f7da61fd2c628"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"0108c6d340846cb2e6e13476ecfe59ad75f34e12","unresolved":false,"context_lines":[{"line_number":609,"context_line":""},{"line_number":610,"context_line":"            # delete local_networks"},{"line_number":611,"context_line":"            local_ports \u003d network.get(\u0027local\u0027)"},{"line_number":612,"context_line":"            if local_ports is None or len(local_ports) \u003d\u003d 0:"},{"line_number":613,"context_line":"                del self.local_networks[network_id]"},{"line_number":614,"context_line":"        else:"},{"line_number":615,"context_line":"            self._update_multicast_broadcast_flows_for_remote(network_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3ac371cc_af29a08b","line":612,"range":{"start_line":612,"start_character":12,"end_line":612,"end_character":60},"updated":"2016-08-16 12:41:50.000000000","message":"nit: you could just use \"if not local_ports:\" here","commit_id":"8f599b3316b1b364cacb03e5b00f7da61fd2c628"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"c8c959da7b043cb9552751a225e0904d45291f88","unresolved":false,"context_lines":[{"line_number":609,"context_line":""},{"line_number":610,"context_line":"            # delete local_networks"},{"line_number":611,"context_line":"            local_ports \u003d network.get(\u0027local\u0027)"},{"line_number":612,"context_line":"            if local_ports is None or len(local_ports) \u003d\u003d 0:"},{"line_number":613,"context_line":"                del self.local_networks[network_id]"},{"line_number":614,"context_line":"        else:"},{"line_number":615,"context_line":"            self._update_multicast_broadcast_flows_for_remote(network_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_f9025208","line":612,"range":{"start_line":612,"start_character":12,"end_line":612,"end_character":60},"in_reply_to":"3ac371cc_af29a08b","updated":"2016-08-22 01:35:12.000000000","message":"Done","commit_id":"8f599b3316b1b364cacb03e5b00f7da61fd2c628"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"0108c6d340846cb2e6e13476ecfe59ad75f34e12","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    def _install_network_flows_for_vlan(self, network_type,"},{"line_number":879,"context_line":"                                        segmentation_id,"},{"line_number":880,"context_line":"                                        local_network_id):"},{"line_number":881,"context_line":"        LOG.info(_LI(\"Install network flows on first %s up\"), network_type)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"        # L2_LOOKUP for Remote ports"},{"line_number":884,"context_line":"        datapath \u003d self.get_datapath()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3ac371cc_af1b607f","line":881,"range":{"start_line":881,"start_character":62,"end_line":881,"end_character":74},"updated":"2016-08-16 12:41:50.000000000","message":"If this is the only place to use the parameter, I think the network_type can be replaced with \u0027vlan\u0027 just like line 948. And you can save one parameter from the method.","commit_id":"8f599b3316b1b364cacb03e5b00f7da61fd2c628"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"c8c959da7b043cb9552751a225e0904d45291f88","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    def _install_network_flows_for_vlan(self, network_type,"},{"line_number":879,"context_line":"                                        segmentation_id,"},{"line_number":880,"context_line":"                                        local_network_id):"},{"line_number":881,"context_line":"        LOG.info(_LI(\"Install network flows on first %s up\"), network_type)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"        # L2_LOOKUP for Remote ports"},{"line_number":884,"context_line":"        datapath \u003d self.get_datapath()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_19276eb7","line":881,"range":{"start_line":881,"start_character":62,"end_line":881,"end_character":74},"in_reply_to":"3ac371cc_af1b607f","updated":"2016-08-22 01:35:12.000000000","message":"Done","commit_id":"8f599b3316b1b364cacb03e5b00f7da61fd2c628"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"22d337e5a325b9553ea837dcc2b42202853c4004","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        # Table\u003dEgress"},{"line_number":900,"context_line":"        # Match: metadata\u003dnetwork_id"},{"line_number":901,"context_line":"        # Actions: mod_vlan, output:patch"},{"line_number":902,"context_line":"        datapath \u003d self.get_datapath()"},{"line_number":903,"context_line":"        parser \u003d datapath.ofproto_parser"},{"line_number":904,"context_line":"        ofproto \u003d datapath.ofproto"},{"line_number":905,"context_line":""},{"line_number":906,"context_line":"        match \u003d parser.OFPMatch(metadata\u003dlocal_network_id)"},{"line_number":907,"context_line":"        actions \u003d [parser.OFPActionPushVlan(ether.ETH_TYPE_8021Q),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_ef9d0367","line":904,"range":{"start_line":902,"start_character":0,"end_line":904,"end_character":34},"updated":"2016-08-23 23:17:21.000000000","message":"duplicated assign value here?","commit_id":"40818da378a1b287606dad8ad9ab787d4efc5de1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"22d337e5a325b9553ea837dcc2b42202853c4004","unresolved":false,"context_lines":[{"line_number":922,"context_line":"        # Ingress"},{"line_number":923,"context_line":"        # Match: dl_vlan\u003dvlan_id,"},{"line_number":924,"context_line":"        # Actions: metadata\u003dnetwork_id,"},{"line_number":925,"context_line":"        #goto \u0027Destiantion Port Classification\u0027"},{"line_number":926,"context_line":"        match \u003d parser.OFPMatch()"},{"line_number":927,"context_line":"        match.set_vlan_vid(segmentation_id)"},{"line_number":928,"context_line":"        actions \u003d [parser.OFPActionSetField(metadata\u003dlocal_network_id),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_afccab6a","line":925,"range":{"start_line":925,"start_character":15,"end_line":925,"end_character":26},"updated":"2016-08-23 23:17:21.000000000","message":"Destination?","commit_id":"40818da378a1b287606dad8ad9ab787d4efc5de1"}],"dragonflow/tests/fullstack/test_ml2_l2_flows.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"22d337e5a325b9553ea837dcc2b42202853c4004","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        network_vlan_ranges \u003d self._get_vlan_ranges()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if network_vlan_ranges is None:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        vlan_params \u003d network_vlan_ranges.split(\u0027:\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if vlan_params is None or len(vlan_params) \u003d\u003d 0:"},{"line_number":102,"context_line":"            return"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        physical_network \u003d vlan_params[0]"},{"line_number":105,"context_line":"        vlan_min \u003d vlan_params[1]"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_df61a7d4","line":102,"range":{"start_line":97,"start_character":0,"end_line":102,"end_character":18},"updated":"2016-08-23 23:17:21.000000000","message":"I have this question... with all these check here, how can you make sure the test is actually running in the test server?\n\nBy default, the network_vlan_ranges will not be set. So in my local env, I run this test case successfully very quickly.  And I don\u0027t see code to explicitly set this attribute. I check the log in test report, it only takes 1.455350s.\n\nI wonder if it could be just unit test(s) here, to make the test senario more control-able?","commit_id":"40818da378a1b287606dad8ad9ab787d4efc5de1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"22d337e5a325b9553ea837dcc2b42202853c4004","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                   vlan_min,"},{"line_number":149,"context_line":"                                   port_key_hex,"},{"line_number":150,"context_line":"                                   mac)"},{"line_number":151,"context_line":"        self.assertIsNotNone(r)"},{"line_number":152,"context_line":"        vm.server.stop()"},{"line_number":153,"context_line":"        vm.close()"},{"line_number":154,"context_line":"        network.close()"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_3fcc3bba","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":31},"updated":"2016-08-23 23:17:21.000000000","message":"I don\u0027t know what is going wrong. But I fail in my env here after I set network_vlan_ranges in neutron. The log tells me:\n\n\ndragonflow.tests.fullstack.test_ml2_l2_flows.TestL2FLows.test_vlan_network_flows\n--------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n      File \"dragonflow/tests/fullstack/test_ml2_l2_flows.py\", line 151, in test_vlan_network_flows\n        self.assertIsNotNone(r)\n      File \"/opt/stack/dragonflow/.tox/fullstack/local/lib/python2.7/site-packages/testtools/testcase.py\", line 435, in assertIsNotNone\n        self.assertThat(observed, matcher, message)\n      File \"/opt/stack/dragonflow/.tox/fullstack/local/lib/python2.7/site-packages/testtools/testcase.py\", line 498, in assertThat\n        raise mismatch_error\n    testtools.matchers._impl.MismatchError: None matches Is(None)","commit_id":"40818da378a1b287606dad8ad9ab787d4efc5de1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"3484571349171398264bae0a8c570ad8b69aec97","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        network_vlan_ranges \u003d self._get_vlan_ranges()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if network_vlan_ranges is None:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        vlan_params \u003d network_vlan_ranges.split(\u0027:\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if vlan_params is None or len(vlan_params) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_d0f153cf","line":98,"updated":"2016-09-04 18:15:13.000000000","message":"This should raise an error. If there is a configuration error, we want it to jump out and fix it, not to be silently ignored.","commit_id":"27f08954ac5d2b68eec01bb49ca4dc948d66f004"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"4bb733c81e91664f8c23d813da49a60537c230f9","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        network_vlan_ranges \u003d self._get_vlan_ranges()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if network_vlan_ranges is None:"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":"        vlan_params \u003d network_vlan_ranges.split(\u0027:\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if vlan_params is None or len(vlan_params) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_8f41610e","line":98,"in_reply_to":"9a89bdaa_d0f153cf","updated":"2016-09-05 07:43:29.000000000","message":"I think vlan network is not mondantory.","commit_id":"27f08954ac5d2b68eec01bb49ca4dc948d66f004"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"3484571349171398264bae0a8c570ad8b69aec97","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        vlan_params \u003d network_vlan_ranges.split(\u0027:\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if vlan_params is None or len(vlan_params) \u003d\u003d 0:"},{"line_number":102,"context_line":"            return"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        physical_network \u003d vlan_params[0]"},{"line_number":105,"context_line":"        vlan_min \u003d vlan_params[1]"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_f0ee57eb","line":102,"updated":"2016-09-04 18:15:13.000000000","message":"Same here.","commit_id":"27f08954ac5d2b68eec01bb49ca4dc948d66f004"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"3484571349171398264bae0a8c570ad8b69aec97","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        vlan_ranges \u003d None"},{"line_number":273,"context_line":"        try:"},{"line_number":274,"context_line":"            config \u003d ConfigParser.ConfigParser()"},{"line_number":275,"context_line":"            readhandle \u003d open(ML2_CONF_INI, \u0027r\u0027)"},{"line_number":276,"context_line":"            config.readfp(readhandle)"},{"line_number":277,"context_line":"            vlan_ranges \u003d config.get(\"ml2_type_vlan\", \u0027network_vlan_ranges\u0027)"},{"line_number":278,"context_line":"        except Exception:"},{"line_number":279,"context_line":"            vlan_ranges \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_d01a3317","line":276,"range":{"start_line":275,"start_character":0,"end_line":276,"end_character":37},"updated":"2016-09-04 18:15:13.000000000","message":"You can use \u0027config.read(ML2_CONF_INI)\u0027, and then you don\u0027t need to manage readhandle.","commit_id":"27f08954ac5d2b68eec01bb49ca4dc948d66f004"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"4bb733c81e91664f8c23d813da49a60537c230f9","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        vlan_ranges \u003d None"},{"line_number":273,"context_line":"        try:"},{"line_number":274,"context_line":"            config \u003d ConfigParser.ConfigParser()"},{"line_number":275,"context_line":"            readhandle \u003d open(ML2_CONF_INI, \u0027r\u0027)"},{"line_number":276,"context_line":"            config.readfp(readhandle)"},{"line_number":277,"context_line":"            vlan_ranges \u003d config.get(\"ml2_type_vlan\", \u0027network_vlan_ranges\u0027)"},{"line_number":278,"context_line":"        except Exception:"},{"line_number":279,"context_line":"            vlan_ranges \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_2ff05590","line":276,"range":{"start_line":275,"start_character":0,"end_line":276,"end_character":37},"in_reply_to":"9a89bdaa_d01a3317","updated":"2016-09-05 07:43:29.000000000","message":"Because df-controller do not use ml2_conf.ini as it\u0027s configuration file.\n\u0027 /usr/bin/python /usr/local/bin/df-local-controller --config-file /etc/neutron/neutron.conf\u0027\nIf you think it\u0027s necessary to add ml2_conf.ini to df-controller\u0027s configure file, I will fix it.","commit_id":"27f08954ac5d2b68eec01bb49ca4dc948d66f004"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"db66eda574615595d52c851fb7bf735fbb15c6c7","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            config \u003d ConfigParser.ConfigParser()"},{"line_number":274,"context_line":"            readhandle \u003d open(ML2_CONF_INI, \u0027r\u0027)"},{"line_number":275,"context_line":"            config.readfp(readhandle)"},{"line_number":276,"context_line":"            vlan_ranges \u003d config.get(\"ml2_type_vlan\", \u0027network_vlan_ranges\u0027)"},{"line_number":277,"context_line":"        except Exception:"},{"line_number":278,"context_line":"            vlan_ranges \u003d None"},{"line_number":279,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7a8ec9b2_5b8cb8d9","line":276,"updated":"2016-09-19 08:01:21.000000000","message":"I ran a small unit test and it works.","commit_id":"ecbe0a827478f168cab585bf9915acc4382839c8"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"04ef0542ac9c1ba26859f541bfe2d6f6f966ec2d","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        return True"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _get_vlan_ranges(self):"},{"line_number":264,"context_line":"        readhandle \u003d None"},{"line_number":265,"context_line":"        vlan_ranges \u003d None"},{"line_number":266,"context_line":"        try:"},{"line_number":267,"context_line":"            config \u003d ConfigParser.ConfigParser()"},{"line_number":268,"context_line":"            readhandle \u003d open(ML2_CONF_INI, \u0027r\u0027)"},{"line_number":269,"context_line":"            config.readfp(readhandle)"},{"line_number":270,"context_line":"            vlan_ranges \u003d config.get(\"ml2_type_vlan\", \u0027network_vlan_ranges\u0027)"},{"line_number":271,"context_line":"        except Exception:"},{"line_number":272,"context_line":"            vlan_ranges \u003d None"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        if readhandle is not None:"},{"line_number":275,"context_line":"            try:"},{"line_number":276,"context_line":"                readhandle.close()"},{"line_number":277,"context_line":"            except Exception:"},{"line_number":278,"context_line":"                return vlan_ranges"},{"line_number":279,"context_line":"        return vlan_ranges"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _check_l2_ml2_app_enable(self):"},{"line_number":282,"context_line":"        apps_list \u003d cfg.CONF.df.apps_list"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a8ec9b2_43343ffa","line":279,"range":{"start_line":263,"start_character":4,"end_line":279,"end_character":26},"updated":"2016-09-21 09:27:27.000000000","message":"Can we use oslo.cfg instead?","commit_id":"3e8f58afaff62704423c77ed5c122b36dc20e80f"}]}
