)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"8b704c5f51b7dbdf1bce5dace4f7fb8074172b83","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This is now present in nova and cinder, and it will be also needed in ironic,"},{"line_number":10,"context_line":"so moving it into a common location."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Most of the code was present on nova.image.glance and cincer.image.glance."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"glanceclient/exc.py \u003d\u003e nova.exception \u003c\u003d\u003e cinder.exception"},{"line_number":15,"context_line":" GlanceBaseException"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAP3%2F%2F9TU%3D","line":12,"updated":"2013-07-08 15:34:17.000000000","message":"Minor nit: typo: cincer -\u003e cinder","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This is now present in nova and cinder, and it will be also needed in ironic,"},{"line_number":10,"context_line":"so moving it into a common location."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Most of the code was present on nova.image.glance and cincer.image.glance."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"glanceclient/exc.py \u003d\u003e nova.exception \u003c\u003d\u003e cinder.exception"},{"line_number":15,"context_line":" GlanceBaseException"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAP3%2F%2F62U%3D","line":12,"in_reply_to":"AAAAP3%2F%2F9TU%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"}],"glanceclient/common/base_image_service.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def get_image_service(func):"},{"line_number":38,"context_line":"    \"\"\"Cretes a glance client if doesn\u0027t exists and calls the function.\"\"\""},{"line_number":39,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":40,"context_line":"        if self.client:"},{"line_number":41,"context_line":"            return func(self, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FdKE%3D","line":38,"updated":"2013-07-08 15:51:32.000000000","message":"creates*","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def get_image_service(func):"},{"line_number":38,"context_line":"    \"\"\"Cretes a glance client if doesn\u0027t exists and calls the function.\"\"\""},{"line_number":39,"context_line":"    def wrapper(self, *args, **kwargs):"},{"line_number":40,"context_line":"        if self.client:"},{"line_number":41,"context_line":"            return func(self, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F610%3D","line":38,"in_reply_to":"AAAAPn%2F%2FdKE%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                    raise exception.GlanceConnectionFailed(host\u003dhost,"},{"line_number":100,"context_line":"                                                           port\u003dport,"},{"line_number":101,"context_line":"                                                           reason\u003dstr(e))"},{"line_number":102,"context_line":"                LOG.exception(error_msg, locals())"},{"line_number":103,"context_line":"                time.sleep(1)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @get_image_service"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FdIc%3D","line":102,"updated":"2013-07-08 15:51:32.000000000","message":"Hey,\n\npls, use an explicit dict instead of locals, we\u0027re trying to move away from it :D","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                    raise exception.GlanceConnectionFailed(host\u003dhost,"},{"line_number":100,"context_line":"                                                           port\u003dport,"},{"line_number":101,"context_line":"                                                           reason\u003dstr(e))"},{"line_number":102,"context_line":"                LOG.exception(error_msg, locals())"},{"line_number":103,"context_line":"                time.sleep(1)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @get_image_service"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F60s%3D","line":102,"in_reply_to":"AAAAPn%2F%2FdIc%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":137,"context_line":"         self.glance_port, use_ssl) \u003d service_utils.parse_image_ref(image_href)"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            image \u003d self.call(method, image_id)"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            service_utils.reraise_translated_image_exception(image_id)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        if not service_utils.is_image_available(self.context, image):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FdIY%3D","line":140,"updated":"2013-07-08 15:51:32.000000000","message":"do we need to catch Exception here? Can we catch something more specific?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":137,"context_line":"         self.glance_port, use_ssl) \u003d service_utils.parse_image_ref(image_href)"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            image \u003d self.call(method, image_id)"},{"line_number":140,"context_line":"        except Exception:"},{"line_number":141,"context_line":"            service_utils.reraise_translated_image_exception(image_id)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        if not service_utils.is_image_available(self.context, image):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F5xo%3D","line":140,"in_reply_to":"AAAAPn%2F%2FdIY%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"9fab717ee71ba86dba7e5b5aeb29b60d55ffab10","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2010 OpenStack Foundation"},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2FjHE%3D","line":3,"updated":"2013-07-16 18:50:51.000000000","message":"do we want to keep the older openstack header here? not sure what the rules are.","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"9fab717ee71ba86dba7e5b5aeb29b60d55ffab10","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import functools"},{"line_number":21,"context_line":"import glanceclient"},{"line_number":22,"context_line":"import logging"},{"line_number":23,"context_line":"import shutil"},{"line_number":24,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2FjGE%3D","line":21,"updated":"2013-07-16 18:50:51.000000000","message":"is glanceclient importing itself?","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"f280dc1f22401508e57f796a60b615faefb90778","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import functools"},{"line_number":21,"context_line":"import glanceclient"},{"line_number":22,"context_line":"import logging"},{"line_number":23,"context_line":"import shutil"},{"line_number":24,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6js%3D","line":21,"in_reply_to":"AAAAP3%2F%2Fgkk%3D","updated":"2013-07-19 09:08:44.000000000","message":"IMHO, that line is not needed.\n\nWhen this module is imported the code in glanceclient/__init__.py would have been executed already.\n\nI think it would be better to change this now.","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"dfbd3571c54795570c7276aa937bd81fba17ceb2","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import functools"},{"line_number":21,"context_line":"import glanceclient"},{"line_number":22,"context_line":"import logging"},{"line_number":23,"context_line":"import shutil"},{"line_number":24,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2Fgkk%3D","line":21,"in_reply_to":"AAAAP3%2F%2FjGE%3D","updated":"2013-07-17 06:54:14.000000000","message":"It looks like... but not.\n\nglanceclient/__init__.py checks that the client can be imported properly, and gives you an unbound Client fucntion pointing to glanceclient.client.Client\n\n\nCan we do import glanceclient.client and use client.Client()? Sure, and it\u0027s actually more clear, but I didn\u0027t want to land a very disruptive patch, so this is the same that nova and cinder image service is using now. Once it lands, and nova, cinder and ironic are move to use this, we can take a deep look to this \u0027feature\u0027.","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"11d136784288c2086725b3e506d73015f484ce7f","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import functools"},{"line_number":21,"context_line":"import glanceclient"},{"line_number":22,"context_line":"import logging"},{"line_number":23,"context_line":"import shutil"},{"line_number":24,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6fk%3D","line":21,"in_reply_to":"AAAAQn%2F%2F6js%3D","updated":"2013-07-19 09:37:28.000000000","message":"Done","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"8e64e833693b305adcefecae9dab6b70e7f3dc49","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        image_meta.pop(\u0027id\u0027, None)"},{"line_number":272,"context_line":"        if data:"},{"line_number":273,"context_line":"            image_meta[\u0027data\u0027] \u003d data"},{"line_number":274,"context_line":"        print image_meta"},{"line_number":275,"context_line":"        image_meta \u003d self.call(method, image_id, **image_meta)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @check_image_service"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAQn%2F%2FfDk%3D","line":274,"updated":"2013-07-30 13:11:47.000000000","message":"-1","commit_id":"42a66cb0021d8dd280734aba6690989e3cb700f7"}],"glanceclient/common/service.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"f280dc1f22401508e57f796a60b615faefb90778","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        Returns a dict with image data for the given opaque image id."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        :param context: The request context, for access checks."},{"line_number":75,"context_line":"        :param image_id: The opaque image identifier."},{"line_number":76,"context_line":"        :returns: A dict containing image metadata."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6jM%3D","line":74,"updated":"2013-07-19 09:08:44.000000000","message":"context is not an argument anymore. Same for other methods.","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"11d136784288c2086725b3e506d73015f484ce7f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        Returns a dict with image data for the given opaque image id."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        :param context: The request context, for access checks."},{"line_number":75,"context_line":"        :param image_id: The opaque image identifier."},{"line_number":76,"context_line":"        :returns: A dict containing image metadata."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6fU%3D","line":74,"in_reply_to":"AAAAQn%2F%2F6jM%3D","updated":"2013-07-19 09:37:28.000000000","message":"Done","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"}],"glanceclient/common/service_utils.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                           CONF.glance_port)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def generate_image_url(image_ref):"},{"line_number":41,"context_line":"    \"\"\"Generate an image URL from an image_ref.\"\"\""},{"line_number":42,"context_line":"    return \"%s/images/%s\" % (generate_glance_url(), image_ref)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9UY%3D","line":40,"updated":"2013-07-08 15:51:32.000000000","message":"this is not being used anywhere. Do we need it?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                           CONF.glance_port)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def generate_image_url(image_ref):"},{"line_number":41,"context_line":"    \"\"\"Generate an image URL from an image_ref.\"\"\""},{"line_number":42,"context_line":"    return \"%s/images/%s\" % (generate_glance_url(), image_ref)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6zo%3D","line":40,"in_reply_to":"AAAAP3%2F%2F9UY%3D","updated":"2013-07-09 22:10:50.000000000","message":"Not in glance, but nova used it, so i will leave it for now. Once nova starts using this, will see if in can be reworked.","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    raise new_exc, None, exc_trace"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def translate_image_exception(image_id, exc_value):"},{"line_number":60,"context_line":"    if isinstance(exc_value, (glanceclient.exc.Forbidden,"},{"line_number":61,"context_line":"                              glanceclient.exc.Unauthorized)):"},{"line_number":62,"context_line":"        return exception.ImageNotAuthorized(image_id\u003dimage_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9TM%3D","line":59,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    raise new_exc, None, exc_trace"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def translate_image_exception(image_id, exc_value):"},{"line_number":60,"context_line":"    if isinstance(exc_value, (glanceclient.exc.Forbidden,"},{"line_number":61,"context_line":"                              glanceclient.exc.Unauthorized)):"},{"line_number":62,"context_line":"        return exception.ImageNotAuthorized(image_id\u003dimage_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6zk%3D","line":59,"in_reply_to":"AAAAP3%2F%2F9TM%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    return exc_value"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def translate_plain_exception(exc_value):"},{"line_number":71,"context_line":"    if isinstance(exc_value, (glanceclient.exc.Forbidden,"},{"line_number":72,"context_line":"                              glanceclient.exc.Unauthorized)):"},{"line_number":73,"context_line":"        return exception.NotAuthorized(exc_value)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9TA%3D","line":70,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    return exc_value"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def translate_plain_exception(exc_value):"},{"line_number":71,"context_line":"    if isinstance(exc_value, (glanceclient.exc.Forbidden,"},{"line_number":72,"context_line":"                              glanceclient.exc.Unauthorized)):"},{"line_number":73,"context_line":"        return exception.NotAuthorized(exc_value)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6zg%3D","line":70,"in_reply_to":"AAAAP3%2F%2F9TA%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return exc_value"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def extract_attributes(image):"},{"line_number":82,"context_line":"    IMAGE_ATTRIBUTES \u003d [\u0027size\u0027, \u0027disk_format\u0027, \u0027owner\u0027,"},{"line_number":83,"context_line":"                        \u0027container_format\u0027, \u0027checksum\u0027, \u0027id\u0027,"},{"line_number":84,"context_line":"                        \u0027name\u0027, \u0027created_at\u0027, \u0027updated_at\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9S4%3D","line":81,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return exc_value"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def extract_attributes(image):"},{"line_number":82,"context_line":"    IMAGE_ATTRIBUTES \u003d [\u0027size\u0027, \u0027disk_format\u0027, \u0027owner\u0027,"},{"line_number":83,"context_line":"                        \u0027container_format\u0027, \u0027checksum\u0027, \u0027id\u0027,"},{"line_number":84,"context_line":"                        \u0027name\u0027, \u0027created_at\u0027, \u0027updated_at\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6zQ%3D","line":81,"in_reply_to":"AAAAP3%2F%2F9S4%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    return output"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def convert_timestamps_to_datetimes(image_meta):"},{"line_number":96,"context_line":"    \"\"\"Returns image with timestamp fields converted to datetime objects.\"\"\""},{"line_number":97,"context_line":"    for attr in [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027]:"},{"line_number":98,"context_line":"        if image_meta.get(attr):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9S0%3D","line":95,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    return output"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"def convert_timestamps_to_datetimes(image_meta):"},{"line_number":96,"context_line":"    \"\"\"Returns image with timestamp fields converted to datetime objects.\"\"\""},{"line_number":97,"context_line":"    for attr in [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027]:"},{"line_number":98,"context_line":"        if image_meta.get(attr):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6zM%3D","line":95,"in_reply_to":"AAAAP3%2F%2F9S0%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    return metadata"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def convert_from_string(metadata):"},{"line_number":117,"context_line":"    return convert(json_loads, metadata)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9So%3D","line":116,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    return metadata"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def convert_from_string(metadata):"},{"line_number":117,"context_line":"    return convert(json_loads, metadata)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6zE%3D","line":116,"in_reply_to":"AAAAP3%2F%2F9So%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    return convert(json_loads, metadata)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def convert_to_string(metadata):"},{"line_number":121,"context_line":"    return convert(json_dumps, metadata)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9Sk%3D","line":120,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    return convert(json_loads, metadata)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def convert_to_string(metadata):"},{"line_number":121,"context_line":"    return convert(json_dumps, metadata)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6zA%3D","line":120,"in_reply_to":"AAAAP3%2F%2F9Sk%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    return convert(json_dumps, metadata)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def json_loads(properties, attr):"},{"line_number":125,"context_line":"    prop \u003d properties[attr]"},{"line_number":126,"context_line":"    if isinstance(prop, basestring):"},{"line_number":127,"context_line":"        properties[attr] \u003d jsonutils.loads(prop)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9Sc%3D","line":124,"updated":"2013-07-08 15:51:32.000000000","message":"do we really need this function? Can we move this logic into convert_from_string?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    return convert(json_dumps, metadata)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def json_loads(properties, attr):"},{"line_number":125,"context_line":"    prop \u003d properties[attr]"},{"line_number":126,"context_line":"    if isinstance(prop, basestring):"},{"line_number":127,"context_line":"        properties[attr] \u003d jsonutils.loads(prop)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6yo%3D","line":124,"in_reply_to":"AAAAP3%2F%2F9Sc%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        properties[attr] \u003d jsonutils.loads(prop)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"def json_dumps(properties, attr):"},{"line_number":131,"context_line":"    prop \u003d properties[attr]"},{"line_number":132,"context_line":"    if not isinstance(prop, basestring):"},{"line_number":133,"context_line":"        properties[attr] \u003d jsonutils.dumps(prop)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9Sg%3D","line":130,"updated":"2013-07-08 15:51:32.000000000","message":"do we really need this function? Can we move this logic into convert_to_string?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        properties[attr] \u003d jsonutils.loads(prop)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"def json_dumps(properties, attr):"},{"line_number":131,"context_line":"    prop \u003d properties[attr]"},{"line_number":132,"context_line":"    if not isinstance(prop, basestring):"},{"line_number":133,"context_line":"        properties[attr] \u003d jsonutils.dumps(prop)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6yg%3D","line":130,"in_reply_to":"AAAAP3%2F%2F9Sg%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        properties[attr] \u003d jsonutils.dumps(prop)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"def remove_read_only(image_meta):"},{"line_number":137,"context_line":"    IMAGE_ATTRIBUTES \u003d [\u0027status\u0027, \u0027updated_at\u0027, \u0027created_at\u0027, \u0027deleted_at\u0027]"},{"line_number":138,"context_line":"    output \u003d copy.deepcopy(image_meta)"},{"line_number":139,"context_line":"    for attr in IMAGE_ATTRIBUTES:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9Rs%3D","line":136,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        properties[attr] \u003d jsonutils.dumps(prop)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"def remove_read_only(image_meta):"},{"line_number":137,"context_line":"    IMAGE_ATTRIBUTES \u003d [\u0027status\u0027, \u0027updated_at\u0027, \u0027created_at\u0027, \u0027deleted_at\u0027]"},{"line_number":138,"context_line":"    output \u003d copy.deepcopy(image_meta)"},{"line_number":139,"context_line":"    for attr in IMAGE_ATTRIBUTES:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6yc%3D","line":136,"in_reply_to":"AAAAP3%2F%2F9Rs%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    return output"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def get_api_server():"},{"line_number":146,"context_line":"    \"\"\""},{"line_number":147,"context_line":"    Shuffle a list of CONF.glance_api_servers and return an iterator"},{"line_number":148,"context_line":"    that will cycle through the list, looping around to the beginning"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9Rc%3D","line":145,"updated":"2013-07-08 15:51:32.000000000","message":"this function is just being used in this module, should we prefix it with _ ?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    return output"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def get_api_server():"},{"line_number":146,"context_line":"    \"\"\""},{"line_number":147,"context_line":"    Shuffle a list of CONF.glance_api_servers and return an iterator"},{"line_number":148,"context_line":"    that will cycle through the list, looping around to the beginning"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6yU%3D","line":145,"in_reply_to":"AAAAP3%2F%2F9Rc%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"f280dc1f22401508e57f796a60b615faefb90778","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import glanceclient.exc as exception"},{"line_number":24,"context_line":"from glanceclient.openstack.common import jsonutils"},{"line_number":25,"context_line":"from glanceclient.openstack.common import timeutils"},{"line_number":26,"context_line":"from oslo.config import cfg"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6jA%3D","line":26,"updated":"2013-07-19 09:08:44.000000000","message":"This import should have its own block (2nd block)","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"11d136784288c2086725b3e506d73015f484ce7f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import glanceclient.exc as exception"},{"line_number":24,"context_line":"from glanceclient.openstack.common import jsonutils"},{"line_number":25,"context_line":"from glanceclient.openstack.common import timeutils"},{"line_number":26,"context_line":"from oslo.config import cfg"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"CONF \u003d cfg.CONF"},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6eA%3D","line":26,"in_reply_to":"AAAAQn%2F%2F6jA%3D","updated":"2013-07-19 09:37:28.000000000","message":"Done","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"f40829c8ee5ac3e2f86e060db9124047b106db85","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    # ensure filters is a dict"},{"line_number":147,"context_line":"    _params.setdefault(\u0027filters\u0027, {})"},{"line_number":148,"context_line":"    # NOTE(vish): don\u0027t filter out private images"},{"line_number":149,"context_line":"    _params[\u0027filters\u0027].setdefault(\u0027is_public\u0027, \u0027none\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    return _params"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2FjfA%3D","line":149,"updated":"2013-07-29 10:44:38.000000000","message":"Please look at https://bugs.launchpad.net/glance/+bug/1201266.","commit_id":"9ca24cfc12eb97d639c61a473761737f34031a34"}],"glanceclient/exc.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"286554ed96700b8580063ae9c329d61d65296be4","unresolved":false,"context_lines":[{"line_number":181,"context_line":"class SSLCertificateError(BaseException):"},{"line_number":182,"context_line":"    pass"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class GlanceBaseException(Exception):"},{"line_number":186,"context_line":"    \"\"\"Base Glance Exception"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F9Pg%3D","line":184,"updated":"2013-07-08 15:51:32.000000000","message":"Could you please add here a comment saying that exceptions bellow this line are meant to be used *just* for the service library?","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"e344f1b58421b0decd525192876b4cd308b44235","unresolved":false,"context_lines":[{"line_number":181,"context_line":"class SSLCertificateError(BaseException):"},{"line_number":182,"context_line":"    pass"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"class GlanceBaseException(Exception):"},{"line_number":186,"context_line":"    \"\"\"Base Glance Exception"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2F6rk%3D","line":184,"in_reply_to":"AAAAP3%2F%2F9Pg%3D","updated":"2013-07-09 22:10:50.000000000","message":"Done","commit_id":"7748f2d4b509f45b45d765fdff169231ef1fcd73"}],"glanceclient/v2/image_service.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"f280dc1f22401508e57f796a60b615faefb90778","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def create(self, image_meta, data\u003dNone):"},{"line_number":49,"context_line":"        #bp: glance-client-v2"},{"line_number":50,"context_line":"        #return self._create(image_meta, method\u003d\u0027create\u0027, data\u003ddata)"},{"line_number":51,"context_line":"        pass"},{"line_number":52,"context_line":"        raise Exception(\u0027Method not implemented.\u0027)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def update(self, image_id, image_meta, data\u003dNone, purge_props\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6iw%3D","line":51,"updated":"2013-07-19 09:08:44.000000000","message":"Can you remove this pass ?","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"11d136784288c2086725b3e506d73015f484ce7f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    def create(self, image_meta, data\u003dNone):"},{"line_number":49,"context_line":"        #bp: glance-client-v2"},{"line_number":50,"context_line":"        #return self._create(image_meta, method\u003d\u0027create\u0027, data\u003ddata)"},{"line_number":51,"context_line":"        pass"},{"line_number":52,"context_line":"        raise Exception(\u0027Method not implemented.\u0027)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def update(self, image_id, image_meta, data\u003dNone, purge_props\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAQn%2F%2F6cY%3D","line":51,"in_reply_to":"AAAAQn%2F%2F6iw%3D","updated":"2013-07-19 09:37:28.000000000","message":"Sure. I will enable it and put a note indicating that it\u0027s not fully working until the bp: glance-client-v2 lands.\nhttps://review.openstack.org/#/c/35504/","commit_id":"dd871998f41301ae20560993395e135e04cdc1d9"},{"author":{"_account_id":5347,"name":"Eddie Sheffield","email":"eddie.sheffield@rackspace.com","username":"eddie-sheffield"},"change_message_id":"145a6dcf1a5ebb50840f9f73ac27901574f3efd6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def create(self, image_meta, data\u003dNone):"},{"line_number":51,"context_line":"        #NOTE: not working until bp: glance-client-v2 lands"},{"line_number":52,"context_line":"        # https://review.openstack.org/#/c/35504/"},{"line_number":53,"context_line":"        return self._create(image_meta, method\u003d\u0027create\u0027, data\u003ddata)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def update(self, image_id, image_meta, data\u003dNone, purge_props\u003dTrue):"},{"line_number":56,"context_line":"        return self._update(image_id, image_meta, data\u003ddata, method\u003d\u0027update\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2FmU8%3D","line":53,"updated":"2013-07-26 20:06:13.000000000","message":"Glance V2 does not allow for creation of an image and upload of image data in a single call. Rather there is a separate upload call that must be used after creation.","commit_id":"9ca24cfc12eb97d639c61a473761737f34031a34"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"1fdc6c2ab8f7ff5780058fec2bd078b7f8b4c742","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def create(self, image_meta, data\u003dNone):"},{"line_number":51,"context_line":"        #NOTE: not working until bp: glance-client-v2 lands"},{"line_number":52,"context_line":"        # https://review.openstack.org/#/c/35504/"},{"line_number":53,"context_line":"        return self._create(image_meta, method\u003d\u0027create\u0027, data\u003ddata)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def update(self, image_id, image_meta, data\u003dNone, purge_props\u003dTrue):"},{"line_number":56,"context_line":"        return self._update(image_id, image_meta, data\u003ddata, method\u003d\u0027update\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2Fjiw%3D","line":53,"in_reply_to":"AAAAQn%2F%2FmU8%3D","updated":"2013-07-29 10:12:35.000000000","message":"Done","commit_id":"9ca24cfc12eb97d639c61a473761737f34031a34"},{"author":{"_account_id":5347,"name":"Eddie Sheffield","email":"eddie.sheffield@rackspace.com","username":"eddie-sheffield"},"change_message_id":"145a6dcf1a5ebb50840f9f73ac27901574f3efd6","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def update(self, image_id, image_meta, data\u003dNone, purge_props\u003dTrue):"},{"line_number":56,"context_line":"        return self._update(image_id, image_meta, data\u003ddata, method\u003d\u0027update\u0027,"},{"line_number":57,"context_line":"                            purge_props\u003dpurge_props)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete(self, image_id):"},{"line_number":60,"context_line":"        return self._delete(image_id, method\u003d\u0027delete\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2FmUc%3D","line":57,"updated":"2013-07-26 20:06:13.000000000","message":"purge_props is not recognized by V2.","commit_id":"9ca24cfc12eb97d639c61a473761737f34031a34"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"1fdc6c2ab8f7ff5780058fec2bd078b7f8b4c742","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def update(self, image_id, image_meta, data\u003dNone, purge_props\u003dTrue):"},{"line_number":56,"context_line":"        return self._update(image_id, image_meta, data\u003ddata, method\u003d\u0027update\u0027,"},{"line_number":57,"context_line":"                            purge_props\u003dpurge_props)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete(self, image_id):"},{"line_number":60,"context_line":"        return self._delete(image_id, method\u003d\u0027delete\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAQn%2F%2Fjis%3D","line":57,"in_reply_to":"AAAAQn%2F%2FmUc%3D","updated":"2013-07-29 10:12:35.000000000","message":"Working on it","commit_id":"9ca24cfc12eb97d639c61a473761737f34031a34"}],"tests/test_service.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"7251e28aeb600c2501dd23341bfa1443b9478e3d","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        self.config(glance_num_retries\u003d1, group\u003d\u0027glance\u0027)"},{"line_number":466,"context_line":"        stub_service.download(image_id, writer)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def ntest_download_file_url(self):"},{"line_number":469,"context_line":"        #TODO(ghe): only in v2 API"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        class MyGlanceStubClient(stubs.StubGlanceClient):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAQn%2F%2FqZM%3D","line":468,"updated":"2013-07-25 15:12:56.000000000","message":"Is there a way to enable this test in this patch? Like verifying the API version and skipping it if it\u0027s v1.","commit_id":"4485c7c72bd8d854d69248bda76677226b966ea4"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"7b1cf58716ee643dae3ae6e5d208b663fa9df909","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        self.config(glance_num_retries\u003d1, group\u003d\u0027glance\u0027)"},{"line_number":466,"context_line":"        stub_service.download(image_id, writer)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def ntest_download_file_url(self):"},{"line_number":469,"context_line":"        #TODO(ghe): only in v2 API"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        class MyGlanceStubClient(stubs.StubGlanceClient):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAQn%2F%2FoK4%3D","line":468,"in_reply_to":"AAAAQn%2F%2FqZM%3D","updated":"2013-07-26 07:39:49.000000000","message":"sure. working on it.","commit_id":"4485c7c72bd8d854d69248bda76677226b966ea4"}]}
