)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"during syncing."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I299031a505f05cd0469e2476b867b9dbca59c5bf"},{"line_number":17,"context_line":"Partial-Bug: #1840579"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_040255bb","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":7},"updated":"2019-08-26 19:56:21.000000000","message":"Are there other changes required or is this supposed to be Closes-Bug ?","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"ca1909192be159c605e7866502893a7cf766a5f3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"during syncing."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I299031a505f05cd0469e2476b867b9dbca59c5bf"},{"line_number":17,"context_line":"Partial-Bug: #1840579"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_34f1c0df","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":7},"in_reply_to":"7faddb67_040255bb","updated":"2019-08-27 06:47:21.000000000","message":"1. extra unnecessary dvr won\u0027t be created if PS merged\n2. currently i have no idea why neutron-server instructs dvr agents","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5651a465a06bbd74ece7e4d012635ae7792c0ba0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shenjiatong \u003cyshxxsjt715@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-12-18 07:59:30 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"unnecessary routers should not be created"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"we observe an excessive amount of routers created on"},{"line_number":10,"context_line":"compute node on which some virtual machines got a fixed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_86ac0d37","line":7,"updated":"2019-12-18 17:19:30.000000000","message":"General nit about capitalization throughout, for example, Unnecessary","commit_id":"126bc2ba1c4d4bebd7b4d7195e9baa279d3d35ca"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"fc5f0a1200e19797d2da069f6416a97649779778","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shenjiatong \u003cyshxxsjt715@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-12-18 07:59:30 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"unnecessary routers should not be created"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"we observe an excessive amount of routers created on"},{"line_number":10,"context_line":"compute node on which some virtual machines got a fixed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_7657355c","line":7,"in_reply_to":"3fa7e38b_86ac0d37","updated":"2019-12-19 06:52:03.000000000","message":"done","commit_id":"126bc2ba1c4d4bebd7b4d7195e9baa279d3d35ca"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5651a465a06bbd74ece7e4d012635ae7792c0ba0","unresolved":false,"context_lines":[{"line_number":14,"context_line":"during syncing."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I299031a505f05cd0469e2476b867b9dbca59c5bf"},{"line_number":17,"context_line":"Partial-Bug: #1840579"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_06eb3d7b","line":17,"updated":"2019-12-18 17:19:30.000000000","message":"Should this be Closes-bug ?","commit_id":"126bc2ba1c4d4bebd7b4d7195e9baa279d3d35ca"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"fc5f0a1200e19797d2da069f6416a97649779778","unresolved":false,"context_lines":[{"line_number":14,"context_line":"during syncing."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I299031a505f05cd0469e2476b867b9dbca59c5bf"},{"line_number":17,"context_line":"Partial-Bug: #1840579"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_b6c28d01","line":17,"in_reply_to":"3fa7e38b_06eb3d7b","updated":"2019-12-19 06:52:03.000000000","message":"this is only a quick fix. But right now I do not know how router is synced to the node, so I prefer it to be a partial bug..","commit_id":"126bc2ba1c4d4bebd7b4d7195e9baa279d3d35ca"}],"neutron/db/l3_dvrscheduler_db.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"335808c2001d5dc42638e7dc97dabfd7996a60c6","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                result_set |\u003d set(dvr_routers)"},{"line_number":425,"context_line":"            else:"},{"line_number":426,"context_line":"                result_set |\u003d (router_ids - result_set)\\"},{"line_number":427,"context_line":"                    .intersection(dvr_routers)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"            for dvr_router in dvr_routers:"},{"line_number":430,"context_line":"                result_set |\u003d set("}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_775b1653","line":427,"range":{"start_line":427,"start_character":34,"end_line":427,"end_character":45},"updated":"2019-08-21 09:15:12.000000000","message":"As Swaminathan commented in [1], the DVR routers will be created in the host here the port is bound. Why are you removing them from this list? That\u0027s the point of DVR: to move the routing load to the compute node from the network node.\n\nIf you don\u0027t want the compute nodes to host those routers, try to use non-DVR routers.\n\n[1] https://bugs.launchpad.net/neutron/+bug/1840579/comments/2","commit_id":"f4ae76a42110e5bd3173319c17ff5139269d71b2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":430,"context_line":"                            self._check_dvr_serviceable_ports_on_host("},{"line_number":431,"context_line":"                                    context, agent_db[\u0027host\u0027],"},{"line_number":432,"context_line":"                                    list(subnet_ids))):"},{"line_number":433,"context_line":"                        result_set.add(router_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"            for dvr_router in dvr_routers:"},{"line_number":436,"context_line":"                result_set |\u003d set("}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_e45b79f3","side":"PARENT","line":433,"updated":"2019-08-26 19:56:21.000000000","message":"I\u0027m also not sure what we\u0027re going to break here, as Rodolfo mentioned.","commit_id":"490471ebd3ac56d0cee164b9c1c1211687e49437"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"ca1909192be159c605e7866502893a7cf766a5f3","unresolved":false,"context_lines":[{"line_number":430,"context_line":"                            self._check_dvr_serviceable_ports_on_host("},{"line_number":431,"context_line":"                                    context, agent_db[\u0027host\u0027],"},{"line_number":432,"context_line":"                                    list(subnet_ids))):"},{"line_number":433,"context_line":"                        result_set.add(router_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"            for dvr_router in dvr_routers:"},{"line_number":436,"context_line":"                result_set |\u003d set("}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_34df8039","side":"PARENT","line":433,"in_reply_to":"7faddb67_e45b79f3","updated":"2019-08-27 06:47:21.000000000","message":"i personally think the problem is `get_subnet_ids_on_router`, this method will return subnet id even if it is a router gateway port. but image one fix this call by filter out gateway ports, then it is equivalent to invoking `_get_dvr_router_ids_for_host` again. so I personally think it is safe. besides, if this part is really necessary then I believe we should add more tests here.","commit_id":"490471ebd3ac56d0cee164b9c1c1211687e49437"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":423,"context_line":"            if not router_ids:"},{"line_number":424,"context_line":"                result_set |\u003d set(dvr_routers)"},{"line_number":425,"context_line":"            else:"},{"line_number":426,"context_line":"                result_set |\u003d (router_ids - result_set)\\"},{"line_number":427,"context_line":"                    .intersection(dvr_routers)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"            for dvr_router in dvr_routers:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_843885d4","line":426,"range":{"start_line":426,"start_character":55,"end_line":426,"end_character":56},"updated":"2019-08-26 19:56:21.000000000","message":"nit: you could remove the backslash by putting another() around this code","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7d1e270f9742b1148282dd4e0e10cbcb5a467aa5","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                result_set |\u003d set(dvr_routers)"},{"line_number":425,"context_line":"            else:"},{"line_number":426,"context_line":"                result_set |\u003d ((router_ids - result_set)"},{"line_number":427,"context_line":"                    .intersection(dvr_routers))"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"            for dvr_router in dvr_routers:"},{"line_number":430,"context_line":"                result_set |\u003d set("}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_74014639","line":427,"updated":"2019-08-29 10:30:20.000000000","message":"Sorry but I don\u0027t exactly understand this change. Previously it was here that there were listed all subnets connected to the router and then if on host there was any serviceable port from given subnet, this router was added to the list.\n\nServiceable ports are compute ports, and additionally dhcp and lbaas ports. So why You now don\u0027t want to look for such ports anymore?\n\nShouldn\u0027t You just change logic of self.get_subnet_ids_on_router() that it will not return subnets which belongs to network connected there as external gateway?","commit_id":"52ed8088405dacbab247e23bc8e26396f1a5f856"}],"neutron/tests/unit/db/test_agentschedulers_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"                                  return_value\u003d[r1[\u0027router\u0027][\u0027id\u0027]]), \\"},{"line_number":1059,"context_line":"                mock.patch.object(self.l3plugin,"},{"line_number":1060,"context_line":"                                  \u0027_check_dvr_serviceable_ports_on_host\u0027,"},{"line_number":1061,"context_line":"                                  return_value\u003dTrue):"},{"line_number":1062,"context_line":"            for l3_agent in dvr_agents:"},{"line_number":1063,"context_line":"                host \u003d l3_agent[\u0027host\u0027]"},{"line_number":1064,"context_line":"                ret_a \u003d l3_rpc_cb.sync_routers(self.adminContext, host\u003dhost,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_04e6d54b","line":1061,"updated":"2019-08-26 19:56:21.000000000","message":"It looks like you are just hacking the test to pass?  For example by just returning a single router id.  Also, two of these calls won\u0027t happen any more with your change, right?","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"497b1d418219d5dad9351625082afcb648e9b73a","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"                                  return_value\u003d[r1[\u0027router\u0027][\u0027id\u0027]]), \\"},{"line_number":1059,"context_line":"                mock.patch.object(self.l3plugin,"},{"line_number":1060,"context_line":"                                  \u0027_check_dvr_serviceable_ports_on_host\u0027,"},{"line_number":1061,"context_line":"                                  return_value\u003dTrue):"},{"line_number":1062,"context_line":"            for l3_agent in dvr_agents:"},{"line_number":1063,"context_line":"                host \u003d l3_agent[\u0027host\u0027]"},{"line_number":1064,"context_line":"                ret_a \u003d l3_rpc_cb.sync_routers(self.adminContext, host\u003dhost,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_5d801fc0","line":1061,"in_reply_to":"7faddb67_04e6d54b","updated":"2019-08-27 06:48:07.000000000","message":"Done","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"            # first create an external network"},{"line_number":1080,"context_line":"            net_id \u003d s[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":1081,"context_line":"            self._set_net_external(net_id)"},{"line_number":1082,"context_line":"            # create router with extrenal gateway"},{"line_number":1083,"context_line":"            router \u003d {\u0027name\u0027: \u0027router1\u0027,"},{"line_number":1084,"context_line":"                      \u0027external_gateway_info\u0027: {\u0027network_id\u0027: net_id},"},{"line_number":1085,"context_line":"                      \u0027tenant_id\u0027: \u0027tenant_id\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_697a04bb","line":1082,"range":{"start_line":1082,"start_character":33,"end_line":1082,"end_character":41},"updated":"2019-08-26 19:56:21.000000000","message":"nit: external","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"497b1d418219d5dad9351625082afcb648e9b73a","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"            # first create an external network"},{"line_number":1080,"context_line":"            net_id \u003d s[\u0027subnet\u0027][\u0027network_id\u0027]"},{"line_number":1081,"context_line":"            self._set_net_external(net_id)"},{"line_number":1082,"context_line":"            # create router with extrenal gateway"},{"line_number":1083,"context_line":"            router \u003d {\u0027name\u0027: \u0027router1\u0027,"},{"line_number":1084,"context_line":"                      \u0027external_gateway_info\u0027: {\u0027network_id\u0027: net_id},"},{"line_number":1085,"context_line":"                      \u0027tenant_id\u0027: \u0027tenant_id\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_dd1e4fba","line":1082,"range":{"start_line":1082,"start_character":33,"end_line":1082,"end_character":41},"in_reply_to":"7faddb67_697a04bb","updated":"2019-08-27 06:48:07.000000000","message":"Done","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":1088,"context_line":"            r \u003d self.l3plugin.create_router(self.adminContext,"},{"line_number":1089,"context_line":"                                            {\u0027router\u0027: router})"},{"line_number":1090,"context_line":"            self.l3plugin.schedule_router("},{"line_number":1091,"context_line":"                    self.adminContext, r[\u0027id\u0027])"},{"line_number":1092,"context_line":"            with self.port("},{"line_number":1093,"context_line":"                subnet\u003ds,"},{"line_number":1094,"context_line":"                device_owner\u003dDEVICE_OWNER_COMPUTE"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_c9421869","line":1091,"updated":"2019-08-26 19:56:21.000000000","message":"nit: this could all fit on previous line, as L884 was, seems like that\u0027s where this was copied from.","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"497b1d418219d5dad9351625082afcb648e9b73a","unresolved":false,"context_lines":[{"line_number":1088,"context_line":"            r \u003d self.l3plugin.create_router(self.adminContext,"},{"line_number":1089,"context_line":"                                            {\u0027router\u0027: router})"},{"line_number":1090,"context_line":"            self.l3plugin.schedule_router("},{"line_number":1091,"context_line":"                    self.adminContext, r[\u0027id\u0027])"},{"line_number":1092,"context_line":"            with self.port("},{"line_number":1093,"context_line":"                subnet\u003ds,"},{"line_number":1094,"context_line":"                device_owner\u003dDEVICE_OWNER_COMPUTE"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_fd19cbd0","line":1091,"in_reply_to":"7faddb67_c9421869","updated":"2019-08-27 06:48:07.000000000","message":"Done","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":1092,"context_line":"            with self.port("},{"line_number":1093,"context_line":"                subnet\u003ds,"},{"line_number":1094,"context_line":"                device_owner\u003dDEVICE_OWNER_COMPUTE"},{"line_number":1095,"context_line":"            ) as port:"},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"                # bind port to L3_HOSTB"},{"line_number":1098,"context_line":"                from neutron_lib.api.definitions import portbindings"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_092ef0aa","line":1095,"updated":"2019-08-26 19:56:21.000000000","message":"super nit: this indentation is different from all the other \"with self.port()\" code in this file","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"497b1d418219d5dad9351625082afcb648e9b73a","unresolved":false,"context_lines":[{"line_number":1092,"context_line":"            with self.port("},{"line_number":1093,"context_line":"                subnet\u003ds,"},{"line_number":1094,"context_line":"                device_owner\u003dDEVICE_OWNER_COMPUTE"},{"line_number":1095,"context_line":"            ) as port:"},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"                # bind port to L3_HOSTB"},{"line_number":1098,"context_line":"                from neutron_lib.api.definitions import portbindings"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_9d76970c","line":1095,"in_reply_to":"7faddb67_092ef0aa","updated":"2019-08-27 06:48:07.000000000","message":"Done","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":1095,"context_line":"            ) as port:"},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"                # bind port to L3_HOSTB"},{"line_number":1098,"context_line":"                from neutron_lib.api.definitions import portbindings"},{"line_number":1099,"context_line":"                updated_port \u003d {"},{"line_number":1100,"context_line":"                    \"port\": {"},{"line_number":1101,"context_line":"                        portbindings.HOST_ID: L3_HOSTB"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_a9ab1c1c","line":1098,"updated":"2019-08-26 19:56:21.000000000","message":"This belongs at the top of file","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"497b1d418219d5dad9351625082afcb648e9b73a","unresolved":false,"context_lines":[{"line_number":1095,"context_line":"            ) as port:"},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"                # bind port to L3_HOSTB"},{"line_number":1098,"context_line":"                from neutron_lib.api.definitions import portbindings"},{"line_number":1099,"context_line":"                updated_port \u003d {"},{"line_number":1100,"context_line":"                    \"port\": {"},{"line_number":1101,"context_line":"                        portbindings.HOST_ID: L3_HOSTB"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_bd7913fc","line":1098,"in_reply_to":"7faddb67_a9ab1c1c","updated":"2019-08-27 06:48:07.000000000","message":"Done","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9578ed46af11c5d43d5be9ae3f826593757a312d","unresolved":false,"context_lines":[{"line_number":1106,"context_line":"                    port[\u0027port\u0027][\u0027id\u0027],"},{"line_number":1107,"context_line":"                    updated_port"},{"line_number":1108,"context_line":"                )"},{"line_number":1109,"context_line":"                ret_a \u003d l3_rpc_cb.sync_routers("},{"line_number":1110,"context_line":"                    self.adminContext,"},{"line_number":1111,"context_line":"                    host\u003dL3_HOSTB,"},{"line_number":1112,"context_line":"                    router_ids\u003d[r[\u0027id\u0027]])"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_892180b8","line":1109,"range":{"start_line":1109,"start_character":16,"end_line":1109,"end_character":21},"updated":"2019-08-26 19:56:21.000000000","message":"s/ret_b as this is for L3_HOSTB","commit_id":"65fed03482d707a2e13d2423dc0c3b48cf53a54f"}]}
