)]}'
{"ironic/common/neutron.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":476,"context_line":"             {\u0027node_uuid\u0027: node_uuid})"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"def _uncidr(cidr, ipv6\u003dFalse):"},{"line_number":480,"context_line":"    \"\"\"Convert CIDR network representation into network/netmask form"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    :param cidr: network in CIDR form"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_47654ab4","line":479,"updated":"2020-06-29 08:36:31.000000000","message":"oh\n\n import ipaddress\n net \u003d ipaddress.ip_network(cidr)\n return str(net.network_address), str(net.netmask)\n\n:)","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6a360d38f758cb495ce667d065cf4e797f0d4b51","unresolved":false,"context_lines":[{"line_number":476,"context_line":"             {\u0027node_uuid\u0027: node_uuid})"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"def _uncidr(cidr, ipv6\u003dFalse):"},{"line_number":480,"context_line":"    \"\"\"Convert CIDR network representation into network/netmask form"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    :param cidr: network in CIDR form"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_14309355","line":479,"in_reply_to":"bf51134e_47654ab4","updated":"2020-06-29 18:40:43.000000000","message":"hey Dmitry, I did some tests and ipv6 seems to not support cidr for ipv6, I\u0027m getting \n\"ValueError(\u0027%s has host bits set\u0027 % self)\"","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":476,"context_line":"             {\u0027node_uuid\u0027: node_uuid})"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"def _uncidr(cidr, ipv6\u003dFalse):"},{"line_number":480,"context_line":"    \"\"\"Convert CIDR network representation into network/netmask form"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    :param cidr: network in CIDR form"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_655b23f5","line":479,"in_reply_to":"bf51134e_47654ab4","updated":"2020-06-29 14:10:32.000000000","message":"will test o/","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    network_id \u003d port_config.get(\u0027network_id\u0027)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    if not network_id:"},{"line_number":542,"context_line":"        return {}"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_67304ea0","line":541,"updated":"2020-06-29 08:36:31.000000000","message":"nit: I don\u0027t think a port can exist without a network","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    network_id \u003d port_config.get(\u0027network_id\u0027)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    if not network_id:"},{"line_number":542,"context_line":"        return {}"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_8558f7f9","line":541,"in_reply_to":"bf51134e_67304ea0","updated":"2020-06-29 14:10:32.000000000","message":"makes sense to me \u003d)","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":546,"context_line":"            network_id, fields\u003d[\u0027id\u0027, \u0027mtu\u0027, \u0027subnets\u0027])"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    except neutron_exceptions.NeutronClientException as e:"},{"line_number":549,"context_line":"        msg \u003d (_(\u0027Unable to get network info %(for network_id)s. Error: \u0027"},{"line_number":550,"context_line":"                 \u0027%(err)s\u0027) % {\u0027network_id\u0027: network_id, \u0027err\u0027: e})"},{"line_number":551,"context_line":"        LOG.exception(msg)"},{"line_number":552,"context_line":"        raise exception.NetworkError(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_e723be54","line":549,"range":{"start_line":549,"start_character":47,"end_line":549,"end_character":51},"updated":"2020-06-29 08:36:31.000000000","message":"\"for\" inside of %()s","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":546,"context_line":"            network_id, fields\u003d[\u0027id\u0027, \u0027mtu\u0027, \u0027subnets\u0027])"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    except neutron_exceptions.NeutronClientException as e:"},{"line_number":549,"context_line":"        msg \u003d (_(\u0027Unable to get network info %(for network_id)s. Error: \u0027"},{"line_number":550,"context_line":"                 \u0027%(err)s\u0027) % {\u0027network_id\u0027: network_id, \u0027err\u0027: e})"},{"line_number":551,"context_line":"        LOG.exception(msg)"},{"line_number":552,"context_line":"        raise exception.NetworkError(msg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_45625faf","line":549,"range":{"start_line":549,"start_character":47,"end_line":549,"end_character":51},"in_reply_to":"bf51134e_e723be54","updated":"2020-06-29 14:10:32.000000000","message":"Done","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        ]"},{"line_number":594,"context_line":"    }"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    for fixed_ip in port_config.get(\u0027fixed_ips\u0027, []):"},{"line_number":597,"context_line":"        subnet_id \u003d fixed_ip[\u0027subnet_id\u0027]"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        subnet_config \u003d subnets_config[subnet_id]"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_67d5ee1b","line":596,"range":{"start_line":596,"start_character":4,"end_line":596,"end_character":53},"updated":"2020-06-29 08:36:31.000000000","message":"This can be merged with the for loop above","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        ]"},{"line_number":594,"context_line":"    }"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    for fixed_ip in port_config.get(\u0027fixed_ips\u0027, []):"},{"line_number":597,"context_line":"        subnet_id \u003d fixed_ip[\u0027subnet_id\u0027]"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        subnet_config \u003d subnets_config[subnet_id]"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_a547fb1c","line":596,"range":{"start_line":596,"start_character":4,"end_line":596,"end_character":53},"in_reply_to":"bf51134e_67d5ee1b","updated":"2020-06-29 14:10:32.000000000","message":"Will give a try \u003d)","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"}],"ironic/drivers/modules/network/common.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        # NOTE(etingof): static network data takes precedence"},{"line_number":634,"context_line":"        network_data \u003d ("},{"line_number":635,"context_line":"            super(NeutronVIFPortIDMixin, self) .get_node_network_data(task))"},{"line_number":636,"context_line":"        if network_data:"},{"line_number":637,"context_line":"            return network_data"},{"line_number":638,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_c7e31a04","line":635,"updated":"2020-06-29 08:36:31.000000000","message":"nit: space before dot","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        # NOTE(etingof): static network data takes precedence"},{"line_number":634,"context_line":"        network_data \u003d ("},{"line_number":635,"context_line":"            super(NeutronVIFPortIDMixin, self) .get_node_network_data(task))"},{"line_number":636,"context_line":"        if network_data:"},{"line_number":637,"context_line":"            return network_data"},{"line_number":638,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_850d97e9","line":635,"in_reply_to":"bf51134e_c7e31a04","updated":"2020-06-29 14:10:32.000000000","message":"Done","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"}],"ironic/tests/unit/common/test_neutron.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        self.assertEqual(expected_port, network_data[\u0027links\u0027][0])"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"        expected_network \u003d {"},{"line_number":721,"context_line":"            \u0027id\u0027: \u0027a0304c3a-4f08-4c43-88af-d796509c97d2\u0027,"},{"line_number":722,"context_line":"            \u0027network_id\u0027: \u0027a87cc70a-3e15-4acf-8205-9b711a3531b7\u0027,"},{"line_number":723,"context_line":"            \u0027type\u0027: \u0027ipv4\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_67a32eb3","line":720,"updated":"2020-06-29 08:36:31.000000000","message":"can we have another test with IPv6?","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":717,"context_line":""},{"line_number":718,"context_line":"        self.assertEqual(expected_port, network_data[\u0027links\u0027][0])"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"        expected_network \u003d {"},{"line_number":721,"context_line":"            \u0027id\u0027: \u0027a0304c3a-4f08-4c43-88af-d796509c97d2\u0027,"},{"line_number":722,"context_line":"            \u0027network_id\u0027: \u0027a87cc70a-3e15-4acf-8205-9b711a3531b7\u0027,"},{"line_number":723,"context_line":"            \u0027type\u0027: \u0027ipv4\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_85a91791","line":720,"in_reply_to":"bf51134e_67a32eb3","updated":"2020-06-29 14:10:32.000000000","message":"sure, I will add one for IPv6","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"}],"ironic/tests/unit/drivers/modules/network/test_flat.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            self.assertRaises(exception.UnsupportedDriverExtension,"},{"line_number":335,"context_line":"                              self.interface.validate_inspection, task)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    @mock.patch.object(neutron, \u0027get_neutron_port_data\u0027)"},{"line_number":338,"context_line":"    def test_get_node_network_data(self, mock_gnpd):"},{"line_number":339,"context_line":"        mock_gnpd.return_value \u003d {}"},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_47a6eac2","line":337,"updated":"2020-06-29 08:36:31.000000000","message":"autospec\u003dTrue","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            self.assertRaises(exception.UnsupportedDriverExtension,"},{"line_number":335,"context_line":"                              self.interface.validate_inspection, task)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    @mock.patch.object(neutron, \u0027get_neutron_port_data\u0027)"},{"line_number":338,"context_line":"    def test_get_node_network_data(self, mock_gnpd):"},{"line_number":339,"context_line":"        mock_gnpd.return_value \u003d {}"},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_a57a5b20","line":337,"in_reply_to":"bf51134e_47a6eac2","updated":"2020-06-29 14:10:32.000000000","message":"Done","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"}],"ironic/tests/unit/drivers/modules/network/test_neutron.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"385123f7520a1ebed0089c219ad842915fbf3183","unresolved":false,"context_lines":[{"line_number":856,"context_line":"            self.assertRaises(exception.UnsupportedDriverExtension,"},{"line_number":857,"context_line":"                              self.interface.validate_inspection, task)"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    @mock.patch.object(neutron_common, \u0027get_neutron_port_data\u0027)"},{"line_number":860,"context_line":"    def test_get_node_network_data(self, mock_gnpd):"},{"line_number":861,"context_line":"        mock_gnpd.return_value \u003d {}"},{"line_number":862,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_a7a9c690","line":859,"updated":"2020-06-29 08:36:31.000000000","message":"autospec\u003dTrue","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"ae580d37c45fbea106a1e13a88b151d985e1cc4c","unresolved":false,"context_lines":[{"line_number":856,"context_line":"            self.assertRaises(exception.UnsupportedDriverExtension,"},{"line_number":857,"context_line":"                              self.interface.validate_inspection, task)"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    @mock.patch.object(neutron_common, \u0027get_neutron_port_data\u0027)"},{"line_number":860,"context_line":"    def test_get_node_network_data(self, mock_gnpd):"},{"line_number":861,"context_line":"        mock_gnpd.return_value \u003d {}"},{"line_number":862,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"bf51134e_e8438a3d","line":859,"in_reply_to":"bf51134e_a7a9c690","updated":"2020-06-29 14:10:32.000000000","message":"Done","commit_id":"1a364fdf6bd1920269112c5bc74cda08840a8e6a"}]}
