)]}'
{"zun/api/controllers/v1/containers.py":[{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        return view.format_container(pecan.request.host_url, new_container)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def _build_requested_networks(self, context, nets):"},{"line_number":271,"context_line":"        neutron_api \u003d neutron.NeutronAPI(context)"},{"line_number":272,"context_line":"        requested_networks \u003d []"},{"line_number":273,"context_line":"        if not nets:"},{"line_number":274,"context_line":"            # Find an available neutron net and create docker network by"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_2062cc3f","line":271,"range":{"start_line":271,"start_character":8,"end_line":271,"end_character":49},"updated":"2017-07-13 03:14:12.000000000","message":"This line is duplicated with L276","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"96681e80d12f455e3c6ed0db010ffe10cd7af4b0","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        return view.format_container(pecan.request.host_url, new_container)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def _build_requested_networks(self, context, nets):"},{"line_number":271,"context_line":"        neutron_api \u003d neutron.NeutronAPI(context)"},{"line_number":272,"context_line":"        requested_networks \u003d []"},{"line_number":273,"context_line":"        if not nets:"},{"line_number":274,"context_line":"            # Find an available neutron net and create docker network by"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_f19d16bc","line":271,"range":{"start_line":271,"start_character":8,"end_line":271,"end_character":49},"in_reply_to":"1f1a1f67_2062cc3f","updated":"2017-07-19 01:15:03.000000000","message":"Done","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"}],"zun/container/docker/driver.py":[{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":555,"context_line":"            value \u003d six.text_type(value)"},{"line_number":556,"context_line":"        return value.encode(\u0027utf-8\u0027)"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    def create_sandbox(self, context, container, requested_networks,"},{"line_number":559,"context_line":"                       image\u003d\u0027kubernetes/pause\u0027):"},{"line_number":560,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":561,"context_line":"            network_api \u003d zun_network.api(context\u003dcontext, docker_api\u003ddocker)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_cb2699b8","line":558,"updated":"2017-07-13 03:14:12.000000000","message":"DockerDriver is ContainerDriver\u0027s subclass. The base method ContainerDriver.create_sandbox doesn\u0027t have `requested_networks` [1], so you should update this one:\n\ndef create_sanbox(self, context, container, requested_networks, **kwargs)\n\nor more general:\n\ndef create_sanbox(self, context, container, *args, **kwargs)\n\nhttps://github.com/openstack/zun/blob/master/zun/container/driver.py#L152","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"96681e80d12f455e3c6ed0db010ffe10cd7af4b0","unresolved":false,"context_lines":[{"line_number":555,"context_line":"            value \u003d six.text_type(value)"},{"line_number":556,"context_line":"        return value.encode(\u0027utf-8\u0027)"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    def create_sandbox(self, context, container, requested_networks,"},{"line_number":559,"context_line":"                       image\u003d\u0027kubernetes/pause\u0027):"},{"line_number":560,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":561,"context_line":"            network_api \u003d zun_network.api(context\u003dcontext, docker_api\u003ddocker)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_71b10647","line":558,"in_reply_to":"1f1a1f67_cb2699b8","updated":"2017-07-19 01:15:03.000000000","message":"Done","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                       image\u003d\u0027kubernetes/pause\u0027):"},{"line_number":560,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":561,"context_line":"            network_api \u003d zun_network.api(context\u003dcontext, docker_api\u003ddocker)"},{"line_number":562,"context_line":"            for request in requested_networks:"},{"line_number":563,"context_line":"                self._get_or_create_docker_network("},{"line_number":564,"context_line":"                    context, network_api, request[\u0027network\u0027])"},{"line_number":565,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_0bd7f14d","line":562,"range":{"start_line":562,"start_character":16,"end_line":562,"end_character":23},"updated":"2017-07-13 03:14:12.000000000","message":"IMO, s/request/requested_network/g or s/request/rq_network/g will be easier to follow.","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"96681e80d12f455e3c6ed0db010ffe10cd7af4b0","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                       image\u003d\u0027kubernetes/pause\u0027):"},{"line_number":560,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":561,"context_line":"            network_api \u003d zun_network.api(context\u003dcontext, docker_api\u003ddocker)"},{"line_number":562,"context_line":"            for request in requested_networks:"},{"line_number":563,"context_line":"                self._get_or_create_docker_network("},{"line_number":564,"context_line":"                    context, network_api, request[\u0027network\u0027])"},{"line_number":565,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_51accaeb","line":562,"range":{"start_line":562,"start_character":16,"end_line":562,"end_character":23},"in_reply_to":"1f1a1f67_0bd7f14d","updated":"2017-07-19 01:15:03.000000000","message":"Done","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"dfa7341448da14b7c3f7018f48b45430cc35572b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                      {\u0027image\u0027: image, \u0027name\u0027: name})"},{"line_number":119,"context_line":"            if requested_networks is None:"},{"line_number":120,"context_line":"                if network_standalone:"},{"line_number":121,"context_line":"                    network \u003d self._provision_network(context, container,"},{"line_number":122,"context_line":"                                                      network_api)"},{"line_number":123,"context_line":"                    requested_networks \u003d [{\u0027network\u0027: network[\u0027Name\u0027],"},{"line_number":124,"context_line":"                                           \u0027port\u0027: \u0027\u0027,"},{"line_number":125,"context_line":"                                           \u0027v4-fixed-ip\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff346bd7_ab0a7b1c","line":122,"range":{"start_line":121,"start_character":20,"end_line":122,"end_character":66},"updated":"2017-07-28 10:16:31.000000000","message":"_provision_network is used here, will be raised some conflicts.","commit_id":"841cfd40900e6b6530dfc5477f453f71a933f4c9"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"366a8dfee50efbffd02ae84ae9488953c4bd26d4","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                      {\u0027image\u0027: image, \u0027name\u0027: name})"},{"line_number":119,"context_line":"            if requested_networks is None:"},{"line_number":120,"context_line":"                if network_standalone:"},{"line_number":121,"context_line":"                    network \u003d self._provision_network(context, container,"},{"line_number":122,"context_line":"                                                      network_api)"},{"line_number":123,"context_line":"                    requested_networks \u003d [{\u0027network\u0027: network[\u0027Name\u0027],"},{"line_number":124,"context_line":"                                           \u0027port\u0027: \u0027\u0027,"},{"line_number":125,"context_line":"                                           \u0027v4-fixed-ip\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_8882d9c7","line":122,"range":{"start_line":121,"start_character":20,"end_line":122,"end_character":66},"in_reply_to":"df3967d1_097394e9","updated":"2017-07-29 17:31:29.000000000","message":"Ack.","commit_id":"841cfd40900e6b6530dfc5477f453f71a933f4c9"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"1cf658d1fe4041bcec722a875cf8e23ed887a2f3","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                      {\u0027image\u0027: image, \u0027name\u0027: name})"},{"line_number":119,"context_line":"            if requested_networks is None:"},{"line_number":120,"context_line":"                if network_standalone:"},{"line_number":121,"context_line":"                    network \u003d self._provision_network(context, container,"},{"line_number":122,"context_line":"                                                      network_api)"},{"line_number":123,"context_line":"                    requested_networks \u003d [{\u0027network\u0027: network[\u0027Name\u0027],"},{"line_number":124,"context_line":"                                           \u0027port\u0027: \u0027\u0027,"},{"line_number":125,"context_line":"                                           \u0027v4-fixed-ip\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_097394e9","line":122,"range":{"start_line":121,"start_character":20,"end_line":122,"end_character":66},"in_reply_to":"df3967d1_60d7dc25","updated":"2017-07-29 03:15:06.000000000","message":"Hi Hongbin, sorry for the lack of explanation.\nI mean, in the original code, if requested_networks is None, get network from _provision_network() then define requested_network. But in the new change, requested_networks param in _provision_network must be iterable (can be None). That\u0027s the conflict I mentioned.\n\nI saw in the patch 6, you remove the check requested_network is None, it will resolve the above conflict.","commit_id":"841cfd40900e6b6530dfc5477f453f71a933f4c9"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"27d14bca962ed887f2fef7ae7b2074fddcaecd18","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                      {\u0027image\u0027: image, \u0027name\u0027: name})"},{"line_number":119,"context_line":"            if requested_networks is None:"},{"line_number":120,"context_line":"                if network_standalone:"},{"line_number":121,"context_line":"                    network \u003d self._provision_network(context, container,"},{"line_number":122,"context_line":"                                                      network_api)"},{"line_number":123,"context_line":"                    requested_networks \u003d [{\u0027network\u0027: network[\u0027Name\u0027],"},{"line_number":124,"context_line":"                                           \u0027port\u0027: \u0027\u0027,"},{"line_number":125,"context_line":"                                           \u0027v4-fixed-ip\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_60d7dc25","line":122,"range":{"start_line":121,"start_character":20,"end_line":122,"end_character":66},"in_reply_to":"ff346bd7_ab0a7b1c","updated":"2017-07-28 19:45:19.000000000","message":"Hi Kien,\n\nI am not sure if I get your remark. Could you elaborate?","commit_id":"841cfd40900e6b6530dfc5477f453f71a933f4c9"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"1cf658d1fe4041bcec722a875cf8e23ed887a2f3","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        if not docker_networks:"},{"line_number":676,"context_line":"            network_api.create_network(neutron_net_id\u003dneutron_net_id,"},{"line_number":677,"context_line":"                                       name\u003ddocker_net_name)"},{"line_number":678,"context_line":"            docker_networks \u003d network_api.list_networks("},{"line_number":679,"context_line":"                names\u003d[docker_net_name])"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        return docker_networks[0]"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"    def _get_docker_network_name(self, context, neutron_net_id):"},{"line_number":684,"context_line":"        # Append project_id to the network name to avoid name collision"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_494abc80","line":681,"range":{"start_line":678,"start_character":12,"end_line":681,"end_character":33},"updated":"2017-07-29 03:15:06.000000000","message":"For now, _get_or_create_docker_network() doesn\u0027t need to return anything. This method only create_network with docker_net_name if we don\u0027t have any existed networks.","commit_id":"841cfd40900e6b6530dfc5477f453f71a933f4c9"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"366a8dfee50efbffd02ae84ae9488953c4bd26d4","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        if not docker_networks:"},{"line_number":676,"context_line":"            network_api.create_network(neutron_net_id\u003dneutron_net_id,"},{"line_number":677,"context_line":"                                       name\u003ddocker_net_name)"},{"line_number":678,"context_line":"            docker_networks \u003d network_api.list_networks("},{"line_number":679,"context_line":"                names\u003d[docker_net_name])"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        return docker_networks[0]"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"    def _get_docker_network_name(self, context, neutron_net_id):"},{"line_number":684,"context_line":"        # Append project_id to the network name to avoid name collision"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_6887b5d9","line":681,"range":{"start_line":678,"start_character":12,"end_line":681,"end_character":33},"in_reply_to":"df3967d1_494abc80","updated":"2017-07-29 17:31:29.000000000","message":"Done","commit_id":"841cfd40900e6b6530dfc5477f453f71a933f4c9"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"22dd222e0c0a99012f880b68dec1c2eb4b226028","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":107,"context_line":"            return docker.images(repo, quiet)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def create(self, context, container, image, requested_networks):"},{"line_number":110,"context_line":"        sandbox_id \u003d container.get_sandbox_id()"},{"line_number":111,"context_line":"        network_standalone \u003d False if sandbox_id else True"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_01047f16","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":68},"updated":"2017-07-31 03:18:47.000000000","message":"Parent method in openstack/zun/zun/container/driver.py#L63 has different params.\n\ndef create(self, context, container, sandbox_name\u003dNone):\n        \"\"\"Create a container.\"\"\"\n        raise NotImplementedError()","commit_id":"9f151e5c30b37efb92d9052e72f488a4929e9b6b"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"41713c5dc59d1247d7dc0f940d9a481a7a9b5fcc","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":107,"context_line":"            return docker.images(repo, quiet)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def create(self, context, container, image, requested_networks):"},{"line_number":110,"context_line":"        sandbox_id \u003d container.get_sandbox_id()"},{"line_number":111,"context_line":"        network_standalone \u003d False if sandbox_id else True"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_24eada74","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":68},"in_reply_to":"df3967d1_01047f16","updated":"2017-07-31 18:49:42.000000000","message":"Fixed the method in super class. Done","commit_id":"9f151e5c30b37efb92d9052e72f488a4929e9b6b"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"22dd222e0c0a99012f880b68dec1c2eb4b226028","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            docker.start(sandbox[\u0027Id\u0027])"},{"line_number":644,"context_line":"            return sandbox[\u0027Id\u0027]"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _get_security_group_ids(self, context, security_groups):"},{"line_number":647,"context_line":"        if security_groups is None:"},{"line_number":648,"context_line":"            return None"},{"line_number":649,"context_line":"        else:"},{"line_number":650,"context_line":"            neutron \u003d clients.OpenStackClients(context).neutron()"},{"line_number":651,"context_line":"            search_opts \u003d {\u0027tenant_id\u0027: context.project_id}"},{"line_number":652,"context_line":"            security_groups_list \u003d neutron.list_security_groups("},{"line_number":653,"context_line":"                **search_opts).get(\u0027security_groups\u0027, [])"},{"line_number":654,"context_line":"            security_group_ids \u003d [item[\u0027id\u0027] for item in security_groups_list"},{"line_number":655,"context_line":"                                  if item[\u0027name\u0027] in security_groups]"},{"line_number":656,"context_line":"            if len(security_group_ids) \u003d\u003d len(security_groups):"},{"line_number":657,"context_line":"                return security_group_ids"},{"line_number":658,"context_line":"            else:"},{"line_number":659,"context_line":"                raise exception.ZunException(_("},{"line_number":660,"context_line":"                    \"Any of the security group in %s is not found \") %"},{"line_number":661,"context_line":"                    security_groups)"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def _get_or_create_docker_network(self, context, network_api,"},{"line_number":664,"context_line":"                                      neutron_net_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_9c08d628","line":661,"range":{"start_line":646,"start_character":4,"end_line":661,"end_character":36},"updated":"2017-07-31 03:18:47.000000000","message":"I can\u0027t find the usage of this method.","commit_id":"9f151e5c30b37efb92d9052e72f488a4929e9b6b"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"41713c5dc59d1247d7dc0f940d9a481a7a9b5fcc","unresolved":false,"context_lines":[{"line_number":643,"context_line":"            docker.start(sandbox[\u0027Id\u0027])"},{"line_number":644,"context_line":"            return sandbox[\u0027Id\u0027]"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    def _get_security_group_ids(self, context, security_groups):"},{"line_number":647,"context_line":"        if security_groups is None:"},{"line_number":648,"context_line":"            return None"},{"line_number":649,"context_line":"        else:"},{"line_number":650,"context_line":"            neutron \u003d clients.OpenStackClients(context).neutron()"},{"line_number":651,"context_line":"            search_opts \u003d {\u0027tenant_id\u0027: context.project_id}"},{"line_number":652,"context_line":"            security_groups_list \u003d neutron.list_security_groups("},{"line_number":653,"context_line":"                **search_opts).get(\u0027security_groups\u0027, [])"},{"line_number":654,"context_line":"            security_group_ids \u003d [item[\u0027id\u0027] for item in security_groups_list"},{"line_number":655,"context_line":"                                  if item[\u0027name\u0027] in security_groups]"},{"line_number":656,"context_line":"            if len(security_group_ids) \u003d\u003d len(security_groups):"},{"line_number":657,"context_line":"                return security_group_ids"},{"line_number":658,"context_line":"            else:"},{"line_number":659,"context_line":"                raise exception.ZunException(_("},{"line_number":660,"context_line":"                    \"Any of the security group in %s is not found \") %"},{"line_number":661,"context_line":"                    security_groups)"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def _get_or_create_docker_network(self, context, network_api,"},{"line_number":664,"context_line":"                                      neutron_net_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_c400ae37","line":661,"range":{"start_line":646,"start_character":4,"end_line":661,"end_character":36},"in_reply_to":"df3967d1_9c08d628","updated":"2017-07-31 18:49:42.000000000","message":"Deleted it. Done","commit_id":"9f151e5c30b37efb92d9052e72f488a4929e9b6b"}],"zun/network/neutron.py":[{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"45a29eab4e2bfc3788ec86d4cc75379b15a5a5b9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        neutron \u003d clients.OpenStackClients(self.context).neutron()"},{"line_number":25,"context_line":"        search_opts \u003d {\u0027tenant_id\u0027: self.context.project_id, \u0027shared\u0027: False}"},{"line_number":26,"context_line":"        nets \u003d neutron.list_networks(**search_opts).get(\u0027networks\u0027, [])"},{"line_number":27,"context_line":"        if not nets:"},{"line_number":28,"context_line":"            raise exception.Conflict(_("},{"line_number":29,"context_line":"                \"There is no neutron network available\"))"},{"line_number":30,"context_line":"        nets.sort(key\u003dlambda x: x[\u0027created_at\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f436f4f_d92aece5","line":27,"updated":"2017-08-08 21:18:02.000000000","message":"All LGTM, but it seems that it\u0027s not an error or exception when we get a empty net list here. In this case, It\u0027s better to raise an exception in which who called this function.","commit_id":"019055e56b27f596593d34547750d73b72609a56"},{"author":{"_account_id":17813,"name":"wangzhh","email":"wzh_1993@126.com","username":"wangzhh"},"change_message_id":"3e4d7fecd4d364954672b9496ed25d5ee0a70483","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        neutron \u003d clients.OpenStackClients(self.context).neutron()"},{"line_number":25,"context_line":"        search_opts \u003d {\u0027tenant_id\u0027: self.context.project_id, \u0027shared\u0027: False}"},{"line_number":26,"context_line":"        nets \u003d neutron.list_networks(**search_opts).get(\u0027networks\u0027, [])"},{"line_number":27,"context_line":"        if not nets:"},{"line_number":28,"context_line":"            raise exception.Conflict(_("},{"line_number":29,"context_line":"                \"There is no neutron network available\"))"},{"line_number":30,"context_line":"        nets.sort(key\u003dlambda x: x[\u0027created_at\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f436f4f_340fbf2f","line":27,"in_reply_to":"9f436f4f_d92aece5","updated":"2017-08-08 21:33:08.000000000","message":"Sorry, I didn\u0027t notice the \"available\". :(","commit_id":"019055e56b27f596593d34547750d73b72609a56"}],"zun/tests/unit/api/controllers/v1/test_containers.py":[{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestContainerController(api_base.FunctionalTest):"},{"line_number":28,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":29,"context_line":"    @patch(\u0027zun.compute.api.API.container_run\u0027)"},{"line_number":30,"context_line":"    @patch(\u0027zun.compute.api.API.image_search\u0027)"},{"line_number":31,"context_line":"    def test_run_container(self, mock_search, mock_container_run,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_6bb8a529","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":66},"updated":"2017-07-13 03:14:12.000000000","message":"You mock this method but no use it, assert it called or not.  In overall unittest, this is so many test cases that were mocked method/module/class but not use them.","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"96681e80d12f455e3c6ed0db010ffe10cd7af4b0","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestContainerController(api_base.FunctionalTest):"},{"line_number":28,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":29,"context_line":"    @patch(\u0027zun.compute.api.API.container_run\u0027)"},{"line_number":30,"context_line":"    @patch(\u0027zun.compute.api.API.image_search\u0027)"},{"line_number":31,"context_line":"    def test_run_container(self, mock_search, mock_container_run,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_917f0265","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":66},"in_reply_to":"1f1a1f67_6bb8a529","updated":"2017-07-19 01:15:03.000000000","message":"Done","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            self.app.post(\u0027/v1/containers?run\u003dxyz\u0027, params\u003dparams,"},{"line_number":55,"context_line":"                          content_type\u003d\u0027application/json\u0027)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":58,"context_line":"    @patch(\u0027zun.compute.rpcapi.API.container_run\u0027)"},{"line_number":59,"context_line":"    @patch(\u0027zun.compute.rpcapi.API.image_search\u0027)"},{"line_number":60,"context_line":"    def test_run_container_with_false(self, mock_search,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_0b893174","line":57,"updated":"2017-07-13 03:14:12.000000000","message":"Ditto","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"96681e80d12f455e3c6ed0db010ffe10cd7af4b0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            self.app.post(\u0027/v1/containers?run\u003dxyz\u0027, params\u003dparams,"},{"line_number":55,"context_line":"                          content_type\u003d\u0027application/json\u0027)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":58,"context_line":"    @patch(\u0027zun.compute.rpcapi.API.container_run\u0027)"},{"line_number":59,"context_line":"    @patch(\u0027zun.compute.rpcapi.API.image_search\u0027)"},{"line_number":60,"context_line":"    def test_run_container_with_false(self, mock_search,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_719a26b9","line":57,"in_reply_to":"1f1a1f67_0b893174","updated":"2017-07-19 01:15:03.000000000","message":"Done","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":58,"context_line":"    @patch(\u0027zun.compute.rpcapi.API.container_run\u0027)"},{"line_number":59,"context_line":"    @patch(\u0027zun.compute.rpcapi.API.image_search\u0027)"},{"line_number":60,"context_line":"    def test_run_container_with_false(self, mock_search,"},{"line_number":61,"context_line":"                                      mock_container_run,"},{"line_number":62,"context_line":"                                      mock_neutron_get_network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_4b8e0979","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":49},"updated":"2017-07-13 03:14:12.000000000","message":"ditto","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          params\u003dparams, content_type\u003d\u0027application/json\u0027)"},{"line_number":84,"context_line":"        self.assertTrue(mock_container_run.not_called)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":87,"context_line":"    @patch(\u0027zun.compute.api.API.container_create\u0027)"},{"line_number":88,"context_line":"    @patch(\u0027zun.compute.api.API.image_search\u0027)"},{"line_number":89,"context_line":"    def test_create_container(self, mock_search, mock_container_create,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_cb821950","line":86,"range":{"start_line":86,"start_character":4,"end_line":86,"end_character":66},"updated":"2017-07-13 03:14:12.000000000","message":"ditto","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"96681e80d12f455e3c6ed0db010ffe10cd7af4b0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          params\u003dparams, content_type\u003d\u0027application/json\u0027)"},{"line_number":84,"context_line":"        self.assertTrue(mock_container_run.not_called)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":87,"context_line":"    @patch(\u0027zun.compute.api.API.container_create\u0027)"},{"line_number":88,"context_line":"    @patch(\u0027zun.compute.api.API.image_search\u0027)"},{"line_number":89,"context_line":"    def test_create_container(self, mock_search, mock_container_create,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_5195ea85","line":86,"range":{"start_line":86,"start_character":4,"end_line":86,"end_character":66},"in_reply_to":"1f1a1f67_cb821950","updated":"2017-07-19 01:15:03.000000000","message":"Done","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"},{"author":{"_account_id":22406,"name":"Kien Nguyen","email":"kiennt2609@gmail.com","username":"kiennt"},"change_message_id":"12594a9437f01ba36b386c01a66bf22e396408d9","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @patch(\u0027zun.network.neutron.NeutronAPI.get_available_network\u0027)"},{"line_number":87,"context_line":"    @patch(\u0027zun.compute.api.API.container_create\u0027)"},{"line_number":88,"context_line":"    @patch(\u0027zun.compute.api.API.image_search\u0027)"},{"line_number":89,"context_line":"    def test_create_container(self, mock_search, mock_container_create,"},{"line_number":90,"context_line":"                              mock_neutron_get_network):"},{"line_number":91,"context_line":"        mock_container_create.side_effect \u003d lambda x, y, z, v: y"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f1a1f67_eb7dd56e","line":88,"range":{"start_line":88,"start_character":4,"end_line":88,"end_character":46},"updated":"2017-07-13 03:14:12.000000000","message":"ditto","commit_id":"3587a63e91297b7016d7da4cc3dc83c853d72a83"}]}
