)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7168e7340b7807095311bc2096c6fe7e4368b190","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Note that this disables checking of the global size quota if keystone"},{"line_number":15,"context_line":"quotas are enabled."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Related to blueprint glance-unified-quotas"},{"line_number":18,"context_line":"Change-Id: Idf5f004b72436df1f9c77bb32d60b9be5ae77a68"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"70b2a2b6_1099b050","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":10},"updated":"2021-06-04 15:28:28.000000000","message":"Partially-Implements","commit_id":"46be14a6dbd960ff7fffc9b738e44cb9ba072b10"}],"glance/api/v2/images.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7168e7340b7807095311bc2096c6fe7e4368b190","unresolved":true,"context_lines":[{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            ks_quota.enforce_image_size_total(req.context, req.context.owner)"},{"line_number":316,"context_line":"        except exception.LimitExceeded as e:"},{"line_number":317,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003dstr(e),"},{"line_number":318,"context_line":"                                                      request\u003dreq)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        try:"},{"line_number":321,"context_line":"            image \u003d image_repo.get(image_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"e4f1c5bd_e8b9972d","line":318,"range":{"start_line":317,"start_character":12,"end_line":318,"end_character":66},"updated":"2021-06-04 15:28:28.000000000","message":"Request failed at this point means we have image data in the staging location. I guess we need to make a note in the documentation about what to do if Quota is exceeded.\n\n1. Increase quota OR\n2. Delete existing unused image(s) OR\n3. Delete the current image which is in uploading state if you are not intending to continue\n\nSomething like this???","commit_id":"86a8d7b69f560ca878dc2dd3f5e2fe8066fdc02a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"12b313d313ebab8fe1ac7fc070274f4d0ed6451a","unresolved":true,"context_lines":[{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            ks_quota.enforce_image_size_total(req.context, req.context.owner)"},{"line_number":316,"context_line":"        except exception.LimitExceeded as e:"},{"line_number":317,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003dstr(e),"},{"line_number":318,"context_line":"                                                      request\u003dreq)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        try:"},{"line_number":321,"context_line":"            image \u003d image_repo.get(image_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"b568ac60_9bd5a24c","line":318,"range":{"start_line":317,"start_character":12,"end_line":318,"end_character":66},"in_reply_to":"e4f1c5bd_e8b9972d","updated":"2021-06-04 16:46:08.000000000","message":"Yeah, we still have data staged, it would be bad to delete that and make you re-upload because you failed your import call.\n\n\u003e 1. Increase quota OR\n\u003e 2. Delete existing unused image(s) OR\n\u003e 3. Delete the current image which is in uploading state if you are not intending to continue\n\nFor #3, deleting the image in question won\u0027t help unless you\u0027re doing a copy, since it\u0027s not yet counting against image_size_total. But it should be \"delete some other image to free up space.\"\n\nBut yeah, I will add this to the docs at the end.","commit_id":"86a8d7b69f560ca878dc2dd3f5e2fe8066fdc02a"}],"glance/tests/functional/v2/test_images.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4f1d8e557c236323207c9942234a703968c2c812","unresolved":true,"context_lines":[{"line_number":7068,"context_line":"        # Second upload of 3MiB is good"},{"line_number":7069,"context_line":"        self._create_and_upload("},{"line_number":7070,"context_line":"            data_iter\u003dtest_utils.FakeData(3 * units.Mi))"},{"line_number":7071,"context_line":""},{"line_number":7072,"context_line":"        # Third upload of any size fails because we are now over quota"},{"line_number":7073,"context_line":"        self._create_and_upload(expected_code\u003d413)"},{"line_number":7074,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"87ff7d3f_05a4055b","line":7071,"range":{"start_line":7071,"start_character":0,"end_line":7071,"end_character":0},"updated":"2021-06-04 02:33:22.000000000","message":"OK, so I had to go over the spec again to understand this. Users are allowed to perform one operation that puts them over quota before stopped.\n\n\nCould we improve that comment so that it is clear that uploading 6MiB is not really a violation of the 5MiB quota?","commit_id":"46be14a6dbd960ff7fffc9b738e44cb9ba072b10"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"0ac8c3b029b24464d52f553f111d9fedce626bd3","unresolved":true,"context_lines":[{"line_number":7068,"context_line":"        # Second upload of 3MiB is good"},{"line_number":7069,"context_line":"        self._create_and_upload("},{"line_number":7070,"context_line":"            data_iter\u003dtest_utils.FakeData(3 * units.Mi))"},{"line_number":7071,"context_line":""},{"line_number":7072,"context_line":"        # Third upload of any size fails because we are now over quota"},{"line_number":7073,"context_line":"        self._create_and_upload(expected_code\u003d413)"},{"line_number":7074,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9fff6164_8ef6a681","line":7071,"range":{"start_line":7071,"start_character":0,"end_line":7071,"end_character":0},"in_reply_to":"1d391144_2cb9174d","updated":"2021-06-04 13:49:52.000000000","message":"Yeah so even with L7072, that was weird to me. I thought \"well, we were already over quota since 6\u003e5\". I think if someone reads this in 5 years this might be confusing.","commit_id":"46be14a6dbd960ff7fffc9b738e44cb9ba072b10"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b5e96b162e4b134bad3dff0e9e587eb94e93585","unresolved":true,"context_lines":[{"line_number":7068,"context_line":"        # Second upload of 3MiB is good"},{"line_number":7069,"context_line":"        self._create_and_upload("},{"line_number":7070,"context_line":"            data_iter\u003dtest_utils.FakeData(3 * units.Mi))"},{"line_number":7071,"context_line":""},{"line_number":7072,"context_line":"        # Third upload of any size fails because we are now over quota"},{"line_number":7073,"context_line":"        self._create_and_upload(expected_code\u003d413)"},{"line_number":7074,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1d391144_2cb9174d","line":7071,"range":{"start_line":7071,"start_character":0,"end_line":7071,"end_character":0},"in_reply_to":"87ff7d3f_05a4055b","updated":"2021-06-04 13:45:38.000000000","message":"Sure. I thought I was covered by the comment on L7072, saying we\u0027re now over quota, but I guess if you get stuck on this line and don\u0027t read beyond then it might not be clear.","commit_id":"46be14a6dbd960ff7fffc9b738e44cb9ba072b10"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4f1d8e557c236323207c9942234a703968c2c812","unresolved":true,"context_lines":[{"line_number":7090,"context_line":"        # Second import of 3MiB is good"},{"line_number":7091,"context_line":"        self._create_and_import(stores\u003d[\u0027store1\u0027],"},{"line_number":7092,"context_line":"                                data_iter\u003dtest_utils.FakeData(3 * units.Mi))"},{"line_number":7093,"context_line":""},{"line_number":7094,"context_line":"        # Third import of any size fails because we are now over quota"},{"line_number":7095,"context_line":"        self._create_and_import(stores\u003d[\u0027store1\u0027], expected_code\u003d413)"},{"line_number":7096,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"d9932023_6af31097","line":7093,"range":{"start_line":7093,"start_character":0,"end_line":7093,"end_character":0},"updated":"2021-06-04 02:33:22.000000000","message":"Ditto","commit_id":"46be14a6dbd960ff7fffc9b738e44cb9ba072b10"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4f1d8e557c236323207c9942234a703968c2c812","unresolved":true,"context_lines":[{"line_number":7110,"context_line":"            stores\u003d[\u0027store1\u0027],"},{"line_number":7111,"context_line":"            data_iter\u003dtest_utils.FakeData(3 * units.Mi))"},{"line_number":7112,"context_line":""},{"line_number":7113,"context_line":"        # Second copy should put us at 6MiB, over quota"},{"line_number":7114,"context_line":"        req \u003d self._import_copy(image_id, [\u0027store2\u0027])"},{"line_number":7115,"context_line":"        self.assertEqual(202, req.status_code)"},{"line_number":7116,"context_line":"        self._wait_for_import(image_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3c539947_71b02a3b","line":7113,"range":{"start_line":7113,"start_character":0,"end_line":7113,"end_character":55},"updated":"2021-06-04 02:33:22.000000000","message":"Here we could have something like \"over quota, but that\u0027s ok because that is the first operation that puts us over quota\".","commit_id":"46be14a6dbd960ff7fffc9b738e44cb9ba072b10"}],"glance/tests/unit/test_quota.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7168e7340b7807095311bc2096c6fe7e4368b190","unresolved":true,"context_lines":[{"line_number":192,"context_line":"        base_image.image_id \u003d \u0027id\u0027"},{"line_number":193,"context_line":"        image \u003d glance.quota.ImageProxy(base_image, context, db_api, store)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        data \u003d \u0027*\u0027 * 100"},{"line_number":196,"context_line":"        self.assertRaises(exception.StorageQuotaFull,"},{"line_number":197,"context_line":"                          image.set_data,"},{"line_number":198,"context_line":"                          data,"},{"line_number":199,"context_line":"                          size\u003dlen(data))"},{"line_number":200,"context_line":"        self.config(use_keystone_limits\u003dTrue)"},{"line_number":201,"context_line":"        image.set_data(data, size\u003dlen(data))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_append_location(self):"},{"line_number":204,"context_line":"        new_location \u003d {\u0027url\u0027: \u0027file:///a/path\u0027, \u0027metadata\u0027: {},"}],"source_content_type":"text/x-python","patch_set":9,"id":"29af4ccb_101f97ed","line":201,"range":{"start_line":195,"start_character":8,"end_line":201,"end_character":44},"updated":"2021-06-04 15:28:28.000000000","message":"++ for this test","commit_id":"86a8d7b69f560ca878dc2dd3f5e2fe8066fdc02a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6c95fc816fe11c5385c42129eb7dcde5e6f9fadf","unresolved":true,"context_lines":[{"line_number":192,"context_line":"        base_image.image_id \u003d \u0027id\u0027"},{"line_number":193,"context_line":"        image \u003d glance.quota.ImageProxy(base_image, context, db_api, store)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        data \u003d \u0027*\u0027 * 100"},{"line_number":196,"context_line":"        self.assertRaises(exception.StorageQuotaFull,"},{"line_number":197,"context_line":"                          image.set_data,"},{"line_number":198,"context_line":"                          data,"},{"line_number":199,"context_line":"                          size\u003dlen(data))"},{"line_number":200,"context_line":"        self.config(use_keystone_limits\u003dTrue)"},{"line_number":201,"context_line":"        image.set_data(data, size\u003dlen(data))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_append_location(self):"},{"line_number":204,"context_line":"        new_location \u003d {\u0027url\u0027: \u0027file:///a/path\u0027, \u0027metadata\u0027: {},"}],"source_content_type":"text/x-python","patch_set":9,"id":"3cf9981f_552d0f17","line":201,"range":{"start_line":195,"start_character":8,"end_line":201,"end_character":44},"in_reply_to":"29af4ccb_101f97ed","updated":"2021-06-04 16:22:23.000000000","message":"-- for no comments though, I dunno why I didn\u0027t add those :/","commit_id":"86a8d7b69f560ca878dc2dd3f5e2fe8066fdc02a"}]}
