)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3da6c95e22513ac2d105dd50a572d6397fa543f0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"thin provisioning."},{"line_number":11,"context_line":"The backend and every pool are supporting both"},{"line_number":12,"context_line":"thin and thick provisioning."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I0181808d3287b8efe7805ea6cc48c8abd2575499"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3ac371cc_c56a9f80","line":13,"updated":"2016-08-17 20:29:51.000000000","message":"Please reference a blueprint.\n\nPlease add DocImpact flag.","commit_id":"fee86d6b3f1170d8f4bef0cc78fbc62c174e7d2d"}],"cinder/tests/unit/volume/drivers/emc/scaleio/test_create_volume.py":[{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"b9cb24273f3ff12fa68d19a9cafeaa49247bd007","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":123,"context_line":"                          self.test_create_volume)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_create_thin_volume(self):"},{"line_number":126,"context_line":"        extraspecs \u003d {\u0027provisioning:type\u0027: \u0027thin\u0027}"},{"line_number":127,"context_line":"        self.driver._get_volumetype_extraspecs \u003d mock.MagicMock()"},{"line_number":128,"context_line":"        self.driver._get_volumetype_extraspecs.return_value \u003d extraspecs"},{"line_number":129,"context_line":"        self.driver.create_volume(self.volume)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def test_create_thick_volume(self):"},{"line_number":132,"context_line":"        extraspecs \u003d {\u0027provisioning:type\u0027: \u0027thick\u0027}"},{"line_number":133,"context_line":"        self.driver._get_volumetype_extraspecs \u003d mock.MagicMock()"},{"line_number":134,"context_line":"        self.driver._get_volumetype_extraspecs.return_value \u003d extraspecs"},{"line_number":135,"context_line":"        self.driver.create_volume(self.volume)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def test_create_volume_bad_provisioning_type(self):"},{"line_number":138,"context_line":"        extraspecs \u003d {\u0027provisioning:type\u0027: \u0027other\u0027}"},{"line_number":139,"context_line":"        self.driver._get_volumetype_extraspecs \u003d mock.MagicMock()"},{"line_number":140,"context_line":"        self.driver._get_volumetype_extraspecs.return_value \u003d extraspecs"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_31253a0a","line":137,"range":{"start_line":125,"start_character":4,"end_line":137,"end_character":55},"updated":"2016-08-31 04:55:22.000000000","message":"why do you not use \u0027@ddt\u0027? I think that use \u0027@ddt\u0027 is better","commit_id":"d4cb1e92ae13805e43711e2c8ff54b591cdeeac3"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"9b15a4cdc4512b12075bc96a57f6c19b32b1dff9","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":123,"context_line":"                          self.test_create_volume)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_create_thin_volume(self):"},{"line_number":126,"context_line":"        extraspecs \u003d {\u0027provisioning:type\u0027: \u0027thin\u0027}"},{"line_number":127,"context_line":"        self.driver._get_volumetype_extraspecs \u003d mock.MagicMock()"},{"line_number":128,"context_line":"        self.driver._get_volumetype_extraspecs.return_value \u003d extraspecs"},{"line_number":129,"context_line":"        self.driver.create_volume(self.volume)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def test_create_thick_volume(self):"},{"line_number":132,"context_line":"        extraspecs \u003d {\u0027provisioning:type\u0027: \u0027thick\u0027}"},{"line_number":133,"context_line":"        self.driver._get_volumetype_extraspecs \u003d mock.MagicMock()"},{"line_number":134,"context_line":"        self.driver._get_volumetype_extraspecs.return_value \u003d extraspecs"},{"line_number":135,"context_line":"        self.driver.create_volume(self.volume)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def test_create_volume_bad_provisioning_type(self):"},{"line_number":138,"context_line":"        extraspecs \u003d {\u0027provisioning:type\u0027: \u0027other\u0027}"},{"line_number":139,"context_line":"        self.driver._get_volumetype_extraspecs \u003d mock.MagicMock()"},{"line_number":140,"context_line":"        self.driver._get_volumetype_extraspecs.return_value \u003d extraspecs"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_61e197fe","line":137,"range":{"start_line":125,"start_character":4,"end_line":137,"end_character":55},"in_reply_to":"fa7ab95a_31253a0a","updated":"2016-08-31 11:16:01.000000000","message":"I agree for test_create_thin_volume and test_create_thick_volume","commit_id":"d4cb1e92ae13805e43711e2c8ff54b591cdeeac3"}],"cinder/volume/drivers/emc/scaleio.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b25bf1a60f8b070ed5dc6820b70070895d430ac2","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if (self.configuration.max_over_subscription_ratio is not None and"},{"line_number":243,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":244,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":245,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %{ratio}1f \""},{"line_number":246,"context_line":"                     \"while ScaleIO support up to %{sio_ratio} \") %"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_ee5cec7e","line":243,"updated":"2016-08-17 15:56:05.000000000","message":"Is configuration.max_over_subscription_ratio \u003d 10.5 valid?","commit_id":"4caba407212cf720a70e6925e97973df2910f310"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"5b757b340f1ac234be0c3defdb5235ceb5baf4c0","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if (self.configuration.max_over_subscription_ratio is not None and"},{"line_number":243,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":244,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":245,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %{ratio}1f \""},{"line_number":246,"context_line":"                     \"while ScaleIO support up to %{sio_ratio} \") %"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_04516036","line":243,"in_reply_to":"3ac371cc_ee5cec7e","updated":"2016-08-17 18:26:37.000000000","message":"Yes, we allow that.","commit_id":"4caba407212cf720a70e6925e97973df2910f310"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b25bf1a60f8b070ed5dc6820b70070895d430ac2","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":244,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":245,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %{ratio}1f \""},{"line_number":246,"context_line":"                     \"while ScaleIO support up to %{sio_ratio} \") %"},{"line_number":247,"context_line":"                   {\u0027sio_ratio\u0027: SIO_MAX_OVERSUBSCRIPTION_RATIO,"},{"line_number":248,"context_line":"                    \u0027ratio\u0027: self.configuration.max_over_subscription_ratio})"},{"line_number":249,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_8e7578fb","line":246,"range":{"start_line":246,"start_character":62,"end_line":246,"end_character":63},"updated":"2016-08-17 15:56:05.000000000","message":"missing format character","commit_id":"4caba407212cf720a70e6925e97973df2910f310"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"5b757b340f1ac234be0c3defdb5235ceb5baf4c0","unresolved":false,"context_lines":[{"line_number":243,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":244,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":245,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %{ratio}1f \""},{"line_number":246,"context_line":"                     \"while ScaleIO support up to %{sio_ratio} \") %"},{"line_number":247,"context_line":"                   {\u0027sio_ratio\u0027: SIO_MAX_OVERSUBSCRIPTION_RATIO,"},{"line_number":248,"context_line":"                    \u0027ratio\u0027: self.configuration.max_over_subscription_ratio})"},{"line_number":249,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_a4604c02","line":246,"range":{"start_line":246,"start_character":62,"end_line":246,"end_character":63},"in_reply_to":"3ac371cc_8e7578fb","updated":"2016-08-17 18:26:37.000000000","message":"Done","commit_id":"4caba407212cf720a70e6925e97973df2910f310"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3da6c95e22513ac2d105dd50a572d6397fa543f0","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                    \u0027free_capacity_gb\u0027: free_capacity_gb,"},{"line_number":949,"context_line":"                    \u0027QoS_support\u0027: True,"},{"line_number":950,"context_line":"                    \u0027consistencygroup_support\u0027: True,"},{"line_number":951,"context_line":"                    \u0027reserved_percentage\u0027: 0,"},{"line_number":952,"context_line":"                    \u0027thin_provisioning_support\u0027: True,"},{"line_number":953,"context_line":"                    \u0027thick_provisioning_support\u0027: True,"},{"line_number":954,"context_line":"                    \u0027provisioned_capacity_gb\u0027: provisioned_capacity,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ac371cc_65e64b16","line":951,"updated":"2016-08-17 20:29:51.000000000","message":"There is a value in cinder.conf.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/lvm.py#L260","commit_id":"fee86d6b3f1170d8f4bef0cc78fbc62c174e7d2d"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"64809d393d2cfc80d8dba5061933d8396cb67b72","unresolved":false,"context_lines":[{"line_number":948,"context_line":"                    \u0027free_capacity_gb\u0027: free_capacity_gb,"},{"line_number":949,"context_line":"                    \u0027QoS_support\u0027: True,"},{"line_number":950,"context_line":"                    \u0027consistencygroup_support\u0027: True,"},{"line_number":951,"context_line":"                    \u0027reserved_percentage\u0027: 0,"},{"line_number":952,"context_line":"                    \u0027thin_provisioning_support\u0027: True,"},{"line_number":953,"context_line":"                    \u0027thick_provisioning_support\u0027: True,"},{"line_number":954,"context_line":"                    \u0027provisioned_capacity_gb\u0027: provisioned_capacity,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ac371cc_8504274a","line":951,"in_reply_to":"3ac371cc_65e64b16","updated":"2016-08-17 20:38:35.000000000","message":"We don\u0027t need to use it, it is already being calculated in the free percentage.","commit_id":"fee86d6b3f1170d8f4bef0cc78fbc62c174e7d2d"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"190a60b190085ff83f1f28fcd8109f4d3506c6f5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027Storage Pool name.\u0027),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027sio_storage_pool_id\u0027,"},{"line_number":71,"context_line":"               help\u003d\u0027Storage Pool ID.\u0027),"},{"line_number":72,"context_line":"    cfg.FloatOpt(\u0027sio_max_over_subscription_ratio\u0027,"},{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_bdd266d0","line":72,"updated":"2016-08-22 14:13:25.000000000","message":"How do you use it for volumes?","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0fd9f1ce51aeed106570637d7093504b460e5055","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027Storage Pool name.\u0027),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027sio_storage_pool_id\u0027,"},{"line_number":71,"context_line":"               help\u003d\u0027Storage Pool ID.\u0027),"},{"line_number":72,"context_line":"    cfg.FloatOpt(\u0027sio_max_over_subscription_ratio\u0027,"},{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_f1fd466f","line":72,"in_reply_to":"1ac06dbe_0306781c","updated":"2016-08-25 12:42:19.000000000","message":"Feodor,\n\nThis is used by Cinder scheduler, not passed to the storage backend.  The scheduler will use this and other info to determine whether a volume provisioning request can be handled by a backend.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"6a0e62aff970da739dc5bca6afab0f3209af549e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027Storage Pool name.\u0027),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027sio_storage_pool_id\u0027,"},{"line_number":71,"context_line":"               help\u003d\u0027Storage Pool ID.\u0027),"},{"line_number":72,"context_line":"    cfg.FloatOpt(\u0027sio_max_over_subscription_ratio\u0027,"},{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_c088e873","line":72,"in_reply_to":"1ac06dbe_bdd266d0","updated":"2016-08-23 08:48:12.000000000","message":"I don\u0027t understand your question. Same way as any other driver does.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"d1068af9a5636474c23cf9a5ca20fcccdf8d5ecc","unresolved":false,"context_lines":[{"line_number":69,"context_line":"               help\u003d\u0027Storage Pool name.\u0027),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027sio_storage_pool_id\u0027,"},{"line_number":71,"context_line":"               help\u003d\u0027Storage Pool ID.\u0027),"},{"line_number":72,"context_line":"    cfg.FloatOpt(\u0027sio_max_over_subscription_ratio\u0027,"},{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_0306781c","line":72,"in_reply_to":"1ac06dbe_c088e873","updated":"2016-08-23 13:32:36.000000000","message":"Wrong question. I thought a driver should use it passing to the storage, but not i\u0027ve got how it works.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"190a60b190085ff83f1f28fcd8109f4d3506c6f5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_429553dc","line":76,"updated":"2016-08-22 14:13:25.000000000","message":"Use min and max arguments to limit the allowed range","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"6a0e62aff970da739dc5bca6afab0f3209af549e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_808b9067","line":76,"in_reply_to":"1ac06dbe_429553dc","updated":"2016-08-23 08:48:12.000000000","message":"The bottom limit is automatically 1.0 by cinder, and this is what we need.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"d1068af9a5636474c23cf9a5ca20fcccdf8d5ecc","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_83f8a8c4","line":76,"in_reply_to":"1ac06dbe_808b9067","updated":"2016-08-23 13:32:36.000000000","message":"I do not see limits in default parameter description (driver.py). Do you mean some checks somewhere? Could you point me where they are?\n\nWhy do you want not to use max limitation here?","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"34488a843969e6cf863b6ebbed04fb75b7bb7f66","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_b7ce70b5","line":76,"in_reply_to":"1ac06dbe_83f8a8c4","updated":"2016-08-24 13:08:03.000000000","message":"About minimum limit, from documentation\nhttp://docs.openstack.org/admin-guide/blockstorage-over-subscription.html :\n\"A ratio lower than 1.0 is ignored and the default value is used instead.\"\n\nAbout maximum limit, we check in \"check_for_setup_error()\"","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0fd9f1ce51aeed106570637d7093504b460e5055","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                 # This option exists to provide a default value for the"},{"line_number":74,"context_line":"                 # ScaleIO driver which is different than the global default."},{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_b1bbce74","line":76,"in_reply_to":"1ac06dbe_b7ce70b5","updated":"2016-08-25 12:42:19.000000000","message":"There\u0027s no max limit.  As Matan said, the minimum will be checked by the common code.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"190a60b190085ff83f1f28fcd8109f4d3506c6f5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_02dd1be0","line":88,"updated":"2016-08-22 14:13:25.000000000","message":"You should not change this, since customer may use existing name already. Why do you do this?","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"6a0e62aff970da739dc5bca6afab0f3209af549e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_8050b0d5","line":88,"in_reply_to":"1ac06dbe_02dd1be0","updated":"2016-08-23 08:48:12.000000000","message":"Because of that: https://review.openstack.org/#/c/315352/\n\nAlso, changing names is not a bad thing if we find it not good enough. We want to share unified keys with other drivers.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"34488a843969e6cf863b6ebbed04fb75b7bb7f66","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_d2d4dabe","line":88,"in_reply_to":"1ac06dbe_528037f7","updated":"2016-08-24 13:08:03.000000000","message":"I understood the reason from the beginning, all i\u0027m saying is that keeping them both in this case will cause more damage than benefit because of the link I attached in my previous comment. \nIt is an aware decision.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"d1068af9a5636474c23cf9a5ca20fcccdf8d5ecc","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_a3604402","line":88,"in_reply_to":"1ac06dbe_8050b0d5","updated":"2016-08-23 13:32:36.000000000","message":"But what you recommend for existing customer, which use old key name at the moment? As i see in Nova, in such cases old value is continued to be supported for 1-2 releases, but warnings about usage of deprecated settings are put to log.\n\nIs it usual for Cinder to break compatibility at once?","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"6b41dcdb0ea449e853913bb5bc53e5d102c271c3","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_528037f7","line":88,"in_reply_to":"1ac06dbe_a3604402","updated":"2016-08-23 13:47:26.000000000","message":"Compatibility support is not being that great for Cinder drivers. I\u0027ve seen several driver\u0027s changes without deprecation. I agree with Feodor, you guys should support the old key for at least 1 release, printing a deprecation warning.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0fd9f1ce51aeed106570637d7093504b460e5055","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_6c1dfd65","line":88,"in_reply_to":"1ac06dbe_d2d4dabe","updated":"2016-08-25 12:42:19.000000000","message":"Cinder follows the deprecation policy.  So you should still support the old key in this release.  Other drivers have to do the same.  So I agree you should support both.  Check the new key first, if it is there, support the new key.  If new key not present, support the old key.  If old key is there, print a deprecation message.\n\nI\u0027ll give you -1 on this as you have not addressed this comment in the latest patch set.","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"190a60b190085ff83f1f28fcd8109f4d3506c6f5","unresolved":false,"context_lines":[{"line_number":934,"context_line":"                    res[\u0027capacityAvailableForVolumeAllocationInKb\u0027] / units.Mi)"},{"line_number":935,"context_line":"                provisioned_capacity \u003d ("},{"line_number":936,"context_line":"                    ((res[\u0027thickCapacityInUseInKb\u0027] +"},{"line_number":937,"context_line":"                     res[\u0027thinCapacityAllocatedInKm\u0027]) / 2) / units.Mi)"},{"line_number":938,"context_line":"                LOG.info(_LI("},{"line_number":939,"context_line":"                         \"free capacity of pool %(pool)s is: %(free)s, \""},{"line_number":940,"context_line":"                         \"total capacity: %(total)s, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_1db61a3d","line":937,"updated":"2016-08-22 14:13:25.000000000","message":"A comment about the reason of dividing into 2 would be useful. Also bug in REST (Km) need to be mentioned","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"6a0e62aff970da739dc5bca6afab0f3209af549e","unresolved":false,"context_lines":[{"line_number":934,"context_line":"                    res[\u0027capacityAvailableForVolumeAllocationInKb\u0027] / units.Mi)"},{"line_number":935,"context_line":"                provisioned_capacity \u003d ("},{"line_number":936,"context_line":"                    ((res[\u0027thickCapacityInUseInKb\u0027] +"},{"line_number":937,"context_line":"                     res[\u0027thinCapacityAllocatedInKm\u0027]) / 2) / units.Mi)"},{"line_number":938,"context_line":"                LOG.info(_LI("},{"line_number":939,"context_line":"                         \"free capacity of pool %(pool)s is: %(free)s, \""},{"line_number":940,"context_line":"                         \"total capacity: %(total)s, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_801550e6","line":937,"in_reply_to":"1ac06dbe_1db61a3d","updated":"2016-08-23 08:48:12.000000000","message":"Done","commit_id":"88db35a0f2b1db529d9b47b43b3316663e6e88fb"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"66f57cfc02841985f4f8e4e2336855fd10c61ed3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"},{"line_number":80,"context_line":"]"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_32914048","line":78,"range":{"start_line":78,"start_character":30,"end_line":78,"end_character":59},"updated":"2016-08-23 12:44:57.000000000","message":"max_over_subscription_ratio will never be used. Once you set a default option, sio_max_over_subscription_ratio will never be None. So, you either:\n 1 - Don\u0027t set a default here so sio_max_over_subscription_ratio is \u0027None\u0027 when the user don\u0027t set it.\n 2 - Let clear that max_over_subscription_ratio will have no effect in this driver.\n\nThis also happens in LVM: https://bugs.launchpad.net/cinder/+bug/1602235","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"66f57cfc02841985f4f8e4e2336855fd10c61ed3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"},{"line_number":80,"context_line":"]"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_ef2d03a9","line":78,"range":{"start_line":78,"start_character":67,"end_line":78,"end_character":68},"updated":"2016-08-23 12:44:57.000000000","message":"nit: Extra space","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"cc38d4d625e40e80bf587c7314c38d76c3702029","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                 default\u003d10.0,"},{"line_number":76,"context_line":"                 help\u003d\u0027max_over_subscription_ratio setting for the ScaleIO \u0027"},{"line_number":77,"context_line":"                      \u0027driver.  If set, this takes precedence over the \u0027"},{"line_number":78,"context_line":"                      \u0027general max_over_subscription_ratio option.  If \u0027"},{"line_number":79,"context_line":"                      \u0027None, the general option is used.\u0027)"},{"line_number":80,"context_line":"]"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_aff6bdf6","line":78,"range":{"start_line":78,"start_character":67,"end_line":78,"end_character":68},"in_reply_to":"1ac06dbe_ef2d03a9","updated":"2016-08-25 15:20:40.000000000","message":"Ok, I agree, I will add it in \u0027help\u0027 and remove default.","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f3f6bc8171822a3538154b5a00b8e7d694285fd8","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_8c6039a6","line":88,"updated":"2016-08-25 12:43:19.000000000","message":"-1: See comments in patch set 3.  You do need to support both old and new keys in this release and follow the deprecation policy.","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"cc38d4d625e40e80bf587c7314c38d76c3702029","unresolved":false,"context_lines":[{"line_number":85,"context_line":"STORAGE_POOL_ID \u003d \u0027sio:sp_id\u0027"},{"line_number":86,"context_line":"PROTECTION_DOMAIN_NAME \u003d \u0027sio:pd_name\u0027"},{"line_number":87,"context_line":"PROTECTION_DOMAIN_ID \u003d \u0027sio:pd_id\u0027"},{"line_number":88,"context_line":"PROVISIONING_KEY \u003d \u0027provisioning:type\u0027"},{"line_number":89,"context_line":"IOPS_LIMIT_KEY \u003d \u0027sio:iops_limit\u0027"},{"line_number":90,"context_line":"BANDWIDTH_LIMIT \u003d \u0027sio:bandwidth_limit\u0027"},{"line_number":91,"context_line":"QOS_IOPS_LIMIT_KEY \u003d \u0027maxIOPS\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_0fdef16c","line":88,"in_reply_to":"1ac06dbe_8c6039a6","updated":"2016-08-25 15:20:40.000000000","message":"Done","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"66f57cfc02841985f4f8e4e2336855fd10c61ed3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if (self.configuration.max_over_subscription_ratio is not None and"},{"line_number":243,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":244,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":245,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %{ratio}1f \""},{"line_number":246,"context_line":"                     \"while ScaleIO support up to %{sio_ratio}s\") %"},{"line_number":247,"context_line":"                   {\u0027sio_ratio\u0027: SIO_MAX_OVERSUBSCRIPTION_RATIO,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_92959488","line":244,"range":{"start_line":243,"start_character":13,"end_line":244,"end_character":43},"updated":"2016-08-23 12:44:57.000000000","message":"(self.configuration.max_over_subscription_ratio \u003e  SIO_MAX_OVERSUBSCRIPTION_RATIO)\n??","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"cc38d4d625e40e80bf587c7314c38d76c3702029","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if (self.configuration.max_over_subscription_ratio is not None and"},{"line_number":243,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":244,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":245,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %{ratio}1f \""},{"line_number":246,"context_line":"                     \"while ScaleIO support up to %{sio_ratio}s\") %"},{"line_number":247,"context_line":"                   {\u0027sio_ratio\u0027: SIO_MAX_OVERSUBSCRIPTION_RATIO,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_8f5e61e7","line":244,"range":{"start_line":243,"start_character":13,"end_line":244,"end_character":43},"in_reply_to":"1ac06dbe_92959488","updated":"2016-08-25 15:20:40.000000000","message":"It compares between the configured max over subscription with the maximum value allowed by ScaleIO driver with a margin mistake of 1.","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"66f57cfc02841985f4f8e4e2336855fd10c61ed3","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        stats[\u0027vendor_name\u0027] \u003d \u0027EMC\u0027"},{"line_number":817,"context_line":"        stats[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":818,"context_line":"        stats[\u0027storage_protocol\u0027] \u003d \u0027scaleio\u0027"},{"line_number":819,"context_line":"        stats[\u0027total_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":820,"context_line":"        stats[\u0027free_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":821,"context_line":"        stats[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":822,"context_line":"        stats[\u0027QoS_support\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_d2d6ecef","line":819,"range":{"start_line":819,"start_character":8,"end_line":819,"end_character":46},"updated":"2016-08-23 12:44:57.000000000","message":"Overwrite bellow.","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"cc38d4d625e40e80bf587c7314c38d76c3702029","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        stats[\u0027vendor_name\u0027] \u003d \u0027EMC\u0027"},{"line_number":817,"context_line":"        stats[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":818,"context_line":"        stats[\u0027storage_protocol\u0027] \u003d \u0027scaleio\u0027"},{"line_number":819,"context_line":"        stats[\u0027total_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":820,"context_line":"        stats[\u0027free_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":821,"context_line":"        stats[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":822,"context_line":"        stats[\u0027QoS_support\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_cfb4d9f3","line":819,"range":{"start_line":819,"start_character":8,"end_line":819,"end_character":46},"in_reply_to":"1ac06dbe_d2d6ecef","updated":"2016-08-25 15:20:40.000000000","message":"Done","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90520ef791d0e58405b82e2211739bc3328219d7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                      \u0027driver. If set, this takes precedence over the \u0027"},{"line_number":77,"context_line":"                      \u0027general max_over_subscription_ratio option. If \u0027"},{"line_number":78,"context_line":"                      \u0027None, the general option is used.\u0027"},{"line_number":79,"context_line":"                      \u0027Maximum value allowed for ScaleIO is 10.0\u0027)"},{"line_number":80,"context_line":"]"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"CONF.register_opts(scaleio_opts)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_bf9a9761","line":79,"updated":"2016-08-28 01:48:21.000000000","message":"Missing period at the end.","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"e5c4daf22900c5efc69f2f6eae8fc9d4183a9da7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                      \u0027driver. If set, this takes precedence over the \u0027"},{"line_number":77,"context_line":"                      \u0027general max_over_subscription_ratio option. If \u0027"},{"line_number":78,"context_line":"                      \u0027None, the general option is used.\u0027"},{"line_number":79,"context_line":"                      \u0027Maximum value allowed for ScaleIO is 10.0\u0027)"},{"line_number":80,"context_line":"]"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"CONF.register_opts(scaleio_opts)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_b69d595b","line":79,"in_reply_to":"fa7ab95a_bf9a9761","updated":"2016-08-28 17:36:13.000000000","message":"Done","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90520ef791d0e58405b82e2211739bc3328219d7","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        old_provisioning_type \u003d storage_type.get(OLD_PROVISIONING_KEY)"},{"line_number":274,"context_line":"        if new_provisioning_type is None and old_provisioning_type is not None:"},{"line_number":275,"context_line":"            LOG.info(_LI(\"Using sio:provisioning_type for defining \""},{"line_number":276,"context_line":"                         \"thin or thick volume will be deprecated in the O \""},{"line_number":277,"context_line":"                         \"release of OpenStack. Please use \""},{"line_number":278,"context_line":"                         \"provisioning:type configuration option.\"))"},{"line_number":279,"context_line":"            provisioning_type \u003d old_provisioning_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_1fa0e38f","line":276,"updated":"2016-08-28 01:48:21.000000000","message":"Ocata","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"e5c4daf22900c5efc69f2f6eae8fc9d4183a9da7","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        old_provisioning_type \u003d storage_type.get(OLD_PROVISIONING_KEY)"},{"line_number":274,"context_line":"        if new_provisioning_type is None and old_provisioning_type is not None:"},{"line_number":275,"context_line":"            LOG.info(_LI(\"Using sio:provisioning_type for defining \""},{"line_number":276,"context_line":"                         \"thin or thick volume will be deprecated in the O \""},{"line_number":277,"context_line":"                         \"release of OpenStack. Please use \""},{"line_number":278,"context_line":"                         \"provisioning:type configuration option.\"))"},{"line_number":279,"context_line":"            provisioning_type \u003d old_provisioning_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_36aa2971","line":276,"in_reply_to":"fa7ab95a_1fa0e38f","updated":"2016-08-28 17:36:13.000000000","message":"Done","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90520ef791d0e58405b82e2211739bc3328219d7","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            provisioning_type \u003d new_provisioning_type"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in {\u0027thick\u0027, \u0027thin\u0027}:"},{"line_number":285,"context_line":"                msg \u003d _(\"illegal provisioning type\")"},{"line_number":286,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":287,"context_line":"            return provisioning_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_7fb72fd8","line":284,"range":{"start_line":284,"start_character":40,"end_line":284,"end_character":57},"updated":"2016-08-28 01:48:21.000000000","message":"(\u0027thick\u0027, \u0027thin\u0027)","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"e5c4daf22900c5efc69f2f6eae8fc9d4183a9da7","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            provisioning_type \u003d new_provisioning_type"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in {\u0027thick\u0027, \u0027thin\u0027}:"},{"line_number":285,"context_line":"                msg \u003d _(\"illegal provisioning type\")"},{"line_number":286,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":287,"context_line":"            return provisioning_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_56b7add7","line":284,"range":{"start_line":284,"start_character":40,"end_line":284,"end_character":57},"in_reply_to":"fa7ab95a_7fb72fd8","updated":"2016-08-28 17:36:13.000000000","message":"Done","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90520ef791d0e58405b82e2211739bc3328219d7","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in {\u0027thick\u0027, \u0027thin\u0027}:"},{"line_number":285,"context_line":"                msg \u003d _(\"illegal provisioning type\")"},{"line_number":286,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":287,"context_line":"            return provisioning_type"},{"line_number":288,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_bfb1b7e3","line":285,"updated":"2016-08-28 01:48:21.000000000","message":"In the message, please specify what are supported provisioning types and what is the current provisioning type.","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"e5c4daf22900c5efc69f2f6eae8fc9d4183a9da7","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in {\u0027thick\u0027, \u0027thin\u0027}:"},{"line_number":285,"context_line":"                msg \u003d _(\"illegal provisioning type\")"},{"line_number":286,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":287,"context_line":"            return provisioning_type"},{"line_number":288,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_96b135e4","line":285,"in_reply_to":"fa7ab95a_bfb1b7e3","updated":"2016-08-28 17:36:13.000000000","message":"Done","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"aa4d1fbb4ea056af3a689427b68793eba23336cd","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in (\u0027thick\u0027, \u0027thin\u0027):"},{"line_number":285,"context_line":"                msg \u003d _(\"illegal provisioning type. The supported \""},{"line_number":286,"context_line":"                        \"provisioning types are \u0027thick\u0027 or \u0027thin\u0027.\")"},{"line_number":287,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":288,"context_line":"            return provisioning_type"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_03893ec9","line":285,"range":{"start_line":285,"start_character":25,"end_line":285,"end_character":32},"updated":"2016-08-29 14:28:01.000000000","message":"Illegal","commit_id":"fa9ba6d26204c11a8579c3e4d5f190903ed15f25"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"88edb94511dc0f287975c4ec1b5d5fe5d6c666c9","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in (\u0027thick\u0027, \u0027thin\u0027):"},{"line_number":285,"context_line":"                msg \u003d _(\"illegal provisioning type. The supported \""},{"line_number":286,"context_line":"                        \"provisioning types are \u0027thick\u0027 or \u0027thin\u0027.\")"},{"line_number":287,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":288,"context_line":"            return provisioning_type"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_2902a3b4","line":285,"range":{"start_line":285,"start_character":25,"end_line":285,"end_character":32},"in_reply_to":"fa7ab95a_03893ec9","updated":"2016-08-29 14:43:54.000000000","message":"Done","commit_id":"fa9ba6d26204c11a8579c3e4d5f190903ed15f25"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"756c9ee88b24b53b785e1d12ab43b2b0195e11d6","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            provisioning_type \u003d new_provisioning_type"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in (\u0027thick\u0027, \u0027thin\u0027):"},{"line_number":285,"context_line":"                msg \u003d _(\"Illegal provisioning type. The supported \""},{"line_number":286,"context_line":"                        \"provisioning types are \u0027thick\u0027 or \u0027thin\u0027.\")"},{"line_number":287,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_38e0e8cc","line":284,"updated":"2016-08-30 14:14:27.000000000","message":"The common code you previously referred (I8b43624b934fadf1036fafa1f5e2b94b5317f81c) assumes that if the type is not \u0027thick\u0027 exactly, then it is thin. If it is a common practice in Cinder, it will be better to honor it here, in sio driver.","commit_id":"b1e10d3d4324ab572b63ffe452c5c15f48c9dcbb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"65c9732abd6f4f93a5897630d1c165bf7f9d3d58","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            provisioning_type \u003d new_provisioning_type"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        if provisioning_type is not None:"},{"line_number":284,"context_line":"            if provisioning_type not in (\u0027thick\u0027, \u0027thin\u0027):"},{"line_number":285,"context_line":"                msg \u003d _(\"Illegal provisioning type. The supported \""},{"line_number":286,"context_line":"                        \"provisioning types are \u0027thick\u0027 or \u0027thin\u0027.\")"},{"line_number":287,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_8687ceb3","line":284,"in_reply_to":"fa7ab95a_38e0e8cc","updated":"2016-08-30 14:37:14.000000000","message":"Here it\u0027s not the case, in this case user actually specified in the volume type a provisioning type which is not thin or thick, it\u0027s not that he left that empty or something like that.","commit_id":"b1e10d3d4324ab572b63ffe452c5c15f48c9dcbb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"756c9ee88b24b53b785e1d12ab43b2b0195e11d6","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                LOG.warning(_LW(\"QoS specs are overriding extra_specs.\"))"},{"line_number":300,"context_line":"            else:"},{"line_number":301,"context_line":"                LOG.info(_LI(\"Using extra_specs for defining QoS specs \""},{"line_number":302,"context_line":"                             \"will be deprecated in the N release \""},{"line_number":303,"context_line":"                             \"of OpenStack. Please use QoS specs.\"))"},{"line_number":304,"context_line":"        return qos_limit if qos_limit is not None else extraspecs_limit"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_f3fb0145","line":302,"updated":"2016-08-30 14:14:27.000000000","message":"I hope, it will be removed indeed.","commit_id":"b1e10d3d4324ab572b63ffe452c5c15f48c9dcbb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"65c9732abd6f4f93a5897630d1c165bf7f9d3d58","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                LOG.warning(_LW(\"QoS specs are overriding extra_specs.\"))"},{"line_number":300,"context_line":"            else:"},{"line_number":301,"context_line":"                LOG.info(_LI(\"Using extra_specs for defining QoS specs \""},{"line_number":302,"context_line":"                             \"will be deprecated in the N release \""},{"line_number":303,"context_line":"                             \"of OpenStack. Please use QoS specs.\"))"},{"line_number":304,"context_line":"        return qos_limit if qos_limit is not None else extraspecs_limit"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_a6e4d2ab","line":302,"in_reply_to":"fa7ab95a_f3fb0145","updated":"2016-08-30 14:37:14.000000000","message":"It will, but in a different patch, is not related to this patch.","commit_id":"b1e10d3d4324ab572b63ffe452c5c15f48c9dcbb"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"6604a6068185ffc5f71c355a8eecf2e8ac820e41","unresolved":false,"context_lines":[{"line_number":790,"context_line":"        stats[\u0027vendor_name\u0027] \u003d \u0027EMC\u0027"},{"line_number":791,"context_line":"        stats[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":792,"context_line":"        stats[\u0027storage_protocol\u0027] \u003d \u0027scaleio\u0027"},{"line_number":793,"context_line":"        stats[\u0027total_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":794,"context_line":"        stats[\u0027free_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":795,"context_line":"        stats[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":796,"context_line":"        stats[\u0027QoS_support\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_6fde1dde","side":"PARENT","line":793,"updated":"2016-08-30 15:09:20.000000000","message":"i\u0027m not sure this will be auto merged, since the parent fix changes the same lines.","commit_id":"63e6e487f6198c1cc5a8d845fcd84a7a06150e65"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"b9cb24273f3ff12fa68d19a9cafeaa49247bd007","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":245,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":246,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %(ratio)1f \""},{"line_number":247,"context_line":"                     \"while ScaleIO support up to %(sio_ratio)s\") %"},{"line_number":248,"context_line":"                   {\u0027sio_ratio\u0027: SIO_MAX_OVERSUBSCRIPTION_RATIO,"},{"line_number":249,"context_line":"                    \u0027ratio\u0027: self.configuration.max_over_subscription_ratio})"},{"line_number":250,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_3ff7c08d","line":247,"range":{"start_line":247,"start_character":62,"end_line":247,"end_character":64},"updated":"2016-08-31 04:55:22.000000000","message":"Miss \".\"","commit_id":"d4cb1e92ae13805e43711e2c8ff54b591cdeeac3"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"9b15a4cdc4512b12075bc96a57f6c19b32b1dff9","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            (self.configuration.max_over_subscription_ratio -"},{"line_number":245,"context_line":"             SIO_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":246,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %(ratio)1f \""},{"line_number":247,"context_line":"                     \"while ScaleIO support up to %(sio_ratio)s\") %"},{"line_number":248,"context_line":"                   {\u0027sio_ratio\u0027: SIO_MAX_OVERSUBSCRIPTION_RATIO,"},{"line_number":249,"context_line":"                    \u0027ratio\u0027: self.configuration.max_over_subscription_ratio})"},{"line_number":250,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_c69279f6","line":247,"range":{"start_line":247,"start_character":62,"end_line":247,"end_character":64},"in_reply_to":"fa7ab95a_3ff7c08d","updated":"2016-08-31 11:16:01.000000000","message":"Done","commit_id":"d4cb1e92ae13805e43711e2c8ff54b591cdeeac3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"cfa71b52a6bf8282c2254765ef1055ef2c8a2d95","unresolved":false,"context_lines":[{"line_number":947,"context_line":"                    res[\u0027capacityAvailableForVolumeAllocationInKb\u0027] / units.Mi)"},{"line_number":948,"context_line":"                # Divide by two because ScaleIO creates a copy for each volume"},{"line_number":949,"context_line":"                provisioned_capacity \u003d ("},{"line_number":950,"context_line":"                    ((res[\u0027thickCapacityInUseInKb\u0027] +"},{"line_number":951,"context_line":"                     res[\u0027thinCapacityAllocatedInKm\u0027]) / 2) / units.Mi)"},{"line_number":952,"context_line":"                LOG.info(_LI("},{"line_number":953,"context_line":"                         \"free capacity of pool %(pool)s is: %(free)s, \""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_eb8e36cf","line":950,"updated":"2016-09-01 00:42:48.000000000","message":"We got a KeyError in ScaleIO CI cinder-volume logs:\n\nhttp://publiclogs.emc.com/vipr_ostack/scaleio/EMC_ScaleIO/3339/3339/logs/screen-c-vol.txt.gz\n\nKeyError: \u0027thickCapacityInUseInKb\u0027\n\nCould this be \u0027thickCapacityInUseInKm\u0027 instead?  Anyway, this needs to be fixed.","commit_id":"9282938ae90f3e5b763990389b42e27b0415c3c8"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"25e319604908a30a65b6dbdb36ce7750f630eeef","unresolved":false,"context_lines":[{"line_number":947,"context_line":"                    res[\u0027capacityAvailableForVolumeAllocationInKb\u0027] / units.Mi)"},{"line_number":948,"context_line":"                # Divide by two because ScaleIO creates a copy for each volume"},{"line_number":949,"context_line":"                provisioned_capacity \u003d ("},{"line_number":950,"context_line":"                    ((res[\u0027thickCapacityInUseInKb\u0027] +"},{"line_number":951,"context_line":"                     res[\u0027thinCapacityAllocatedInKm\u0027]) / 2) / units.Mi)"},{"line_number":952,"context_line":"                LOG.info(_LI("},{"line_number":953,"context_line":"                         \"free capacity of pool %(pool)s is: %(free)s, \""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_a818a676","line":950,"in_reply_to":"fa7ab95a_eb8e36cf","updated":"2016-09-01 07:25:27.000000000","message":"It was a mistake that happened while rebase, fixed it now.","commit_id":"9282938ae90f3e5b763990389b42e27b0415c3c8"}],"releasenotes/notes/scaleio-thin-provisioning-support-9c3b9203567771dd.yaml":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"66f57cfc02841985f4f8e4e2336855fd10c61ed3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Added support for oversubscription in thin provisioning."},{"line_number":4,"context_line":"    Volumes should have extraspecs with the key provisioning:type with value"},{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"},{"line_number":7,"context_line":"    ScaleIO specific with the config option sio_max_over_subscription_ratio."},{"line_number":8,"context_line":"    The default of sio_max_over_subscription_ratio is 10.0, which is the"},{"line_number":9,"context_line":"    maximum oversubscription ratio supported at the moment."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1ac06dbe_1232445f","line":7,"range":{"start_line":6,"start_character":4,"end_line":7,"end_character":76},"updated":"2016-08-23 12:44:57.000000000","message":"Can\u0027t!","commit_id":"13b6665d1c7b52051c4ac2d0dc052ee2be57d53a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"90520ef791d0e58405b82e2211739bc3328219d7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support for oversubscription in thin provisioning."},{"line_number":4,"context_line":"    Volumes should have extraspecs with the key provisioning:type with value"},{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"},{"line_number":7,"context_line":"    ScaleIO specific with the config option sio_max_over_subscription_ratio."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_7f900f44","line":4,"updated":"2016-08-28 01:48:21.000000000","message":"extra_specs","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"e5c4daf22900c5efc69f2f6eae8fc9d4183a9da7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support for oversubscription in thin provisioning."},{"line_number":4,"context_line":"    Volumes should have extraspecs with the key provisioning:type with value"},{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"},{"line_number":7,"context_line":"    ScaleIO specific with the config option sio_max_over_subscription_ratio."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_56decd11","line":4,"in_reply_to":"fa7ab95a_7f900f44","updated":"2016-08-28 17:36:13.000000000","message":"Done","commit_id":"18f7ae026d8027cf114a2c6b664663eeda67c2fa"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"756c9ee88b24b53b785e1d12ab43b2b0195e11d6","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"},{"line_number":7,"context_line":"    ScaleIO specific with the config option sio_max_over_subscription_ratio."},{"line_number":8,"context_line":"    The default of sio_max_over_subscription_ratio is 10.0, which is the"},{"line_number":9,"context_line":"    maximum oversubscription ratio supported at the moment."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"fa7ab95a_29ca581b","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":58},"updated":"2016-08-30 14:14:27.000000000","message":"It is not actual, right?","commit_id":"b1e10d3d4324ab572b63ffe452c5c15f48c9dcbb"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"8f8f466ed89e4e4203c326547bf2156807d2d463","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"},{"line_number":7,"context_line":"    ScaleIO specific with the config option sio_max_over_subscription_ratio."},{"line_number":8,"context_line":"    The default of sio_max_over_subscription_ratio is 10.0, which is the"},{"line_number":9,"context_line":"    maximum oversubscription ratio supported at the moment."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"fa7ab95a_29aa5585","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":58},"in_reply_to":"fa7ab95a_29ca581b","updated":"2016-08-30 14:42:23.000000000","message":"Done","commit_id":"b1e10d3d4324ab572b63ffe452c5c15f48c9dcbb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ede4e62ca0ca16d632c59456b4c921a7bbc6c7de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support for oversubscription in thin provisioning."},{"line_number":4,"context_line":"    Volumes should have extra_specs with the key provisioning:type with value"},{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa7ab95a_a2dd0f44","line":3,"updated":"2016-09-01 12:39:06.000000000","message":"This should call out right away that this is for ScaleIO. It does mention it before, but the first couple sentences make it sound like Cinder is being changed here where this is just enabling ScaleIO support for it.","commit_id":"e30b903265558f9fcc9c439040660fd7dde5a653"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c6d7d03aa04651d6cb9154341859e98aab84fc0b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support for oversubscription in thin provisioning."},{"line_number":4,"context_line":"    Volumes should have extra_specs with the key provisioning:type with value"},{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"fa7ab95a_248cac7e","line":3,"in_reply_to":"fa7ab95a_a2dd0f44","updated":"2016-09-01 12:48:22.000000000","message":"Good point.  Please change to \"Added support for oversubscription in thin provisioning in the ScaleIO driver.\"","commit_id":"e30b903265558f9fcc9c439040660fd7dde5a653"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"88781d1dbec6b1000d71c9ca6bb6afb1ade11931","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support for oversubscription in thin provisioning in the ScaleIO driver."},{"line_number":4,"context_line":"    Volumes should have extra_specs with the key provisioning:type with value"},{"line_number":5,"context_line":"    equals to either \u0027thick\u0027 or \u0027thin\u0027."},{"line_number":6,"context_line":"    max_oversubscription_ratio can be defined by the global config or for"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa7ab95a_4a2b79eb","line":3,"updated":"2016-09-01 13:16:49.000000000","message":"This line has 82 characters.  I wonder if this will pass Jenkins.  Can you wrap this up at 79 chars?","commit_id":"eac6f49e2900c1a9d74afc9e7a3b9849a3cba404"}]}
