)]}'
{"openstack/block_storage/v2/_proxy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            if not volume_obj:"},{"line_number":370,"context_line":"                raise exceptions.SDKException("},{"line_number":371,"context_line":"                    \"Volume {volume} given to create_image could\""},{"line_number":372,"context_line":"                    \" not be foud\".format(volume\u003dvolume))"},{"line_number":373,"context_line":"            volume_id \u003d volume_obj[\u0027id\u0027]"},{"line_number":374,"context_line":"        data \u003d self.post("},{"line_number":375,"context_line":"            \u0027/volumes/{id}/action\u0027.format(id\u003dvolume_id),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_0ee3ecd9","line":372,"updated":"2019-02-26 10:38:26.000000000","message":"nit: \"found\"","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            if not volume_obj:"},{"line_number":370,"context_line":"                raise exceptions.SDKException("},{"line_number":371,"context_line":"                    \"Volume {volume} given to create_image could\""},{"line_number":372,"context_line":"                    \" not be foud\".format(volume\u003dvolume))"},{"line_number":373,"context_line":"            volume_id \u003d volume_obj[\u0027id\u0027]"},{"line_number":374,"context_line":"        data \u003d self.post("},{"line_number":375,"context_line":"            \u0027/volumes/{id}/action\u0027.format(id\u003dvolume_id),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_29cd8ab6","line":372,"in_reply_to":"9fdfeff1_0ee3ecd9","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                    \u0027disk_format\u0027: disk_format}})"},{"line_number":382,"context_line":"        response \u003d self._connection._get_and_munchify("},{"line_number":383,"context_line":"            \u0027os-volume_upload_image\u0027, data)"},{"line_number":384,"context_line":"        return self._connection.get_image(response[\u0027image_id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_2ee830b1","line":384,"updated":"2019-02-26 10:38:26.000000000","message":"To avoid the race here we could just return the image_id. Then in the shade layer we would retry get_image until it succeeds. Or we can do it here as well.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                    \u0027disk_format\u0027: disk_format}})"},{"line_number":382,"context_line":"        response \u003d self._connection._get_and_munchify("},{"line_number":383,"context_line":"            \u0027os-volume_upload_image\u0027, data)"},{"line_number":384,"context_line":"        return self._connection.get_image(response[\u0027image_id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_e9522267","line":384,"in_reply_to":"9fdfeff1_2ee830b1","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"}],"openstack/block_storage/v3/_proxy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def create_image("},{"line_number":357,"context_line":"            self, name, volume, allow_duplicates,"},{"line_number":358,"context_line":"            container_format, disk_format, wait, timeout):"},{"line_number":359,"context_line":"        if not disk_format:"},{"line_number":360,"context_line":"            disk_format \u003d self._connection.config.config[\u0027image_format\u0027]"},{"line_number":361,"context_line":"        if not container_format:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_4eb814c7","line":358,"updated":"2019-02-26 10:38:26.000000000","message":"This looks identicaly to the v2 version. Move to a new base class/mixin?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def create_image("},{"line_number":357,"context_line":"            self, name, volume, allow_duplicates,"},{"line_number":358,"context_line":"            container_format, disk_format, wait, timeout):"},{"line_number":359,"context_line":"        if not disk_format:"},{"line_number":360,"context_line":"            disk_format \u003d self._connection.config.config[\u0027image_format\u0027]"},{"line_number":361,"context_line":"        if not container_format:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_898ef6ce","line":358,"in_reply_to":"9fdfeff1_4eb814c7","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            if not volume_obj:"},{"line_number":370,"context_line":"                raise exceptions.SDKException("},{"line_number":371,"context_line":"                    \"Volume {volume} given to create_image could\""},{"line_number":372,"context_line":"                    \" not be foud\".format(volume\u003dvolume))"},{"line_number":373,"context_line":"            volume_id \u003d volume_obj[\u0027id\u0027]"},{"line_number":374,"context_line":"        data \u003d self.post("},{"line_number":375,"context_line":"            \u0027/volumes/{id}/action\u0027.format(id\u003dvolume_id),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_6ebdd8b5","line":372,"updated":"2019-02-26 10:38:26.000000000","message":"ditto","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            if not volume_obj:"},{"line_number":370,"context_line":"                raise exceptions.SDKException("},{"line_number":371,"context_line":"                    \"Volume {volume} given to create_image could\""},{"line_number":372,"context_line":"                    \" not be foud\".format(volume\u003dvolume))"},{"line_number":373,"context_line":"            volume_id \u003d volume_obj[\u0027id\u0027]"},{"line_number":374,"context_line":"        data \u003d self.post("},{"line_number":375,"context_line":"            \u0027/volumes/{id}/action\u0027.format(id\u003dvolume_id),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_29b90a78","line":372,"in_reply_to":"9fdfeff1_6ebdd8b5","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                    \u0027disk_format\u0027: disk_format}})"},{"line_number":382,"context_line":"        response \u003d self._connection._get_and_munchify("},{"line_number":383,"context_line":"            \u0027os-volume_upload_image\u0027, data)"},{"line_number":384,"context_line":"        return self._connection.get_image(response[\u0027image_id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_0eae8c80","line":384,"updated":"2019-02-26 10:38:26.000000000","message":"ditto","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                    \u0027disk_format\u0027: disk_format}})"},{"line_number":382,"context_line":"        response \u003d self._connection._get_and_munchify("},{"line_number":383,"context_line":"            \u0027os-volume_upload_image\u0027, data)"},{"line_number":384,"context_line":"        return self._connection.get_image(response[\u0027image_id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_09b44681","line":384,"in_reply_to":"9fdfeff1_0eae8c80","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"}],"openstack/cloud/openstackcloud.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0769e2b3435ad12a7f67659a68daf0c6ccc6a83e","unresolved":false,"context_lines":[{"line_number":4770,"context_line":""},{"line_number":4771,"context_line":"    def update_image_properties("},{"line_number":4772,"context_line":"            self, image\u003dNone, name_or_id\u003dNone, meta\u003dNone, **properties):"},{"line_number":4773,"context_line":"        image \u003d image or name_or_id"},{"line_number":4774,"context_line":"        return self.image.update_image_properties("},{"line_number":4775,"context_line":"            image\u003dimage, meta\u003dmeta, **properties)"},{"line_number":4776,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9fdfeff1_a3a720bc","line":4773,"updated":"2019-02-28 10:45:19.000000000","message":"I\u0027d drop name_or_id completely..","commit_id":"51d689e82188dc3955c4fa01c6afb80a076e537e"}],"openstack/image/_base_proxy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                          methods is always synchronous."},{"line_number":62,"context_line":"        :param timeout: Seconds to wait for image creation. None is forever."},{"line_number":63,"context_line":"        :param meta: A dict of key/value pairs to use for metadata that"},{"line_number":64,"context_line":"                     bypasses automatic type conversion."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        Additional kwargs will be passed to the image creation as additional"},{"line_number":67,"context_line":"        metadata for the image and will have all values converted to string"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_ced084fa","line":64,"updated":"2019-02-26 10:38:26.000000000","message":"nit: ordering does not match the actual, meta goes before wait","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                          methods is always synchronous."},{"line_number":62,"context_line":"        :param timeout: Seconds to wait for image creation. None is forever."},{"line_number":63,"context_line":"        :param meta: A dict of key/value pairs to use for metadata that"},{"line_number":64,"context_line":"                     bypasses automatic type conversion."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        Additional kwargs will be passed to the image creation as additional"},{"line_number":67,"context_line":"        metadata for the image and will have all values converted to string"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_29158a49","line":64,"in_reply_to":"9fdfeff1_ced084fa","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if not filename:"},{"line_number":94,"context_line":"            name, filename \u003d self._connection._get_name_and_filename(name)"},{"line_number":95,"context_line":"        if not (md5 or sha256):"},{"line_number":96,"context_line":"            (md5, sha256) \u003d self._connection._get_file_hashes(filename)"},{"line_number":97,"context_line":"        if allow_duplicates:"},{"line_number":98,"context_line":"            current_image \u003d None"},{"line_number":99,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_eecd485d","line":96,"updated":"2019-02-26 10:38:26.000000000","message":"nit: images I have on my devstack use sha512. any plans to support that?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if not filename:"},{"line_number":94,"context_line":"            name, filename \u003d self._connection._get_name_and_filename(name)"},{"line_number":95,"context_line":"        if not (md5 or sha256):"},{"line_number":96,"context_line":"            (md5, sha256) \u003d self._connection._get_file_hashes(filename)"},{"line_number":97,"context_line":"        if allow_duplicates:"},{"line_number":98,"context_line":"            current_image \u003d None"},{"line_number":99,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_240a911f","line":96,"in_reply_to":"9fdfeff1_eecd485d","updated":"2019-02-27 14:25:03.000000000","message":"Probably wouldn\u0027t be a bad idea.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        kwargs[self._connection._IMAGE_OBJECT_KEY] \u003d \u0027/\u0027.join("},{"line_number":121,"context_line":"            [container, name])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        if disable_vendor_agent:"},{"line_number":124,"context_line":"            kwargs.update("},{"line_number":125,"context_line":"                self._connection.config.config[\u0027disable_vendor_agent\u0027])"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_8ed6fcf1","line":123,"updated":"2019-02-26 10:38:26.000000000","message":"True is the default, is it intended? I would assume we wanted to use server defaults..","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        kwargs[self._connection._IMAGE_OBJECT_KEY] \u003d \u0027/\u0027.join("},{"line_number":121,"context_line":"            [container, name])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        if disable_vendor_agent:"},{"line_number":124,"context_line":"            kwargs.update("},{"line_number":125,"context_line":"                self._connection.config.config[\u0027disable_vendor_agent\u0027])"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_a443e13e","line":123,"in_reply_to":"9fdfeff1_8ed6fcf1","updated":"2019-02-27 14:25:03.000000000","message":"This is pretty much a no-op everywhere but rackspace public cloud. They run a custom agent which talks to xenstore in the images they build, and their nova waits for something like 5 minutes waiting for the agent to check in with nova before moving the server to ACTIVE - unless you pass the disable vendor agent flag. If you\u0027re uploading a custom image, chances are you are not embedding the custom rackspace agent in it.\n\nIn any case- yes, it\u0027s on purpose that the flag is True by default. It still won\u0027t do anything unless the cloud vendor profile has defined the key/value to be set.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        return image"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @abc.abstractmethod"},{"line_number":145,"context_line":"    def _upload_image(self, name, filename, meta, **image_kwargs):"},{"line_number":146,"context_line":"        pass"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_aed3c000","line":145,"updated":"2019-02-26 10:38:26.000000000","message":"very nit: _upload_image_versioned?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        pass"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    @abc.abstractmethod"},{"line_number":149,"context_line":"    def _update_image_properties(self, image, meta, properties):"},{"line_number":150,"context_line":"        pass"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def update_image_properties("}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_4e06d488","line":149,"updated":"2019-02-26 10:38:26.000000000","message":"ditto?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        pass"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def update_image_properties("},{"line_number":153,"context_line":"            self, image\u003dNone, name_or_id\u003dNone, meta\u003dNone, **properties):"},{"line_number":154,"context_line":"        if image is None:"},{"line_number":155,"context_line":"            image \u003d self._connection.get_image(name_or_id)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_6e0b988d","line":153,"updated":"2019-02-26 10:38:26.000000000","message":"docstring?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        pass"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def update_image_properties("},{"line_number":153,"context_line":"            self, image\u003dNone, name_or_id\u003dNone, meta\u003dNone, **properties):"},{"line_number":154,"context_line":"        if image is None:"},{"line_number":155,"context_line":"            image \u003d self._connection.get_image(name_or_id)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_0ae978e1","line":153,"in_reply_to":"9fdfeff1_6e0b988d","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    def update_image_properties("},{"line_number":153,"context_line":"            self, image\u003dNone, name_or_id\u003dNone, meta\u003dNone, **properties):"},{"line_number":154,"context_line":"        if image is None:"},{"line_number":155,"context_line":"            image \u003d self._connection.get_image(name_or_id)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        if not meta:"},{"line_number":158,"context_line":"            meta \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_0efc4c70","line":155,"updated":"2019-02-26 10:38:26.000000000","message":"it seems standard to use the same first argument for Resource or name or ID in our proxies. Why is it different here?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    def update_image_properties("},{"line_number":153,"context_line":"            self, image\u003dNone, name_or_id\u003dNone, meta\u003dNone, **properties):"},{"line_number":154,"context_line":"        if image is None:"},{"line_number":155,"context_line":"            image \u003d self._connection.get_image(name_or_id)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        if not meta:"},{"line_number":158,"context_line":"            meta \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_845fbd0d","line":155,"in_reply_to":"9fdfeff1_0efc4c70","updated":"2019-02-27 14:25:03.000000000","message":"Uh ... historical raisins? (since this was copied from shade) I agree though - this doesn\u0027t match calling convention here.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"}],"openstack/image/v1/_proxy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                self.delete(\u0027/images/{id}\u0027.format(id\u003dimage.id))"},{"line_number":74,"context_line":"            except exc.OpenStackCloudHTTPError:"},{"line_number":75,"context_line":"                # We\u0027re just trying to clean up - if it doesn\u0027t work - shrug"},{"line_number":76,"context_line":"                self._connection.log.debug("},{"line_number":77,"context_line":"                    \"Failed deleting image after we failed uploading it.\","},{"line_number":78,"context_line":"                    exc_info\u003dTrue)"},{"line_number":79,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_2e01106b","line":76,"updated":"2019-02-26 10:38:26.000000000","message":"this feels like log.warning at least.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                self.delete(\u0027/images/{id}\u0027.format(id\u003dimage.id))"},{"line_number":74,"context_line":"            except exc.OpenStackCloudHTTPError:"},{"line_number":75,"context_line":"                # We\u0027re just trying to clean up - if it doesn\u0027t work - shrug"},{"line_number":76,"context_line":"                self._connection.log.debug("},{"line_number":77,"context_line":"                    \"Failed deleting image after we failed uploading it.\","},{"line_number":78,"context_line":"                    exc_info\u003dTrue)"},{"line_number":79,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_eac43462","line":76,"in_reply_to":"9fdfeff1_2e01106b","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"}],"openstack/image/v2/_proxy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def _upload_image("},{"line_number":83,"context_line":"            self, name, filename\u003dNone,"},{"line_number":84,"context_line":"            meta\u003dNone, **kwargs):"},{"line_number":85,"context_line":"        # We can never have nice things. Glance v1 took \"is_public\" as a"},{"line_number":86,"context_line":"        # boolean. Glance v2 takes \"visibility\". If the user gives us"},{"line_number":87,"context_line":"        # is_public, we know what they mean. If they give us visibility, they"},{"line_number":88,"context_line":"        # know that they mean."}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_2eb350eb","line":85,"updated":"2019-02-26 10:38:26.000000000","message":"++","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            # This makes me want to die inside"},{"line_number":98,"context_line":"            if self._connection.image_api_use_tasks:"},{"line_number":99,"context_line":"                return self._upload_image_task("},{"line_number":100,"context_line":"                    name, filename,"},{"line_number":101,"context_line":"                    meta\u003dmeta, **kwargs)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_cecba450","line":98,"updated":"2019-02-26 10:38:26.000000000","message":"I hope this property (or whatever it is) checks that we have swift present..","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            # This makes me want to die inside"},{"line_number":98,"context_line":"            if self._connection.image_api_use_tasks:"},{"line_number":99,"context_line":"                return self._upload_image_task("},{"line_number":100,"context_line":"                    name, filename,"},{"line_number":101,"context_line":"                    meta\u003dmeta, **kwargs)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_ea999479","line":98,"in_reply_to":"9fdfeff1_cecba450","updated":"2019-02-27 14:25:03.000000000","message":"It\u0027s a config setting that\u0027s only needed on clouds (like rax public) that require using the task upload. It only works with swift, so it would be exceedingly strange for swift to not be there. Maybe we should put in a sanity check though? I\u0027ll add it in the upload_image_task method for locality.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def _make_v2_image_params(self, meta, properties):"},{"line_number":114,"context_line":"        ret \u003d {}"},{"line_number":115,"context_line":"        for k, v in iter(properties.items()):"},{"line_number":116,"context_line":"            if k in (\u0027min_disk\u0027, \u0027min_ram\u0027, \u0027size\u0027, \u0027virtual_size\u0027):"},{"line_number":117,"context_line":"                ret[k] \u003d int(v)"},{"line_number":118,"context_line":"            elif k \u003d\u003d \u0027protected\u0027:"},{"line_number":119,"context_line":"                ret[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_eec8e855","line":116,"updated":"2019-02-26 10:38:26.000000000","message":"maybe make this a top-level constant for better visibility (and simpler updating)?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def _make_v2_image_params(self, meta, properties):"},{"line_number":114,"context_line":"        ret \u003d {}"},{"line_number":115,"context_line":"        for k, v in iter(properties.items()):"},{"line_number":116,"context_line":"            if k in (\u0027min_disk\u0027, \u0027min_ram\u0027, \u0027size\u0027, \u0027virtual_size\u0027):"},{"line_number":117,"context_line":"                ret[k] \u003d int(v)"},{"line_number":118,"context_line":"            elif k \u003d\u003d \u0027protected\u0027:"},{"line_number":119,"context_line":"                ret[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_8ae7a8e3","line":116,"in_reply_to":"9fdfeff1_eec8e855","updated":"2019-02-27 14:25:03.000000000","message":"Done","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                exceptions.raise_from_response(response)"},{"line_number":153,"context_line":"            except exc.OpenStackCloudHTTPError:"},{"line_number":154,"context_line":"                # We\u0027re just trying to clean up - if it doesn\u0027t work - shrug"},{"line_number":155,"context_line":"                self._connection.log.debug("},{"line_number":156,"context_line":"                    \"Failed deleting image after we failed uploading it.\","},{"line_number":157,"context_line":"                    exc_info\u003dTrue)"},{"line_number":158,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_8ec11c32","line":155,"updated":"2019-02-26 10:38:26.000000000","message":"ditto re warning","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                            key\u003dNone, data\u003dresponse)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"                except exc.OpenStackCloudHTTPError as e:"},{"line_number":206,"context_line":"                    if e.response.status_code \u003d\u003d 503:"},{"line_number":207,"context_line":"                        # Clear the exception so that it doesn\u0027t linger"},{"line_number":208,"context_line":"                        # and get reported as an Inner Exception later"},{"line_number":209,"context_line":"                        _utils._exc_clear()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_aebe60ab","line":206,"updated":"2019-02-26 10:38:26.000000000","message":"we have retriable_status_codes in keystoneauth nowadays, let\u0027s please use it.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                            key\u003dNone, data\u003dresponse)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"                except exc.OpenStackCloudHTTPError as e:"},{"line_number":206,"context_line":"                    if e.response.status_code \u003d\u003d 503:"},{"line_number":207,"context_line":"                        # Clear the exception so that it doesn\u0027t linger"},{"line_number":208,"context_line":"                        # and get reported as an Inner Exception later"},{"line_number":209,"context_line":"                        _utils._exc_clear()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_4af6a091","line":206,"in_reply_to":"9fdfeff1_aebe60ab","updated":"2019-02-27 14:25:03.000000000","message":"Yes - let me do that in a followup to keep the changes to copied logic to a minimum.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                    try:"},{"line_number":217,"context_line":"                        image \u003d self._connection.get_image(image_id)"},{"line_number":218,"context_line":"                    except exc.OpenStackCloudHTTPError as e:"},{"line_number":219,"context_line":"                        if e.response.status_code \u003d\u003d 503:"},{"line_number":220,"context_line":"                            # Clear the exception so that it doesn\u0027t linger"},{"line_number":221,"context_line":"                            # and get reported as an Inner Exception later"},{"line_number":222,"context_line":"                            _utils._exc_clear()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_4edd7412","line":219,"updated":"2019-02-26 10:38:26.000000000","message":"ditto","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                    try:"},{"line_number":217,"context_line":"                        image \u003d self._connection.get_image(image_id)"},{"line_number":218,"context_line":"                    except exc.OpenStackCloudHTTPError as e:"},{"line_number":219,"context_line":"                        if e.response.status_code \u003d\u003d 503:"},{"line_number":220,"context_line":"                            # Clear the exception so that it doesn\u0027t linger"},{"line_number":221,"context_line":"                            # and get reported as an Inner Exception later"},{"line_number":222,"context_line":"                            _utils._exc_clear()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_0aec18b9","line":219,"in_reply_to":"9fdfeff1_4edd7412","updated":"2019-02-27 14:25:03.000000000","message":"Same.","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5af057a8ba42ac4c1a1f5c59c35f1ab8b1bdd0e4","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                        glance_task.id, image_id, (time.time() - start))"},{"line_number":233,"context_line":"                    # Clean up after ourselves. The object we created is not"},{"line_number":234,"context_line":"                    # needed after the import is done."},{"line_number":235,"context_line":"                    self._connection.delete_object(container, name)"},{"line_number":236,"context_line":"                    return self._connection.get_image(image_id)"},{"line_number":237,"context_line":"                elif status[\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":238,"context_line":"                    if status[\u0027message\u0027] \u003d\u003d _IMAGE_ERROR_396:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_6ee2b8d7","line":235,"updated":"2019-02-26 10:38:26.000000000","message":"shouldn\u0027t this be somewhere in a \"finally\" block?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"869776821784a6363126f93887289f4e2f4b90c2","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                        glance_task.id, image_id, (time.time() - start))"},{"line_number":233,"context_line":"                    # Clean up after ourselves. The object we created is not"},{"line_number":234,"context_line":"                    # needed after the import is done."},{"line_number":235,"context_line":"                    self._connection.delete_object(container, name)"},{"line_number":236,"context_line":"                    return self._connection.get_image(image_id)"},{"line_number":237,"context_line":"                elif status[\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":238,"context_line":"                    if status[\u0027message\u0027] \u003d\u003d _IMAGE_ERROR_396:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_ca2ff0f3","line":235,"in_reply_to":"9fdfeff1_6ee2b8d7","updated":"2019-02-27 14:25:03.000000000","message":"Probably?","commit_id":"42684b114df3259470913172c75eadce4646d9fe"}]}
