)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"6a0772d23ffdca5f34b365f9ab9862dec7fd045d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for over subscription in Pure Storage iSCSI driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ia9de828ad718c0790f4f04ee2a2f1eb4c3fe2788"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_14342add","line":11,"updated":"2015-02-20 12:20:35.000000000","message":"The \u0027bug\u0027 line is missing. Please look at https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"46869fd03408d6c6462054b1ee7443789b9d310d"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"11a5c776d276ad31870dd0b1cbfb6aee31efb30f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for over subscription in Pure Storage iSCSI driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ia9de828ad718c0790f4f04ee2a2f1eb4c3fe2788"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_39a3d79f","line":11,"in_reply_to":"ba7be1f8_14342add","updated":"2015-02-20 18:46:15.000000000","message":"It should have:\n\nImplements: blueprint pure-iscsi-over-subscription-thin-provisioning","commit_id":"46869fd03408d6c6462054b1ee7443789b9d310d"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"2f4b4b4b507a36c14276cfca4870053ffcebc2f2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for over subscription in Pure Storage iSCSI driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ia9de828ad718c0790f4f04ee2a2f1eb4c3fe2788"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_14934afb","line":11,"in_reply_to":"ba7be1f8_14342add","updated":"2015-02-20 12:40:28.000000000","message":"Sorry, I was mistaken.","commit_id":"46869fd03408d6c6462054b1ee7443789b9d310d"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"402071dfcfd88cf679780e920c4d419b7219369b","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        free \u003d float(info[\"capacity\"] - info[\"total\"]) / units.Gi"},{"line_number":387,"context_line":"        provisioned_space \u003d float(self._get_provisioned_space()) / units.Gi"},{"line_number":388,"context_line":"        if info[\"total\"] \u003d\u003d 0 or provisioned_space \u003d\u003d 0:"},{"line_number":389,"context_line":"            thin_provisioning \u003d 100"},{"line_number":390,"context_line":"        else:"},{"line_number":391,"context_line":"            thin_provisioning \u003d (float(provisioned_space) /"},{"line_number":392,"context_line":"                                 (float(info[\"total\"]) / units.Gi))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_f3ed9b26","line":389,"updated":"2015-02-23 22:24:25.000000000","message":"Do you mean 100%?  If you set it to 100, it means 10000%. This doesn\u0027t look right to me.  You probably mean 1.0?","commit_id":"465dd3f69e13b58f77d5c142ec87c2b4bf2282bf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"70c7eba09e2c9dd1f50e2634be1e4d1740e7cef7","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        free \u003d float(info[\"capacity\"] - info[\"total\"]) / units.Gi"},{"line_number":387,"context_line":"        provisioned_space \u003d float(self._get_provisioned_space()) / units.Gi"},{"line_number":388,"context_line":"        if info[\"total\"] \u003d\u003d 0 or provisioned_space \u003d\u003d 0:"},{"line_number":389,"context_line":"            thin_provisioning \u003d 100"},{"line_number":390,"context_line":"        else:"},{"line_number":391,"context_line":"            thin_provisioning \u003d (float(provisioned_space) /"},{"line_number":392,"context_line":"                                 (float(info[\"total\"]) / units.Gi))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_9877163a","line":389,"in_reply_to":"ba7be1f8_d6832554","updated":"2015-02-24 01:55:35.000000000","message":"I see.  Can you some comments here?","commit_id":"465dd3f69e13b58f77d5c142ec87c2b4bf2282bf"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ec4773c7e8e6b80c5dce642043549b2091595b56","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        free \u003d float(info[\"capacity\"] - info[\"total\"]) / units.Gi"},{"line_number":387,"context_line":"        provisioned_space \u003d float(self._get_provisioned_space()) / units.Gi"},{"line_number":388,"context_line":"        if info[\"total\"] \u003d\u003d 0 or provisioned_space \u003d\u003d 0:"},{"line_number":389,"context_line":"            thin_provisioning \u003d 100"},{"line_number":390,"context_line":"        else:"},{"line_number":391,"context_line":"            thin_provisioning \u003d (float(provisioned_space) /"},{"line_number":392,"context_line":"                                 (float(info[\"total\"]) / units.Gi))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_d6832554","line":389,"in_reply_to":"ba7be1f8_f3ed9b26","updated":"2015-02-23 22:39:28.000000000","message":"Haha, I think we meant 100:1. When this happens its because the array is empty, so as far as the scheduler is concerned we can handle anything (akin to the drivers that report infinite for capacity). As soon as there is actually data on the array this gets adjusted to the actual reduction rate so space is accurately reported to the scheduler, but for this edge case we need to make something up. The goal here is to just make sure the scheduler sees us as an attractive target when the array is empty and we can\u0027t otherwise calculate a \"real\" ratio it should use.\n\nMaybe 100 is a bit too aggressive, 15:1 or something might be a little more safe.","commit_id":"465dd3f69e13b58f77d5c142ec87c2b4bf2282bf"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d295ca5a83b164f61ca8a803889e02777a5b2b03","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            thin_provisioning \u003d 20"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            thin_provisioning \u003d (float(provisioned_space) /"},{"line_number":397,"context_line":"                                 (float(info[\"total\"]) / units.Gi))"},{"line_number":398,"context_line":"        data \u003d {\"volume_backend_name\": self._backend_name,"},{"line_number":399,"context_line":"                \"vendor_name\": \"Pure Storage\","},{"line_number":400,"context_line":"                \"driver_version\": self.VERSION,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_b6e59b39","line":397,"updated":"2015-02-24 22:53:33.000000000","message":"Assume you have 100GB total_capacity_db, provisioned_capacity\u003d10GB, used_capacity \u003d 5GB, the ratio will be 2.0.  If used_capacity becomes 10GB also and no more new provisioned_capacity, that will bring the ratio to 1.0 and you won\u0027t be able to provision any more.  Is this really what you wanted?  Seems that you are using this to predict the future, so may be this is fine in reality. You can adjust this later if you get a better formula.","commit_id":"2d759fcda05b6a11c2e27508077b887caff50d7b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b8816288688dfa014f97ba73bcb4fccb5a5d7163","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            thin_provisioning \u003d 20"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            thin_provisioning \u003d (float(provisioned_space) /"},{"line_number":397,"context_line":"                                 (float(info[\"total\"]) / units.Gi))"},{"line_number":398,"context_line":"        data \u003d {\"volume_backend_name\": self._backend_name,"},{"line_number":399,"context_line":"                \"vendor_name\": \"Pure Storage\","},{"line_number":400,"context_line":"                \"driver_version\": self.VERSION,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_1ae2092f","line":397,"in_reply_to":"ba7be1f8_b6e59b39","updated":"2015-02-25 00:41:38.000000000","message":"Correcting my comments above:).  The provisioned ratio is 10/100\u003c1.0, so it is fine. Used ratio is also 10/100, also fine.  Free capacity is 90.  Plenty of free space.  So no problem here.","commit_id":"2d759fcda05b6a11c2e27508077b887caff50d7b"}]}
