)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a8ad9c1ebcb27ddb6559d55d07cd749387bf79df","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Extending stores-detail API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch extends the functionality of the API ``GET /v2/info/stores/detail``"},{"line_number":10,"context_line":"to expose store details of other stores. Currently the ``stores-detail`` API"},{"line_number":11,"context_line":"exposes store details of RBD backend."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint expanding-stores-detail"},{"line_number":14,"context_line":"Change-Id: I0c7bbc315b56dc0e40397b4ed8a68d1668203c44"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"cc3abd18_d7eeb4a7","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":37},"updated":"2022-05-18 07:13:25.000000000","message":"format commit message properly","commit_id":"6bb845aa6c81453ba1e95194ef730d8847b90589"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"27b781f8d5237d2afe59c1b25ba1015918020d0f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Extending stores-detail API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch extends the functionality of the API ``GET /v2/info/stores/detail``"},{"line_number":10,"context_line":"to expose store details of other stores. Currently the ``stores-detail`` API"},{"line_number":11,"context_line":"exposes store details of RBD backend."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint expanding-stores-detail"},{"line_number":14,"context_line":"Change-Id: I0c7bbc315b56dc0e40397b4ed8a68d1668203c44"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5522d113_933e9f35","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":37},"in_reply_to":"cc3abd18_d7eeb4a7","updated":"2022-05-31 07:36:29.000000000","message":"Done","commit_id":"6bb845aa6c81453ba1e95194ef730d8847b90589"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a8ad9c1ebcb27ddb6559d55d07cd749387bf79df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"78b6195a_7b873abf","updated":"2022-05-18 07:13:25.000000000","message":"Some inline suggestions/improvements and you are missing returning details s3 store, kindly add it as well.","commit_id":"6bb845aa6c81453ba1e95194ef730d8847b90589"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3e8c70a2f7d3796c93d04ae48b8d3593b0d76577","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d7591dc4_73ce789d","updated":"2022-06-07 13:17:43.000000000","message":"Just a question, do we need a change in documentation or API reference guide, if yes please do it in the same patch.\n\nTill then just voting +1 here;","commit_id":"809654f5136edc0c94dfd7e3f941d3efa183e292"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"79079623ef67571484dcedce5b1b1e64279fca2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"99586de0_a9fcfbd8","updated":"2022-06-07 15:35:28.000000000","message":"Looks good on a quick read through.  Agree with Abhishek that the api-ref change should be included here.  Also, I wonder whether it would be worth adding a functional test to make sure that the ResponseSerializer doesn\u0027t barf on the new controller output.  I think there\u0027s already a test_discovery.py file in the functional tests that you could use.","commit_id":"809654f5136edc0c94dfd7e3f941d3efa183e292"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fc9f3072f59886a430e2650d5b430b57cf99f169","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d2e52d53_936a2b05","updated":"2022-06-07 13:16:34.000000000","message":"Looks good to me, thank you!","commit_id":"809654f5136edc0c94dfd7e3f941d3efa183e292"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"1adc1257027f5f7c4b869026b7ff41499d277240","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f6c15688_654db33f","updated":"2022-06-29 10:59:50.000000000","message":"Couple of minor things inline.","commit_id":"3c16b04cd5e4f7fa43291a4bb297a9d8238b37aa"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ea1d126c34f5ff7fb725c36852708ff9e52db6da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c59877a5_51052cd0","updated":"2022-07-14 14:48:48.000000000","message":"Left some suggestions for sample store descriptions.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f31daf7ca14d0bfacf8dff780ea1360e41977a10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"45a61d0f_cc081a88","updated":"2022-07-12 20:34:42.000000000","message":"Requests for a few changes noted inline, and don\u0027t forget to think about using the config option names in the response (my previous comment).","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e09dac21cf2bd2f75d108f061e2e3ba7f0e8a9b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"92fea34b_084c451b","updated":"2022-07-12 20:07:42.000000000","message":"Something to think about ... my memory of the spec was that you were going to display the config options for each store, so I was thinking that the option names would be the keys in your response.  I went back and looked and realized that you actually did use different keys for the options, as you do here.  I think you should reconsider.  If the point of the response is to give an operator a dynamic way to determine configuration, there\u0027s less cognitive overhead if you use the config names directly.  I realize this is going to make the s3_* options ugly (as Erno pointed out) but that\u0027s they way they were named, so I think we\u0027re kind of stuck there.\n\nNot a -1 because you\u0027re following the spec, but it\u0027s worth thinking about.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0e3f3bc227aa9e3388a91ad93449a7823b9e56ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fbede109_dc7f62db","updated":"2022-07-26 16:03:22.000000000","message":"A few issues noted inline.","commit_id":"fd6f0ff7b726ca88b87b174d5dccbbb3697a79c7"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"31ddc11b3e299b3ad97dd9c011f93dc99d33a649","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2ff42d87_ca06d898","updated":"2022-08-17 22:47:54.000000000","message":"I still have some problems with this feature.  See comments inline.","commit_id":"e1ba77368eabf6031e0f0ea4fb6ec27118e1e328"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"0bcd4b8cb70817dbf400b60df6e80453b7c01337","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7d50a690_ef97dd56","updated":"2022-07-29 06:50:49.000000000","message":"Thanks for the review!","commit_id":"e1ba77368eabf6031e0f0ea4fb6ec27118e1e328"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8dd4bb9bc6f1c163513b751321b20ac11690f758","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6854ed9b_c6959831","updated":"2022-08-19 05:35:16.000000000","message":"Looks good to me, thank you!","commit_id":"ad73b2b6c53f4b9c2d8ad08b256d27d407c37a99"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ec1a8413ca7688006e7632ba61647d8c7b2e7a6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"28919b55_85c2760b","updated":"2022-08-23 14:03:08.000000000","message":"Question inline.","commit_id":"ad73b2b6c53f4b9c2d8ad08b256d27d407c37a99"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c507b6ea949878935becb019920faed5501d5b8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c64b4531_c5755b9e","updated":"2022-08-23 15:03:27.000000000","message":"LGTM, thanks for your patience in making the revisions.  At some point api-ref/source/v2/discovery.inc will need to be updated/enhanced, but that can be left to a follow-up patch.","commit_id":"b0d727d02855ce15227882d55ac3ff167c661c2b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fd15577fa155ccb93ebeafc6f2b9dbbe4091e273","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2340292f_921b2c3d","updated":"2022-08-24 08:45:26.000000000","message":"recheck functional local issue","commit_id":"b0d727d02855ce15227882d55ac3ff167c661c2b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"44a02fa24a56c01af3ea9902da73d369c50c2b9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c31dd85f_e9225200","updated":"2022-08-24 05:15:27.000000000","message":"recheck time out","commit_id":"b0d727d02855ce15227882d55ac3ff167c661c2b"}],"api-ref/source/v2/samples/stores-list-detail-response.json":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f31daf7ca14d0bfacf8dff780ea1360e41977a10","unresolved":true,"context_lines":[{"line_number":3,"context_line":"        {"},{"line_number":4,"context_line":"            \"id\":\"reliable\","},{"line_number":5,"context_line":"            \"type\": \"rbd\","},{"line_number":6,"context_line":"            \"description\": \"Reliable RBD store\","},{"line_number":7,"context_line":"            \"default\": true,"},{"line_number":8,"context_line":"            \"properties\": {"},{"line_number":9,"context_line":"                \"pool\": \"pool1\","}],"source_content_type":"application/json","patch_set":5,"id":"18f29cd7_618bda93","line":6,"range":{"start_line":6,"start_character":28,"end_line":6,"end_character":46},"updated":"2022-07-12 20:34:42.000000000","message":"This is OK to make it easy to read unit tests, but we don\u0027t want to do this in a public document because it sets a bad example.  The description should help users select what store to use, but it shouldn\u0027t expose details about the backend being used.  So make up generic descriptions like those used in the base patch.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ea1d126c34f5ff7fb725c36852708ff9e52db6da","unresolved":true,"context_lines":[{"line_number":3,"context_line":"        {"},{"line_number":4,"context_line":"            \"id\":\"reliable\","},{"line_number":5,"context_line":"            \"type\": \"rbd\","},{"line_number":6,"context_line":"            \"description\": \"Reliable RBD store\","},{"line_number":7,"context_line":"            \"default\": true,"},{"line_number":8,"context_line":"            \"properties\": {"},{"line_number":9,"context_line":"                \"pool\": \"pool1\","}],"source_content_type":"application/json","patch_set":5,"id":"323c36b5_3ccc1302","line":6,"range":{"start_line":6,"start_character":28,"end_line":6,"end_character":46},"in_reply_to":"18f29cd7_618bda93","updated":"2022-07-14 14:48:48.000000000","message":"Here are a few suggestions:\n\nPremium store with data redundancy.\nEntry-level store balancing price and speed.\nReasonably-priced fast store.\nLess expensive store for seldom-used images.\n\n(They don\u0027t really have to be accurate, they\u0027re just examples)","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"14194a8776e46e9ef1e0c35caac530cc264c78ca","unresolved":false,"context_lines":[{"line_number":3,"context_line":"        {"},{"line_number":4,"context_line":"            \"id\":\"reliable\","},{"line_number":5,"context_line":"            \"type\": \"rbd\","},{"line_number":6,"context_line":"            \"description\": \"Reliable RBD store\","},{"line_number":7,"context_line":"            \"default\": true,"},{"line_number":8,"context_line":"            \"properties\": {"},{"line_number":9,"context_line":"                \"pool\": \"pool1\","}],"source_content_type":"application/json","patch_set":5,"id":"278aa838_87c091de","line":6,"range":{"start_line":6,"start_character":28,"end_line":6,"end_character":46},"in_reply_to":"323c36b5_3ccc1302","updated":"2022-07-18 09:17:23.000000000","message":"Ack","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d9d5e5debe9fefe1b5b440ae5a38dd24430ec7ea","unresolved":true,"context_lines":[{"line_number":7,"context_line":"            \"default\": true,"},{"line_number":8,"context_line":"            \"properties\": {"},{"line_number":9,"context_line":"                \"pool\": \"pool1\","},{"line_number":10,"context_line":"                \"chunk_size\": 65553,"},{"line_number":11,"context_line":"                \"thin_provisioning\": false"},{"line_number":12,"context_line":"            }"},{"line_number":13,"context_line":"        },"}],"source_content_type":"application/json","patch_set":8,"id":"9bdc4672_b23676c7","line":10,"range":{"start_line":10,"start_character":30,"end_line":10,"end_character":35},"updated":"2022-08-23 14:16:21.000000000","message":"Was this supposed to be 65535 (or really 65536 like in your tests)?\n\n(same below)","commit_id":"ad73b2b6c53f4b9c2d8ad08b256d27d407c37a99"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fa065800d1c9dee34e527728b382b49cb2069d4c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"            \"default\": true,"},{"line_number":8,"context_line":"            \"properties\": {"},{"line_number":9,"context_line":"                \"pool\": \"pool1\","},{"line_number":10,"context_line":"                \"chunk_size\": 65553,"},{"line_number":11,"context_line":"                \"thin_provisioning\": false"},{"line_number":12,"context_line":"            }"},{"line_number":13,"context_line":"        },"}],"source_content_type":"application/json","patch_set":8,"id":"344c672a_bf651c8e","line":10,"range":{"start_line":10,"start_character":30,"end_line":10,"end_character":35},"in_reply_to":"9bdc4672_b23676c7","updated":"2022-08-23 14:48:18.000000000","message":"Done","commit_id":"ad73b2b6c53f4b9c2d8ad08b256d27d407c37a99"}],"glance/api/v2/discovery.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"bfdd67b60bc921b4a9d00050f60ee19a40d8218f","unresolved":true,"context_lines":[{"line_number":113,"context_line":"                        \u0027container\u0027: store_detail.container,"},{"line_number":114,"context_line":"                        \u0027obj_size\u0027: store_detail.large_object_size,"},{"line_number":115,"context_line":"                        \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":116,"context_line":"                    }"},{"line_number":117,"context_line":"        except exception.Forbidden as e:"},{"line_number":118,"context_line":"            LOG.debug(\"User not permitted to view details\")"},{"line_number":119,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7197714f_b22deaf9","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":21},"updated":"2022-05-17 18:31:28.000000000","message":"Would it be possible to remove those \"if\" conditions and instead do:\n\nstore[\u0027properties\u0027] \u003d g_store.get_store_properties(store[\u0027id\u0027])\n\nAnd move all the driver-specific code inside the driver classes in glance_store? The method from the base class would return {} or raise \"NotImplementedError\".","commit_id":"6bb845aa6c81453ba1e95194ef730d8847b90589"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b311c862d664c45d02d4f41d434d9f2d7c0dde63","unresolved":true,"context_lines":[{"line_number":113,"context_line":"                        \u0027container\u0027: store_detail.container,"},{"line_number":114,"context_line":"                        \u0027obj_size\u0027: store_detail.large_object_size,"},{"line_number":115,"context_line":"                        \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":116,"context_line":"                    }"},{"line_number":117,"context_line":"        except exception.Forbidden as e:"},{"line_number":118,"context_line":"            LOG.debug(\"User not permitted to view details\")"},{"line_number":119,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e2918860_e2225067","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":21},"in_reply_to":"443a1a6c_4ed071e1","updated":"2022-05-18 07:34:11.000000000","message":"I agree with what Cyril says that glance store should be handling this instead of glance but from a practical standpoint, that would increase the scope of this work a lot and also the complexity of managing this code on both glance and glance store side. Also we already have a method exposing the store object from glance store side ``get_store_from_store_identifier`` which provides us with the necessary information needed to be exposed.\nSo practically, I think it makes more sense to handle this here (since we have to make changes into glance anyway) and don\u0027t increase the scope of this work for very little benefit for now.\n\nAlso the approach suggested by Abhishek looks cleaner and will allow to add/remove the exposed parameters easily in future.","commit_id":"6bb845aa6c81453ba1e95194ef730d8847b90589"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a8ad9c1ebcb27ddb6559d55d07cd749387bf79df","unresolved":true,"context_lines":[{"line_number":113,"context_line":"                        \u0027container\u0027: store_detail.container,"},{"line_number":114,"context_line":"                        \u0027obj_size\u0027: store_detail.large_object_size,"},{"line_number":115,"context_line":"                        \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":116,"context_line":"                    }"},{"line_number":117,"context_line":"        except exception.Forbidden as e:"},{"line_number":118,"context_line":"            LOG.debug(\"User not permitted to view details\")"},{"line_number":119,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"443a1a6c_4ed071e1","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":21},"in_reply_to":"7197714f_b22deaf9","updated":"2022-05-18 07:13:25.000000000","message":"The idea behind using this is to avoid any change to glance-store library and use the existing available store call (get_store_from_store_identifier). But to avoid these if conditions we can surely improve it like;\n\nhttps://paste.opendev.org/show/b0v367Nl5307iJQ5SrMI/","commit_id":"6bb845aa6c81453ba1e95194ef730d8847b90589"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"27b781f8d5237d2afe59c1b25ba1015918020d0f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                        \u0027container\u0027: store_detail.container,"},{"line_number":114,"context_line":"                        \u0027obj_size\u0027: store_detail.large_object_size,"},{"line_number":115,"context_line":"                        \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":116,"context_line":"                    }"},{"line_number":117,"context_line":"        except exception.Forbidden as e:"},{"line_number":118,"context_line":"            LOG.debug(\"User not permitted to view details\")"},{"line_number":119,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9d226887_5e177b30","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":21},"in_reply_to":"e2918860_e2225067","updated":"2022-05-31 07:36:29.000000000","message":"Done","commit_id":"6bb845aa6c81453ba1e95194ef730d8847b90589"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"de1c758bbe7496b33801cfebb72eb3e3a8a1037f","unresolved":true,"context_lines":[{"line_number":115,"context_line":"        }"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def _get_http_properties(self, store_detail):"},{"line_number":118,"context_line":"        return {}"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_stores_detail(self, req):"},{"line_number":121,"context_line":"        enabled_backends \u003d CONF.enabled_backends"}],"source_content_type":"text/x-python","patch_set":2,"id":"b17292c9_0ab67ba7","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":17},"updated":"2022-05-31 07:47:53.000000000","message":"Please add comment why you are returning empty dictionary from here.\nAlso self parameter is not used in any of these methods so you can mark these methods as static.","commit_id":"ea2fc9388404ee08bbf4430a6d95727dc58e411b"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"e38647bcdca3d3337252831e92b0ce89174428e3","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        }"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def _get_http_properties(self, store_detail):"},{"line_number":118,"context_line":"        return {}"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_stores_detail(self, req):"},{"line_number":121,"context_line":"        enabled_backends \u003d CONF.enabled_backends"}],"source_content_type":"text/x-python","patch_set":2,"id":"595fb03a_d86eb63f","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":17},"in_reply_to":"b17292c9_0ab67ba7","updated":"2022-06-07 13:13:26.000000000","message":"Done","commit_id":"ea2fc9388404ee08bbf4430a6d95727dc58e411b"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"1adc1257027f5f7c4b869026b7ff41499d277240","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    def _get_swift_properties(store_detail):"},{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"378710c4_3b659cf6","line":107,"range":{"start_line":107,"start_character":13,"end_line":107,"end_character":21},"updated":"2022-06-29 10:59:50.000000000","message":"We should be predictable and descriptive here: \u0027large_object_size\u0027","commit_id":"3c16b04cd5e4f7fa43291a4bb297a9d8238b37aa"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b1a1a5c35f0b1d639201869734789e543b60a172","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def _get_swift_properties(store_detail):"},{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"c2eec36e_10fa86a6","line":107,"range":{"start_line":107,"start_character":13,"end_line":107,"end_character":21},"in_reply_to":"378710c4_3b659cf6","updated":"2022-07-08 08:29:10.000000000","message":"Ack","commit_id":"3c16b04cd5e4f7fa43291a4bb297a9d8238b37aa"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"1adc1257027f5f7c4b869026b7ff41499d277240","unresolved":true,"context_lines":[{"line_number":111,"context_line":"    @staticmethod"},{"line_number":112,"context_line":"    def _get_s3_properties(store_detail):"},{"line_number":113,"context_line":"        return {"},{"line_number":114,"context_line":"            \u0027s3_store_large_object_size\u0027:"},{"line_number":115,"context_line":"            store_detail.s3_store_large_object_size,"},{"line_number":116,"context_line":"            \u0027s3_store_large_object_chunk_size\u0027:"},{"line_number":117,"context_line":"            store_detail.s3_store_large_object_chunk_size,"},{"line_number":118,"context_line":"            \u0027s3_store_thread_pools\u0027:"},{"line_number":119,"context_line":"            store_detail.s3_store_thread_pools"},{"line_number":120,"context_line":"        }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"8de8b9a1_df5f7571","line":119,"range":{"start_line":114,"start_character":12,"end_line":119,"end_character":46},"updated":"2022-06-29 10:59:50.000000000","message":"Lets be consistent and drop the \u0027s3_store_\u0027 prefix from the keys as the store type is not highlighted on any other drivers either.","commit_id":"3c16b04cd5e4f7fa43291a4bb297a9d8238b37aa"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b1a1a5c35f0b1d639201869734789e543b60a172","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    @staticmethod"},{"line_number":112,"context_line":"    def _get_s3_properties(store_detail):"},{"line_number":113,"context_line":"        return {"},{"line_number":114,"context_line":"            \u0027s3_store_large_object_size\u0027:"},{"line_number":115,"context_line":"            store_detail.s3_store_large_object_size,"},{"line_number":116,"context_line":"            \u0027s3_store_large_object_chunk_size\u0027:"},{"line_number":117,"context_line":"            store_detail.s3_store_large_object_chunk_size,"},{"line_number":118,"context_line":"            \u0027s3_store_thread_pools\u0027:"},{"line_number":119,"context_line":"            store_detail.s3_store_thread_pools"},{"line_number":120,"context_line":"        }"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"ec4e4293_2d44a018","line":119,"range":{"start_line":114,"start_character":12,"end_line":119,"end_character":46},"in_reply_to":"8de8b9a1_df5f7571","updated":"2022-07-08 08:29:10.000000000","message":"Ack","commit_id":"3c16b04cd5e4f7fa43291a4bb297a9d8238b37aa"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0e3f3bc227aa9e3388a91ad93449a7823b9e56ef","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027large_obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"a4290768_0da34129","line":108,"range":{"start_line":108,"start_character":13,"end_line":108,"end_character":23},"updated":"2022-07-26 16:03:22.000000000","message":"I still think you should use the actual config option name as the key for each of these (for all stores).  Might be worth asking at the next cinder weekly meeting if anyone else shares my concern [0], I\u0027ll go along with whatever the consensus is.\n\n[0] https://review.opendev.org/c/openstack/glance/+/842045/6#message-e09dac21cf2bd2f75d108f061e2e3ba7f0e8a9b7","commit_id":"fd6f0ff7b726ca88b87b174d5dccbbb3697a79c7"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"0bcd4b8cb70817dbf400b60df6e80453b7c01337","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027large_obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"60954ed5_4a7aca57","line":108,"range":{"start_line":108,"start_character":13,"end_line":108,"end_character":23},"in_reply_to":"a4290768_0da34129","updated":"2022-07-29 06:50:49.000000000","message":"Ack\nAs discussed we would be using the actual config option name as the key","commit_id":"fd6f0ff7b726ca88b87b174d5dccbbb3697a79c7"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"31ddc11b3e299b3ad97dd9c011f93dc99d33a649","unresolved":true,"context_lines":[{"line_number":80,"context_line":"    @staticmethod"},{"line_number":81,"context_line":"    def _get_rbd_properties(store_detail):"},{"line_number":82,"context_line":"        return {"},{"line_number":83,"context_line":"            \u0027chunk_size\u0027: store_detail.chunk_size,"},{"line_number":84,"context_line":"            \u0027pool\u0027: store_detail.pool,"},{"line_number":85,"context_line":"            \u0027thin_provisioning\u0027: store_detail.thin_provisioning"},{"line_number":86,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"dc93f44b_27205488","line":83,"updated":"2022-08-17 22:47:54.000000000","message":"See my comment below about the swift driver.  We have the same issue here, namely, chunk_size is a computed value in bytes [0], whereas an operator can only configure rbd_store_chunk_size in MB.\n\n[0] https://opendev.org/openstack/glance_store/src/commit/befcca345b233cae28cd320f20592aaab3fa289a/glance_store/_drivers/rbd.py#L337\n\nThe problem with this one is that we\u0027ve already released the rbd discovery call.  Not sure what our options are.","commit_id":"e1ba77368eabf6031e0f0ea4fb6ec27118e1e328"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"85d97f08d1d00605a62b371059fde604a9942830","unresolved":true,"context_lines":[{"line_number":80,"context_line":"    @staticmethod"},{"line_number":81,"context_line":"    def _get_rbd_properties(store_detail):"},{"line_number":82,"context_line":"        return {"},{"line_number":83,"context_line":"            \u0027chunk_size\u0027: store_detail.chunk_size,"},{"line_number":84,"context_line":"            \u0027pool\u0027: store_detail.pool,"},{"line_number":85,"context_line":"            \u0027thin_provisioning\u0027: store_detail.thin_provisioning"},{"line_number":86,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"b1bbd32b_2baa0439","line":83,"in_reply_to":"dc93f44b_27205488","updated":"2022-08-23 14:13:47.000000000","message":"I said this during the meeting, but exposing this in bytes when the operator can only configure it in *multiples* of MiB is not a problem, IMHO, and I don\u0027t understand the concern.\n\nIn the \u0027df\u0027 example I gave, \u0027df\u0027 will tell you how many bytes you have total on your disk, but you can only technically add to those in 512 or 4096 byte chunks. Especially if we\u0027re trying to make things consistent between backends, exposing bytes for all of them regardless of their own alignment (or other) requirements makes total sense to me.","commit_id":"e1ba77368eabf6031e0f0ea4fb6ec27118e1e328"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"31ddc11b3e299b3ad97dd9c011f93dc99d33a649","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027large_obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"e66ea803_38b63476","line":108,"updated":"2022-08-17 22:47:54.000000000","message":"Looking at the glance_store code, it looks like the keys here should be (if we\u0027re going from the configuration option names):\n\nswift_store_container\nswift_store_large_object_size\nswift_store_large_object_chunk_size\n\nThe large_object_size and large_object_chunk_size are computed from the options:\nhttps://opendev.org/openstack/glance_store/src/commit/befcca345b233cae28cd320f20592aaab3fa289a/glance_store/_drivers/swift/store.py#L794-L797\n\nI don\u0027t know which ones we should display.  The computed values are in bytes, but you can\u0027t configure a particular byte value because the config options must be expressed in MB, so I don\u0027t know that having the large_object_size is useful to an operator because they can\u0027t do anything with it (plus, the byte value is kind of weird, it uses a \"mixed\" meaning of MB [0].  So displaying the computed values may not be very helpful, and could be confusing.\n\nThe thing to do here might be to just pull the values out of the configuration (or I guess you could use the store_detail and reverse the computation).  (You can see that I\u0027m leaning toward displaying the config options.)\n\n\n[0] https://opendev.org/openstack/glance_store/src/commit/befcca345b233cae28cd320f20592aaab3fa289a/glance_store/_drivers/swift/store.py#L54","commit_id":"e1ba77368eabf6031e0f0ea4fb6ec27118e1e328"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"9d6a0a7a9a0af4c8d4254a5078f75a376afb3b2e","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027large_obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"d5da1cf7_97b848a6","line":108,"in_reply_to":"e66ea803_38b63476","updated":"2022-08-18 15:27:25.000000000","message":"As discussed in the weekly meeting we are moving ahead by renaming the swift_store options at the moment and implementing it in the same way as we did before","commit_id":"e1ba77368eabf6031e0f0ea4fb6ec27118e1e328"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ec1a8413ca7688006e7632ba61647d8c7b2e7a6a","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027swift_store_container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027swift_store_large_obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027swift_store_chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"303f4eda_fd9d9f3b","line":108,"updated":"2022-08-23 14:03:08.000000000","message":"The problem here is that, except for \u0027swift_store_container\u0027, the displayed values will *not* be the configured value, and it\u0027s not an obvious translation because the large object size in bytes is based on ONE_MB \u003d units.k * units.Ki.\n\nI think the correct thing here depends on what we decide to do about the rbd case.  If we are eventually going to display both configured *and* computed, then we should not use the config names for lines 107-108 now.","commit_id":"ad73b2b6c53f4b9c2d8ad08b256d27d407c37a99"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"85d97f08d1d00605a62b371059fde604a9942830","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        return {"},{"line_number":106,"context_line":"            \u0027swift_store_container\u0027: store_detail.container,"},{"line_number":107,"context_line":"            \u0027swift_store_large_obj_size\u0027: store_detail.large_object_size,"},{"line_number":108,"context_line":"            \u0027swift_store_chunk_size\u0027: store_detail.large_object_chunk_size"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"aaf1c42a_bd857b55","line":108,"in_reply_to":"303f4eda_fd9d9f3b","updated":"2022-08-23 14:13:47.000000000","message":"I don\u0027t understand why the translation is not obvious, because you gave the obvious translation, didn\u0027t you?\n\nAre you saying you think whoever is consuming this API is doing so in a way that will be confusing if it\u0027s not identical to the number they put in the config file? I\u0027m not sure what the point of the API is, if that\u0027s the case. I assumed this was for use by people other than those that wrote the actual config file so they know things about the backends in a generic way, and without needing to read the config file. If so, showing the computed/reasoned/sanitized value in a generic way makes total sense to me.","commit_id":"ad73b2b6c53f4b9c2d8ad08b256d27d407c37a99"}],"glance/tests/functional/v2/test_discovery.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"1adc1257027f5f7c4b869026b7ff41499d277240","unresolved":true,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.start_server()"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # If user is non-admin the store list will be displayed."},{"line_number":107,"context_line":"        stores \u003d self.api_get(\u0027/v2/info/stores\u0027).json[\u0027stores\u0027]"},{"line_number":108,"context_line":"        expected \u003d {"},{"line_number":109,"context_line":"            \"stores\": ["},{"line_number":110,"context_line":"                {"},{"line_number":111,"context_line":"                    \"id\": \"store1\","},{"line_number":112,"context_line":"                    \"default\": \"true\""},{"line_number":113,"context_line":"                },"},{"line_number":114,"context_line":"                {"},{"line_number":115,"context_line":"                    \"id\": \"store2\""},{"line_number":116,"context_line":"                },"},{"line_number":117,"context_line":"                {"},{"line_number":118,"context_line":"                    \"id\": \"store3\""},{"line_number":119,"context_line":"                }]}"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        self.assertEqual(expected[\u0027stores\u0027], stores)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # If user is admin the store list will be displayed"},{"line_number":124,"context_line":"        # along with store properties."},{"line_number":125,"context_line":"        stores \u003d self.api_get(\u0027/v2/info/stores/detail\u0027).json[\u0027stores\u0027]"},{"line_number":126,"context_line":"        expected \u003d {"},{"line_number":127,"context_line":"            \"stores\": ["},{"line_number":128,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":4,"id":"91536874_483a9052","line":125,"range":{"start_line":106,"start_character":8,"end_line":125,"end_character":70},"updated":"2022-06-29 10:59:50.000000000","message":"These are two different endpoints. Not determining if the user is admin or not. Admin user would get exactly the same response from the first call as normal user.","commit_id":"3c16b04cd5e4f7fa43291a4bb297a9d8238b37aa"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8dd4bb9bc6f1c163513b751321b20ac11690f758","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.start_server()"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # If user is non-admin the store list will be displayed."},{"line_number":107,"context_line":"        stores \u003d self.api_get(\u0027/v2/info/stores\u0027).json[\u0027stores\u0027]"},{"line_number":108,"context_line":"        expected \u003d {"},{"line_number":109,"context_line":"            \"stores\": ["},{"line_number":110,"context_line":"                {"},{"line_number":111,"context_line":"                    \"id\": \"store1\","},{"line_number":112,"context_line":"                    \"default\": \"true\""},{"line_number":113,"context_line":"                },"},{"line_number":114,"context_line":"                {"},{"line_number":115,"context_line":"                    \"id\": \"store2\""},{"line_number":116,"context_line":"                },"},{"line_number":117,"context_line":"                {"},{"line_number":118,"context_line":"                    \"id\": \"store3\""},{"line_number":119,"context_line":"                }]}"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        self.assertEqual(expected[\u0027stores\u0027], stores)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # If user is admin the store list will be displayed"},{"line_number":124,"context_line":"        # along with store properties."},{"line_number":125,"context_line":"        stores \u003d self.api_get(\u0027/v2/info/stores/detail\u0027).json[\u0027stores\u0027]"},{"line_number":126,"context_line":"        expected \u003d {"},{"line_number":127,"context_line":"            \"stores\": ["},{"line_number":128,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff854a1d_39438a0e","line":125,"range":{"start_line":106,"start_character":8,"end_line":125,"end_character":70},"in_reply_to":"91536874_483a9052","updated":"2022-08-19 05:35:16.000000000","message":"Done","commit_id":"3c16b04cd5e4f7fa43291a4bb297a9d8238b37aa"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4a0aa24ec33d9038ec226d181abeda0ecefe63f5","unresolved":true,"context_lines":[{"line_number":134,"context_line":"                    \"properties\": {"},{"line_number":135,"context_line":"                          \"data_dir\": self._store_dir(\u0027store1\u0027),"},{"line_number":136,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":137,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":138,"context_line":"                },"},{"line_number":139,"context_line":"                {"},{"line_number":140,"context_line":"                    \"id\": \"store2\","}],"source_content_type":"text/x-python","patch_set":5,"id":"60735621_4ec0a118","line":137,"range":{"start_line":137,"start_character":47,"end_line":137,"end_character":52},"updated":"2022-07-12 18:32:27.000000000","message":"If you need another patch, put the ending bracket on a new line:\n\n\"properties\": {\n    ...\n    \"thin_provisioning\": False,\n}","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f31daf7ca14d0bfacf8dff780ea1360e41977a10","unresolved":true,"context_lines":[{"line_number":134,"context_line":"                    \"properties\": {"},{"line_number":135,"context_line":"                          \"data_dir\": self._store_dir(\u0027store1\u0027),"},{"line_number":136,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":137,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":138,"context_line":"                },"},{"line_number":139,"context_line":"                {"},{"line_number":140,"context_line":"                    \"id\": \"store2\","}],"source_content_type":"text/x-python","patch_set":5,"id":"9000d2c1_a865b506","line":137,"range":{"start_line":137,"start_character":47,"end_line":137,"end_character":52},"in_reply_to":"60735621_4ec0a118","updated":"2022-07-12 20:34:42.000000000","message":"Can\u0027t include the comma, though, because that\u0027s illegal JSON.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"0bcd4b8cb70817dbf400b60df6e80453b7c01337","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    \"properties\": {"},{"line_number":135,"context_line":"                          \"data_dir\": self._store_dir(\u0027store1\u0027),"},{"line_number":136,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":137,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":138,"context_line":"                },"},{"line_number":139,"context_line":"                {"},{"line_number":140,"context_line":"                    \"id\": \"store2\","}],"source_content_type":"text/x-python","patch_set":5,"id":"d51bd9a3_309a92da","line":137,"range":{"start_line":137,"start_character":47,"end_line":137,"end_character":52},"in_reply_to":"86ad2cf0_4dc6dd75","updated":"2022-07-29 06:50:49.000000000","message":"Ack","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0e3f3bc227aa9e3388a91ad93449a7823b9e56ef","unresolved":true,"context_lines":[{"line_number":134,"context_line":"                    \"properties\": {"},{"line_number":135,"context_line":"                          \"data_dir\": self._store_dir(\u0027store1\u0027),"},{"line_number":136,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":137,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":138,"context_line":"                },"},{"line_number":139,"context_line":"                {"},{"line_number":140,"context_line":"                    \"id\": \"store2\","}],"source_content_type":"text/x-python","patch_set":5,"id":"86ad2cf0_4dc6dd75","line":137,"range":{"start_line":137,"start_character":47,"end_line":137,"end_character":52},"in_reply_to":"9000d2c1_a865b506","updated":"2022-07-26 16:03:22.000000000","message":"Cyril is correct about bracket placement, I just meant when you made the revision, don\u0027t include a comma after the last item.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4a0aa24ec33d9038ec226d181abeda0ecefe63f5","unresolved":true,"context_lines":[{"line_number":142,"context_line":"                    \"properties\": {"},{"line_number":143,"context_line":"                          \"data_dir\": self._store_dir(\u0027store2\u0027),"},{"line_number":144,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":145,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":146,"context_line":"                },"},{"line_number":147,"context_line":"                {"},{"line_number":148,"context_line":"                    \"id\": \"store3\","}],"source_content_type":"text/x-python","patch_set":5,"id":"ed8f49ff_2fffb42f","line":145,"range":{"start_line":145,"start_character":47,"end_line":145,"end_character":52},"updated":"2022-07-12 18:32:27.000000000","message":"Ditto","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"0bcd4b8cb70817dbf400b60df6e80453b7c01337","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                    \"properties\": {"},{"line_number":143,"context_line":"                          \"data_dir\": self._store_dir(\u0027store2\u0027),"},{"line_number":144,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":145,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":146,"context_line":"                },"},{"line_number":147,"context_line":"                {"},{"line_number":148,"context_line":"                    \"id\": \"store3\","}],"source_content_type":"text/x-python","patch_set":5,"id":"c52b7af4_ac034a58","line":145,"range":{"start_line":145,"start_character":47,"end_line":145,"end_character":52},"in_reply_to":"ed8f49ff_2fffb42f","updated":"2022-07-29 06:50:49.000000000","message":"Ack","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4a0aa24ec33d9038ec226d181abeda0ecefe63f5","unresolved":true,"context_lines":[{"line_number":150,"context_line":"                    \"properties\": {"},{"line_number":151,"context_line":"                          \"data_dir\": self._store_dir(\u0027store3\u0027),"},{"line_number":152,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":153,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":154,"context_line":"                }]}"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        self.assertEqual(expected[\u0027stores\u0027], stores)"}],"source_content_type":"text/x-python","patch_set":5,"id":"de157698_85a8899d","line":153,"range":{"start_line":153,"start_character":47,"end_line":153,"end_character":52},"updated":"2022-07-12 18:32:27.000000000","message":"Ditto","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"0bcd4b8cb70817dbf400b60df6e80453b7c01337","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                    \"properties\": {"},{"line_number":151,"context_line":"                          \"data_dir\": self._store_dir(\u0027store3\u0027),"},{"line_number":152,"context_line":"                          \"chunk_size\": 65536,"},{"line_number":153,"context_line":"                          \"thin_provisioning\": False}"},{"line_number":154,"context_line":"                }]}"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        self.assertEqual(expected[\u0027stores\u0027], stores)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e9f7c1dd_93de0719","line":153,"range":{"start_line":153,"start_character":47,"end_line":153,"end_character":52},"in_reply_to":"de157698_85a8899d","updated":"2022-07-29 06:50:49.000000000","message":"Ack","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"}],"glance/tests/unit/v2/test_discovery_stores.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"4a0aa24ec33d9038ec226d181abeda0ecefe63f5","unresolved":true,"context_lines":[{"line_number":92,"context_line":"                self.assertIn(\u0027pool\u0027, stores[\u0027properties\u0027])"},{"line_number":93,"context_line":"                self.assertIn(\u0027thin_provisioning\u0027, stores[\u0027properties\u0027])"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                self.assertEqual({}, stores[\u0027properties\u0027])"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_get_stores_detail_non_admin(self):"},{"line_number":98,"context_line":"        req \u003d unit_test_utils.get_fake_request()"}],"source_content_type":"text/x-python","patch_set":5,"id":"c2a0199a_f252e16b","side":"PARENT","line":95,"range":{"start_line":95,"start_character":45,"end_line":95,"end_character":55},"updated":"2022-07-12 18:32:27.000000000","message":"Why are we removing fast-rbd from this test?","commit_id":"f40fdba514ed10f1c9b3ce78bc6ac39e5bee8423"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f31daf7ca14d0bfacf8dff780ea1360e41977a10","unresolved":true,"context_lines":[{"line_number":92,"context_line":"                self.assertIn(\u0027pool\u0027, stores[\u0027properties\u0027])"},{"line_number":93,"context_line":"                self.assertIn(\u0027thin_provisioning\u0027, stores[\u0027properties\u0027])"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                self.assertEqual({}, stores[\u0027properties\u0027])"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_get_stores_detail_non_admin(self):"},{"line_number":98,"context_line":"        req \u003d unit_test_utils.get_fake_request()"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f8191d5_ea5fa95c","side":"PARENT","line":95,"range":{"start_line":95,"start_character":45,"end_line":95,"end_character":55},"in_reply_to":"c2a0199a_f252e16b","updated":"2022-07-12 20:34:42.000000000","message":"It\u0027s still being tested, it just doesn\u0027t need to be tested specially any more.","commit_id":"f40fdba514ed10f1c9b3ce78bc6ac39e5bee8423"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f31daf7ca14d0bfacf8dff780ea1360e41977a10","unresolved":true,"context_lines":[{"line_number":82,"context_line":"                                \u0027swift\u0027]"},{"line_number":83,"context_line":"        req \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":84,"context_line":"        output \u003d self.controller.get_stores_detail(req)"},{"line_number":85,"context_line":"        self.assertIn(\u0027stores\u0027, output)"},{"line_number":86,"context_line":"        for stores in output[\u0027stores\u0027]:"},{"line_number":87,"context_line":"            self.assertIn(\u0027id\u0027, stores)"},{"line_number":88,"context_line":"            self.assertIn(stores[\u0027id\u0027], available_stores)"}],"source_content_type":"text/x-python","patch_set":5,"id":"40bccb53_e7b93085","line":85,"updated":"2022-07-12 20:34:42.000000000","message":"You should also check here to make sure that your \u0027stores\u0027 list has the correct cardinality ... if it\u0027s empty or only has 2 stores, that won\u0027t be detected by the loop below.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"14194a8776e46e9ef1e0c35caac530cc264c78ca","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                \u0027swift\u0027]"},{"line_number":83,"context_line":"        req \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":84,"context_line":"        output \u003d self.controller.get_stores_detail(req)"},{"line_number":85,"context_line":"        self.assertIn(\u0027stores\u0027, output)"},{"line_number":86,"context_line":"        for stores in output[\u0027stores\u0027]:"},{"line_number":87,"context_line":"            self.assertIn(\u0027id\u0027, stores)"},{"line_number":88,"context_line":"            self.assertIn(stores[\u0027id\u0027], available_stores)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f829030f_1cdff3dc","line":85,"in_reply_to":"40bccb53_e7b93085","updated":"2022-07-18 09:17:23.000000000","message":"Ack","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f31daf7ca14d0bfacf8dff780ea1360e41977a10","unresolved":true,"context_lines":[{"line_number":99,"context_line":"                            \u0027http\u0027: []}"},{"line_number":100,"context_line":"        req \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":101,"context_line":"        output \u003d self.controller.get_stores_detail(req)"},{"line_number":102,"context_line":"        self.assertIn(\u0027stores\u0027, output)"},{"line_number":103,"context_line":"        for store in output[\u0027stores\u0027]:"},{"line_number":104,"context_line":"            actual_attribute \u003d list(store[\u0027properties\u0027].keys())"},{"line_number":105,"context_line":"            expected_attribute \u003d store_attributes[store[\u0027type\u0027]]"}],"source_content_type":"text/x-python","patch_set":5,"id":"00b423c9_7bb92970","line":102,"updated":"2022-07-12 20:34:42.000000000","message":"Same comment as line 85.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"14194a8776e46e9ef1e0c35caac530cc264c78ca","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                            \u0027http\u0027: []}"},{"line_number":100,"context_line":"        req \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":101,"context_line":"        output \u003d self.controller.get_stores_detail(req)"},{"line_number":102,"context_line":"        self.assertIn(\u0027stores\u0027, output)"},{"line_number":103,"context_line":"        for store in output[\u0027stores\u0027]:"},{"line_number":104,"context_line":"            actual_attribute \u003d list(store[\u0027properties\u0027].keys())"},{"line_number":105,"context_line":"            expected_attribute \u003d store_attributes[store[\u0027type\u0027]]"}],"source_content_type":"text/x-python","patch_set":5,"id":"0a656b17_b710641c","line":102,"in_reply_to":"00b423c9_7bb92970","updated":"2022-07-18 09:17:23.000000000","message":"Ack","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0e3f3bc227aa9e3388a91ad93449a7823b9e56ef","unresolved":true,"context_lines":[{"line_number":82,"context_line":"                                \u0027swift\u0027]"},{"line_number":83,"context_line":"        req \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":84,"context_line":"        output \u003d self.controller.get_stores_detail(req)"},{"line_number":85,"context_line":"        self.assertEqual(6, len(output[\u0027stores\u0027]))"},{"line_number":86,"context_line":"        self.assertIn(\u0027stores\u0027, output)"},{"line_number":87,"context_line":"        for stores in output[\u0027stores\u0027]:"},{"line_number":88,"context_line":"            self.assertIn(\u0027id\u0027, stores)"}],"source_content_type":"text/x-python","patch_set":6,"id":"262f9671_c596f73a","line":85,"range":{"start_line":85,"start_character":25,"end_line":85,"end_character":26},"updated":"2022-07-26 16:03:22.000000000","message":"This is hidden in the base.MultiStoreClearingUnitTest ... is there a way we can get it from the config, maybe as the len of the enabled_backends?  (Same for line 103)","commit_id":"fd6f0ff7b726ca88b87b174d5dccbbb3697a79c7"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"9d6a0a7a9a0af4c8d4254a5078f75a376afb3b2e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                \u0027swift\u0027]"},{"line_number":83,"context_line":"        req \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":84,"context_line":"        output \u003d self.controller.get_stores_detail(req)"},{"line_number":85,"context_line":"        self.assertEqual(6, len(output[\u0027stores\u0027]))"},{"line_number":86,"context_line":"        self.assertIn(\u0027stores\u0027, output)"},{"line_number":87,"context_line":"        for stores in output[\u0027stores\u0027]:"},{"line_number":88,"context_line":"            self.assertIn(\u0027id\u0027, stores)"}],"source_content_type":"text/x-python","patch_set":6,"id":"8bff25e4_b34db7b7","line":85,"range":{"start_line":85,"start_character":25,"end_line":85,"end_character":26},"in_reply_to":"262f9671_c596f73a","updated":"2022-08-18 15:27:25.000000000","message":"Done","commit_id":"fd6f0ff7b726ca88b87b174d5dccbbb3697a79c7"}],"releasenotes/notes/expanding-stores-details-d3aa8ebb76ad68d9.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f31daf7ca14d0bfacf8dff780ea1360e41977a10","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release brings expansion in the  functionality of"},{"line_number":5,"context_line":"    stores-detail API. The stores detail API helps in providing"},{"line_number":6,"context_line":"    store-specific information of all the stores."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"fc9448b3_11c64977","line":4,"range":{"start_line":4,"start_character":24,"end_line":4,"end_character":55},"updated":"2022-07-12 20:34:42.000000000","message":"This is a little vague, for example, it could mean that you\u0027re opening it to all users by default.  I think you want to stress what your change does (i.e., it will list the way each store is configured, whereas previously this only worked for the rbd store) and that it remains admin-only by default because it exposes backend information.","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"14194a8776e46e9ef1e0c35caac530cc264c78ca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release brings expansion in the  functionality of"},{"line_number":5,"context_line":"    stores-detail API. The stores detail API helps in providing"},{"line_number":6,"context_line":"    store-specific information of all the stores."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"4589d4c4_73763b4f","line":4,"range":{"start_line":4,"start_character":24,"end_line":4,"end_character":55},"in_reply_to":"fc9448b3_11c64977","updated":"2022-07-18 09:17:23.000000000","message":"Done","commit_id":"79a929a9239ebb41ac907f9af5a5cfae995c68e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0e3f3bc227aa9e3388a91ad93449a7823b9e56ef","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    This release brings expansion in the  functionality of"},{"line_number":5,"context_line":"    stores-detail API. The stores detail API will list the"},{"line_number":6,"context_line":"    way each store is configured, whereas previously this"},{"line_number":7,"context_line":"    worked only for rbd store.The API remains admin-only"},{"line_number":8,"context_line":"    by default as it exposes backend information."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa4b695d_9036e622","line":7,"range":{"start_line":7,"start_character":29,"end_line":7,"end_character":30},"updated":"2022-07-26 16:03:22.000000000","message":"need a space after this period","commit_id":"fd6f0ff7b726ca88b87b174d5dccbbb3697a79c7"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"0bcd4b8cb70817dbf400b60df6e80453b7c01337","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This release brings expansion in the  functionality of"},{"line_number":5,"context_line":"    stores-detail API. The stores detail API will list the"},{"line_number":6,"context_line":"    way each store is configured, whereas previously this"},{"line_number":7,"context_line":"    worked only for rbd store.The API remains admin-only"},{"line_number":8,"context_line":"    by default as it exposes backend information."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"cc5e4002_47961716","line":7,"range":{"start_line":7,"start_character":29,"end_line":7,"end_character":30},"in_reply_to":"fa4b695d_9036e622","updated":"2022-07-29 06:50:49.000000000","message":"Done","commit_id":"fd6f0ff7b726ca88b87b174d5dccbbb3697a79c7"}]}
