)]}'
{"nova/tests/virt/docker/test_driver.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"410c82425d127b6b641c3a9ca183ae43d3f9ae15","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    def test_spawn(self, image\u003dNone):"},{"line_number":219,"context_line":"        if not image:"},{"line_number":220,"context_line":"            image \u003d \u0027XXX\u0027"},{"line_number":221,"context_line":"        instance_ref, network_info \u003d \\"},{"line_number":222,"context_line":"            self._get_running_instance(image_name\u003dimage)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        instance \u003d self.connection.find_container_by_name(instance_ref[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BSJ4%3D","line":221,"updated":"2014-01-28 12:28:31.000000000","message":"can you please write this without the \\","commit_id":"33bc787b732da0e959a6447ab3e0a0722299ad4d"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"8d41a7be3062f7ee557769fbe1538f133165f7b0","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    def test_spawn(self, image\u003dNone):"},{"line_number":219,"context_line":"        if not image:"},{"line_number":220,"context_line":"            image \u003d \u0027XXX\u0027"},{"line_number":221,"context_line":"        instance_ref, network_info \u003d \\"},{"line_number":222,"context_line":"            self._get_running_instance(image_name\u003dimage)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        instance \u003d self.connection.find_container_by_name(instance_ref[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9%2B7w%3D","line":221,"in_reply_to":"AAAAUH%2F%2BSJ4%3D","updated":"2014-01-31 11:25:44.000000000","message":"no, line will be more than 80","commit_id":"33bc787b732da0e959a6447ab3e0a0722299ad4d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"410c82425d127b6b641c3a9ca183ae43d3f9ae15","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        num_instances \u003d self.connection.get_num_instances()"},{"line_number":228,"context_line":"        self.assertEqual(1, num_instances)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        return instance"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def test_spawn_without_pull(self):"},{"line_number":233,"context_line":"        image \u003d \u0027XXX\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BSJw%3D","line":230,"updated":"2014-01-28 12:28:31.000000000","message":"why do you return the instance here? is this intended to be an internal method?","commit_id":"33bc787b732da0e959a6447ab3e0a0722299ad4d"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"8d41a7be3062f7ee557769fbe1538f133165f7b0","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        num_instances \u003d self.connection.get_num_instances()"},{"line_number":228,"context_line":"        self.assertEqual(1, num_instances)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        return instance"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def test_spawn_without_pull(self):"},{"line_number":233,"context_line":"        image \u003d \u0027XXX\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BQ1Q%3D","line":230,"in_reply_to":"AAAAUH%2F%2BSJw%3D","updated":"2014-01-31 11:25:44.000000000","message":"to omit code duplicating (in methods below)","commit_id":"33bc787b732da0e959a6447ab3e0a0722299ad4d"}],"nova/virt/docker/driver.py":[{"author":{"_account_id":9173,"name":"Daniel Kuffner","email":"daniel.kuffner@gmail.com","username":"dkuffner"},"change_message_id":"5de46adebb89bb5cf4a92b9193b3ec51645d768b","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _get_default_cmd(self, image_name):"},{"line_number":272,"context_line":"        default_cmd \u003d [\u0027sh\u0027]"},{"line_number":273,"context_line":"        info \u003d self.docker.inspect_image(image_name)"},{"line_number":274,"context_line":"        if not info:"},{"line_number":275,"context_line":"            return default_cmd"},{"line_number":276,"context_line":"        if not info[\u0027container_config\u0027][\u0027Cmd\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FXCs%3D","line":273,"updated":"2014-01-14 17:02:13.000000000","message":"if inspect_image returns None it means either image doesn\u0027t exist (404) or internal server error (500). \n\nWe return in both cases the default command \"sh\". If you return None in this case you don\u0027t need the special handling below.","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":159,"name":"Eric Windisch","email":"ewindisch@docker.com","username":"ewindisch"},"change_message_id":"40f38a24f4b18d31744096fed657b6d00e2c418a","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _get_default_cmd(self, image_name):"},{"line_number":272,"context_line":"        default_cmd \u003d [\u0027sh\u0027]"},{"line_number":273,"context_line":"        info \u003d self.docker.inspect_image(image_name)"},{"line_number":274,"context_line":"        if not info:"},{"line_number":275,"context_line":"            return default_cmd"},{"line_number":276,"context_line":"        if not info[\u0027container_config\u0027][\u0027Cmd\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FWWQ%3D","line":273,"in_reply_to":"AAAAUH%2F%2FWZY%3D","updated":"2014-01-14 19:12:19.000000000","message":"it might make sense for now to just squash this method and roll it into spawn() directly.","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"2e5de72e0989ca4bfb82fab7646ceaefe4f6c2aa","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def _get_default_cmd(self, image_name):"},{"line_number":272,"context_line":"        default_cmd \u003d [\u0027sh\u0027]"},{"line_number":273,"context_line":"        info \u003d self.docker.inspect_image(image_name)"},{"line_number":274,"context_line":"        if not info:"},{"line_number":275,"context_line":"            return default_cmd"},{"line_number":276,"context_line":"        if not info[\u0027container_config\u0027][\u0027Cmd\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FWZY%3D","line":273,"in_reply_to":"AAAAUH%2F%2FXCs%3D","updated":"2014-01-14 19:01:07.000000000","message":"also possibly image just doesn\u0027t define Cmd","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9173,"name":"Daniel Kuffner","email":"daniel.kuffner@gmail.com","username":"dkuffner"},"change_message_id":"5de46adebb89bb5cf4a92b9193b3ec51645d768b","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if default_cmd:"},{"line_number":289,"context_line":"            args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":290,"context_line":"        container_id \u003d self.docker.create_container(args)"},{"line_number":291,"context_line":"        if not container_id:"},{"line_number":292,"context_line":"            msg \u003d _(\u0027Image name \"{0}\" does not exist, fetching it...\u0027)"},{"line_number":293,"context_line":"            LOG.info(msg.format(image_name))"},{"line_number":294,"context_line":"            res \u003d self.docker.pull_repository(image_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FXCw%3D","line":291,"updated":"2014-01-14 17:02:13.000000000","message":"Actually I would prefer if we refactor the code to be a more explicit:\n\n1. Lookup if the image exists\n2. If image doesn\u0027t exist pull it from repository\n3. Get default command\n4. start container","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":159,"name":"Eric Windisch","email":"ewindisch@docker.com","username":"ewindisch"},"change_message_id":"40f38a24f4b18d31744096fed657b6d00e2c418a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if default_cmd:"},{"line_number":289,"context_line":"            args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":290,"context_line":"        container_id \u003d self.docker.create_container(args)"},{"line_number":291,"context_line":"        if not container_id:"},{"line_number":292,"context_line":"            msg \u003d _(\u0027Image name \"{0}\" does not exist, fetching it...\u0027)"},{"line_number":293,"context_line":"            LOG.info(msg.format(image_name))"},{"line_number":294,"context_line":"            res \u003d self.docker.pull_repository(image_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FWVY%3D","line":291,"in_reply_to":"AAAAUH%2F%2FW9A%3D","updated":"2014-01-14 19:12:19.000000000","message":"using my example above, we already have the image variable... so we can avoid running _get_default_cmd() entirely by rolling that method into here. Alternatively, let it take an \u0027image\u0027 argument, where it presumes we\u0027ve already run inspect_image.","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"874e922aaacac4a94f28ce5c877bfc464cbef0c0","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if default_cmd:"},{"line_number":289,"context_line":"            args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":290,"context_line":"        container_id \u003d self.docker.create_container(args)"},{"line_number":291,"context_line":"        if not container_id:"},{"line_number":292,"context_line":"            msg \u003d _(\u0027Image name \"{0}\" does not exist, fetching it...\u0027)"},{"line_number":293,"context_line":"            LOG.info(msg.format(image_name))"},{"line_number":294,"context_line":"            res \u003d self.docker.pull_repository(image_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FW9A%3D","line":291,"in_reply_to":"AAAAUH%2F%2FXBY%3D","updated":"2014-01-14 17:15:19.000000000","message":"I agree, will try to refactor and upload new patch","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":159,"name":"Eric Windisch","email":"ewindisch@docker.com","username":"ewindisch"},"change_message_id":"7a536a7441ec320bd65cb4c12d55b24b56646514","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if default_cmd:"},{"line_number":289,"context_line":"            args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":290,"context_line":"        container_id \u003d self.docker.create_container(args)"},{"line_number":291,"context_line":"        if not container_id:"},{"line_number":292,"context_line":"            msg \u003d _(\u0027Image name \"{0}\" does not exist, fetching it...\u0027)"},{"line_number":293,"context_line":"            LOG.info(msg.format(image_name))"},{"line_number":294,"context_line":"            res \u003d self.docker.pull_repository(image_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FXBY%3D","line":291,"in_reply_to":"AAAAUH%2F%2FXCw%3D","updated":"2014-01-14 17:11:57.000000000","message":"\"check if image exists\" is currently done by attempting to create the container (line 290).  This is why the convoluted logic is necessary.\n\nInstead, inspect_image could be used here to check for the existence of the image. The following doesn\u0027t exclude get_default_image from being improved, but allows it to be called only once and eliminates the \"else del\"...\n\nSomething like:\n\nimage \u003d self.docker.inspect_image(image_name)\nif not image:\n res \u003d self.docker.pull_repository(image_name)\n ...\ndefault_cmd \u003d self._get_default_cmd(image_name)\nif default_cmd:\n args[\u0027Cmd\u0027] \u003d default_cmd\ncontainer_id \u003d self.docker.create_container(args)\nif not container_id:\n raise ...\nself.docker.start_container(container_id)","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9173,"name":"Daniel Kuffner","email":"daniel.kuffner@gmail.com","username":"dkuffner"},"change_message_id":"737ec3ed9bcfddfe358d1b129f1a14749da34700","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                raise exception.InstanceDeployFailure("},{"line_number":297,"context_line":"                    _(\u0027Cannot pull missing image\u0027),"},{"line_number":298,"context_line":"                    instance_id\u003dinstance[\u0027name\u0027])"},{"line_number":299,"context_line":"            default_cmd \u003d self._get_default_cmd(image_name)"},{"line_number":300,"context_line":"            if default_cmd:"},{"line_number":301,"context_line":"                args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":302,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FcIs%3D","line":299,"updated":"2014-01-13 21:46:25.000000000","message":"Sounds to me like a race condition, could it be that the docker returns from the pull_repository call before the image is fully ready? docker bug? docker_client bug?","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"5de5706563989e703ac260101fd9bcb0f5ffece4","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                raise exception.InstanceDeployFailure("},{"line_number":297,"context_line":"                    _(\u0027Cannot pull missing image\u0027),"},{"line_number":298,"context_line":"                    instance_id\u003dinstance[\u0027name\u0027])"},{"line_number":299,"context_line":"            default_cmd \u003d self._get_default_cmd(image_name)"},{"line_number":300,"context_line":"            if default_cmd:"},{"line_number":301,"context_line":"                args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":302,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FXwU%3D","line":299,"in_reply_to":"AAAAUH%2F%2FcIs%3D","updated":"2014-01-14 14:41:25.000000000","message":"It\u0027s not race condition, look:\n\nOn line 289 \nargs[\u0027Cmd\u0027] \u003d default_cmd\nassigned default value \"sh\", because it was retrieved by doing \"inspect\" command on unexisted image (see 271 line, how _get_default_cmd works)\n\nThen, after founding that image is not exists on line 291 we pull it from repository.\nAnd now we want to \"inspect\" this image again, because previous failed","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9173,"name":"Daniel Kuffner","email":"daniel.kuffner@gmail.com","username":"dkuffner"},"change_message_id":"1efb7fbeddf3fd2b10a2fc605eec5e53aef4941b","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            if default_cmd:"},{"line_number":301,"context_line":"                args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":302,"context_line":"            else:"},{"line_number":303,"context_line":"                del args[\u0027Cmd\u0027]"},{"line_number":304,"context_line":"            container_id \u003d self.docker.create_container(args)"},{"line_number":305,"context_line":"            if not container_id:"},{"line_number":306,"context_line":"                raise exception.InstanceDeployFailure("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FXoI%3D","line":303,"updated":"2014-01-14 15:10:27.000000000","message":"the pull_repository flow is clear to me. Actually I was more concerned about this special handling here.\n\nWhy do you have to delete the Cmd if default is not set (why we don\u0027t do the same above?).","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"800eff833932a8e27d69e83ec172832ddb4bd564","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            if default_cmd:"},{"line_number":301,"context_line":"                args[\u0027Cmd\u0027] \u003d default_cmd"},{"line_number":302,"context_line":"            else:"},{"line_number":303,"context_line":"                del args[\u0027Cmd\u0027]"},{"line_number":304,"context_line":"            container_id \u003d self.docker.create_container(args)"},{"line_number":305,"context_line":"            if not container_id:"},{"line_number":306,"context_line":"                raise exception.InstanceDeployFailure("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FXX8%3D","line":303,"in_reply_to":"AAAAUH%2F%2FXoI%3D","updated":"2014-01-14 15:58:37.000000000","message":"because _get_default_cmd after pulling will return None (which means no default command, run command integrated in image CMD)\nAnd if no default command (sh) needed here, we need to remove \"sh\" command from args list to let docker run container with integrated command.","commit_id":"70179f3ed1bcc27fa9c844b83367cdd53c9c23be"},{"author":{"_account_id":9173,"name":"Daniel Kuffner","email":"daniel.kuffner@gmail.com","username":"dkuffner"},"change_message_id":"b478856a0d4fd02527a0f2ab2c3a1d1041c14238","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            if res is False:"},{"line_number":286,"context_line":"                raise exception.InstanceDeployFailure("},{"line_number":287,"context_line":"                    _(\u0027Cannot pull missing image\u0027),"},{"line_number":288,"context_line":"                    instance_id\u003dinstance[\u0027name\u0027])"},{"line_number":289,"context_line":"            image \u003d self.docker.inspect_image(image_name)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if not (image and image[\u0027container_config\u0027][\u0027Cmd\u0027]):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FSWQ%3D","line":288,"updated":"2014-01-15 13:29:50.000000000","message":"Can we add the image name into the message, that could be helpful for the administrator.","commit_id":"8c6e212993e3f64084d31c1341aa5a8aec32f1fc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"410c82425d127b6b641c3a9ca183ae43d3f9ae15","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        image \u003d self.docker.inspect_image(image_name)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        if not image:"},{"line_number":281,"context_line":"            msg \u003d _(\u0027Image name \"{0}\" does not exist, fetching it...\u0027)"},{"line_number":282,"context_line":"            LOG.info(msg.format(image_name))"},{"line_number":283,"context_line":"            res \u003d self.docker.pull_repository(image_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BSK4%3D","line":280,"updated":"2014-01-28 12:28:31.000000000","message":"lines 281 - 289 can be moved to a utility method. This may be helpful for testing","commit_id":"33bc787b732da0e959a6447ab3e0a0722299ad4d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"410c82425d127b6b641c3a9ca183ae43d3f9ae15","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            LOG.info(msg.format(image_name))"},{"line_number":283,"context_line":"            res \u003d self.docker.pull_repository(image_name)"},{"line_number":284,"context_line":"            if res is False:"},{"line_number":285,"context_line":"                msg \u003d _(\u0027Cannot pull missing image \"{}\"\u0027)"},{"line_number":286,"context_line":"                raise exception.InstanceDeployFailure("},{"line_number":287,"context_line":"                    msg.format(instance[\u0027name\u0027]),"},{"line_number":288,"context_line":"                    instance_id\u003dinstance[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BSKI%3D","line":285,"updated":"2014-01-28 12:28:31.000000000","message":"why not use %s here? I do not understand why here is is {} and above it is {0}.","commit_id":"33bc787b732da0e959a6447ab3e0a0722299ad4d"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"8d41a7be3062f7ee557769fbe1538f133165f7b0","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            LOG.info(msg.format(image_name))"},{"line_number":283,"context_line":"            res \u003d self.docker.pull_repository(image_name)"},{"line_number":284,"context_line":"            if res is False:"},{"line_number":285,"context_line":"                msg \u003d _(\u0027Cannot pull missing image \"{}\"\u0027)"},{"line_number":286,"context_line":"                raise exception.InstanceDeployFailure("},{"line_number":287,"context_line":"                    msg.format(instance[\u0027name\u0027]),"},{"line_number":288,"context_line":"                    instance_id\u003dinstance[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9%2B6w%3D","line":285,"in_reply_to":"AAAAUH%2F%2BSKI%3D","updated":"2014-01-31 11:25:44.000000000","message":"str.format is faster than formatting with %s","commit_id":"33bc787b732da0e959a6447ab3e0a0722299ad4d"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"51b97b918cef2fbc04d3888db39ecec11c624da6","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        LOG.info(msg.format(image_name))"},{"line_number":277,"context_line":"        res \u003d self.docker.pull_repository(image_name)"},{"line_number":278,"context_line":"        if res is False:"},{"line_number":279,"context_line":"            msg \u003d _(\u0027Cannot pull missing image \"{0}\"\u0027)"},{"line_number":280,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":281,"context_line":"                msg.format(instance[\u0027name\u0027]),"},{"line_number":282,"context_line":"                instance_id\u003dinstance[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F90Fk%3D","line":279,"updated":"2014-02-03 17:51:11.000000000","message":"I\u0027m going to hold out for using %-based interpolation on these internationalized strings, sorry.","commit_id":"d8dbb6fa1befc5f6b297c71f4c9aa1fc2e4aeea4"},{"author":{"_account_id":9907,"name":"Roman Rader","email":"roman.rader@gmail.com","username":"antigluk"},"change_message_id":"20a01784db4455b26e8b3c9a2c77ddfd170da557","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        LOG.info(msg.format(image_name))"},{"line_number":277,"context_line":"        res \u003d self.docker.pull_repository(image_name)"},{"line_number":278,"context_line":"        if res is False:"},{"line_number":279,"context_line":"            msg \u003d _(\u0027Cannot pull missing image \"{0}\"\u0027)"},{"line_number":280,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":281,"context_line":"                msg.format(instance[\u0027name\u0027]),"},{"line_number":282,"context_line":"                instance_id\u003dinstance[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9y%2BU%3D","line":279,"in_reply_to":"AAAAUH%2F90Fk%3D","updated":"2014-02-03 20:43:29.000000000","message":"Just to clarify, there a lot of {}-based string interpolations, particularly in that file. Need to refactor all of these files, or just lines in patch?\nIn former case there will be changed lines in patch, not related to original task, in latter case we\u0027ll got inconsistency in driver.py.","commit_id":"d8dbb6fa1befc5f6b297c71f4c9aa1fc2e4aeea4"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2dc7685437baade43473dc740d92d529e5955e9b","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        LOG.info(msg.format(image_name))"},{"line_number":277,"context_line":"        res \u003d self.docker.pull_repository(image_name)"},{"line_number":278,"context_line":"        if res is False:"},{"line_number":279,"context_line":"            msg \u003d _(\u0027Cannot pull missing image \"{0}\"\u0027)"},{"line_number":280,"context_line":"            raise exception.InstanceDeployFailure("},{"line_number":281,"context_line":"                msg.format(instance[\u0027name\u0027]),"},{"line_number":282,"context_line":"                instance_id\u003dinstance[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9uOQ%3D","line":279,"in_reply_to":"AAAAUH%2F9y%2BU%3D","updated":"2014-02-04 17:08:08.000000000","message":"I\u0027m only concerned about the ones in or touched by this patch; refactoring can be done later.  (Might be worth opening a low-hanging-fruit bug on that…)","commit_id":"d8dbb6fa1befc5f6b297c71f4c9aa1fc2e4aeea4"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8df1c614ccb12e6eb13fc57bd080bb19df353b77","unresolved":false,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def _pull_missing_image(self, image_name, instance):"},{"line_number":273,"context_line":"        msg \u003d _(\u0027Image name \"%s\" does not exist, fetching it...\u0027)"},{"line_number":274,"context_line":"        LOG.info(msg % image_name)"},{"line_number":275,"context_line":"        res \u003d self.docker.pull_repository(image_name)"},{"line_number":276,"context_line":"        if res is False:"},{"line_number":277,"context_line":"            msg \u003d _(\u0027Cannot pull missing image \"%s\"\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAU3%2F%2F2wU%3D","line":274,"updated":"2014-02-24 13:41:58.000000000","message":"this should be debug level, there is no reason an operator would care about this.","commit_id":"df510a0a16f398d865b7d86203567c26041e23a8"}]}
