)]}'
{"rally-jobs/cinder.yaml":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6a2b73977faef13672fe991e7f45ef580f221010","unresolved":false,"context_lines":[{"line_number":491,"context_line":"        api_versions:"},{"line_number":492,"context_line":"          glance:"},{"line_number":493,"context_line":"            version: 2"},{"line_number":494,"context_line":"            service_type: \"image\""},{"line_number":495,"context_line":"      sla:"},{"line_number":496,"context_line":"        failure_rate:"},{"line_number":497,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1a122d0e_3c1b3a1d","line":494,"range":{"start_line":494,"start_character":12,"end_line":494,"end_character":33},"updated":"2016-04-18 08:13:19.000000000","message":"Why we need to specify service type for glance? Does it have separate types for different API versions?","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4aed9cdc816d6ed979047c925b3655b1f7f6f953","unresolved":false,"context_lines":[{"line_number":491,"context_line":"        api_versions:"},{"line_number":492,"context_line":"          glance:"},{"line_number":493,"context_line":"            version: 2"},{"line_number":494,"context_line":"            service_type: \"image\""},{"line_number":495,"context_line":"      sla:"},{"line_number":496,"context_line":"        failure_rate:"},{"line_number":497,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1a122d0e_0e7d56e7","line":494,"range":{"start_line":494,"start_character":12,"end_line":494,"end_character":33},"in_reply_to":"1a122d0e_3c1b3a1d","updated":"2016-04-18 13:21:15.000000000","message":"Done","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"}],"rally/plugins/openstack/scenarios/cinder/utils.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"63a20573ffe8c37300aa4ce3a7bbde69365b7908","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":234,"context_line":"        )"},{"line_number":235,"context_line":"        image_id \u003d img[\"os-volume_upload_image\"][\"image_id\"]"},{"line_number":236,"context_line":"        image \u003d self.clients(\"glance\").images.get(image_id)"},{"line_number":237,"context_line":"        glance_wrap \u003d glance_wrapper.wrap(self._clients.glance, self)"},{"line_number":238,"context_line":"        image \u003d bench_utils.wait_for("},{"line_number":239,"context_line":"            image,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_c4e1879c","line":236,"updated":"2016-04-18 11:24:39.000000000","message":"What about using glance wrapper here \n\n\n    client \u003d glance_wrapper.wrap(self._clients.glance, self)\n    image \u003d client.get_image(image_id)\n    image \u003d bench_utils.wait_for(\n        image,\n        ready_statuses\u003d[\"active\"],\n        update_resource\u003dglance_wrap.get_image,\n        timeout\u003dCONF.benchmark.glance_image_create_timeout,\n        check_interval\u003dCONF.benchmark.glance_image_create_poll_interval\n    )","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4aed9cdc816d6ed979047c925b3655b1f7f6f953","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":234,"context_line":"        )"},{"line_number":235,"context_line":"        image_id \u003d img[\"os-volume_upload_image\"][\"image_id\"]"},{"line_number":236,"context_line":"        image \u003d self.clients(\"glance\").images.get(image_id)"},{"line_number":237,"context_line":"        glance_wrap \u003d glance_wrapper.wrap(self._clients.glance, self)"},{"line_number":238,"context_line":"        image \u003d bench_utils.wait_for("},{"line_number":239,"context_line":"            image,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_eefd7a3b","line":236,"in_reply_to":"1a122d0e_c4e1879c","updated":"2016-04-18 13:21:15.000000000","message":"GlanceWrapper.get_image() gets an image from an image object, not from an image ID, so that won\u0027t work. There was already one bug due to that confusion.","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0e3461aa94ff3fed90df346b55d7dc71cc57e29a","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":234,"context_line":"        )"},{"line_number":235,"context_line":"        image_id \u003d img[\"os-volume_upload_image\"][\"image_id\"]"},{"line_number":236,"context_line":"        image \u003d self.clients(\"glance\").images.get(image_id)"},{"line_number":237,"context_line":"        glance_wrap \u003d glance_wrapper.wrap(self._clients.glance, self)"},{"line_number":238,"context_line":"        image \u003d bench_utils.wait_for("},{"line_number":239,"context_line":"            image,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_4d6e3330","line":236,"in_reply_to":"1a122d0e_eefd7a3b","updated":"2016-04-18 14:15:07.000000000","message":"Oops, you are right.","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"}],"rally/plugins/openstack/scenarios/glance/utils.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"63a20573ffe8c37300aa4ce3a7bbde69365b7908","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from rally.task import atomic"},{"line_number":19,"context_line":"from rally.task import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"GLANCE_BENCHMARK_OPTS \u003d ["},{"line_number":24,"context_line":"    cfg.FloatOpt(\"glance_image_delete_timeout\","}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_2432fb10","line":21,"updated":"2016-04-18 11:24:39.000000000","message":"It looks like this import should be before \"from rally.plugins.openstack import scenario\".","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4aed9cdc816d6ed979047c925b3655b1f7f6f953","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from rally.task import atomic"},{"line_number":19,"context_line":"from rally.task import utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"GLANCE_BENCHMARK_OPTS \u003d ["},{"line_number":24,"context_line":"    cfg.FloatOpt(\"glance_image_delete_timeout\","}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_2ebdb268","line":21,"in_reply_to":"1a122d0e_2432fb10","updated":"2016-04-18 13:21:15.000000000","message":"Done. Wonder why pep8 didn\u0027t catch that.","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"}],"rally/plugins/openstack/wrappers/glance.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"63a20573ffe8c37300aa4ce3a7bbde69365b7908","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.client \u003d client"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def get_image(self, image):"},{"line_number":64,"context_line":"        \"\"\"Given an image object, update it."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        Must raise rally.exceptions.GetResourceNotFound if the"},{"line_number":67,"context_line":"        resource is not found or deleted."}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_67835505","line":64,"updated":"2016-04-18 11:24:39.000000000","message":"This doc string is not clear for me. This method just gets an image and doesn\u0027t update anything.","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4aed9cdc816d6ed979047c925b3655b1f7f6f953","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.client \u003d client"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def get_image(self, image):"},{"line_number":64,"context_line":"        \"\"\"Given an image object, update it."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        Must raise rally.exceptions.GetResourceNotFound if the"},{"line_number":67,"context_line":"        resource is not found or deleted."}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_8e5a064f","line":64,"in_reply_to":"1a122d0e_67835505","updated":"2016-04-18 13:21:15.000000000","message":"Done","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"63a20573ffe8c37300aa4ce3a7bbde69365b7908","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class GlanceV1Wrapper(GlanceWrapper):"},{"line_number":94,"context_line":"    def __init__(self, client, owner):"},{"line_number":95,"context_line":"        super(GlanceV1Wrapper, self).__init__(client, owner)"},{"line_number":96,"context_line":"        self._get_from_manager \u003d utils.get_from_manager()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def create_image(self, container_format, image_location,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_e791259b","line":95,"updated":"2016-04-18 11:24:39.000000000","message":"Is it really needed?","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4aed9cdc816d6ed979047c925b3655b1f7f6f953","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class GlanceV1Wrapper(GlanceWrapper):"},{"line_number":94,"context_line":"    def __init__(self, client, owner):"},{"line_number":95,"context_line":"        super(GlanceV1Wrapper, self).__init__(client, owner)"},{"line_number":96,"context_line":"        self._get_from_manager \u003d utils.get_from_manager()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def create_image(self, container_format, image_location,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_ee30da03","line":95,"in_reply_to":"1a122d0e_e791259b","updated":"2016-04-18 13:21:15.000000000","message":"Is what really needed?","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0e3461aa94ff3fed90df346b55d7dc71cc57e29a","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class GlanceV1Wrapper(GlanceWrapper):"},{"line_number":94,"context_line":"    def __init__(self, client, owner):"},{"line_number":95,"context_line":"        super(GlanceV1Wrapper, self).__init__(client, owner)"},{"line_number":96,"context_line":"        self._get_from_manager \u003d utils.get_from_manager()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def create_image(self, container_format, image_location,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_100a9021","line":95,"in_reply_to":"1a122d0e_ee30da03","updated":"2016-04-18 14:15:07.000000000","message":"I meant __init__() and self._get_from_manager. It looks like it is not used anywhere.","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"923a635ed139aa987f672c78d8e72bab19b1577f","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class GlanceV1Wrapper(GlanceWrapper):"},{"line_number":97,"context_line":"    def __init__(self, client, owner):"},{"line_number":98,"context_line":"        super(GlanceV1Wrapper, self).__init__(client, owner)"},{"line_number":99,"context_line":"        self._get_from_manager \u003d utils.get_from_manager()"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_10ac509f","line":97,"updated":"2016-04-18 13:55:25.000000000","message":"Why do we need __init__(self, client, owner) and self._get_from_manager. It looks like it is not used anywhere.","commit_id":"259c254d6552d1c328dc55d395d089b4d6579313"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"2da785a71d242336c271dec4827debbda99ad8ab","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class GlanceV1Wrapper(GlanceWrapper):"},{"line_number":97,"context_line":"    def __init__(self, client, owner):"},{"line_number":98,"context_line":"        super(GlanceV1Wrapper, self).__init__(client, owner)"},{"line_number":99,"context_line":"        self._get_from_manager \u003d utils.get_from_manager()"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_a1bf105f","line":97,"in_reply_to":"1a122d0e_10ac509f","updated":"2016-04-18 14:31:32.000000000","message":"Done","commit_id":"259c254d6552d1c328dc55d395d089b4d6579313"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"932a7038eff5480c2cafe6c7c279f38f87b4fa0a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                 default\u003d1.0,"},{"line_number":41,"context_line":"                 help\u003d\"Interval between checks when waiting for image \""},{"line_number":42,"context_line":"                      \"creation.\"),"},{"line_number":43,"context_line":"    cfg.FloatOpt(\"glance_image_delete_timeout\","},{"line_number":44,"context_line":"                 default\u003d120.0,"},{"line_number":45,"context_line":"                 help\u003d\"Time to wait for glance image to be deleted.\"),"},{"line_number":46,"context_line":"    cfg.FloatOpt(\"glance_image_delete_poll_interval\","},{"line_number":47,"context_line":"                 default\u003d1.0,"},{"line_number":48,"context_line":"                 help\u003d\"Interval between checks when waiting for image \""},{"line_number":49,"context_line":"                      \"deletion.\")"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_244d8ec4","line":49,"range":{"start_line":43,"start_character":4,"end_line":49,"end_character":34},"updated":"2016-04-19 17:23:24.000000000","message":"We need to delete these options because they were moved to rally/plugins/openstack/scenarios/glance/utils.py.","commit_id":"3b4595b4b05979ebe0e5742eb5bafaba18446683"}],"rally/verification/tempest/config.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6a2b73977faef13672fe991e7f45ef580f221010","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                      \"regular expression \u0027%s\u0027. Note that case insensitive \""},{"line_number":428,"context_line":"                      \"matching is performed\" % CONF.image.name_regex)"},{"line_number":429,"context_line":"            images \u003d glance_wrapper.list_images()"},{"line_number":430,"context_line":"            filtered_images \u003d [img for img in images if img.is_public is True"},{"line_number":431,"context_line":"                               and img.status.lower() \u003d\u003d \"active\" and img.name]"},{"line_number":432,"context_line":"            for img in filtered_images:"},{"line_number":433,"context_line":"                if re.match(CONF.image.name_regex, img.name, re.IGNORECASE):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_9c11aeaf","line":430,"range":{"start_line":430,"start_character":12,"end_line":430,"end_character":77},"updated":"2016-04-18 08:13:19.000000000","message":"It works only with V1. Please, do not touch this part of code. It should be fixed here - https://review.openstack.org/#/c/301804","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4aed9cdc816d6ed979047c925b3655b1f7f6f953","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                      \"regular expression \u0027%s\u0027. Note that case insensitive \""},{"line_number":428,"context_line":"                      \"matching is performed\" % CONF.image.name_regex)"},{"line_number":429,"context_line":"            images \u003d glance_wrapper.list_images()"},{"line_number":430,"context_line":"            filtered_images \u003d [img for img in images if img.is_public is True"},{"line_number":431,"context_line":"                               and img.status.lower() \u003d\u003d \"active\" and img.name]"},{"line_number":432,"context_line":"            for img in filtered_images:"},{"line_number":433,"context_line":"                if re.match(CONF.image.name_regex, img.name, re.IGNORECASE):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_29380ca0","line":430,"range":{"start_line":430,"start_character":12,"end_line":430,"end_character":77},"in_reply_to":"1a122d0e_27de7d11","updated":"2016-04-18 13:21:15.000000000","message":"Done","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"63a20573ffe8c37300aa4ce3a7bbde69365b7908","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                      \"regular expression \u0027%s\u0027. Note that case insensitive \""},{"line_number":428,"context_line":"                      \"matching is performed\" % CONF.image.name_regex)"},{"line_number":429,"context_line":"            images \u003d glance_wrapper.list_images()"},{"line_number":430,"context_line":"            filtered_images \u003d [img for img in images if img.is_public is True"},{"line_number":431,"context_line":"                               and img.status.lower() \u003d\u003d \"active\" and img.name]"},{"line_number":432,"context_line":"            for img in filtered_images:"},{"line_number":433,"context_line":"                if re.match(CONF.image.name_regex, img.name, re.IGNORECASE):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_27de7d11","line":430,"range":{"start_line":430,"start_character":12,"end_line":430,"end_character":77},"in_reply_to":"1a122d0e_9c11aeaf","updated":"2016-04-18 11:24:39.000000000","message":"Yes, this code is not present anymore. Please, rebase the patch.","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"923a635ed139aa987f672c78d8e72bab19b1577f","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                      .format(opt\u003doption, opt_val\u003doption_value))"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def _discover_or_create_image(self):"},{"line_number":423,"context_line":"        glance_wrap \u003d glance.wrap(self.clients.glance, self)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        if CONF.image.name_regex:"},{"line_number":426,"context_line":"            LOG.debug(\"Trying to discover a public image with name matching \""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_73d78eed","line":423,"range":{"start_line":423,"start_character":8,"end_line":423,"end_character":19},"updated":"2016-04-18 13:55:25.000000000","message":"Could you please name this variable \"glance_wrapper\"? It is not a big deal, but it is good for consistency.","commit_id":"259c254d6552d1c328dc55d395d089b4d6579313"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"2da785a71d242336c271dec4827debbda99ad8ab","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                      .format(opt\u003doption, opt_val\u003doption_value))"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def _discover_or_create_image(self):"},{"line_number":423,"context_line":"        glance_wrap \u003d glance.wrap(self.clients.glance, self)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        if CONF.image.name_regex:"},{"line_number":426,"context_line":"            LOG.debug(\"Trying to discover a public image with name matching \""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_a13430fb","line":423,"range":{"start_line":423,"start_character":8,"end_line":423,"end_character":19},"in_reply_to":"1a122d0e_73d78eed","updated":"2016-04-18 14:31:32.000000000","message":"Done","commit_id":"259c254d6552d1c328dc55d395d089b4d6579313"}],"tests/unit/fakes.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"63a20573ffe8c37300aa4ce3a7bbde69365b7908","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def __init__(self, manager\u003dNone, id\u003d\"image-id-0\", min_ram\u003d0,"},{"line_number":121,"context_line":"                 size\u003d0, min_disk\u003d0, status\u003d\"active\", name\u003dNone,"},{"line_number":122,"context_line":"                 is_public\u003dFalse):"},{"line_number":123,"context_line":"        super(FakeImage, self).__init__(manager, id\u003did, name\u003dname)"},{"line_number":124,"context_line":"        self.min_ram \u003d min_ram"},{"line_number":125,"context_line":"        self.size \u003d size"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_074ee195","line":122,"updated":"2016-04-18 11:24:39.000000000","message":"Please, rebase the patch. This code is not present.","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"4aed9cdc816d6ed979047c925b3655b1f7f6f953","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def __init__(self, manager\u003dNone, id\u003d\"image-id-0\", min_ram\u003d0,"},{"line_number":121,"context_line":"                 size\u003d0, min_disk\u003d0, status\u003d\"active\", name\u003dNone,"},{"line_number":122,"context_line":"                 is_public\u003dFalse):"},{"line_number":123,"context_line":"        super(FakeImage, self).__init__(manager, id\u003did, name\u003dname)"},{"line_number":124,"context_line":"        self.min_ram \u003d min_ram"},{"line_number":125,"context_line":"        self.size \u003d size"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_49458815","line":122,"in_reply_to":"1a122d0e_074ee195","updated":"2016-04-18 13:21:15.000000000","message":"Done","commit_id":"88721ba75c0e82f7d3b3813960198d203b0413d3"}],"tests/unit/verification/test_config.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"923a635ed139aa987f672c78d8e72bab19b1577f","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        wrapper \u003d mock_glance_wrap.return_value"},{"line_number":484,"context_line":"        wrapper.get_image.side_effect \u003d ["},{"line_number":485,"context_line":"            fakes.FakeImage(id\u003d\"id1\", status\u003d\"DELETED\"),"},{"line_number":486,"context_line":"            fakes.FakeImage(id\u003d\"id2\"),"},{"line_number":487,"context_line":"            fakes.FakeImage(id\u003d\"id2\", status\u003d\"DELETED\")]"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        self.context._cleanup_images()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_d04ad882","line":486,"updated":"2016-04-18 13:55:25.000000000","message":"Why do you have two lines with the same IDs. It is confusing a little.","commit_id":"259c254d6552d1c328dc55d395d089b4d6579313"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"57ed587b9a3237f134b9750eeca90d22c241eede","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        wrapper \u003d mock_glance_wrap.return_value"},{"line_number":484,"context_line":"        wrapper.get_image.side_effect \u003d ["},{"line_number":485,"context_line":"            fakes.FakeImage(id\u003d\"id1\", status\u003d\"DELETED\"),"},{"line_number":486,"context_line":"            fakes.FakeImage(id\u003d\"id2\"),"},{"line_number":487,"context_line":"            fakes.FakeImage(id\u003d\"id2\", status\u003d\"DELETED\")]"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        self.context._cleanup_images()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_675ea813","line":486,"in_reply_to":"1a122d0e_6102180d","updated":"2016-04-18 14:49:58.000000000","message":"Got it. Thanks, Chris.","commit_id":"259c254d6552d1c328dc55d395d089b4d6579313"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"2da785a71d242336c271dec4827debbda99ad8ab","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        wrapper \u003d mock_glance_wrap.return_value"},{"line_number":484,"context_line":"        wrapper.get_image.side_effect \u003d ["},{"line_number":485,"context_line":"            fakes.FakeImage(id\u003d\"id1\", status\u003d\"DELETED\"),"},{"line_number":486,"context_line":"            fakes.FakeImage(id\u003d\"id2\"),"},{"line_number":487,"context_line":"            fakes.FakeImage(id\u003d\"id2\", status\u003d\"DELETED\")]"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        self.context._cleanup_images()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_6102180d","line":486,"in_reply_to":"1a122d0e_d04ad882","updated":"2016-04-18 14:31:32.000000000","message":"wait_for_status() will refetch the image until it\u0027s deleted. So first we delete the image id1, which deletes immediately; then we try to delete the image id2, which doesn\u0027t delete immediately, but is deleted by the second get_image() call. This emulates how wait_for_status() often actually works in the wild.","commit_id":"259c254d6552d1c328dc55d395d089b4d6579313"}]}
