)]}'
{"karbor/exception.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":370,"context_line":"    message \u003d _(\"The checkpoint %(checkpoint_id)s can not be deleted.\")"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"class GetProtectionNetworkResourceFailed(KarborException):"},{"line_number":374,"context_line":"    message \u003d _(\"Get protection network of type %(type)s failed: \""},{"line_number":375,"context_line":"                \"%(reason)s\")"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"class GetProtectionSubnetResourceFailed(KarborException):"},{"line_number":379,"context_line":"    message \u003d _(\"Get protection subnet of type %(type)s failed: \""},{"line_number":380,"context_line":"                \"%(reason)s\")"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"class GetProtectionPortResourceFailed(KarborException):"},{"line_number":384,"context_line":"    message \u003d _(\"Get protection port of type %(type)s failed: \""},{"line_number":385,"context_line":"                \"%(reason)s\")"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"class GetProtectionRouterResourceFailed(KarborException):"},{"line_number":389,"context_line":"    message \u003d _(\"Get protection router of type %(type)s failed: \""},{"line_number":390,"context_line":"                \"%(reason)s\")"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"class GetProtectionSgResourceFailed(KarborException):"},{"line_number":394,"context_line":"    message \u003d _(\"Get protection security-group of type %(type)s \""},{"line_number":395,"context_line":"                \"failed: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_8f63d71a","line":395,"range":{"start_line":373,"start_character":0,"end_line":395,"end_character":37},"updated":"2017-05-07 11:40:32.000000000","message":"why do we need different exceptions for each of these? These are network only sub-resources, can\u0027t see why we need an exception type for each","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":370,"context_line":"    message \u003d _(\"The checkpoint %(checkpoint_id)s can not be deleted.\")"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"class GetProtectionNetworkResourceFailed(KarborException):"},{"line_number":374,"context_line":"    message \u003d _(\"Get protection network of type %(type)s failed: \""},{"line_number":375,"context_line":"                \"%(reason)s\")"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"class GetProtectionSubnetResourceFailed(KarborException):"},{"line_number":379,"context_line":"    message \u003d _(\"Get protection subnet of type %(type)s failed: \""},{"line_number":380,"context_line":"                \"%(reason)s\")"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"class GetProtectionPortResourceFailed(KarborException):"},{"line_number":384,"context_line":"    message \u003d _(\"Get protection port of type %(type)s failed: \""},{"line_number":385,"context_line":"                \"%(reason)s\")"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"class GetProtectionRouterResourceFailed(KarborException):"},{"line_number":389,"context_line":"    message \u003d _(\"Get protection router of type %(type)s failed: \""},{"line_number":390,"context_line":"                \"%(reason)s\")"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"class GetProtectionSgResourceFailed(KarborException):"},{"line_number":394,"context_line":"    message \u003d _(\"Get protection security-group of type %(type)s \""},{"line_number":395,"context_line":"                \"failed: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_cdbee6d3","line":395,"range":{"start_line":373,"start_character":0,"end_line":395,"end_character":37},"in_reply_to":"3f044301_8f63d71a","updated":"2017-06-21 03:06:05.000000000","message":"Merge into one(GetProtectionNetworkSubResourceFailed)","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"}],"karbor/services/protection/protection_plugins/network/network_plugin_schemas.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    \"title\": \"Network Protection Options\","},{"line_number":15,"context_line":"    \"type\": \"object\","},{"line_number":16,"context_line":"    \"properties\": {"},{"line_number":17,"context_line":"        \"backup_name\": {"},{"line_number":18,"context_line":"            \"type\": \"string\","},{"line_number":19,"context_line":"            \"title\": \"Backup Name\","},{"line_number":20,"context_line":"            \"description\": \"The name of the backup.\","},{"line_number":21,"context_line":"            \"default\": None"},{"line_number":22,"context_line":"        }"},{"line_number":23,"context_line":"    },"},{"line_number":24,"context_line":"    \"required\": []"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_4f6dcf02","line":21,"range":{"start_line":17,"start_character":0,"end_line":21,"end_character":27},"updated":"2017-05-07 11:40:32.000000000","message":"what is this used for?","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    \"title\": \"Network Protection Options\","},{"line_number":15,"context_line":"    \"type\": \"object\","},{"line_number":16,"context_line":"    \"properties\": {"},{"line_number":17,"context_line":"        \"backup_name\": {"},{"line_number":18,"context_line":"            \"type\": \"string\","},{"line_number":19,"context_line":"            \"title\": \"Backup Name\","},{"line_number":20,"context_line":"            \"description\": \"The name of the backup.\","},{"line_number":21,"context_line":"            \"default\": None"},{"line_number":22,"context_line":"        }"},{"line_number":23,"context_line":"    },"},{"line_number":24,"context_line":"    \"required\": []"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_2dcd5a84","line":21,"range":{"start_line":17,"start_character":0,"end_line":21,"end_character":27},"in_reply_to":"3f044301_4f6dcf02","updated":"2017-06-21 03:06:05.000000000","message":"remove","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"}],"karbor/services/protection/protection_plugins/network/neutron_protection_plugin.py":[{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"94ff2840e2b93e8bb48e1e5ea7c5be78d9e171a6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            networks \u003d neutron_client.list_networks().get(\u0027networks\u0027)"},{"line_number":40,"context_line":"            networks_metadata \u003d {}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"            for network in networks:"},{"line_number":43,"context_line":"                network_metadata \u003d \\"},{"line_number":44,"context_line":"                    {\"id\": network[\"id\"],"},{"line_number":45,"context_line":"                     \"admin_state_up\": network[\"admin_state_up\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_a472687b","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":36},"updated":"2017-05-03 09:18:12.000000000","message":"we may need filter out the network with invalid status.","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"a8582b01d94cd6587e129a17bc62bd440cfbc894","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            networks \u003d neutron_client.list_networks().get(\u0027networks\u0027)"},{"line_number":40,"context_line":"            networks_metadata \u003d {}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"            for network in networks:"},{"line_number":43,"context_line":"                network_metadata \u003d \\"},{"line_number":44,"context_line":"                    {\"id\": network[\"id\"],"},{"line_number":45,"context_line":"                     \"admin_state_up\": network[\"admin_state_up\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_b95cba4b","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":36},"in_reply_to":"5ff73747_a472687b","updated":"2017-05-05 09:48:38.000000000","message":"We should recover the same network as before, so need to save all the infomations. When on restoring there will have the logic to recover or not.","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"94ff2840e2b93e8bb48e1e5ea7c5be78d9e171a6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            ports \u003d neutron_client.list_ports().get(\u0027ports\u0027)"},{"line_number":116,"context_line":"            ports_metadata \u003d {}"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            for port in ports:"},{"line_number":119,"context_line":"                port_metadata \u003d \\"},{"line_number":120,"context_line":"                    {\"admin_state_up\": port[\"admin_state_up\"],"},{"line_number":121,"context_line":"                     \"allowed_address_pairs\": port[\"allowed_address_pairs\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_a4cee880","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":30},"updated":"2017-05-03 09:18:12.000000000","message":"we may need filter out the port with invalid status.","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"a8582b01d94cd6587e129a17bc62bd440cfbc894","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            ports \u003d neutron_client.list_ports().get(\u0027ports\u0027)"},{"line_number":116,"context_line":"            ports_metadata \u003d {}"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            for port in ports:"},{"line_number":119,"context_line":"                port_metadata \u003d \\"},{"line_number":120,"context_line":"                    {\"admin_state_up\": port[\"admin_state_up\"],"},{"line_number":121,"context_line":"                     \"allowed_address_pairs\": port[\"allowed_address_pairs\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_5931360b","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":30},"in_reply_to":"5ff73747_a4cee880","updated":"2017-05-05 09:48:38.000000000","message":"ditto","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"94ff2840e2b93e8bb48e1e5ea7c5be78d9e171a6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            routers \u003d neutron_client.list_routers().get(\u0027routers\u0027)"},{"line_number":155,"context_line":"            routers_metadata \u003d {}"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            for router in routers:"},{"line_number":158,"context_line":"                router_metadata \u003d \\"},{"line_number":159,"context_line":"                    {\"admin_state_up\": router[\"admin_state_up\"],"},{"line_number":160,"context_line":"                     \"availability_zone_hints\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_e4a99090","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":34},"updated":"2017-05-03 09:18:12.000000000","message":"we may need filter out the port with invalid status.","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"a8582b01d94cd6587e129a17bc62bd440cfbc894","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            routers \u003d neutron_client.list_routers().get(\u0027routers\u0027)"},{"line_number":155,"context_line":"            routers_metadata \u003d {}"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            for router in routers:"},{"line_number":158,"context_line":"                router_metadata \u003d \\"},{"line_number":159,"context_line":"                    {\"admin_state_up\": router[\"admin_state_up\"],"},{"line_number":160,"context_line":"                     \"availability_zone_hints\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_193baeeb","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":34},"in_reply_to":"5ff73747_e4a99090","updated":"2017-05-05 09:48:38.000000000","message":"ditto","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"94ff2840e2b93e8bb48e1e5ea7c5be78d9e171a6","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        resource_definition \u003d {\"resource_id\": network_id}"},{"line_number":213,"context_line":"        resource_definition[\"backup_name\"] \u003d backup_name"},{"line_number":214,"context_line":"        resource_definition[\"network_metadata\"] \u003d \\"},{"line_number":215,"context_line":"            self._get_resources_by_network(context, neutron_client)"},{"line_number":216,"context_line":"        resource_definition[\"subnet_metadata\"] \u003d \\"},{"line_number":217,"context_line":"            self._get_resources_by_subnet(context, neutron_client)"},{"line_number":218,"context_line":"        resource_definition[\"port_metadata\"] \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_c49c545f","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":67},"updated":"2017-05-03 09:18:12.000000000","message":"resource_definition[\"network_metadata\"] \u003d (\n        self._get_resources_by_network(context, neutron_client))  we can use \u0027()\u0027, so that the \\ is not needed.","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"a8582b01d94cd6587e129a17bc62bd440cfbc894","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        resource_definition \u003d {\"resource_id\": network_id}"},{"line_number":213,"context_line":"        resource_definition[\"backup_name\"] \u003d backup_name"},{"line_number":214,"context_line":"        resource_definition[\"network_metadata\"] \u003d \\"},{"line_number":215,"context_line":"            self._get_resources_by_network(context, neutron_client)"},{"line_number":216,"context_line":"        resource_definition[\"subnet_metadata\"] \u003d \\"},{"line_number":217,"context_line":"            self._get_resources_by_subnet(context, neutron_client)"},{"line_number":218,"context_line":"        resource_definition[\"port_metadata\"] \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_bc0f082d","line":215,"range":{"start_line":214,"start_character":0,"end_line":215,"end_character":67},"in_reply_to":"5ff73747_c49c545f","updated":"2017-05-05 09:48:38.000000000","message":"Done","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"94ff2840e2b93e8bb48e1e5ea7c5be78d9e171a6","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        resource_definition[\"backup_name\"] \u003d backup_name"},{"line_number":214,"context_line":"        resource_definition[\"network_metadata\"] \u003d \\"},{"line_number":215,"context_line":"            self._get_resources_by_network(context, neutron_client)"},{"line_number":216,"context_line":"        resource_definition[\"subnet_metadata\"] \u003d \\"},{"line_number":217,"context_line":"            self._get_resources_by_subnet(context, neutron_client)"},{"line_number":218,"context_line":"        resource_definition[\"port_metadata\"] \u003d \\"},{"line_number":219,"context_line":"            self._get_resources_by_port(context, neutron_client)"},{"line_number":220,"context_line":"        resource_definition[\"router_metadata\"] \u003d \\"},{"line_number":221,"context_line":"            self._get_resources_by_router(context, neutron_client)"},{"line_number":222,"context_line":"        resource_definition[\"securiy-group_metadata\"] \u003d \\"},{"line_number":223,"context_line":"            self._get_resources_by_security_group(context, neutron_client)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_64ab4075","line":222,"range":{"start_line":216,"start_character":0,"end_line":222,"end_character":57},"updated":"2017-05-03 09:18:12.000000000","message":"ditto","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"a8582b01d94cd6587e129a17bc62bd440cfbc894","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        resource_definition[\"backup_name\"] \u003d backup_name"},{"line_number":214,"context_line":"        resource_definition[\"network_metadata\"] \u003d \\"},{"line_number":215,"context_line":"            self._get_resources_by_network(context, neutron_client)"},{"line_number":216,"context_line":"        resource_definition[\"subnet_metadata\"] \u003d \\"},{"line_number":217,"context_line":"            self._get_resources_by_subnet(context, neutron_client)"},{"line_number":218,"context_line":"        resource_definition[\"port_metadata\"] \u003d \\"},{"line_number":219,"context_line":"            self._get_resources_by_port(context, neutron_client)"},{"line_number":220,"context_line":"        resource_definition[\"router_metadata\"] \u003d \\"},{"line_number":221,"context_line":"            self._get_resources_by_router(context, neutron_client)"},{"line_number":222,"context_line":"        resource_definition[\"securiy-group_metadata\"] \u003d \\"},{"line_number":223,"context_line":"            self._get_resources_by_security_group(context, neutron_client)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_9c1c4c6b","line":222,"range":{"start_line":216,"start_character":0,"end_line":222,"end_character":57},"in_reply_to":"5ff73747_64ab4075","updated":"2017-05-05 09:48:38.000000000","message":"Done","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"94ff2840e2b93e8bb48e1e5ea7c5be78d9e171a6","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            # update resource_definition backup_status"},{"line_number":233,"context_line":"            bank_section.update_object(\"status\","},{"line_number":234,"context_line":"                                       constants.CHECKPOINT_STATUS_AVAILABLE)"},{"line_number":235,"context_line":"            LOG.info(_(\"finish backup network, server_id: %s.\"), network_id)"},{"line_number":236,"context_line":"        except Exception as err:"},{"line_number":237,"context_line":"            # update resource_definition backup_status"},{"line_number":238,"context_line":"            LOG.error(_LE(\"create backup failed, server_id: %s.\"), network_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_84c76c46","line":235,"range":{"start_line":235,"start_character":47,"end_line":235,"end_character":56},"updated":"2017-05-03 09:18:12.000000000","message":"s/server_id/network_id","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"a8582b01d94cd6587e129a17bc62bd440cfbc894","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            # update resource_definition backup_status"},{"line_number":233,"context_line":"            bank_section.update_object(\"status\","},{"line_number":234,"context_line":"                                       constants.CHECKPOINT_STATUS_AVAILABLE)"},{"line_number":235,"context_line":"            LOG.info(_(\"finish backup network, server_id: %s.\"), network_id)"},{"line_number":236,"context_line":"        except Exception as err:"},{"line_number":237,"context_line":"            # update resource_definition backup_status"},{"line_number":238,"context_line":"            LOG.error(_LE(\"create backup failed, server_id: %s.\"), network_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_399aea13","line":235,"range":{"start_line":235,"start_character":47,"end_line":235,"end_character":56},"in_reply_to":"5ff73747_84c76c46","updated":"2017-05-05 09:48:38.000000000","message":"Done","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"94ff2840e2b93e8bb48e1e5ea7c5be78d9e171a6","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            LOG.info(_(\"finish backup network, server_id: %s.\"), network_id)"},{"line_number":236,"context_line":"        except Exception as err:"},{"line_number":237,"context_line":"            # update resource_definition backup_status"},{"line_number":238,"context_line":"            LOG.error(_LE(\"create backup failed, server_id: %s.\"), network_id)"},{"line_number":239,"context_line":"            bank_section.update_object(\"status\","},{"line_number":240,"context_line":"                                       constants.CHECKPOINT_STATUS_ERROR)"},{"line_number":241,"context_line":"            raise exception.CreateBackupFailed("}],"source_content_type":"text/x-python","patch_set":7,"id":"5ff73747_44c1642e","line":238,"range":{"start_line":238,"start_character":49,"end_line":238,"end_character":58},"updated":"2017-05-03 09:18:12.000000000","message":"s/server_id/network_id","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"a8582b01d94cd6587e129a17bc62bd440cfbc894","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            LOG.info(_(\"finish backup network, server_id: %s.\"), network_id)"},{"line_number":236,"context_line":"        except Exception as err:"},{"line_number":237,"context_line":"            # update resource_definition backup_status"},{"line_number":238,"context_line":"            LOG.error(_LE(\"create backup failed, server_id: %s.\"), network_id)"},{"line_number":239,"context_line":"            bank_section.update_object(\"status\","},{"line_number":240,"context_line":"                                       constants.CHECKPOINT_STATUS_ERROR)"},{"line_number":241,"context_line":"            raise exception.CreateBackupFailed("}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_199f2e04","line":238,"range":{"start_line":238,"start_character":49,"end_line":238,"end_character":58},"in_reply_to":"5ff73747_44c1642e","updated":"2017-05-05 09:48:38.000000000","message":"Done","commit_id":"fa780f50d8f2ad697249b0a36601966941f5a68b"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class ProtectOperation(protection_plugin.Operation):"},{"line_number":31,"context_line":"    _SUPPORT_RESOURCE_TYPES \u003d [constants.NETWORK_RESOURCE_TYPE]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":"        super(ProtectOperation, self).__init__()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _get_resources_by_network(self, cntxt, neutron_client):"},{"line_number":37,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_0f77c7d6","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":48},"updated":"2017-05-07 11:40:32.000000000","message":"redundant","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class ProtectOperation(protection_plugin.Operation):"},{"line_number":31,"context_line":"    _SUPPORT_RESOURCE_TYPES \u003d [constants.NETWORK_RESOURCE_TYPE]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self):"},{"line_number":34,"context_line":"        super(ProtectOperation, self).__init__()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _get_resources_by_network(self, cntxt, neutron_client):"},{"line_number":37,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_9d9fd5b3","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":48},"in_reply_to":"3f044301_0f77c7d6","updated":"2017-06-21 03:06:05.000000000","message":"Done","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            networks_metadata \u003d {}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"            for network in networks:"},{"line_number":42,"context_line":"                network_metadata \u003d ("},{"line_number":43,"context_line":"                    {\"id\": network[\"id\"],"},{"line_number":44,"context_line":"                     \"admin_state_up\": network[\"admin_state_up\"],"},{"line_number":45,"context_line":"                     \"availability_zone_hints\":"},{"line_number":46,"context_line":"                     network[\"availability_zone_hints\"],"},{"line_number":47,"context_line":"                     \"availability_zones\": network[\"availability_zones\"],"},{"line_number":48,"context_line":"                     \"description\": network[\"description\"],"},{"line_number":49,"context_line":"                     \"ipv4_address_scope\": network[\"ipv4_address_scope\"],"},{"line_number":50,"context_line":"                     \"ipv6_address_scope\": network[\"ipv6_address_scope\"],"},{"line_number":51,"context_line":"                     \"mtu\": network[\"mtu\"],"},{"line_number":52,"context_line":"                     \"name\": network[\"name\"],"},{"line_number":53,"context_line":"                     \"port_security_enabled\": network[\"port_security_enabled\"],"},{"line_number":54,"context_line":"                     \"provider:network_type\": network[\"provider:network_type\"],"},{"line_number":55,"context_line":"                     \"provider:physical_network\":"},{"line_number":56,"context_line":"                     network[\"provider:physical_network\"],"},{"line_number":57,"context_line":"                     \"provider:segmentation_id\":"},{"line_number":58,"context_line":"                     network[\"provider:segmentation_id\"],"},{"line_number":59,"context_line":"                     \"router:external\": network[\"router:external\"],"},{"line_number":60,"context_line":"                     \"shared\": network[\"shared\"],"},{"line_number":61,"context_line":"                     \"status\": network[\"status\"],"},{"line_number":62,"context_line":"                     \"subnets\": network[\"subnets\"],"},{"line_number":63,"context_line":"                     \"tags\": network[\"tags\"],"},{"line_number":64,"context_line":"                     \"tenant_id\": network[\"tenant_id\"],"},{"line_number":65,"context_line":"                     })"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"                networks_metadata[network[\"id\"]] \u003d network_metadata"},{"line_number":68,"context_line":"            return networks_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_ef713be0","line":65,"range":{"start_line":42,"start_character":0,"end_line":65,"end_character":23},"updated":"2017-05-07 11:40:32.000000000","message":"what\u0027s that? why do we do that?\nhow about:\n    allowed_keys \u003d [\n        \u0027id\u0027,\n        ...\n    ]\n    network_metadata \u003d {k: v for k in network if k in allowed_keys}","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            networks_metadata \u003d {}"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"            for network in networks:"},{"line_number":42,"context_line":"                network_metadata \u003d ("},{"line_number":43,"context_line":"                    {\"id\": network[\"id\"],"},{"line_number":44,"context_line":"                     \"admin_state_up\": network[\"admin_state_up\"],"},{"line_number":45,"context_line":"                     \"availability_zone_hints\":"},{"line_number":46,"context_line":"                     network[\"availability_zone_hints\"],"},{"line_number":47,"context_line":"                     \"availability_zones\": network[\"availability_zones\"],"},{"line_number":48,"context_line":"                     \"description\": network[\"description\"],"},{"line_number":49,"context_line":"                     \"ipv4_address_scope\": network[\"ipv4_address_scope\"],"},{"line_number":50,"context_line":"                     \"ipv6_address_scope\": network[\"ipv6_address_scope\"],"},{"line_number":51,"context_line":"                     \"mtu\": network[\"mtu\"],"},{"line_number":52,"context_line":"                     \"name\": network[\"name\"],"},{"line_number":53,"context_line":"                     \"port_security_enabled\": network[\"port_security_enabled\"],"},{"line_number":54,"context_line":"                     \"provider:network_type\": network[\"provider:network_type\"],"},{"line_number":55,"context_line":"                     \"provider:physical_network\":"},{"line_number":56,"context_line":"                     network[\"provider:physical_network\"],"},{"line_number":57,"context_line":"                     \"provider:segmentation_id\":"},{"line_number":58,"context_line":"                     network[\"provider:segmentation_id\"],"},{"line_number":59,"context_line":"                     \"router:external\": network[\"router:external\"],"},{"line_number":60,"context_line":"                     \"shared\": network[\"shared\"],"},{"line_number":61,"context_line":"                     \"status\": network[\"status\"],"},{"line_number":62,"context_line":"                     \"subnets\": network[\"subnets\"],"},{"line_number":63,"context_line":"                     \"tags\": network[\"tags\"],"},{"line_number":64,"context_line":"                     \"tenant_id\": network[\"tenant_id\"],"},{"line_number":65,"context_line":"                     })"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"                networks_metadata[network[\"id\"]] \u003d network_metadata"},{"line_number":68,"context_line":"            return networks_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_7da4f908","line":65,"range":{"start_line":42,"start_character":0,"end_line":65,"end_character":23},"in_reply_to":"3f044301_ef713be0","updated":"2017-06-21 03:06:05.000000000","message":"use allowed_keys. fixed.","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            subnets_metadata \u003d {}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"            for subnet in subnets:"},{"line_number":83,"context_line":"                subnet_metadata \u003d ("},{"line_number":84,"context_line":"                    {\"cidr\": subnet[\"cidr\"],"},{"line_number":85,"context_line":"                     \"allocation_pools\": subnet[\"allocation_pools\"],"},{"line_number":86,"context_line":"                     \"description\": subnet[\"description\"],"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_ef5a5b4e","line":83,"range":{"start_line":83,"start_character":34,"end_line":83,"end_character":35},"updated":"2017-05-07 11:40:32.000000000","message":"no need for that, just move the { here","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"            for subnet in subnets:"},{"line_number":83,"context_line":"                subnet_metadata \u003d ("},{"line_number":84,"context_line":"                    {\"cidr\": subnet[\"cidr\"],"},{"line_number":85,"context_line":"                     \"allocation_pools\": subnet[\"allocation_pools\"],"},{"line_number":86,"context_line":"                     \"description\": subnet[\"description\"],"},{"line_number":87,"context_line":"                     \"dns_nameservers\": subnet[\"dns_nameservers\"],"},{"line_number":88,"context_line":"                     \"enable_dhcp\": subnet[\"enable_dhcp\"],"},{"line_number":89,"context_line":"                     \"gateway_ip\": subnet[\"gateway_ip\"],"},{"line_number":90,"context_line":"                     \"host_routes\": subnet[\"host_routes\"],"},{"line_number":91,"context_line":"                     \"id\": subnet[\"id\"],"},{"line_number":92,"context_line":"                     \"ip_version\": subnet[\"ip_version\"],"},{"line_number":93,"context_line":"                     \"ipv6_address_mode\": subnet[\"ipv6_address_mode\"],"},{"line_number":94,"context_line":"                     \"ipv6_ra_mode\": subnet[\"ipv6_ra_mode\"],"},{"line_number":95,"context_line":"                     \"name\": subnet[\"name\"],"},{"line_number":96,"context_line":"                     \"network_id\": subnet[\"network_id\"],"},{"line_number":97,"context_line":"                     \"subnetpool_id\": subnet[\"subnetpool_id\"],"},{"line_number":98,"context_line":"                     \"tenant_id\": subnet[\"tenant_id\"],"},{"line_number":99,"context_line":"                     })"},{"line_number":100,"context_line":"                subnets_metadata[subnet[\"id\"]] \u003d subnet_metadata"},{"line_number":101,"context_line":"            return subnets_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_2f49638a","line":98,"range":{"start_line":84,"start_character":0,"end_line":98,"end_character":54},"updated":"2017-05-07 11:40:32.000000000","message":"ditto","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"            for subnet in subnets:"},{"line_number":83,"context_line":"                subnet_metadata \u003d ("},{"line_number":84,"context_line":"                    {\"cidr\": subnet[\"cidr\"],"},{"line_number":85,"context_line":"                     \"allocation_pools\": subnet[\"allocation_pools\"],"},{"line_number":86,"context_line":"                     \"description\": subnet[\"description\"],"},{"line_number":87,"context_line":"                     \"dns_nameservers\": subnet[\"dns_nameservers\"],"},{"line_number":88,"context_line":"                     \"enable_dhcp\": subnet[\"enable_dhcp\"],"},{"line_number":89,"context_line":"                     \"gateway_ip\": subnet[\"gateway_ip\"],"},{"line_number":90,"context_line":"                     \"host_routes\": subnet[\"host_routes\"],"},{"line_number":91,"context_line":"                     \"id\": subnet[\"id\"],"},{"line_number":92,"context_line":"                     \"ip_version\": subnet[\"ip_version\"],"},{"line_number":93,"context_line":"                     \"ipv6_address_mode\": subnet[\"ipv6_address_mode\"],"},{"line_number":94,"context_line":"                     \"ipv6_ra_mode\": subnet[\"ipv6_ra_mode\"],"},{"line_number":95,"context_line":"                     \"name\": subnet[\"name\"],"},{"line_number":96,"context_line":"                     \"network_id\": subnet[\"network_id\"],"},{"line_number":97,"context_line":"                     \"subnetpool_id\": subnet[\"subnetpool_id\"],"},{"line_number":98,"context_line":"                     \"tenant_id\": subnet[\"tenant_id\"],"},{"line_number":99,"context_line":"                     })"},{"line_number":100,"context_line":"                subnets_metadata[subnet[\"id\"]] \u003d subnet_metadata"},{"line_number":101,"context_line":"            return subnets_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_5da93ddd","line":98,"range":{"start_line":84,"start_character":0,"end_line":98,"end_character":54},"in_reply_to":"3f044301_2f49638a","updated":"2017-06-21 03:06:05.000000000","message":"Done","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            for port in ports:"},{"line_number":116,"context_line":"                port_metadata \u003d ("},{"line_number":117,"context_line":"                    {\"admin_state_up\": port[\"admin_state_up\"],"},{"line_number":118,"context_line":"                     \"allowed_address_pairs\": port[\"allowed_address_pairs\"],"},{"line_number":119,"context_line":"                     \"binding:host_id\": port[\"binding:host_id\"],"},{"line_number":120,"context_line":"                     \"binding:profile\": port[\"binding:profile\"],"},{"line_number":121,"context_line":"                     \"binding:vif_details\": port[\"binding:vif_details\"],"},{"line_number":122,"context_line":"                     \"binding:vif_type\": port[\"binding:vif_type\"],"},{"line_number":123,"context_line":"                     \"binding:vnic_type\": port[\"binding:vnic_type\"],"},{"line_number":124,"context_line":"                     \"description\": port[\"description\"],"},{"line_number":125,"context_line":"                     \"device_id\": port[\"device_id\"],"},{"line_number":126,"context_line":"                     \"device_owner\": port[\"device_owner\"],"},{"line_number":127,"context_line":"                     \"extra_dhcp_opts\": port[\"extra_dhcp_opts\"],"},{"line_number":128,"context_line":"                     \"fixed_ips\": port[\"fixed_ips\"],"},{"line_number":129,"context_line":"                     \"id\": port[\"id\"],"},{"line_number":130,"context_line":"                     \"mac_address\": port[\"mac_address\"],"},{"line_number":131,"context_line":"                     \"name\": port[\"name\"],"},{"line_number":132,"context_line":"                     \"network_id\": port[\"network_id\"],"},{"line_number":133,"context_line":"                     \"port_security_enabled\": port[\"port_security_enabled\"],"},{"line_number":134,"context_line":"                     \"security_groups\": port[\"security_groups\"],"},{"line_number":135,"context_line":"                     \"status\": port[\"status\"],"},{"line_number":136,"context_line":"                     \"tenant_id\": port[\"tenant_id\"],"},{"line_number":137,"context_line":"                     })"},{"line_number":138,"context_line":"                ports_metadata[port[\"id\"]] \u003d port_metadata"},{"line_number":139,"context_line":"            return ports_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_cf59df5a","line":136,"range":{"start_line":117,"start_character":0,"end_line":136,"end_character":52},"updated":"2017-05-07 11:40:32.000000000","message":"ditto","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            for port in ports:"},{"line_number":116,"context_line":"                port_metadata \u003d ("},{"line_number":117,"context_line":"                    {\"admin_state_up\": port[\"admin_state_up\"],"},{"line_number":118,"context_line":"                     \"allowed_address_pairs\": port[\"allowed_address_pairs\"],"},{"line_number":119,"context_line":"                     \"binding:host_id\": port[\"binding:host_id\"],"},{"line_number":120,"context_line":"                     \"binding:profile\": port[\"binding:profile\"],"},{"line_number":121,"context_line":"                     \"binding:vif_details\": port[\"binding:vif_details\"],"},{"line_number":122,"context_line":"                     \"binding:vif_type\": port[\"binding:vif_type\"],"},{"line_number":123,"context_line":"                     \"binding:vnic_type\": port[\"binding:vnic_type\"],"},{"line_number":124,"context_line":"                     \"description\": port[\"description\"],"},{"line_number":125,"context_line":"                     \"device_id\": port[\"device_id\"],"},{"line_number":126,"context_line":"                     \"device_owner\": port[\"device_owner\"],"},{"line_number":127,"context_line":"                     \"extra_dhcp_opts\": port[\"extra_dhcp_opts\"],"},{"line_number":128,"context_line":"                     \"fixed_ips\": port[\"fixed_ips\"],"},{"line_number":129,"context_line":"                     \"id\": port[\"id\"],"},{"line_number":130,"context_line":"                     \"mac_address\": port[\"mac_address\"],"},{"line_number":131,"context_line":"                     \"name\": port[\"name\"],"},{"line_number":132,"context_line":"                     \"network_id\": port[\"network_id\"],"},{"line_number":133,"context_line":"                     \"port_security_enabled\": port[\"port_security_enabled\"],"},{"line_number":134,"context_line":"                     \"security_groups\": port[\"security_groups\"],"},{"line_number":135,"context_line":"                     \"status\": port[\"status\"],"},{"line_number":136,"context_line":"                     \"tenant_id\": port[\"tenant_id\"],"},{"line_number":137,"context_line":"                     })"},{"line_number":138,"context_line":"                ports_metadata[port[\"id\"]] \u003d port_metadata"},{"line_number":139,"context_line":"            return ports_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_1dabc5d6","line":136,"range":{"start_line":117,"start_character":0,"end_line":136,"end_character":52},"in_reply_to":"3f044301_cf59df5a","updated":"2017-06-21 03:06:05.000000000","message":"Done","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            for router in routers:"},{"line_number":154,"context_line":"                router_metadata \u003d ("},{"line_number":155,"context_line":"                    {\"admin_state_up\": router[\"admin_state_up\"],"},{"line_number":156,"context_line":"                     \"availability_zone_hints\":"},{"line_number":157,"context_line":"                        router[\"availability_zone_hints\"],"},{"line_number":158,"context_line":"                     \"availability_zones\": router[\"availability_zones\"],"},{"line_number":159,"context_line":"                     \"description\": router[\"description\"],"},{"line_number":160,"context_line":"                     \"distributed\": router[\"distributed\"],"},{"line_number":161,"context_line":"                     \"external_gateway_info\": router[\"external_gateway_info\"],"},{"line_number":162,"context_line":"                     \"ha\": router[\"ha\"],"},{"line_number":163,"context_line":"                     \"id\": router[\"id\"],"},{"line_number":164,"context_line":"                     \"name\": router[\"name\"],"},{"line_number":165,"context_line":"                     \"routes\": router[\"routes\"],"},{"line_number":166,"context_line":"                     \"status\": router[\"status\"],"},{"line_number":167,"context_line":"                     })"},{"line_number":168,"context_line":"                routers_metadata[router[\"id\"]] \u003d router_metadata"},{"line_number":169,"context_line":"            return routers_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_6f340bfc","line":166,"range":{"start_line":155,"start_character":0,"end_line":166,"end_character":48},"updated":"2017-05-07 11:40:32.000000000","message":"ditto","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            for router in routers:"},{"line_number":154,"context_line":"                router_metadata \u003d ("},{"line_number":155,"context_line":"                    {\"admin_state_up\": router[\"admin_state_up\"],"},{"line_number":156,"context_line":"                     \"availability_zone_hints\":"},{"line_number":157,"context_line":"                        router[\"availability_zone_hints\"],"},{"line_number":158,"context_line":"                     \"availability_zones\": router[\"availability_zones\"],"},{"line_number":159,"context_line":"                     \"description\": router[\"description\"],"},{"line_number":160,"context_line":"                     \"distributed\": router[\"distributed\"],"},{"line_number":161,"context_line":"                     \"external_gateway_info\": router[\"external_gateway_info\"],"},{"line_number":162,"context_line":"                     \"ha\": router[\"ha\"],"},{"line_number":163,"context_line":"                     \"id\": router[\"id\"],"},{"line_number":164,"context_line":"                     \"name\": router[\"name\"],"},{"line_number":165,"context_line":"                     \"routes\": router[\"routes\"],"},{"line_number":166,"context_line":"                     \"status\": router[\"status\"],"},{"line_number":167,"context_line":"                     })"},{"line_number":168,"context_line":"                routers_metadata[router[\"id\"]] \u003d router_metadata"},{"line_number":169,"context_line":"            return routers_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_fdb7e939","line":166,"range":{"start_line":155,"start_character":0,"end_line":166,"end_character":48},"in_reply_to":"3f044301_6f340bfc","updated":"2017-06-21 03:06:05.000000000","message":"Done","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            sgs_metadata \u003d {}"},{"line_number":182,"context_line":"            for sg in sgs:"},{"line_number":183,"context_line":"                sg_metadata \u003d ("},{"line_number":184,"context_line":"                    {\"id\": sg[\"id\"],"},{"line_number":185,"context_line":"                     \"description\": sg[\"description\"],"},{"line_number":186,"context_line":"                     \"name\": sg[\"name\"],"},{"line_number":187,"context_line":"                     \"security_group_rules\": sg[\"security_group_rules\"],"},{"line_number":188,"context_line":"                     \"tenant_id\": sg[\"tenant_id\"],"},{"line_number":189,"context_line":"                     })"},{"line_number":190,"context_line":"                sgs_metadata[sg[\"id\"]] \u003d sg_metadata"},{"line_number":191,"context_line":"            return sgs_metadata"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_4f3b8fea","line":188,"range":{"start_line":184,"start_character":0,"end_line":188,"end_character":50},"updated":"2017-05-07 11:40:32.000000000","message":"ditto","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"f24d2a7c96e7d1e48f798419bbc90166bdc2041b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            self._get_resources_by_port(context, neutron_client))"},{"line_number":214,"context_line":"        resource_definition[\"router_metadata\"] \u003d ("},{"line_number":215,"context_line":"            self._get_resources_by_router(context, neutron_client))"},{"line_number":216,"context_line":"        resource_definition[\"securiy-group_metadata\"] \u003d ("},{"line_number":217,"context_line":"            self._get_resources_by_security_group(context, neutron_client))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f044301_0f2587c2","line":216,"range":{"start_line":216,"start_character":29,"end_line":216,"end_character":36},"updated":"2017-05-07 11:40:32.000000000","message":"security","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":16206,"name":"chenhuayi","email":"chenhuayi@huawei.com","username":"chenhuayi2"},"change_message_id":"311a86e69581c2fb6b4e7b3c1c8aa70e9beb411e","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            self._get_resources_by_port(context, neutron_client))"},{"line_number":214,"context_line":"        resource_definition[\"router_metadata\"] \u003d ("},{"line_number":215,"context_line":"            self._get_resources_by_router(context, neutron_client))"},{"line_number":216,"context_line":"        resource_definition[\"securiy-group_metadata\"] \u003d ("},{"line_number":217,"context_line":"            self._get_resources_by_security_group(context, neutron_client))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f201791_bd83b156","line":216,"range":{"start_line":216,"start_character":29,"end_line":216,"end_character":36},"in_reply_to":"3f044301_0f2587c2","updated":"2017-06-21 03:06:05.000000000","message":"Done","commit_id":"d1effe10f265886f45ea1dabb4ca2ac3de8cadec"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        return new_security_group_rules"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def _heat_restore_securitygroups(self, heat_template, sgs_meta):"},{"line_number":467,"context_line":"        for sg_meta in sgs_meta:"},{"line_number":468,"context_line":"            sg_data \u003d sgs_meta[sg_meta]"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_501a237d","line":466,"range":{"start_line":466,"start_character":9,"end_line":466,"end_character":13},"updated":"2017-06-22 01:57:59.000000000","message":"If this method will not use heat to restore resource, the string \"heat\" can be delete form the method name.","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            # Config Net"},{"line_number":499,"context_line":"            if \"network_metadata\" in resource_definition:"},{"line_number":500,"context_line":"                nets_meta \u003d resource_definition[\"network_metadata\"]"},{"line_number":501,"context_line":"                self._heat_restore_networks(heat_template, nets_meta)"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"            # Config Subnet"},{"line_number":504,"context_line":"            if \"subnet_metadata\" in resource_definition:"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_b073b7e7","line":501,"range":{"start_line":501,"start_character":16,"end_line":501,"end_character":43},"updated":"2017-06-22 01:57:59.000000000","message":"chenzeng is working on removing heat from karbor. So do you consider not using heat to restore network resource in this patch?\n\nYou can this patch: https://review.openstack.org/#/c/457190/","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":503,"context_line":"            # Config Subnet"},{"line_number":504,"context_line":"            if \"subnet_metadata\" in resource_definition:"},{"line_number":505,"context_line":"                subs_meta \u003d resource_definition[\"subnet_metadata\"]"},{"line_number":506,"context_line":"                self._heat_restore_subnets(heat_template, nets_meta, subs_meta)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"            # Config Port"},{"line_number":509,"context_line":"            if \"port_metadata\" in resource_definition:"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_9080bb8d","line":506,"range":{"start_line":506,"start_character":21,"end_line":506,"end_character":42},"updated":"2017-06-22 01:57:59.000000000","message":"ditto","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":508,"context_line":"            # Config Port"},{"line_number":509,"context_line":"            if \"port_metadata\" in resource_definition:"},{"line_number":510,"context_line":"                ports_meta \u003d resource_definition[\"port_metadata\"]"},{"line_number":511,"context_line":"                self._heat_restore_ports(heat_template, nets_meta,"},{"line_number":512,"context_line":"                                         subs_meta, ports_meta)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"            # Config Router"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_504c639d","line":511,"range":{"start_line":511,"start_character":21,"end_line":511,"end_character":40},"updated":"2017-06-22 01:57:59.000000000","message":"ditto","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":514,"context_line":"            # Config Router"},{"line_number":515,"context_line":"            if \"router_metadata\" in resource_definition:"},{"line_number":516,"context_line":"                routers_meta \u003d resource_definition[\"router_metadata\"]"},{"line_number":517,"context_line":"                self._heat_restore_routers(public_network_id,"},{"line_number":518,"context_line":"                                           heat_template,"},{"line_number":519,"context_line":"                                           subs_meta,"},{"line_number":520,"context_line":"                                           routers_meta,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_1046eb7d","line":517,"range":{"start_line":517,"start_character":21,"end_line":517,"end_character":42},"updated":"2017-06-22 01:57:59.000000000","message":"ditto","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":523,"context_line":"            # Config RouterInterface"},{"line_number":524,"context_line":"            if [subs_meta is not None] and ("},{"line_number":525,"context_line":"                    [routers_meta is not None] and [ports_meta is not None]):"},{"line_number":526,"context_line":"                self._heat_restore_routerinterfaces(heat_template, subs_meta,"},{"line_number":527,"context_line":"                                                    routers_meta, ports_meta)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"            # Config Securiy-group"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_30368705","line":526,"range":{"start_line":526,"start_character":21,"end_line":526,"end_character":51},"updated":"2017-06-22 01:57:59.000000000","message":"ditto","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":529,"context_line":"            # Config Securiy-group"},{"line_number":530,"context_line":"            if \"security-group_metadata\" in resource_definition:"},{"line_number":531,"context_line":"                sgs_meta \u003d resource_definition[\"security-group_metadata\"]"},{"line_number":532,"context_line":"                self._heat_restore_securitygroups(heat_template, sgs_meta)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        except Exception as e:"},{"line_number":535,"context_line":"            LOG.error(\"restore network backup failed, network_id: %s.\","}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_d024f3c8","line":532,"range":{"start_line":532,"start_character":21,"end_line":532,"end_character":49},"updated":"2017-06-22 01:57:59.000000000","message":"ditto","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"440573f4f2af3b9bc2cd2883692b6951256fc082","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        return RestoreOperation()"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    def get_delete_operation(self, resource):"},{"line_number":575,"context_line":"        # TODO(chenhuayi)"},{"line_number":576,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f201791_d08873c7","line":576,"range":{"start_line":575,"start_character":2,"end_line":576,"end_character":12},"updated":"2017-06-22 01:57:59.000000000","message":"The DeleteOperation has not been implemented in this patch. Will it be submitted in another patch?","commit_id":"d92876f7fad28eb3bd2ac2ca5b43be393fb40bbc"}]}
