)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"846b455c67d253b2439ed41f7440983a154e990c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhiyuan_cai \u003cluckyvega.g@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-13 17:26:39 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Shared VxLAN (Part5: bluk create shadow port)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. What is the problem?"},{"line_number":10,"context_line":"VLAN network has some restrictions that VxLAN network doesn\u0027t have."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a1ff146_cef51b84","line":7,"range":{"start_line":7,"start_character":21,"end_line":7,"end_character":25},"updated":"2017-03-15 09:32:44.000000000","message":"bulk","commit_id":"276104beddf348738feb8beccf034fa64b5a62cf"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"47b8b5f65b8c6a31209909766e8195b445261ec2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhiyuan_cai \u003cluckyvega.g@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-13 17:26:39 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Shared VxLAN (Part5: bluk create shadow port)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. What is the problem?"},{"line_number":10,"context_line":"VLAN network has some restrictions that VxLAN network doesn\u0027t have."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a1ff146_78c59e8c","line":7,"range":{"start_line":7,"start_character":21,"end_line":7,"end_character":25},"in_reply_to":"3a1ff146_cef51b84","updated":"2017-03-16 02:22:10.000000000","message":"oops","commit_id":"276104beddf348738feb8beccf034fa64b5a62cf"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"6ec5589299ec9a6de57bcde7cd760ae9ebf613ef","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhiyuan_cai \u003cluckyvega.g@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-03-21 14:43:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Shared VxLAN (Part5: bluk create shadow port)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. What is the problem?"},{"line_number":10,"context_line":"VLAN network has some restrictions that VxLAN network doesn\u0027t have."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a1ced50_6e0e238d","line":7,"range":{"start_line":7,"start_character":21,"end_line":7,"end_character":25},"updated":"2017-03-23 04:00:10.000000000","message":"change to \"bulk\"","commit_id":"6cfc149d056d0d9e975045b6444168dddc821219"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"6ec5589299ec9a6de57bcde7cd760ae9ebf613ef","unresolved":false,"context_lines":[{"line_number":22,"context_line":"2. What is the solution to the problem?"},{"line_number":23,"context_line":"Use bulk creation API to create shadow port."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"3. What the features need to be implemented to the Tricircle"},{"line_number":26,"context_line":"to realize the solution?"},{"line_number":27,"context_line":"This is the fifth patch for cross-pod VxLAN networking support, which"},{"line_number":28,"context_line":"introduces the following changes:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a1ced50_2e7fcbe0","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":11},"updated":"2017-03-23 04:00:10.000000000","message":"omit \"the\"","commit_id":"6cfc149d056d0d9e975045b6444168dddc821219"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"6ec5589299ec9a6de57bcde7cd760ae9ebf613ef","unresolved":false,"context_lines":[{"line_number":27,"context_line":"This is the fifth patch for cross-pod VxLAN networking support, which"},{"line_number":28,"context_line":"introduces the following changes:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"(1) Use bluk API to create shadow ports"},{"line_number":31,"context_line":"(2) Do not create resource routing entries for shadow ports"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"[1] https://review.openstack.org/#/c/429155/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a1ced50_6e8543cd","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":12},"updated":"2017-03-23 04:00:10.000000000","message":"\"bulk\"","commit_id":"6cfc149d056d0d9e975045b6444168dddc821219"}],"tricircle/common/client.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"0897a0be1c62b886fa61f78424e7e7b0ee71f416","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    cfg.StrOpt(\u0027cross_pod_vxlan_mode\u0027, default\u003d\u0027p2p\u0027,"},{"line_number":71,"context_line":"               choices\u003d[\u0027p2p\u0027, \u0027l2gw\u0027, \u0027noop\u0027],"},{"line_number":72,"context_line":"               help\u003d\u0027Cross-pod VxLAN networking support mode\u0027),"},{"line_number":73,"context_line":"    cfg.IntOpt(\u0027max_bulk_size\u0027, default\u003d100,"},{"line_number":74,"context_line":"               help\u003d\u0027max bulk size to create shadow ports\u0027)"},{"line_number":75,"context_line":"]"},{"line_number":76,"context_line":"client_opt_group \u003d cfg.OptGroup(\u0027client\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_14644720","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":29},"updated":"2017-03-21 06:14:41.000000000","message":"max_shadow_port_bulk_size","commit_id":"d919f37f0c4bee5ba6daa6097a3f909b7a11d9c8"}],"tricircle/common/constants.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"b1b9584ce348266b09b451cb7abf346986afec99","unresolved":false,"context_lines":[{"line_number":62,"context_line":"interface_port_device_id \u003d \u0027reserved_gateway_port\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"MAX_INT \u003d 0x7FFFFFFF"},{"line_number":65,"context_line":"MAX_BULK_SIZE \u003d 100"},{"line_number":66,"context_line":"DEFAULT_DESTINATION \u003d \u00270.0.0.0/0\u0027"},{"line_number":67,"context_line":"expire_time \u003d datetime.datetime(2000, 1, 1)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_58bab6e2","line":65,"range":{"start_line":65,"start_character":0,"end_line":65,"end_character":13},"updated":"2017-03-18 02:41:04.000000000","message":"I think we\u0027d better to make it work as configuration item, but currently it\u0027s undocumented configuration item with default value to 100. So that there is a chance to tune the bulk creation performance if needed.","commit_id":"b755baec475a6cd1b6d9f924a4c7a48c31e42ba2"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"336e5b1c5d1d12a6b942a206e743dbd3c97798a1","unresolved":false,"context_lines":[{"line_number":62,"context_line":"interface_port_device_id \u003d \u0027reserved_gateway_port\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"MAX_INT \u003d 0x7FFFFFFF"},{"line_number":65,"context_line":"MAX_BULK_SIZE \u003d 100"},{"line_number":66,"context_line":"DEFAULT_DESTINATION \u003d \u00270.0.0.0/0\u0027"},{"line_number":67,"context_line":"expire_time \u003d datetime.datetime(2000, 1, 1)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_2d368c52","line":65,"range":{"start_line":65,"start_character":0,"end_line":65,"end_character":13},"in_reply_to":"1a1ced50_58bab6e2","updated":"2017-03-20 02:31:53.000000000","message":"ok","commit_id":"b755baec475a6cd1b6d9f924a4c7a48c31e42ba2"}],"tricircle/network/central_plugin.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"846b455c67d253b2439ed41f7440983a154e990c","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        if port.get(\u0027device_owner\u0027) not in NON_VM_PORT_TYPES:"},{"line_number":727,"context_line":"            try:"},{"line_number":728,"context_line":"                # since we don\u0027t create resource routing entries for shadow"},{"line_number":729,"context_line":"                # ports, we traverse pods network is located to delete ports"},{"line_number":730,"context_line":"                for pod, _id in self.helper.get_real_shadow_resource_iterator("},{"line_number":731,"context_line":"                        t_ctx, t_constants.RT_NETWORK, port[\u0027network_id\u0027]):"},{"line_number":732,"context_line":"                    self.xjob_handler.delete_server_port(t_ctx, port_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_c2f88a7f","line":729,"range":{"start_line":729,"start_character":42,"end_line":729,"end_character":49},"updated":"2017-03-15 09:32:44.000000000","message":"where the network is located","commit_id":"276104beddf348738feb8beccf034fa64b5a62cf"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"47b8b5f65b8c6a31209909766e8195b445261ec2","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        if port.get(\u0027device_owner\u0027) not in NON_VM_PORT_TYPES:"},{"line_number":727,"context_line":"            try:"},{"line_number":728,"context_line":"                # since we don\u0027t create resource routing entries for shadow"},{"line_number":729,"context_line":"                # ports, we traverse pods network is located to delete ports"},{"line_number":730,"context_line":"                for pod, _id in self.helper.get_real_shadow_resource_iterator("},{"line_number":731,"context_line":"                        t_ctx, t_constants.RT_NETWORK, port[\u0027network_id\u0027]):"},{"line_number":732,"context_line":"                    self.xjob_handler.delete_server_port(t_ctx, port_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_f837cead","line":729,"range":{"start_line":729,"start_character":42,"end_line":729,"end_character":49},"in_reply_to":"3a1ff146_c2f88a7f","updated":"2017-03-16 02:22:10.000000000","message":"ok","commit_id":"276104beddf348738feb8beccf034fa64b5a62cf"},{"author":{"_account_id":22559,"name":"Dongfeng Huang","email":"yingfeicaozhang100527@gmail.com","username":"southeast02"},"change_message_id":"3ac1736491f11b0055d54042cb353c01f2b47edc","unresolved":false,"context_lines":[{"line_number":733,"context_line":"        if port.get(\u0027device_owner\u0027) not in NON_VM_PORT_TYPES:"},{"line_number":734,"context_line":"            try:"},{"line_number":735,"context_line":"                # since we don\u0027t create resource routing entries for shadow"},{"line_number":736,"context_line":"                # ports, we traverse pods network is located to delete ports"},{"line_number":737,"context_line":"                for pod, _id in self.helper.get_real_shadow_resource_iterator("},{"line_number":738,"context_line":"                        t_ctx, t_constants.RT_NETWORK, port[\u0027network_id\u0027]):"},{"line_number":739,"context_line":"                    self.xjob_handler.delete_server_port(t_ctx, port_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_0a1d08bd","line":736,"range":{"start_line":736,"start_character":41,"end_line":736,"end_character":42},"updated":"2017-03-21 01:30:42.000000000","message":"add \"where\" here is better. I mean \"we traverse pods where network is located to delete ports\"","commit_id":"d919f37f0c4bee5ba6daa6097a3f909b7a11d9c8"},{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"6ec5589299ec9a6de57bcde7cd760ae9ebf613ef","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"            if bridge_ports:"},{"line_number":1203,"context_line":"                # we will not create bridge ports for local router, so here no"},{"line_number":1204,"context_line":"                # need to check \"is_local_router\" again"},{"line_number":1205,"context_line":"                t_bridge_port_id \u003d bridge_ports[0][\u0027id\u0027]"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"                if not is_ns:"},{"line_number":1208,"context_line":"                    b_client.action_routers(t_ctx, \u0027remove_gateway\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_8e57df56","side":"PARENT","line":1205,"range":{"start_line":1205,"start_character":16,"end_line":1205,"end_character":56},"updated":"2017-03-23 04:00:10.000000000","message":"why make this execution two steps instead of one step?","commit_id":"f46835b117b41892b06f992f08f9bad299243f1b"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"c6e498a682457a2368a39016aa3e2b3a61f2c693","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"            if bridge_ports:"},{"line_number":1203,"context_line":"                # we will not create bridge ports for local router, so here no"},{"line_number":1204,"context_line":"                # need to check \"is_local_router\" again"},{"line_number":1205,"context_line":"                t_bridge_port_id \u003d bridge_ports[0][\u0027id\u0027]"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"                if not is_ns:"},{"line_number":1208,"context_line":"                    b_client.action_routers(t_ctx, \u0027remove_gateway\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_d2525134","side":"PARENT","line":1205,"range":{"start_line":1205,"start_character":16,"end_line":1205,"end_character":56},"in_reply_to":"1a1ced50_8e57df56","updated":"2017-03-23 09:16:29.000000000","message":"because _delete_shadow_bridge_port in line 1223 is changed to accept a port dict instead of a port ID, so both t_bridge_port and t_bridge_port_id are needed","commit_id":"f46835b117b41892b06f992f08f9bad299243f1b"}],"tricircle/network/helper.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"846b455c67d253b2439ed41f7440983a154e990c","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        if not port_bodys:"},{"line_number":803,"context_line":"            return []"},{"line_number":804,"context_line":"        create_body_map \u003d {}"},{"line_number":805,"context_line":"        for port_body, agent in zip(port_bodys, agents):"},{"line_number":806,"context_line":"            host \u003d port_body[\u0027binding:host_id\u0027]"},{"line_number":807,"context_line":"            create_body \u003d {"},{"line_number":808,"context_line":"                \u0027port\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_fdf1a7ce","line":805,"range":{"start_line":805,"start_character":36,"end_line":805,"end_character":46},"updated":"2017-03-15 09:32:44.000000000","message":"split into a configured batch size, so that each batch will not be too huge","commit_id":"276104beddf348738feb8beccf034fa64b5a62cf"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"47b8b5f65b8c6a31209909766e8195b445261ec2","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        if not port_bodys:"},{"line_number":803,"context_line":"            return []"},{"line_number":804,"context_line":"        create_body_map \u003d {}"},{"line_number":805,"context_line":"        for port_body, agent in zip(port_bodys, agents):"},{"line_number":806,"context_line":"            host \u003d port_body[\u0027binding:host_id\u0027]"},{"line_number":807,"context_line":"            create_body \u003d {"},{"line_number":808,"context_line":"                \u0027port\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a1ff146_b8f2b6d0","line":805,"range":{"start_line":805,"start_character":36,"end_line":805,"end_character":46},"in_reply_to":"3a1ff146_fdf1a7ce","updated":"2017-03-16 02:22:10.000000000","message":"ok, as we discussed, I will set the size to 100","commit_id":"276104beddf348738feb8beccf034fa64b5a62cf"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"b1b9584ce348266b09b451cb7abf346986afec99","unresolved":false,"context_lines":[{"line_number":871,"context_line":"                    {portbindings.PROFILE: {"},{"line_number":872,"context_line":"                        t_constants.PROFILE_AGENT_TYPE: agent[\u0027type\u0027],"},{"line_number":873,"context_line":"                        t_constants.PROFILE_TUNNEL_IP: agent[\u0027tunnel_ip\u0027]}})"},{"line_number":874,"context_line":"            full_create_bodys.append(create_body[\u0027port\u0027])"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        cursor \u003d 0"},{"line_number":877,"context_line":"        ret_port_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_5804767d","line":874,"range":{"start_line":874,"start_character":12,"end_line":874,"end_character":57},"updated":"2017-03-18 02:41:04.000000000","message":"full_create_bodys.append(create_body[\u0027port\u0027]) -\u003e full_create_bodys.append(create_body)\n\nfrom the local plugin,the port is accessed like: \n\nfor port in ports[\u0027ports\u0027]:\n    port_body \u003d port[\u0027port\u0027]\n\n\n\u003e\u003e\u003e create_body\u003d{ \u0027port\u0027:\u0027mmmm\u0027 }\n\u003e\u003e\u003e full_create_bodys \u003d []\n\u003e\u003e\u003e full_create_bodys.append(create_body[\u0027port\u0027])\n\u003e\u003e\u003e full_create_bodys\n[\u0027mmmm\u0027]\n\n\n\u003e\u003e\u003e full \u003d []\n\u003e\u003e\u003e full.append(create_body)\n\u003e\u003e\u003e full\n[{\u0027port\u0027: \u0027mmmm\u0027}]\n\u003e\u003e\u003e create_body1\u003d{ \u0027port\u0027:\u0027uuuuuu\u0027 }\n\u003e\u003e\u003e full.append(create_body1)\n\u003e\u003e\u003e full\n[{\u0027port\u0027: \u0027mmmm\u0027}, {\u0027port\u0027: \u0027uuuuuu\u0027}]","commit_id":"b755baec475a6cd1b6d9f924a4c7a48c31e42ba2"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"336e5b1c5d1d12a6b942a206e743dbd3c97798a1","unresolved":false,"context_lines":[{"line_number":871,"context_line":"                    {portbindings.PROFILE: {"},{"line_number":872,"context_line":"                        t_constants.PROFILE_AGENT_TYPE: agent[\u0027type\u0027],"},{"line_number":873,"context_line":"                        t_constants.PROFILE_TUNNEL_IP: agent[\u0027tunnel_ip\u0027]}})"},{"line_number":874,"context_line":"            full_create_bodys.append(create_body[\u0027port\u0027])"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        cursor \u003d 0"},{"line_number":877,"context_line":"        ret_port_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_6d032443","line":874,"range":{"start_line":874,"start_character":12,"end_line":874,"end_character":57},"in_reply_to":"1a1ced50_5804767d","updated":"2017-03-20 02:31:53.000000000","message":"Both usages are correct. As I replied in local_plugin.py, neutron API does a transformation.","commit_id":"b755baec475a6cd1b6d9f924a4c7a48c31e42ba2"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"1bcfca67f1110dee0a08184eacff5a011576218a","unresolved":false,"context_lines":[{"line_number":872,"context_line":"        cursor \u003d 0"},{"line_number":873,"context_line":"        ret_port_ids \u003d []"},{"line_number":874,"context_line":"        client \u003d self._get_client(target_pod[\u0027region_name\u0027])"},{"line_number":875,"context_line":"        while True:"},{"line_number":876,"context_line":"            if cursor \u003e\u003d len(full_create_bodys):"},{"line_number":877,"context_line":"                break"},{"line_number":878,"context_line":"            ret_port_ids.extend(self._prepare_shadow_ports_with_retry("},{"line_number":879,"context_line":"                ctx, client,"},{"line_number":880,"context_line":"                full_create_bodys[cursor: cursor + max_bulk_size]))"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_0242db10","line":877,"range":{"start_line":875,"start_character":0,"end_line":877,"end_character":21},"updated":"2017-03-27 14:39:02.000000000","message":"shouldn\u0027t this like follows:\n\n    while cursor \u003c len(full_create_bodys):","commit_id":"e1ece51ea5c0bad76655f296612cb152ad8440b2"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"cad405478cbdb513ecee8df6f65c42f7255f42cb","unresolved":false,"context_lines":[{"line_number":872,"context_line":"        cursor \u003d 0"},{"line_number":873,"context_line":"        ret_port_ids \u003d []"},{"line_number":874,"context_line":"        client \u003d self._get_client(target_pod[\u0027region_name\u0027])"},{"line_number":875,"context_line":"        while True:"},{"line_number":876,"context_line":"            if cursor \u003e\u003d len(full_create_bodys):"},{"line_number":877,"context_line":"                break"},{"line_number":878,"context_line":"            ret_port_ids.extend(self._prepare_shadow_ports_with_retry("},{"line_number":879,"context_line":"                ctx, client,"},{"line_number":880,"context_line":"                full_create_bodys[cursor: cursor + max_bulk_size]))"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_a37552cd","line":877,"range":{"start_line":875,"start_character":0,"end_line":877,"end_character":21},"in_reply_to":"ffe62b97_0242db10","updated":"2017-03-28 06:42:46.000000000","message":"oh yes","commit_id":"e1ece51ea5c0bad76655f296612cb152ad8440b2"}],"tricircle/network/local_plugin.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"b1b9584ce348266b09b451cb7abf346986afec99","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        # NOTE(zhiyuan) currently this bulk operation is only for shadow port"},{"line_number":431,"context_line":"        # creation optimization"},{"line_number":432,"context_line":"        for port in ports[\u0027ports\u0027]:"},{"line_number":433,"context_line":"            port_body \u003d port[\u0027port\u0027]"},{"line_number":434,"context_line":"            self._create_shadow_agent(context, port_body)"},{"line_number":435,"context_line":"            self.get_network(context, port_body[\u0027network_id\u0027])"},{"line_number":436,"context_line":"            port_body[\u0027id\u0027] \u003d port_body[\u0027name\u0027].split(\u0027_\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_f8c7e242","line":433,"range":{"start_line":433,"start_character":30,"end_line":433,"end_character":34},"updated":"2017-03-18 02:41:04.000000000","message":"the body from central plugin is like:\n\nports:\n{\n  {\n    port content\n  },\n  {\n     port content \n   }\n}\n\nbut not \n\n\nports:\n{\n  port:{\n    port content\n  },\n  port:{\n     port content \n   }\n}","commit_id":"b755baec475a6cd1b6d9f924a4c7a48c31e42ba2"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"336e5b1c5d1d12a6b942a206e743dbd3c97798a1","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        # NOTE(zhiyuan) currently this bulk operation is only for shadow port"},{"line_number":431,"context_line":"        # creation optimization"},{"line_number":432,"context_line":"        for port in ports[\u0027ports\u0027]:"},{"line_number":433,"context_line":"            port_body \u003d port[\u0027port\u0027]"},{"line_number":434,"context_line":"            self._create_shadow_agent(context, port_body)"},{"line_number":435,"context_line":"            self.get_network(context, port_body[\u0027network_id\u0027])"},{"line_number":436,"context_line":"            port_body[\u0027id\u0027] \u003d port_body[\u0027name\u0027].split(\u0027_\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_6ddc04e5","line":433,"range":{"start_line":433,"start_character":30,"end_line":433,"end_character":34},"in_reply_to":"1a1ced50_f8c7e242","updated":"2017-03-20 02:31:53.000000000","message":"Oh, neutron API plays a trick here. Though the passed in body is\n\n\"ports\": [{port content}]\n\nneutron API will transfer it to\n\n\"ports\": [{\"port\": port content}]\n\nThis is for the compatibility between the native bulk creation and non-native bulk creation. For non-native bulk creation, each element in the list will be passed to create_port function. That\u0027s why {port content} is extended to {\"port\": port content}","commit_id":"b755baec475a6cd1b6d9f924a4c7a48c31e42ba2"}],"tricircle/tests/unit/network/test_central_plugin.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"1bcfca67f1110dee0a08184eacff5a011576218a","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                reason\u003d_(\"updated subnet id not found\"))"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def create_ports(self, ctx, body):"},{"line_number":488,"context_line":"        if \u0027ports\u0027 in body:"},{"line_number":489,"context_line":"            ret \u003d []"},{"line_number":490,"context_line":"            for port in body[\u0027ports\u0027]:"},{"line_number":491,"context_line":"                ret.append(self.create_resources(\u0027port\u0027, ctx, {\u0027port\u0027: port}))"},{"line_number":492,"context_line":"            return ret"},{"line_number":493,"context_line":"        else:"},{"line_number":494,"context_line":"            return self.create_resources(\u0027port\u0027, ctx, body)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def list_ports(self, ctx, filters\u003dNone):"},{"line_number":497,"context_line":"        filter_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_e22b772d","line":494,"range":{"start_line":488,"start_character":8,"end_line":494,"end_character":59},"updated":"2017-03-27 14:39:02.000000000","message":"nit: this else instruction is not needed\n\n        if \u0027ports\u0027 in body:\n            ret \u003d []\n            for port in body[\u0027ports\u0027]:\n                ret.append(self.create_resources(\u0027port\u0027, ctx, {\u0027port\u0027: port}))\n            return ret\n        return self.create_resources(\u0027port\u0027, ctx, body)","commit_id":"e1ece51ea5c0bad76655f296612cb152ad8440b2"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"cad405478cbdb513ecee8df6f65c42f7255f42cb","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                reason\u003d_(\"updated subnet id not found\"))"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def create_ports(self, ctx, body):"},{"line_number":488,"context_line":"        if \u0027ports\u0027 in body:"},{"line_number":489,"context_line":"            ret \u003d []"},{"line_number":490,"context_line":"            for port in body[\u0027ports\u0027]:"},{"line_number":491,"context_line":"                ret.append(self.create_resources(\u0027port\u0027, ctx, {\u0027port\u0027: port}))"},{"line_number":492,"context_line":"            return ret"},{"line_number":493,"context_line":"        else:"},{"line_number":494,"context_line":"            return self.create_resources(\u0027port\u0027, ctx, body)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def list_ports(self, ctx, filters\u003dNone):"},{"line_number":497,"context_line":"        filter_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_c3617607","line":494,"range":{"start_line":488,"start_character":8,"end_line":494,"end_character":59},"in_reply_to":"ffe62b97_e22b772d","updated":"2017-03-28 06:42:46.000000000","message":"ok","commit_id":"e1ece51ea5c0bad76655f296612cb152ad8440b2"}],"tricircle/tests/unit/xjob/test_xmanager.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"1bcfca67f1110dee0a08184eacff5a011576218a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                res.update(body[resource])"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def create_ports(self, ctx, body):"},{"line_number":135,"context_line":"        if \u0027ports\u0027 in body:"},{"line_number":136,"context_line":"            ret \u003d []"},{"line_number":137,"context_line":"            for port in body[\u0027ports\u0027]:"},{"line_number":138,"context_line":"                ret.append(self.create_resources(\u0027port\u0027, ctx, {\u0027port\u0027: port}))"},{"line_number":139,"context_line":"            return ret"},{"line_number":140,"context_line":"        else:"},{"line_number":141,"context_line":"            return self.create_resources(\u0027port\u0027, ctx, body)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def list_ports(self, cxt, filters\u003dNone):"},{"line_number":144,"context_line":"        return self.list_resources(\u0027port\u0027, cxt, filters)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_a2f56f85","line":141,"range":{"start_line":135,"start_character":8,"end_line":141,"end_character":59},"updated":"2017-03-27 14:39:02.000000000","message":"nit: same thing here:\n\n        if \u0027ports\u0027 in body:\n            ret \u003d []\n            for port in body[\u0027ports\u0027]:\n                ret.append(self.create_resources(\u0027port\u0027, ctx, {\u0027port\u0027: port}))\n            return ret\n        return self.create_resources(\u0027port\u0027, ctx, body)","commit_id":"e1ece51ea5c0bad76655f296612cb152ad8440b2"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"cad405478cbdb513ecee8df6f65c42f7255f42cb","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                res.update(body[resource])"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def create_ports(self, ctx, body):"},{"line_number":135,"context_line":"        if \u0027ports\u0027 in body:"},{"line_number":136,"context_line":"            ret \u003d []"},{"line_number":137,"context_line":"            for port in body[\u0027ports\u0027]:"},{"line_number":138,"context_line":"                ret.append(self.create_resources(\u0027port\u0027, ctx, {\u0027port\u0027: port}))"},{"line_number":139,"context_line":"            return ret"},{"line_number":140,"context_line":"        else:"},{"line_number":141,"context_line":"            return self.create_resources(\u0027port\u0027, ctx, body)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def list_ports(self, cxt, filters\u003dNone):"},{"line_number":144,"context_line":"        return self.list_resources(\u0027port\u0027, cxt, filters)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_e348fa87","line":141,"range":{"start_line":135,"start_character":8,"end_line":141,"end_character":59},"in_reply_to":"ffe62b97_a2f56f85","updated":"2017-03-28 06:42:46.000000000","message":"ok","commit_id":"e1ece51ea5c0bad76655f296612cb152ad8440b2"}]}
