)]}'
{"glance/db/__init__.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"4c346c7198438494ca67c3fd9d35db38d1e7b2c2","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            db_api_image \u003d dict(self.db_api.image_get(self.context, image_id))"},{"line_number":73,"context_line":"        except (exception.NotFound, exception.Forbidden):"},{"line_number":74,"context_line":"            found \u003d False"},{"line_number":75,"context_line":"        if not found or db_api_image[\u0027deleted\u0027]:"},{"line_number":76,"context_line":"            raise exception.NotFound(image_id\u003dimage_id)"},{"line_number":77,"context_line":"        tags \u003d self.db_api.image_tag_get_all(self.context, image_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvMo%3D","line":74,"updated":"2012-11-09 04:12:41.000000000","message":"Rather than using this sentinel, could you use try/except/else?","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ca71865eb5b9380890ed83007456c63e49cfbad6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            db_api_image \u003d dict(self.db_api.image_get(self.context, image_id))"},{"line_number":73,"context_line":"        except (exception.NotFound, exception.Forbidden):"},{"line_number":74,"context_line":"            found \u003d False"},{"line_number":75,"context_line":"        if not found or db_api_image[\u0027deleted\u0027]:"},{"line_number":76,"context_line":"            raise exception.NotFound(image_id\u003dimage_id)"},{"line_number":77,"context_line":"        tags \u003d self.db_api.image_tag_get_all(self.context, image_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F6V0%3D","line":74,"in_reply_to":"AAAALn%2F%2FvMo%3D","updated":"2012-11-16 01:24:04.000000000","message":"I have another idea to clean this up which I came up with totally independently.","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"3ac5a4853b3d49a08f25eff8bb9558531742003a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            db_api_image \u003d dict(self.db_api.image_get(self.context, image_id))"},{"line_number":73,"context_line":"        except (exception.NotFound, exception.Forbidden):"},{"line_number":74,"context_line":"            found \u003d False"},{"line_number":75,"context_line":"        if not found or db_api_image[\u0027deleted\u0027]:"},{"line_number":76,"context_line":"            raise exception.NotFound(image_id\u003dimage_id)"},{"line_number":77,"context_line":"        tags \u003d self.db_api.image_tag_get_all(self.context, image_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F6Us%3D","line":74,"in_reply_to":"AAAAMH%2F%2F6V0%3D","updated":"2012-11-16 01:31:31.000000000","message":"Totally independently, eh? Does it involve AssertionError?","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"4c346c7198438494ca67c3fd9d35db38d1e7b2c2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                sort_key\u003dsort_key, sort_dir\u003dsort_dir)"},{"line_number":87,"context_line":"        images \u003d []"},{"line_number":88,"context_line":"        for db_api_image in db_api_images:"},{"line_number":89,"context_line":"            print db_api_image[\u0027name\u0027]"},{"line_number":90,"context_line":"            tags \u003d self.db_api.image_tag_get_all(self.context,"},{"line_number":91,"context_line":"                                                 db_api_image[\u0027id\u0027])"},{"line_number":92,"context_line":"            image \u003d self._format_image_from_db(dict(db_api_image), tags)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvMk%3D","line":89,"updated":"2012-11-09 04:12:41.000000000","message":"stray print!","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ca71865eb5b9380890ed83007456c63e49cfbad6","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                sort_key\u003dsort_key, sort_dir\u003dsort_dir)"},{"line_number":87,"context_line":"        images \u003d []"},{"line_number":88,"context_line":"        for db_api_image in db_api_images:"},{"line_number":89,"context_line":"            print db_api_image[\u0027name\u0027]"},{"line_number":90,"context_line":"            tags \u003d self.db_api.image_tag_get_all(self.context,"},{"line_number":91,"context_line":"                                                 db_api_image[\u0027id\u0027])"},{"line_number":92,"context_line":"            image \u003d self._format_image_from_db(dict(db_api_image), tags)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F6Vw%3D","line":89,"in_reply_to":"AAAALn%2F%2FvMk%3D","updated":"2012-11-16 01:24:04.000000000","message":"Done","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"4c346c7198438494ca67c3fd9d35db38d1e7b2c2","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        visibility \u003d \u0027public\u0027 if db_image[\u0027is_public\u0027] else \u0027private\u0027"},{"line_number":109,"context_line":"        properties \u003d {}"},{"line_number":110,"context_line":"        for prop in db_image.pop(\u0027properties\u0027):"},{"line_number":111,"context_line":"            # db api requires us to filter deleted"},{"line_number":112,"context_line":"            if not prop[\u0027deleted\u0027]:"},{"line_number":113,"context_line":"                properties[prop[\u0027name\u0027]] \u003d prop[\u0027value\u0027]"},{"line_number":114,"context_line":"        return glance.domain.Image("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvMc%3D","line":111,"updated":"2012-11-09 04:12:41.000000000","message":"Add your name to this NOTE","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ca71865eb5b9380890ed83007456c63e49cfbad6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        visibility \u003d \u0027public\u0027 if db_image[\u0027is_public\u0027] else \u0027private\u0027"},{"line_number":109,"context_line":"        properties \u003d {}"},{"line_number":110,"context_line":"        for prop in db_image.pop(\u0027properties\u0027):"},{"line_number":111,"context_line":"            # db api requires us to filter deleted"},{"line_number":112,"context_line":"            if not prop[\u0027deleted\u0027]:"},{"line_number":113,"context_line":"                properties[prop[\u0027name\u0027]] \u003d prop[\u0027value\u0027]"},{"line_number":114,"context_line":"        return glance.domain.Image("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F6Vo%3D","line":111,"in_reply_to":"AAAALn%2F%2FvMc%3D","updated":"2012-11-16 01:24:04.000000000","message":"Done","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"4c346c7198438494ca67c3fd9d35db38d1e7b2c2","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                                                  purge_props\u003dTrue)"},{"line_number":168,"context_line":"        except (exception.NotFound, exception.Forbidden):"},{"line_number":169,"context_line":"            raise exception.NotFound(image_id\u003dimage.image_id)"},{"line_number":170,"context_line":"        self.db_api.image_tag_set_all(self.context, image.image_id,"},{"line_number":171,"context_line":"                                      image.tags)"},{"line_number":172,"context_line":"        image.updated_at \u003d new_values[\u0027updated_at\u0027]"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvMU%3D","line":170,"updated":"2012-11-09 04:12:41.000000000","message":"This would look better if it were enclosed in an else","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"3ac5a4853b3d49a08f25eff8bb9558531742003a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                                                  purge_props\u003dTrue)"},{"line_number":168,"context_line":"        except (exception.NotFound, exception.Forbidden):"},{"line_number":169,"context_line":"            raise exception.NotFound(image_id\u003dimage.image_id)"},{"line_number":170,"context_line":"        self.db_api.image_tag_set_all(self.context, image.image_id,"},{"line_number":171,"context_line":"                                      image.tags)"},{"line_number":172,"context_line":"        image.updated_at \u003d new_values[\u0027updated_at\u0027]"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F6Uc%3D","line":170,"in_reply_to":"AAAALn%2F%2FvMU%3D","updated":"2012-11-16 01:31:31.000000000","message":"Yeah, whatever.","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"4c346c7198438494ca67c3fd9d35db38d1e7b2c2","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                                     image_values, purge_props\u003dTrue)"},{"line_number":179,"context_line":"        except (exception.NotFound, exception.Forbidden):"},{"line_number":180,"context_line":"            raise exception.NotFound(image_id\u003dimage.image_id)"},{"line_number":181,"context_line":"        # NOTE(markwash): don\u0027t update tags?"},{"line_number":182,"context_line":"        new_values \u003d self.db_api.image_destroy(self.context, image.image_id)"},{"line_number":183,"context_line":"        image.updated_at \u003d new_values[\u0027updated_at\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvMQ%3D","line":181,"updated":"2012-11-09 04:12:41.000000000","message":"else here as well","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"d176a32b4c51108cb9c20c417228a432a03f06d4","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 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# Copyright 2010-2012 OpenStack LLC."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMH%2F%2F2wE%3D","line":2,"updated":"2012-11-19 22:45:26.000000000","message":"please change","commit_id":"b46563eda7d2f1ca00e43aa33235df9a572039a3"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"c0c7c29e5db6014837adef15646a876177c0336c","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 United States Government as represented by the"},{"line_number":4,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":5,"context_line":"# Copyright 2010-2012 OpenStack LLC."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAMH%2F%2F2mM%3D","line":2,"in_reply_to":"AAAAMH%2F%2F2wE%3D","updated":"2012-11-20 00:04:29.000000000","message":"Mark doesn\u0027t need to change this unless that copyright no longer represents any code. Since we have really only added to this file since it was originally written, I don\u0027t see a reason to drop the original copyright.","commit_id":"b46563eda7d2f1ca00e43aa33235df9a572039a3"}],"glance/db/simple/api.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"4c346c7198438494ca67c3fd9d35db38d1e7b2c2","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"@log_call"},{"line_number":195,"context_line":"def image_get(context, image_id, session\u003dNone,"},{"line_number":196,"context_line":"              force_show_deleted\u003dFalse, direct\u003dFalse):"},{"line_number":197,"context_line":"    try:"},{"line_number":198,"context_line":"        image \u003d DATA[\u0027images\u0027][image_id]"},{"line_number":199,"context_line":"    except KeyError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvMM%3D","line":196,"updated":"2012-11-09 04:12:41.000000000","message":"This \u0027direct\u0027 param looks like some sort of magic. Can you explain why it\u0027s needed? Possibly in a docstring?","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ca71865eb5b9380890ed83007456c63e49cfbad6","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"@log_call"},{"line_number":195,"context_line":"def image_get(context, image_id, session\u003dNone,"},{"line_number":196,"context_line":"              force_show_deleted\u003dFalse, direct\u003dFalse):"},{"line_number":197,"context_line":"    try:"},{"line_number":198,"context_line":"        image \u003d DATA[\u0027images\u0027][image_id]"},{"line_number":199,"context_line":"    except KeyError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F6WA%3D","line":196,"in_reply_to":"AAAALn%2F%2FvMM%3D","updated":"2012-11-16 01:24:04.000000000","message":"Hmm, it is kinda \"magical\". \n\nThe real goal is to return deep copies of the image dictionary to library clients so they cannot accidentally change images without explicitly calling image_update. However, we rely on this function to provide direct access to DATA[\u0027images\u0027][image_id] in a few other places in this module.\n\nI have a cleaner approach in the next patchset.","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"}],"glance/db/sqlalchemy/api.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"4c346c7198438494ca67c3fd9d35db38d1e7b2c2","unresolved":false,"context_lines":[{"line_number":582,"context_line":"            if \u0027size\u0027 in values and values[\u0027size\u0027]:"},{"line_number":583,"context_line":"                values[\u0027size\u0027] \u003d int(values[\u0027size\u0027])"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"            if \u0027min_ram\u0027 in values and values[\u0027min_ram\u0027]:"},{"line_number":586,"context_line":"                values[\u0027min_ram\u0027] \u003d int(values[\u0027min_ram\u0027] or 0)"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"            if \u0027min_disk\u0027 in values and values[\u0027min_disk\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvMI%3D","line":585,"updated":"2012-11-09 04:12:41.000000000","message":"Why is this addition necessary?","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"ca71865eb5b9380890ed83007456c63e49cfbad6","unresolved":false,"context_lines":[{"line_number":582,"context_line":"            if \u0027size\u0027 in values and values[\u0027size\u0027]:"},{"line_number":583,"context_line":"                values[\u0027size\u0027] \u003d int(values[\u0027size\u0027])"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"            if \u0027min_ram\u0027 in values and values[\u0027min_ram\u0027]:"},{"line_number":586,"context_line":"                values[\u0027min_ram\u0027] \u003d int(values[\u0027min_ram\u0027] or 0)"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"            if \u0027min_disk\u0027 in values and values[\u0027min_disk\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F6Xg%3D","line":585,"in_reply_to":"AAAALn%2F%2FvMI%3D","updated":"2012-11-16 01:24:04.000000000","message":"Actually, not all of the changes here turned out to be necessary. In the next patch, I drop the min_ram and min_disk changes but kept (a modified version of) the values[\u0027size\u0027] change, because IMO we should support size\u003dNone being passed in.","commit_id":"dc206410c3e54cc74fee7e44a48ee710012743bb"}]}
