)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"0a119ef7c0ea7d716530db128d67802ad91eaa98","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-02-17 14:35:01 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Partial fix for bug #1422699 by propagating BadStoreConfiguration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Porpagate BadStoreConfiguration exceptions to library user instead of"},{"line_number":10,"context_line":"just logging them as ERRORs."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da86d52c_38f9b0c8","line":8,"updated":"2015-02-17 22:45:55.000000000","message":"Would you update this with the style tips from your other change please?","commit_id":"4c2011130833e843dfcfec3da2c84dd60964f0fc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0f211cf09983fa5b1bfd8e63773d7286937a084e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-02-17 14:35:01 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Partial fix for bug #1422699 by propagating BadStoreConfiguration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Porpagate BadStoreConfiguration exceptions to library user instead of"},{"line_number":10,"context_line":"just logging them as ERRORs."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da86d52c_531d5961","line":8,"in_reply_to":"da86d52c_38f9b0c8","updated":"2015-02-18 08:47:24.000000000","message":"Done","commit_id":"4c2011130833e843dfcfec3da2c84dd60964f0fc"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"7fdae854600950841bdd5fa7c545a827f7e820e3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"configure and get_store_from_schema is added to Glance we\u0027ll keep just"},{"line_number":14,"context_line":"logging those exceptions at runtime."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1422699 Depends-On:"},{"line_number":17,"context_line":"Ifc038874aa0388b036729790a883ae1e1efd323d"},{"line_number":18,"context_line":"Change-Id: I1d4f95cba47d21f1eb7e580314d01ac8d3481586"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1a6ced46_2bc94fac","line":16,"updated":"2015-03-25 17:19:58.000000000","message":"Nit: not sure but perhaps \u0027Depends-On:\u0027 should be moved to a new line","commit_id":"3a20f19a9307cae94a1ed6fbbc3d2bffa36d6b33"}],"glance_store/_drivers/filesystem.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5f77f58e8e42364735eaf1d29124527475346b1d","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        itself, it should raise `exceptions.BadStoreConfiguration`"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        If no filesystem specific configuration options are provided it will"},{"line_number":289,"context_line":"        assume that it doesn\u0027t want to be configured."},{"line_number":290,"context_line":"        \"\"\""},{"line_number":291,"context_line":"        if not any(getattr(self.conf.glance_store, opt.name, None)"},{"line_number":292,"context_line":"                   for opt in self.OPTIONS):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_4f959de2","line":289,"updated":"2015-02-18 14:57:25.000000000","message":"I\u0027d prefer to stop assuming things about the user. This is to say, if the user didn\u0027t set any of the required options for this filesystem, we should raise BadStoreConfiguration. The only way to disable the store must be removing it from the `stores` option, which contains the list of \"enabled\" stores.\n\nAny specific reason why you chose this path?","commit_id":"4f328c2099ccd50b2abad203d8d7adb7ad5dc82a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"55f555a34977c5c88ba0f8940cfa4817447fcddf","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        itself, it should raise `exceptions.BadStoreConfiguration`"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        If no filesystem specific configuration options are provided it will"},{"line_number":289,"context_line":"        assume that it doesn\u0027t want to be configured."},{"line_number":290,"context_line":"        \"\"\""},{"line_number":291,"context_line":"        if not any(getattr(self.conf.glance_store, opt.name, None)"},{"line_number":292,"context_line":"                   for opt in self.OPTIONS):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_d1972846","line":289,"updated":"2015-02-26 14:16:20.000000000","message":"Ok, let\u0027s see how it goes. :)","commit_id":"4f328c2099ccd50b2abad203d8d7adb7ad5dc82a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5f7849d3facd53171287cc544c5f53e7de86d17f","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        itself, it should raise `exceptions.BadStoreConfiguration`"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        If no filesystem specific configuration options are provided it will"},{"line_number":289,"context_line":"        assume that it doesn\u0027t want to be configured."},{"line_number":290,"context_line":"        \"\"\""},{"line_number":291,"context_line":"        if not any(getattr(self.conf.glance_store, opt.name, None)"},{"line_number":292,"context_line":"                   for opt in self.OPTIONS):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_f741c7a6","line":289,"in_reply_to":"da86d52c_4f959de2","updated":"2015-02-18 16:12:55.000000000","message":"I chose this path because the filesystem driver is included by default in `stores`, and I thought it might create issues with configurations of existing systems.\nAlso I didn\u0027t know if this could break existing Tempest tests...","commit_id":"4f328c2099ccd50b2abad203d8d7adb7ad5dc82a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"d37fb014dd42a52bf657e0192cb82043a1444b64","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        itself, it should raise `exceptions.BadStoreConfiguration`"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        If no filesystem specific configuration options are provided it will"},{"line_number":289,"context_line":"        assume that it doesn\u0027t want to be configured."},{"line_number":290,"context_line":"        \"\"\""},{"line_number":291,"context_line":"        if not any(getattr(self.conf.glance_store, opt.name, None)"},{"line_number":292,"context_line":"                   for opt in self.OPTIONS):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_1a2d8595","line":289,"in_reply_to":"da86d52c_f741c7a6","updated":"2015-02-25 16:58:18.000000000","message":"I\u0027d say, since we already have a `stores` configuration option where stores can be enabled/disabled, that we should just raise an exception if no configurations are passed. Lets see if tempest agrees ;)","commit_id":"4f328c2099ccd50b2abad203d8d7adb7ad5dc82a"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"d37fb014dd42a52bf657e0192cb82043a1444b64","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        itself, it should raise `exceptions.BadStoreConfiguration`"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        If no filesystem specific configuration options are provided it will"},{"line_number":289,"context_line":"        assume that it doesn\u0027t want to be configured."},{"line_number":290,"context_line":"        \"\"\""},{"line_number":291,"context_line":"        if not any(getattr(self.conf.glance_store, opt.name, None)"},{"line_number":292,"context_line":"                   for opt in self.OPTIONS):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_fa29918a","line":289,"in_reply_to":"da86d52c_f741c7a6","updated":"2015-02-25 16:58:18.000000000","message":"I\u0027d say, since we already have a `stores` configuration option where stores can be enabled/disabled, that we should just raise an exception if no configurations are passed. Lets see if tempest agrees ;)","commit_id":"4f328c2099ccd50b2abad203d8d7adb7ad5dc82a"}],"glance_store/driver.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5f77f58e8e42364735eaf1d29124527475346b1d","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        If the store was not able to successfully configure"},{"line_number":102,"context_line":"        itself, it should raise `exceptions.BadStoreConfiguration`."},{"line_number":103,"context_line":"        \"\"\""},{"line_number":104,"context_line":"        # NOTE(flaper87): This should probably go away"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @capabilities.check"},{"line_number":107,"context_line":"    def get(self, location, offset\u003d0, chunk_size\u003dNone, context\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_4aff4b01","side":"PARENT","line":104,"updated":"2015-02-18 14:57:25.000000000","message":"omg, \u003c3","commit_id":"138875b7c3051a4f92616df56bffb8c91e669d88"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5f7849d3facd53171287cc544c5f53e7de86d17f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        If the store was not able to successfully configure"},{"line_number":102,"context_line":"        itself, it should raise `exceptions.BadStoreConfiguration`."},{"line_number":103,"context_line":"        \"\"\""},{"line_number":104,"context_line":"        # NOTE(flaper87): This should probably go away"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @capabilities.check"},{"line_number":107,"context_line":"    def get(self, location, offset\u003d0, chunk_size\u003dNone, context\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_77131765","side":"PARENT","line":104,"in_reply_to":"da86d52c_4aff4b01","updated":"2015-02-18 16:12:55.000000000","message":"I noticed this one while making the changes ;-)","commit_id":"138875b7c3051a4f92616df56bffb8c91e669d88"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"e58dfea2c4ba354905e4c2125c5535c5fc4cba9f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                     \"Disabling add method.\") % utils.exception_to_str(e))"},{"line_number":77,"context_line":"            LOG.warn(msg)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        self.update_capabilities()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_schemes(self):"},{"line_number":82,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_622d0546","side":"PARENT","line":79,"updated":"2015-03-13 18:56:52.000000000","message":"You are removing the nice little message Zhi Yan was emitting in update_capabilities. :).\n\nIMO, we should either retain this and the call to the super method in the sub-classes or call it individually on each sub-class.","commit_id":"b8d62633ec85871911c2d234c787857695233eb1"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"c2b98605009f7e14de5804f835f1bc85cef4d2c2","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                     \"Disabling add method.\") % utils.exception_to_str(e))"},{"line_number":77,"context_line":"            LOG.warn(msg)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        self.update_capabilities()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_schemes(self):"},{"line_number":82,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_81df320c","side":"PARENT","line":79,"in_reply_to":"9a80dd14_0269a4f8","updated":"2015-03-16 05:46:09.000000000","message":"Base on my design Store.update_capabilities() is used to maintain correct dynamic  capabitity set of store, this call here is used to initialize a proper dynamic capability set for store driver as a step of it self-configuration process. (And yes, as another point, each store will be responsible to call this method when there are changes to the set.) So without here call the capability set of store could be not complete, the set will miss dynamic part and includes static capability(ies) only, then follow (some) store operation calls will be failure, so IMO we still need to call update_capabilites() here.","commit_id":"b8d62633ec85871911c2d234c787857695233eb1"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"100749ebaca0707d6156b83aa5a2e1c913d85c79","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                     \"Disabling add method.\") % utils.exception_to_str(e))"},{"line_number":77,"context_line":"            LOG.warn(msg)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        self.update_capabilities()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_schemes(self):"},{"line_number":82,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_c8424baa","side":"PARENT","line":79,"in_reply_to":"9a80dd14_0269a4f8","updated":"2015-03-13 21:58:56.000000000","message":"Thanks Flavio, that\u0027s exactly what I wasn\u0027t sure about. Good to know that its the store\u0027s responsibility.","commit_id":"b8d62633ec85871911c2d234c787857695233eb1"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"c79d86c54882e25347708d0d6c3a14596a221ec2","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                     \"Disabling add method.\") % utils.exception_to_str(e))"},{"line_number":77,"context_line":"            LOG.warn(msg)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        self.update_capabilities()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_schemes(self):"},{"line_number":82,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_0269a4f8","side":"PARENT","line":79,"in_reply_to":"9a80dd14_622d0546","updated":"2015-03-13 21:06:17.000000000","message":"I don\u0027t think we need to call `update_capabilities` here anymore because we\u0027re now failing to start if the store is not configured properly, instead of starting the service and silently disabling the store. Since there are no changes in the capabilities set, there\u0027s no need to call the update method. Each store will be responsible to call this method if there are changes to the capabilities set.","commit_id":"b8d62633ec85871911c2d234c787857695233eb1"}]}
