)]}'
{"openstackclient/network/v2/router.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bd37fad36f7582d329961ddd83f8dce3a505896b","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        filters \u003d {}"},{"line_number":629,"context_line":"        filters[\u0027device_id\u0027] \u003d obj.id"},{"line_number":630,"context_line":"        for port in client.ports(**filters):"},{"line_number":631,"context_line":"            if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":632,"context_line":"                for ip_spec in port.fixed_ips:"},{"line_number":633,"context_line":"                    int_info[\u0027port_id\u0027] \u003d port.id"},{"line_number":634,"context_line":"                    int_info[\u0027ip_address\u0027] \u003d ip_spec.get(\u0027ip_address\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_3aca6b4d","line":631,"range":{"start_line":631,"start_character":11,"end_line":631,"end_character":61},"updated":"2017-07-05 16:05:53.000000000","message":"If you do so, it is better to specify device_owner \u003d\u003d network:router_interface to the filter at L.629. Or is there any case it does not cover?","commit_id":"5576deaba1bfb5069251c7faec1a58df5442e67b"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"74b28042b785858e9bb0e6a2ce3d6b61d24c76c3","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        filters \u003d {}"},{"line_number":629,"context_line":"        filters[\u0027device_id\u0027] \u003d obj.id"},{"line_number":630,"context_line":"        for port in client.ports(**filters):"},{"line_number":631,"context_line":"            if port.device_owner !\u003d \"network:router_gateway\":"},{"line_number":632,"context_line":"                for ip_spec in port.fixed_ips:"},{"line_number":633,"context_line":"                    int_info[\u0027port_id\u0027] \u003d port.id"},{"line_number":634,"context_line":"                    int_info[\u0027ip_address\u0027] \u003d ip_spec.get(\u0027ip_address\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_f2a3e8fe","line":631,"range":{"start_line":631,"start_character":11,"end_line":631,"end_character":61},"in_reply_to":"3f1d235d_3aca6b4d","updated":"2017-09-19 10:31:20.000000000","message":"If there is a DVR router,device_owner of the port is  \u0027network:router_interface_distributed\u0027.","commit_id":"5576deaba1bfb5069251c7faec1a58df5442e67b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bd37fad36f7582d329961ddd83f8dce3a505896b","unresolved":false,"context_lines":[{"line_number":633,"context_line":"                    int_info[\u0027port_id\u0027] \u003d port.id"},{"line_number":634,"context_line":"                    int_info[\u0027ip_address\u0027] \u003d ip_spec.get(\u0027ip_address\u0027)"},{"line_number":635,"context_line":"                    int_info[\u0027subnet_id\u0027] \u003d ip_spec.get(\u0027subnet_id\u0027)"},{"line_number":636,"context_line":"                    interfaces_info.append(copy.deepcopy(int_info))"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        setattr(obj, \u0027interfaces_info\u0027, interfaces_info)"},{"line_number":639,"context_line":"        data \u003d utils.get_item_properties(obj, columns, formatters\u003d_formatters)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_fa42b3aa","line":636,"range":{"start_line":636,"start_character":20,"end_line":636,"end_character":67},"updated":"2017-07-05 16:05:53.000000000","message":"Why do you need to use deepcopy here?\nI think it is better to drop L.627 and change L.633-636 to the following.\n\n  int_info \u003d {\n      \u0027port_id\u0027: port.id,\n      \u0027ip_address\u0027: ip_spec.get(\u0027ip_address\u0027),\n      \u0027subnet_id\u0027: ip_spec.get(\u0027subnet_id\u0027),\n }\n interfaces_info.append(int_info)\n\nIt is much simpler and avoid using deepcopy.","commit_id":"5576deaba1bfb5069251c7faec1a58df5442e67b"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"74b28042b785858e9bb0e6a2ce3d6b61d24c76c3","unresolved":false,"context_lines":[{"line_number":633,"context_line":"                    int_info[\u0027port_id\u0027] \u003d port.id"},{"line_number":634,"context_line":"                    int_info[\u0027ip_address\u0027] \u003d ip_spec.get(\u0027ip_address\u0027)"},{"line_number":635,"context_line":"                    int_info[\u0027subnet_id\u0027] \u003d ip_spec.get(\u0027subnet_id\u0027)"},{"line_number":636,"context_line":"                    interfaces_info.append(copy.deepcopy(int_info))"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        setattr(obj, \u0027interfaces_info\u0027, interfaces_info)"},{"line_number":639,"context_line":"        data \u003d utils.get_item_properties(obj, columns, formatters\u003d_formatters)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_360cada3","line":636,"range":{"start_line":636,"start_character":20,"end_line":636,"end_character":67},"in_reply_to":"3f1d235d_fa42b3aa","updated":"2017-09-19 10:31:20.000000000","message":"Done","commit_id":"5576deaba1bfb5069251c7faec1a58df5442e67b"}],"openstackclient/tests/unit/network/v2/fakes.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bd37fad36f7582d329961ddd83f8dce3a505896b","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"            \u0027tenant_id\u0027: \u0027project-id-\u0027 + uuid.uuid4().hex,"},{"line_number":1048,"context_line":"            \u0027routes\u0027: [],"},{"line_number":1049,"context_line":"            \u0027external_gateway_info\u0027: {},"},{"line_number":1050,"context_line":"            \u0027interfaces_info\u0027: {},"},{"line_number":1051,"context_line":"            \u0027availability_zone_hints\u0027: [],"},{"line_number":1052,"context_line":"            \u0027availability_zones\u0027: [],"},{"line_number":1053,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_9a0bbf7b","line":1050,"range":{"start_line":1050,"start_character":11,"end_line":1050,"end_character":34},"updated":"2017-07-05 16:05:53.000000000","message":"This is tricky. It is different from what SDK returns. I don\u0027t think changing this is a good idea only for your testing.\n\nInstead you should mock network.ports() call to SDK in your test code.","commit_id":"5576deaba1bfb5069251c7faec1a58df5442e67b"}]}
