)]}'
{"glance/api/glare/v1/resource.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        try:"},{"line_number":68,"context_line":"            return req.get_content_type(expected)"},{"line_number":69,"context_line":"        except glance_exc.InvalidContentType as e:"},{"line_number":70,"context_line":"            msg \u003d (_LE(\u0027%(content_type_error)s. \u0027"},{"line_number":71,"context_line":"                       \u0027Expected: %(expected)s\u0027) %"},{"line_number":72,"context_line":"                   {\u0027content_type\u0027: e, \u0027expected\u0027: expected})"},{"line_number":73,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_402825e2","line":70,"range":{"start_line":70,"start_character":19,"end_line":70,"end_character":22},"updated":"2016-07-01 12:27:28.000000000","message":"_LE is not used if exception is raised.\nPlease refer, http://docs.openstack.org/developer/oslo.i18n/guidelines.html#choosing-a-marker-function","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        try:"},{"line_number":68,"context_line":"            return req.get_content_type(expected)"},{"line_number":69,"context_line":"        except glance_exc.InvalidContentType as e:"},{"line_number":70,"context_line":"            msg \u003d (_LE(\u0027%(content_type_error)s. \u0027"},{"line_number":71,"context_line":"                       \u0027Expected: %(expected)s\u0027) %"},{"line_number":72,"context_line":"                   {\u0027content_type\u0027: e, \u0027expected\u0027: expected})"},{"line_number":73,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_13e9de14","line":70,"range":{"start_line":70,"start_character":19,"end_line":70,"end_character":22},"in_reply_to":"3aaa91ec_402825e2","updated":"2016-07-05 18:49:23.000000000","message":"Done. Also \u0027content_type\u0027 was renamed to \u0027content_type_error\u0027.","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            sort_param \u003d params.pop(\u0027sort\u0027).strip().split(\u0027,\u0027)"},{"line_number":93,"context_line":"            if len(sort_param) !\u003d 1:"},{"line_number":94,"context_line":"                raise exc.BadRequest(\"Only sorting by name is supported. Too \""},{"line_number":95,"context_line":"                                     \"many sorting conditions\")"},{"line_number":96,"context_line":"            key, _sep, direct \u003d sort_param.partition(\u0027:\u0027)"},{"line_number":97,"context_line":"            if key !\u003d \u0027name\u0027:"},{"line_number":98,"context_line":"                raise exc.BadRequest(\"Only sorting by name is supported.\")"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_406f852a","line":95,"range":{"start_line":95,"start_character":61,"end_line":95,"end_character":63},"updated":"2016-07-01 12:27:28.000000000","message":"nit: give period (.) at the end","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            sort_param \u003d params.pop(\u0027sort\u0027).strip().split(\u0027,\u0027)"},{"line_number":93,"context_line":"            if len(sort_param) !\u003d 1:"},{"line_number":94,"context_line":"                raise exc.BadRequest(\"Only sorting by name is supported. Too \""},{"line_number":95,"context_line":"                                     \"many sorting conditions\")"},{"line_number":96,"context_line":"            key, _sep, direct \u003d sort_param.partition(\u0027:\u0027)"},{"line_number":97,"context_line":"            if key !\u003d \u0027name\u0027:"},{"line_number":98,"context_line":"                raise exc.BadRequest(\"Only sorting by name is supported.\")"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_53d1a656","line":95,"range":{"start_line":95,"start_character":61,"end_line":95,"end_character":63},"in_reply_to":"3aaa91ec_406f852a","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"12cec6305748f44af0dcb8fca3844328df2f5004","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        result \u003d {\u0027artifacts\u0027: artifacts,"},{"line_number":303,"context_line":"                  \u0027type_name\u0027: type_name}"},{"line_number":304,"context_line":"        if len(artifacts) !\u003d 0 and len(artifacts) \u003d\u003d limit:"},{"line_number":305,"context_line":"            result[\u0027next_marker\u0027] \u003d artifacts[-1].id"},{"line_number":306,"context_line":"        return result"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    @supported_versions(min_ver\u003d\u00271.0\u0027)"}],"source_content_type":"text/x-python","patch_set":34,"id":"1aa78d24_5fb17f46","line":305,"updated":"2016-07-06 12:42:31.000000000","message":"artifact is dict, so here should be artifacts[-1][\"id\"]","commit_id":"b0d19211dca5f053c9762407d1b7893da440414b"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"8fc838aa44abf8134794e913d5b265badadf3f2c","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        if external:"},{"line_number":307,"context_line":"            return self.engine.add_blob_location("},{"line_number":308,"context_line":"                req.context, type_name, artifact_id, field_name, data)"},{"line_number":309,"context_line":"        else:"},{"line_number":310,"context_line":"            return self.engine.upload_blob(req.context, type_name, artifact_id,"},{"line_number":311,"context_line":"                                           field_name, data)"}],"source_content_type":"text/x-python","patch_set":38,"id":"1aa78d24_03b6023d","line":308,"range":{"start_line":308,"start_character":65,"end_line":308,"end_character":69},"updated":"2016-07-08 13:13:23.000000000","message":"The last argument of ths method is url, not data","commit_id":"54d0da98b6ede240a73e612bf5930fdc60752b8c"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"4d1dbfd1e1b61cfd0509784d6d2cffe9e4789dbc","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        :param field_name: name of blob field in artifact"},{"line_number":389,"context_line":"        :return: iterator that returns blob data"},{"line_number":390,"context_line":"        \"\"\""},{"line_number":391,"context_line":"        data, meta \u003d self.engine.download_blob(req.context, type_name,"},{"line_number":392,"context_line":"                                               artifact_id, field_name)"},{"line_number":393,"context_line":"        result \u003d {\u0027data\u0027: data, \u0027meta\u0027: meta}"},{"line_number":394,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":49,"id":"dada55a8_cafbf179","line":391,"updated":"2016-07-26 10:07:33.000000000","message":"We need to check if field_name defined for artifact_type or we get error 500 (KeyError) in glance/objects/base.py:is_blob","commit_id":"1be23ab2ab2a4f4f8a125dd4eb218ddf1420e4a7"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"98bef70464b25a7b37e531f93cfac7abeeb03283","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        :param field_name: name of blob field in artifact"},{"line_number":389,"context_line":"        :return: iterator that returns blob data"},{"line_number":390,"context_line":"        \"\"\""},{"line_number":391,"context_line":"        data, meta \u003d self.engine.download_blob(req.context, type_name,"},{"line_number":392,"context_line":"                                               artifact_id, field_name)"},{"line_number":393,"context_line":"        result \u003d {\u0027data\u0027: data, \u0027meta\u0027: meta}"},{"line_number":394,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":49,"id":"dada55a8_3af7725a","line":391,"in_reply_to":"dada55a8_cafbf179","updated":"2016-07-26 13:35:55.000000000","message":"Done","commit_id":"1be23ab2ab2a4f4f8a125dd4eb218ddf1420e4a7"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"a1ff0334213820d6f6c601f63187a3c5b4eb26c3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        except glance_exc.InvalidContentType as e:"},{"line_number":69,"context_line":"            msg \u003d (_(\u0027%(content_type_error)s. \u0027"},{"line_number":70,"context_line":"                     \u0027Expected: %(expected)s\u0027) %"},{"line_number":71,"context_line":"                   {\u0027content_type_error\u0027: e.message, \u0027expected\u0027: expected})"},{"line_number":72,"context_line":"            LOG.error(msg)"},{"line_number":73,"context_line":"            raise exc.UnsupportedMediaType(message\u003dmsg)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"dada55a8_2938bb9f","line":71,"updated":"2016-07-26 19:23:49.000000000","message":"e.message will display raw error message like\n    Invalid content type %(content_type)s. Expected: [\u0027application/json-patch+json\u0027]\n\nIt\u0027s safe to put just \u0027e\u0027 here","commit_id":"9da48f34787bfdbd54a1d52084650f0aff4570d3"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"277db0f04d3906eac63608d1e7a54369f5c0413a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        except glance_exc.InvalidContentType as e:"},{"line_number":69,"context_line":"            msg \u003d (_(\u0027%(content_type_error)s. \u0027"},{"line_number":70,"context_line":"                     \u0027Expected: %(expected)s\u0027) %"},{"line_number":71,"context_line":"                   {\u0027content_type_error\u0027: e.message, \u0027expected\u0027: expected})"},{"line_number":72,"context_line":"            LOG.error(msg)"},{"line_number":73,"context_line":"            raise exc.UnsupportedMediaType(message\u003dmsg)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"bacf61ea_31957240","line":71,"in_reply_to":"dada55a8_2938bb9f","updated":"2016-07-27 14:44:37.000000000","message":"Imho we should rewrite this method and get rid of the dependency on glance exceptions.","commit_id":"9da48f34787bfdbd54a1d52084650f0aff4570d3"}],"glance/api/glare/versions.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import webob.dec"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_serialization import jsonutils"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_e0d151cd","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":16},"updated":"2016-07-01 12:27:28.000000000","message":"webob is a third party module it should moved after line #20","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import webob.dec"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_serialization import jsonutils"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_53d4061f","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":16},"in_reply_to":"3aaa91ec_e0d151cd","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"}],"glance/common/glare/exception.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_408b05c3","line":17,"range":{"start_line":17,"start_character":5,"end_line":17,"end_character":10},"updated":"2016-07-01 12:27:28.000000000","message":"nit: six is a third-party and should be imported after #19","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_33933a51","line":17,"range":{"start_line":17,"start_character":5,"end_line":17,"end_character":10},"in_reply_to":"3aaa91ec_408b05c3","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"}],"glance/common/glare/store_api.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import hashlib"},{"line_number":16,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from glance_store import backend"},{"line_number":19,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_a0674923","line":16,"range":{"start_line":16,"start_character":7,"end_line":16,"end_character":15},"updated":"2016-07-01 12:27:28.000000000","message":"nit: six is a third-party module and should be imported after line #20","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import hashlib"},{"line_number":16,"context_line":"import six.moves.urllib.parse as urlparse"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from glance_store import backend"},{"line_number":19,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_93b14ee4","line":16,"range":{"start_line":16,"start_character":7,"end_line":16,"end_character":15},"in_reply_to":"3aaa91ec_a0674923","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"}],"glance/db/glare/artifact_api.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        new_values \u003d {}"},{"line_number":31,"context_line":"        if \u0027tags\u0027 in values:"},{"line_number":32,"context_line":"            new_values[\u0027tags\u0027] \u003d values.pop(\u0027tags\u0027)"},{"line_number":33,"context_line":"        for key, value in six.iteritems(values):"},{"line_number":34,"context_line":"            if key in api.BASE_ARTIFACT_PROPERTIES:"},{"line_number":35,"context_line":"                if value:"},{"line_number":36,"context_line":"                    new_values[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_802deda9","line":33,"range":{"start_line":33,"start_character":26,"end_line":33,"end_character":33},"updated":"2016-07-01 12:27:28.000000000","message":"nit: you can use values.items() to avoid importing six library","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"900f5d239288f3bbf239b3c71964f954f5eb912a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                    new_values.setdefault(\u0027blobs\u0027, {})[key] \u003d value"},{"line_number":40,"context_line":"            else:"},{"line_number":41,"context_line":"                if value is not None:"},{"line_number":42,"context_line":"                    new_values.setdefault(\u0027properties\u0027, {})[key] \u003d value"},{"line_number":43,"context_line":"        return new_values"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def create(self, context, values):"}],"source_content_type":"text/x-python","patch_set":40,"id":"1aa78d24_9711fe54","line":42,"updated":"2016-07-12 13:33:20.000000000","message":"This will put value by new key without serializing it. (same at lines 36 and 39)","commit_id":"6b9886bf7c06feab56d04b394d41921d6ae6a787"}],"glance/db/glare/sqlalchemy/api.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import copy"},{"line_number":16,"context_line":"import operator"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"import uuid"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_400e653b","line":17,"range":{"start_line":17,"start_character":6,"end_line":17,"end_character":10},"updated":"2016-07-01 12:27:28.000000000","message":"nit: six is third-party module and should be imported after line #22","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import copy"},{"line_number":16,"context_line":"import operator"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"import uuid"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_2e51110f","line":17,"range":{"start_line":17,"start_character":6,"end_line":17,"end_character":10},"in_reply_to":"3aaa91ec_400e653b","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            id\u003dartifact_id)"},{"line_number":115,"context_line":"        artifact \u003d query.one()"},{"line_number":116,"context_line":"    except orm.exc.NoResultFound:"},{"line_number":117,"context_line":"        msg \u003d _LW(\"Artifact with id\u003d%s not found\") % artifact_id"},{"line_number":118,"context_line":"        LOG.warn(msg)"},{"line_number":119,"context_line":"        raise exception.ArtifactNotFound(msg)"},{"line_number":120,"context_line":"    return artifact"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_fb06221a","line":117,"range":{"start_line":117,"start_character":14,"end_line":117,"end_character":17},"updated":"2016-07-01 12:27:28.000000000","message":"do not use translation if message is passed to raise\nrefer, http://docs.openstack.org/developer/oslo.i18n/guidelines.html#choosing-a-marker-function","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            id\u003dartifact_id)"},{"line_number":115,"context_line":"        artifact \u003d query.one()"},{"line_number":116,"context_line":"    except orm.exc.NoResultFound:"},{"line_number":117,"context_line":"        msg \u003d _LW(\"Artifact with id\u003d%s not found\") % artifact_id"},{"line_number":118,"context_line":"        LOG.warn(msg)"},{"line_number":119,"context_line":"        raise exception.ArtifactNotFound(msg)"},{"line_number":120,"context_line":"    return artifact"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_0e36d5e5","line":117,"range":{"start_line":117,"start_character":14,"end_line":117,"end_character":17},"in_reply_to":"3aaa91ec_fb06221a","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        marker_artifact \u003d get(context, marker, session)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    if sort is None:"},{"line_number":169,"context_line":"        sort \u003d [(\u0027created_at\u0027, \u0027desc\u0027, None), (\u0027id\u0027, \u0027asc\u0027, None)]"},{"line_number":170,"context_line":"    else:"},{"line_number":171,"context_line":"        for val in [(\u0027created_at\u0027, \u0027desc\u0027, None), (\u0027id\u0027, \u0027asc\u0027, None)]:"},{"line_number":172,"context_line":"            if val not in sort:"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_5b165649","line":169,"range":{"start_line":169,"start_character":15,"end_line":169,"end_character":66},"updated":"2016-07-01 12:27:28.000000000","message":"nit: you can define it at one place to avoid duplication at line #170","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        marker_artifact \u003d get(context, marker, session)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    if sort is None:"},{"line_number":169,"context_line":"        sort \u003d [(\u0027created_at\u0027, \u0027desc\u0027, None), (\u0027id\u0027, \u0027asc\u0027, None)]"},{"line_number":170,"context_line":"    else:"},{"line_number":171,"context_line":"        for val in [(\u0027created_at\u0027, \u0027desc\u0027, None), (\u0027id\u0027, \u0027asc\u0027, None)]:"},{"line_number":172,"context_line":"            if val not in sort:"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_8e580534","line":169,"range":{"start_line":169,"start_character":15,"end_line":169,"end_character":66},"in_reply_to":"3aaa91ec_5b165649","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"}],"glance/location.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"623c4643dd3a51fa18ad51658aa0e16d29031727","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                self.context, checksum, self.image.extra_properties)"},{"line_number":456,"context_line":"            if result:"},{"line_number":457,"context_line":"                LOG.info(_LI(\"Successfully verified signature for image %s\"),"},{"line_number":458,"context_line":"                         self.image._verify_signature_if_neededimage_id)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def get_data(self, offset\u003d0, chunk_size\u003dNone):"},{"line_number":461,"context_line":"        if not self.image.locations:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_efa3094e","line":458,"updated":"2016-03-15 12:42:40.000000000","message":"Definitely we don\u0027t need it in Glare :)","commit_id":"9a575bc009bc0ff54790ba484e8ca33f0d9319de"}],"glance/objects/base.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"7d1cd7469afdfcee39166117ac7d0f59ed3cd27e","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        af \u003d cls._init_artifact(context, values)"},{"line_number":257,"context_line":"        af.id \u003d str(uuid.uuid4())"},{"line_number":258,"context_line":"        af.owner \u003d context.tenant"},{"line_number":259,"context_line":"        af_vals \u003d cls.db_api.create(context, af.obj_get_changes())"},{"line_number":260,"context_line":"        return cls._init_artifact(context, af_vals)"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_75b7da3a","line":258,"updated":"2016-07-01 13:57:43.000000000","message":"we have to add check that tenant is not None here","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        af \u003d cls._init_artifact(context, values)"},{"line_number":257,"context_line":"        af.id \u003d str(uuid.uuid4())"},{"line_number":258,"context_line":"        af.owner \u003d context.tenant"},{"line_number":259,"context_line":"        af_vals \u003d cls.db_api.create(context, af.obj_get_changes())"},{"line_number":260,"context_line":"        return cls._init_artifact(context, af_vals)"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_ae92219d","line":258,"in_reply_to":"3aaa91ec_75b7da3a","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"7d1cd7469afdfcee39166117ac7d0f59ed3cd27e","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                element_type \u003d cls.fields.get(filter_name).element_type"},{"line_number":423,"context_line":"                try:"},{"line_number":424,"context_line":"                    if op \u003d\u003d \u0027in\u0027:"},{"line_number":425,"context_line":"                        value \u003d [element_type.coerce(None, filter_name, value)"},{"line_number":426,"context_line":"                                 for value in"},{"line_number":427,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":428,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_52e0f496","line":425,"updated":"2016-07-01 13:57:43.000000000","message":"we have to pass object to coerce method, not None","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                element_type \u003d cls.fields.get(filter_name).element_type"},{"line_number":423,"context_line":"                try:"},{"line_number":424,"context_line":"                    if op \u003d\u003d \u0027in\u0027:"},{"line_number":425,"context_line":"                        value \u003d [element_type.coerce(None, filter_name, value)"},{"line_number":426,"context_line":"                                 for value in"},{"line_number":427,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":428,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_cede8d6c","line":425,"in_reply_to":"3aaa91ec_52e0f496","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"7d1cd7469afdfcee39166117ac7d0f59ed3cd27e","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                                 for value in"},{"line_number":427,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":428,"context_line":"                    else:"},{"line_number":429,"context_line":"                        value \u003d element_type.coerce(None, filter_name, val)"},{"line_number":430,"context_line":"                    new_filters.append("},{"line_number":431,"context_line":"                        (filter_name, key_name, op,"},{"line_number":432,"context_line":"                         cls._get_field_type(element_type), value))"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_75323af4","line":429,"updated":"2016-07-01 13:57:43.000000000","message":"Ditto","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                                 for value in"},{"line_number":427,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":428,"context_line":"                    else:"},{"line_number":429,"context_line":"                        value \u003d element_type.coerce(None, filter_name, val)"},{"line_number":430,"context_line":"                    new_filters.append("},{"line_number":431,"context_line":"                        (filter_name, key_name, op,"},{"line_number":432,"context_line":"                         cls._get_field_type(element_type), value))"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_aed98185","line":429,"in_reply_to":"3aaa91ec_75323af4","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"7d1cd7469afdfcee39166117ac7d0f59ed3cd27e","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                field_type \u003d cls.fields.get(filter_name)"},{"line_number":446,"context_line":"                try:"},{"line_number":447,"context_line":"                    if op \u003d\u003d \u0027in\u0027:"},{"line_number":448,"context_line":"                        value \u003d [field_type.coerce(None, filter_name, value)"},{"line_number":449,"context_line":"                                 for value in"},{"line_number":450,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":451,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_b54ae259","line":448,"updated":"2016-07-01 13:57:43.000000000","message":"Ditto","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                field_type \u003d cls.fields.get(filter_name)"},{"line_number":446,"context_line":"                try:"},{"line_number":447,"context_line":"                    if op \u003d\u003d \u0027in\u0027:"},{"line_number":448,"context_line":"                        value \u003d [field_type.coerce(None, filter_name, value)"},{"line_number":449,"context_line":"                                 for value in"},{"line_number":450,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":451,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_0ee9b514","line":448,"in_reply_to":"3aaa91ec_b54ae259","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"7d1cd7469afdfcee39166117ac7d0f59ed3cd27e","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                                 for value in"},{"line_number":450,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":451,"context_line":"                    else:"},{"line_number":452,"context_line":"                        value \u003d field_type.coerce(None, filter_name, val)"},{"line_number":453,"context_line":"                    new_filters.append("},{"line_number":454,"context_line":"                        (filter_name, None, op,"},{"line_number":455,"context_line":"                         cls._get_field_type(field_type), value))"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_f5546aff","line":452,"updated":"2016-07-01 13:57:43.000000000","message":"Ditto","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                                 for value in"},{"line_number":450,"context_line":"                                 utils.split_filter_value_for_quotes(val)]"},{"line_number":451,"context_line":"                    else:"},{"line_number":452,"context_line":"                        value \u003d field_type.coerce(None, filter_name, val)"},{"line_number":453,"context_line":"                    new_filters.append("},{"line_number":454,"context_line":"                        (filter_name, None, op,"},{"line_number":455,"context_line":"                         cls._get_field_type(field_type), value))"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_4ed1fd56","line":452,"in_reply_to":"3aaa91ec_f5546aff","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"}],"glance/objects/fields.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b2a2d06444e36b8c85ca75a2101a0fe99226db46","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import jsonschema"},{"line_number":16,"context_line":"from jsonschema import exceptions as json_exceptions"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"import six.moves.urllib.parse as urlparse"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_1b3e8eb7","line":15,"updated":"2016-07-01 12:27:28.000000000","message":"Draft\n5:46 PM\nnit: jsonschema and six are third party modules and should be imported after line #21","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import jsonschema"},{"line_number":16,"context_line":"from jsonschema import exceptions as json_exceptions"},{"line_number":17,"context_line":"import six"},{"line_number":18,"context_line":"import six.moves.urllib.parse as urlparse"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_0ec0957a","line":15,"in_reply_to":"3aaa91ec_1b3e8eb7","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"}],"glance/objects/validators.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"7d1cd7469afdfcee39166117ac7d0f59ed3cd27e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            raise ValueError(\"Metadata value is too long. Maximal allowed size\""},{"line_number":29,"context_line":"                             \"is 255. Value: %s\" % key)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def max_dict_size(size):"},{"line_number":33,"context_line":"    def validate_len(d):"},{"line_number":34,"context_line":"        if len(d) \u003e size:"}],"source_content_type":"text/x-python","patch_set":31,"id":"3aaa91ec_35c27287","line":31,"updated":"2016-07-01 13:57:43.000000000","message":"we also need to add validator that List values are unique (List is a Set):\n\ndef unique_list(input_list):\n\n    if len(input_list) !\u003d len(set(input_list)):\n\n        raise ValueError(\u0027List items must be unique\u0027","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"edad8cbd0ef3604042cc3d33cba202aa111097f8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            raise ValueError(\"Metadata value is too long. Maximal allowed size\""},{"line_number":29,"context_line":"                             \"is 255. Value: %s\" % key)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def max_dict_size(size):"},{"line_number":33,"context_line":"    def validate_len(d):"},{"line_number":34,"context_line":"        if len(d) \u003e size:"}],"source_content_type":"text/x-python","patch_set":31,"id":"1aa78d24_0e6ed594","line":31,"in_reply_to":"3aaa91ec_35c27287","updated":"2016-07-05 18:49:23.000000000","message":"Done","commit_id":"62687ca8c6da98111dbefe41968856c44ba4e4b8"}]}
