)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f3bd52de78ffa8bd02bca6e52002539a7954e10f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"XtreamIO version 4.0 support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* use new XMS Rest features to improve performance"},{"line_number":10,"context_line":"* add suport for manage/unmanage commands"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib75ff304d5deff6ee44a0b74ba7264a060947537"},{"line_number":13,"context_line":"Implements: blueprint emc-xtremio-driver-kilo-update"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_c6ad8aec","line":10,"updated":"2015-02-07 15:04:08.000000000","message":"typo: support","commit_id":"677a8279c7bc7c25a80cdd5fb43ec8741da2d2aa"}],"cinder/exception.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"fb324be70a7829ee8a202f21dbf5e817fbfac7f4","unresolved":false,"context_lines":[{"line_number":951,"context_line":""},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"# XtremIO Drivers"},{"line_number":954,"context_line":"class AlreadyMappedError(CinderException):"},{"line_number":955,"context_line":"    message \u003d _(\"Volume to Initiator Group mapping already exists\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_b25c8b1a","line":954,"updated":"2015-02-26 02:34:17.000000000","message":"As you can see scrolling through this file, exceptions that are driver specific are prefixed. I think this should be as well.","commit_id":"0c4777860063282c740101cd8b9a65e2480b75b9"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"4796df31f9d535f1123818447969e57adaf30fc5","unresolved":false,"context_lines":[{"line_number":951,"context_line":""},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"# XtremIO Drivers"},{"line_number":954,"context_line":"class AlreadyMappedError(CinderException):"},{"line_number":955,"context_line":"    message \u003d _(\"Volume to Initiator Group mapping already exists\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_c37e8969","line":954,"in_reply_to":"ba7be1f8_b25c8b1a","updated":"2015-02-26 10:42:35.000000000","message":"Done","commit_id":"0c4777860063282c740101cd8b9a65e2480b75b9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5be946feacd4be56c87299e5918c855e71b3406a","unresolved":false,"context_lines":[{"line_number":951,"context_line":""},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"# XtremIO Drivers"},{"line_number":954,"context_line":"class AlreadyMappedError(CinderException):"},{"line_number":955,"context_line":"    message \u003d _(\"Volume to Initiator Group mapping already exists\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_9205c715","line":954,"in_reply_to":"ba7be1f8_b25c8b1a","updated":"2015-02-26 03:31:18.000000000","message":"Shay,\n\nCan you rename it to XtremIOAlreadyMappedError as suggested by Mike?","commit_id":"0c4777860063282c740101cd8b9a65e2480b75b9"}],"cinder/tests/test_emc_xtremio.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    def test_manage_unmanage(self, req):"},{"line_number":307,"context_line":"        req.side_effect \u003d xms_request"},{"line_number":308,"context_line":"        clean_xms_data()"},{"line_number":309,"context_line":"        # self.driver.create_volume(self.data.unmanaged1)"},{"line_number":310,"context_line":"        xms_data[\u0027volumes\u0027] \u003d {\u0027unmanaged1\u0027: {\u0027vol-name\u0027: \u0027unmanaged1\u0027,"},{"line_number":311,"context_line":"                                              \u0027index\u0027: \u0027unmanaged1\u0027,"},{"line_number":312,"context_line":"                                              \u0027vol-size\u0027: \u00273\u0027}}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_9c7582fc","line":309,"updated":"2015-02-16 03:04:54.000000000","message":"remove the above line","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    def test_manage_unmanage(self, req):"},{"line_number":307,"context_line":"        req.side_effect \u003d xms_request"},{"line_number":308,"context_line":"        clean_xms_data()"},{"line_number":309,"context_line":"        # self.driver.create_volume(self.data.unmanaged1)"},{"line_number":310,"context_line":"        xms_data[\u0027volumes\u0027] \u003d {\u0027unmanaged1\u0027: {\u0027vol-name\u0027: \u0027unmanaged1\u0027,"},{"line_number":311,"context_line":"                                              \u0027index\u0027: \u0027unmanaged1\u0027,"},{"line_number":312,"context_line":"                                              \u0027vol-size\u0027: \u00273\u0027}}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_fd0b9821","line":309,"in_reply_to":"da86d52c_9c7582fc","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"068a304b1c9ee0ed6b31800c7b24490255219bcc","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    def test_manage_unmanage(self, req):"},{"line_number":307,"context_line":"        req.side_effect \u003d xms_request"},{"line_number":308,"context_line":"        clean_xms_data()"},{"line_number":309,"context_line":"        # self.driver.create_volume(self.data.unmanaged1)"},{"line_number":310,"context_line":"        xms_data[\u0027volumes\u0027] \u003d {\u0027unmanaged1\u0027: {\u0027vol-name\u0027: \u0027unmanaged1\u0027,"},{"line_number":311,"context_line":"                                              \u0027index\u0027: \u0027unmanaged1\u0027,"},{"line_number":312,"context_line":"                                              \u0027vol-size\u0027: \u00273\u0027}}"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_321604f3","line":309,"in_reply_to":"da86d52c_fd0b9821","updated":"2015-02-18 19:23:56.000000000","message":"I haven\u0027t seen your new patch set yet:).  Usually people reply \"Done\" with a new patch set.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                                              \u0027index\u0027: \u0027unmanaged1\u0027,"},{"line_number":312,"context_line":"                                              \u0027vol-size\u0027: \u00273\u0027}}"},{"line_number":313,"context_line":"        ref_vol \u003d {\"source-name\": \"unmanaged1\"}"},{"line_number":314,"context_line":"        self.driver.manage_existing_get_size(self.data.test_volume, ref_vol)"},{"line_number":315,"context_line":"        self.driver.manage_existing(self.data.test_volume, ref_vol)"},{"line_number":316,"context_line":"        self.driver.unmanage(self.data.test_volume)"},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_bce08697","line":314,"updated":"2015-02-16 03:04:54.000000000","message":"Please add a negative test case for manage_existing_get_size using assertRaises. For example:\n\nself.assertRaises(exception.NotFound,\nself.driver.manage_existing_get_size,\n\u003ctest volume\u003e,\n\u003cnon existing ref\u003e)","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                                              \u0027index\u0027: \u0027unmanaged1\u0027,"},{"line_number":312,"context_line":"                                              \u0027vol-size\u0027: \u00273\u0027}}"},{"line_number":313,"context_line":"        ref_vol \u003d {\"source-name\": \"unmanaged1\"}"},{"line_number":314,"context_line":"        self.driver.manage_existing_get_size(self.data.test_volume, ref_vol)"},{"line_number":315,"context_line":"        self.driver.manage_existing(self.data.test_volume, ref_vol)"},{"line_number":316,"context_line":"        self.driver.unmanage(self.data.test_volume)"},{"line_number":317,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1d122c58","line":314,"in_reply_to":"da86d52c_bce08697","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                                              \u0027vol-size\u0027: \u00273\u0027}}"},{"line_number":313,"context_line":"        ref_vol \u003d {\"source-name\": \"unmanaged1\"}"},{"line_number":314,"context_line":"        self.driver.manage_existing_get_size(self.data.test_volume, ref_vol)"},{"line_number":315,"context_line":"        self.driver.manage_existing(self.data.test_volume, ref_vol)"},{"line_number":316,"context_line":"        self.driver.unmanage(self.data.test_volume)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_dcec5a95","line":315,"updated":"2015-02-16 03:04:54.000000000","message":"Similarly for manage_existing.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                                              \u0027vol-size\u0027: \u00273\u0027}}"},{"line_number":313,"context_line":"        ref_vol \u003d {\"source-name\": \"unmanaged1\"}"},{"line_number":314,"context_line":"        self.driver.manage_existing_get_size(self.data.test_volume, ref_vol)"},{"line_number":315,"context_line":"        self.driver.manage_existing(self.data.test_volume, ref_vol)"},{"line_number":316,"context_line":"        self.driver.unmanage(self.data.test_volume)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_3d0d3036","line":315,"in_reply_to":"da86d52c_dcec5a95","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        ref_vol \u003d {\"source-name\": \"unmanaged1\"}"},{"line_number":314,"context_line":"        self.driver.manage_existing_get_size(self.data.test_volume, ref_vol)"},{"line_number":315,"context_line":"        self.driver.manage_existing(self.data.test_volume, ref_vol)"},{"line_number":316,"context_line":"        self.driver.unmanage(self.data.test_volume)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"@mock.patch(\u0027cinder.volume.drivers.emc.xtremio.XtremIOClient.req\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_3cec968f","line":316,"updated":"2015-02-16 03:04:54.000000000","message":"Similarly for unmanage.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        ref_vol \u003d {\"source-name\": \"unmanaged1\"}"},{"line_number":314,"context_line":"        self.driver.manage_existing_get_size(self.data.test_volume, ref_vol)"},{"line_number":315,"context_line":"        self.driver.manage_existing(self.data.test_volume, ref_vol)"},{"line_number":316,"context_line":"        self.driver.unmanage(self.data.test_volume)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"@mock.patch(\u0027cinder.volume.drivers.emc.xtremio.XtremIOClient.req\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_5d1ca46a","line":316,"in_reply_to":"da86d52c_3cec968f","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"}],"cinder/volume/drivers/emc/xtremio.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"089e139902bbc2be0456ab2f9c74b4407518dff4","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"RANDOM \u003d random.Random()"},{"line_number":63,"context_line":"# CONF.set_override(\u0027max_over_subscription_ratio\u0027, 20)"},{"line_number":64,"context_line":"# CONF.set_override(\u0027max_used_ratio\u0027, 0.99)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class AlreadyMappedError(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_419a6dc6","line":64,"updated":"2015-02-06 23:20:07.000000000","message":"don\u0027t leave commented code here.","commit_id":"677a8279c7bc7c25a80cdd5fb43ec8741da2d2aa"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"fa6f10edb0ffe24a96359c6f017066948995a46f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               help\u003d\u0027XMS cluster id in multi-cluster environment\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027xtremio_max_provisioning_factor\u0027,"},{"line_number":56,"context_line":"               default\u003dDEFAULT_PROVISIONING_FACTOR,"},{"line_number":57,"context_line":"               help\u003d\u0027Maximum factor between physical capacity to alowed\u0027"},{"line_number":58,"context_line":"               \u0027 provisioned space\u0027)]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"CONF.register_opts(XTREMIO_OPTS)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_286d31cd","line":57,"updated":"2015-02-15 23:21:13.000000000","message":"Please update the help message with the default.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               help\u003d\u0027XMS cluster id in multi-cluster environment\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027xtremio_max_provisioning_factor\u0027,"},{"line_number":56,"context_line":"               default\u003dDEFAULT_PROVISIONING_FACTOR,"},{"line_number":57,"context_line":"               help\u003d\u0027Maximum factor between physical capacity to alowed\u0027"},{"line_number":58,"context_line":"               \u0027 provisioned space\u0027)]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"CONF.register_opts(XTREMIO_OPTS)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_ea59118f","line":57,"in_reply_to":"da86d52c_286d31cd","updated":"2015-02-18 07:52:42.000000000","message":"Done - added default to help","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               help\u003d\u0027XMS cluster id in multi-cluster environment\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027xtremio_max_provisioning_factor\u0027,"},{"line_number":56,"context_line":"               default\u003dDEFAULT_PROVISIONING_FACTOR,"},{"line_number":57,"context_line":"               help\u003d\u0027Maximum factor between physical capacity to alowed\u0027"},{"line_number":58,"context_line":"               \u0027 provisioned space\u0027)]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"CONF.register_opts(XTREMIO_OPTS)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_688729b7","line":57,"in_reply_to":"da86d52c_286d31cd","updated":"2015-02-16 03:04:54.000000000","message":"Shay,\nIs this equivalent to the max_over_subscription_ratio (line 132 in https://review.openstack.org/#/c/142171/27/cinder/volume/driver.py)? If so, you can use that one directly. That patch was merged already. No need to introduce a new config parameter. See example on how that is used in volume/drivers/lvm.py.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               help\u003d\u0027XMS cluster id in multi-cluster environment\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027xtremio_max_provisioning_factor\u0027,"},{"line_number":56,"context_line":"               default\u003dDEFAULT_PROVISIONING_FACTOR,"},{"line_number":57,"context_line":"               help\u003d\u0027Maximum factor between physical capacity to alowed\u0027"},{"line_number":58,"context_line":"               \u0027 provisioned space\u0027)]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"CONF.register_opts(XTREMIO_OPTS)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_cadfed0a","line":57,"in_reply_to":"da86d52c_688729b7","updated":"2015-02-18 07:52:42.000000000","message":"I can\u0027t use max_over_subscription_ratio, the default isn\u0027t right for xtremio","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"068a304b1c9ee0ed6b31800c7b24490255219bcc","unresolved":false,"context_lines":[{"line_number":54,"context_line":"               help\u003d\u0027XMS cluster id in multi-cluster environment\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027xtremio_max_provisioning_factor\u0027,"},{"line_number":56,"context_line":"               default\u003dDEFAULT_PROVISIONING_FACTOR,"},{"line_number":57,"context_line":"               help\u003d\u0027Maximum factor between physical capacity to alowed\u0027"},{"line_number":58,"context_line":"               \u0027 provisioned space\u0027)]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"CONF.register_opts(XTREMIO_OPTS)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_92eed020","line":57,"in_reply_to":"da86d52c_ea59118f","updated":"2015-02-18 19:23:56.000000000","message":"I just learned from Mike that you can override the default value of a config parameter.\n\nhttps://github.com/openstack/oslo.config/blob/master/oslo_config/cfg.py#L2014\n\nThere are examples for \u0027override\u0027 here:\ncinder/scheduler/host_manager.py.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"fa6f10edb0ffe24a96359c6f017066948995a46f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"RANDOM \u003d random.Random()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class AlreadyMappedError(Exception):"},{"line_number":66,"context_line":"    pass"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_487265ae","line":65,"updated":"2015-02-15 23:21:13.000000000","message":"These go in cinder.exception and inherit the appropriate base exception class that inherits CinderException.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":62,"context_line":"RANDOM \u003d random.Random()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class AlreadyMappedError(Exception):"},{"line_number":66,"context_line":"    pass"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_3c0d7638","line":65,"in_reply_to":"da86d52c_487265ae","updated":"2015-02-16 03:04:54.000000000","message":"+1","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"RANDOM \u003d random.Random()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class AlreadyMappedError(Exception):"},{"line_number":66,"context_line":"    pass"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_f5a49609","line":65,"in_reply_to":"da86d52c_487265ae","updated":"2015-02-18 07:52:42.000000000","message":"even if it\u0027s intended for the drive use only?\nI raise and catch it in the context of the driver.\n moved it just to be sure","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"068a304b1c9ee0ed6b31800c7b24490255219bcc","unresolved":false,"context_lines":[{"line_number":62,"context_line":"RANDOM \u003d random.Random()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class AlreadyMappedError(Exception):"},{"line_number":66,"context_line":"    pass"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_f2c38c87","line":65,"in_reply_to":"da86d52c_f5a49609","updated":"2015-02-18 19:23:56.000000000","message":"Yes, please see examples in cinder/exception.py.  Driver\u0027s custom exceptions are all there.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            self.update_data(data, self.cluster_id)"},{"line_number":96,"context_line":"            LOG.debug(\u0027data: %s\u0027, data)"},{"line_number":97,"context_line":"            request \u003d urllib2.Request(url, json.dumps(data))"},{"line_number":98,"context_line":"        LOG.debug(\u0027%s %s\u0027, request_typ, url)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def get_request_type():"},{"line_number":101,"context_line":"            return request_typ"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1c6d12cd","line":98,"updated":"2015-02-16 03:04:54.000000000","message":"Please use named interpolation:\n\nLOG.debug(\u0027%(type)s %(url)s\u0027, {\u0027type\u0027: request_typ, \u0027url\u0027: url})","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            self.update_data(data, self.cluster_id)"},{"line_number":96,"context_line":"            LOG.debug(\u0027data: %s\u0027, data)"},{"line_number":97,"context_line":"            request \u003d urllib2.Request(url, json.dumps(data))"},{"line_number":98,"context_line":"        LOG.debug(\u0027%s %s\u0027, request_typ, url)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        def get_request_type():"},{"line_number":101,"context_line":"            return request_typ"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_f082e4c6","line":98,"in_reply_to":"da86d52c_1c6d12cd","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            if exc.code \u003d\u003d 400 and hasattr(exc, \u0027read\u0027):"},{"line_number":111,"context_line":"                error \u003d json.load(exc)"},{"line_number":112,"context_line":"                err_msg \u003d error[\u0027message\u0027]"},{"line_number":113,"context_line":"                if err_msg.endswith(\u0027obj_not_found\u0027):"},{"line_number":114,"context_line":"                    LOG.warning(_LW(\"object %(key)s of \""},{"line_number":115,"context_line":"                                    \"type %(typ)s not found\"),"},{"line_number":116,"context_line":"                                {\u0027key\u0027: key, \u0027typ\u0027: object_type})"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_9cb7423a","line":113,"updated":"2015-02-16 03:04:54.000000000","message":"Can you use a constant for \u0027obj_not_found\u0027?","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            if exc.code \u003d\u003d 400 and hasattr(exc, \u0027read\u0027):"},{"line_number":111,"context_line":"                error \u003d json.load(exc)"},{"line_number":112,"context_line":"                err_msg \u003d error[\u0027message\u0027]"},{"line_number":113,"context_line":"                if err_msg.endswith(\u0027obj_not_found\u0027):"},{"line_number":114,"context_line":"                    LOG.warning(_LW(\"object %(key)s of \""},{"line_number":115,"context_line":"                                    \"type %(typ)s not found\"),"},{"line_number":116,"context_line":"                                {\u0027key\u0027: key, \u0027typ\u0027: object_type})"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_8445e944","line":113,"in_reply_to":"da86d52c_9cb7423a","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                    \"type %(typ)s not found\"),"},{"line_number":116,"context_line":"                                {\u0027key\u0027: key, \u0027typ\u0027: object_type})"},{"line_number":117,"context_line":"                    raise exception.NotFound()"},{"line_number":118,"context_line":"                elif err_msg \u003d\u003d \u0027vol_obj_name_not_unique\u0027:"},{"line_number":119,"context_line":"                    LOG.error(_LE(\"can\u0027t create 2 volumes with the same name\"))"},{"line_number":120,"context_line":"                    msg \u003d (_(\u0027Volume by this name already exists\u0027))"},{"line_number":121,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_bcb40636","line":118,"updated":"2015-02-16 03:04:54.000000000","message":"constant","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                    \"type %(typ)s not found\"),"},{"line_number":116,"context_line":"                                {\u0027key\u0027: key, \u0027typ\u0027: object_type})"},{"line_number":117,"context_line":"                    raise exception.NotFound()"},{"line_number":118,"context_line":"                elif err_msg \u003d\u003d \u0027vol_obj_name_not_unique\u0027:"},{"line_number":119,"context_line":"                    LOG.error(_LE(\"can\u0027t create 2 volumes with the same name\"))"},{"line_number":120,"context_line":"                    msg \u003d (_(\u0027Volume by this name already exists\u0027))"},{"line_number":121,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_c47601a3","line":118,"in_reply_to":"da86d52c_bcb40636","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                    LOG.error(_LE(\"can\u0027t create 2 volumes with the same name\"))"},{"line_number":120,"context_line":"                    msg \u003d (_(\u0027Volume by this name already exists\u0027))"},{"line_number":121,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":122,"context_line":"                elif err_msg \u003d\u003d \u0027vol_obj_not_found\u0027:"},{"line_number":123,"context_line":"                    LOG.error(_LE(\"Can\u0027t find volume to map %s\"), key)"},{"line_number":124,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dkey)"},{"line_number":125,"context_line":"                elif \u0027already_mapped\u0027 in err_msg:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1c7b527c","line":122,"updated":"2015-02-16 03:04:54.000000000","message":"constant","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                    LOG.error(_LE(\"can\u0027t create 2 volumes with the same name\"))"},{"line_number":120,"context_line":"                    msg \u003d (_(\u0027Volume by this name already exists\u0027))"},{"line_number":121,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":122,"context_line":"                elif err_msg \u003d\u003d \u0027vol_obj_not_found\u0027:"},{"line_number":123,"context_line":"                    LOG.error(_LE(\"Can\u0027t find volume to map %s\"), key)"},{"line_number":124,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dkey)"},{"line_number":125,"context_line":"                elif \u0027already_mapped\u0027 in err_msg:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_e46dc5cd","line":122,"in_reply_to":"da86d52c_1c7b527c","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                elif err_msg \u003d\u003d \u0027vol_obj_not_found\u0027:"},{"line_number":123,"context_line":"                    LOG.error(_LE(\"Can\u0027t find volume to map %s\"), key)"},{"line_number":124,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dkey)"},{"line_number":125,"context_line":"                elif \u0027already_mapped\u0027 in err_msg:"},{"line_number":126,"context_line":"                    raise AlreadyMappedError()"},{"line_number":127,"context_line":"            LOG.error(_LE(\u0027Bad response from XMS, %s\u0027), exc.read())"},{"line_number":128,"context_line":"            msg \u003d (_(\u0027Exception: %s\u0027) % six.text_type(exc))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_3c801646","line":125,"updated":"2015-02-16 03:04:54.000000000","message":"constant","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                elif err_msg \u003d\u003d \u0027vol_obj_not_found\u0027:"},{"line_number":123,"context_line":"                    LOG.error(_LE(\"Can\u0027t find volume to map %s\"), key)"},{"line_number":124,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dkey)"},{"line_number":125,"context_line":"                elif \u0027already_mapped\u0027 in err_msg:"},{"line_number":126,"context_line":"                    raise AlreadyMappedError()"},{"line_number":127,"context_line":"            LOG.error(_LE(\u0027Bad response from XMS, %s\u0027), exc.read())"},{"line_number":128,"context_line":"            msg \u003d (_(\u0027Exception: %s\u0027) % six.text_type(exc))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_0471f9a7","line":125,"in_reply_to":"da86d52c_3c801646","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"fa6f10edb0ffe24a96359c6f017066948995a46f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        key \u003d None"},{"line_number":149,"context_line":"        if name:"},{"line_number":150,"context_line":"            url_data[\u0027name\u0027] \u003d name"},{"line_number":151,"context_line":"            # url \u003d \u0027%s?%s\u0027 % (url, urllib.urlencode({\u0027name\u0027: name}))"},{"line_number":152,"context_line":"            key \u003d name"},{"line_number":153,"context_line":"        elif idx:"},{"line_number":154,"context_line":"            url \u003d \u0027%s/%d\u0027 % (url, idx)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_686649f0","line":151,"updated":"2015-02-15 23:21:13.000000000","message":"remove this","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        key \u003d None"},{"line_number":149,"context_line":"        if name:"},{"line_number":150,"context_line":"            url_data[\u0027name\u0027] \u003d name"},{"line_number":151,"context_line":"            # url \u003d \u0027%s?%s\u0027 % (url, urllib.urlencode({\u0027name\u0027: name}))"},{"line_number":152,"context_line":"            key \u003d name"},{"line_number":153,"context_line":"        elif idx:"},{"line_number":154,"context_line":"            url \u003d \u0027%s/%d\u0027 % (url, idx)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_f03ae4e5","line":151,"in_reply_to":"da86d52c_686649f0","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def get_iscsi_portal(self):"},{"line_number":199,"context_line":"        iscsi_portals \u003d [t[\u0027name\u0027] for t in self.req(\u0027iscsi-portals\u0027)"},{"line_number":200,"context_line":"                         [\u0027iscsi-portals\u0027]]"},{"line_number":201,"context_line":"        # get a random portal"},{"line_number":202,"context_line":"        portal_name \u003d RANDOM.choice(iscsi_portals)"},{"line_number":203,"context_line":"        try:"},{"line_number":204,"context_line":"            portal \u003d self.req(\u0027iscsi-portals\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1cf27206","line":201,"updated":"2015-02-16 03:04:54.000000000","message":"Make the first letter upper case.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def get_iscsi_portal(self):"},{"line_number":199,"context_line":"        iscsi_portals \u003d [t[\u0027name\u0027] for t in self.req(\u0027iscsi-portals\u0027)"},{"line_number":200,"context_line":"                         [\u0027iscsi-portals\u0027]]"},{"line_number":201,"context_line":"        # get a random portal"},{"line_number":202,"context_line":"        portal_name \u003d RANDOM.choice(iscsi_portals)"},{"line_number":203,"context_line":"        try:"},{"line_number":204,"context_line":"            portal \u003d self.req(\u0027iscsi-portals\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_e4406509","line":201,"in_reply_to":"da86d52c_1cf27206","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            self.cluster_id \u003d self.configuration.xtremio_cluster_id"},{"line_number":256,"context_line":"        else:"},{"line_number":257,"context_line":"            self.cluster_id \u003d 1"},{"line_number":258,"context_line":"        if hasattr(self.configuration, \u0027xtremio_max_provisioning_factor\u0027):"},{"line_number":259,"context_line":"            self.provisioning_factor \u003d (self.configuration."},{"line_number":260,"context_line":"                                        xtremio_max_provisioning_factor)"},{"line_number":261,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_9ce5823a","line":258,"updated":"2015-02-16 03:04:54.000000000","message":"See previous comment.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            self.cluster_id \u003d self.configuration.xtremio_cluster_id"},{"line_number":256,"context_line":"        else:"},{"line_number":257,"context_line":"            self.cluster_id \u003d 1"},{"line_number":258,"context_line":"        if hasattr(self.configuration, \u0027xtremio_max_provisioning_factor\u0027):"},{"line_number":259,"context_line":"            self.provisioning_factor \u003d (self.configuration."},{"line_number":260,"context_line":"                                        xtremio_max_provisioning_factor)"},{"line_number":261,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_07473b78","line":258,"in_reply_to":"da86d52c_9ce5823a","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                       \u0027driver_version\u0027: self.VERSION,"},{"line_number":346,"context_line":"                       \u0027storage_protocol\u0027: self.protocol,"},{"line_number":347,"context_line":"                       \u0027total_capacity_gb\u0027: max_prov_space,"},{"line_number":348,"context_line":"                       \u0027free_capacity_gb\u0027: max_prov_space - actual_prov,"},{"line_number":349,"context_line":"                       \u0027reserved_percentage\u0027: 0,"},{"line_number":350,"context_line":"                       \u0027QoS_support\u0027: False}"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_dcd1ba30","line":348,"updated":"2015-02-16 03:04:54.000000000","message":"total_capacity_gb should be the real total physical space and free_capacity_gb should be the real free physical space not written yet.  It seems that you are reporting the virtual capacities here. Virtual capacities will be calculated by the scheduler based on the real capacities you reported here and max_over_subscription_ratio which is configurable in cinder.conf.\n\nTo support over subscription, see how the LVM driver reports capacities:\nhttps://review.openstack.org/#/c/142171/27/cinder/volume/drivers/lvm.py\n\nYou need to report the following new parameters:\n\u0027provisioned_capacity_gb\u0027: actual_prov,\n\u0027max_over_subscription_ratio\u0027: \n                self.configuration.max_over_subscription_ratio,\n\u0027thin_provisioning_support\u0027: True,\n\u0027thick_provisioning_support\u0027: False,","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                       \u0027driver_version\u0027: self.VERSION,"},{"line_number":346,"context_line":"                       \u0027storage_protocol\u0027: self.protocol,"},{"line_number":347,"context_line":"                       \u0027total_capacity_gb\u0027: max_prov_space,"},{"line_number":348,"context_line":"                       \u0027free_capacity_gb\u0027: max_prov_space - actual_prov,"},{"line_number":349,"context_line":"                       \u0027reserved_percentage\u0027: 0,"},{"line_number":350,"context_line":"                       \u0027QoS_support\u0027: False}"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_c74c43a0","line":348,"in_reply_to":"da86d52c_dcd1ba30","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    def manage_existing(self, volume, existing_ref):"},{"line_number":361,"context_line":"        \"\"\"Manages an existing LV.\"\"\""},{"line_number":362,"context_line":"        lv_name \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":363,"context_line":"        # Attempt tp locate the volume."},{"line_number":364,"context_line":"        try:"},{"line_number":365,"context_line":"            vol_obj \u003d self.client.req(\u0027volumes\u0027, name\u003dlv_name)[\u0027content\u0027]"},{"line_number":366,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1cdc3246","line":363,"updated":"2015-02-16 03:04:54.000000000","message":"What is \u0027tp\u0027?  Do yo mean \u0027to\u0027?","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    def manage_existing(self, volume, existing_ref):"},{"line_number":361,"context_line":"        \"\"\"Manages an existing LV.\"\"\""},{"line_number":362,"context_line":"        lv_name \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":363,"context_line":"        # Attempt tp locate the volume."},{"line_number":364,"context_line":"        try:"},{"line_number":365,"context_line":"            vol_obj \u003d self.client.req(\u0027volumes\u0027, name\u003dlv_name)[\u0027content\u0027]"},{"line_number":366,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_e48145fc","line":363,"in_reply_to":"da86d52c_1cdc3246","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def manage_existing_get_size(self, volume, existing_ref):"},{"line_number":376,"context_line":"        \"\"\"Return size of an existing LV for manage_existing."},{"line_number":377,"context_line":"        \"\"\""},{"line_number":378,"context_line":"        # Check that the reference is valid"},{"line_number":379,"context_line":"        if \u0027source-name\u0027 not in existing_ref:"},{"line_number":380,"context_line":"            reason \u003d _(\u0027Reference must contain source-name element.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_bcec06f5","line":377,"updated":"2015-02-16 03:04:54.000000000","message":"Move \"\"\" to the end of the previous line.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def manage_existing_get_size(self, volume, existing_ref):"},{"line_number":376,"context_line":"        \"\"\"Return size of an existing LV for manage_existing."},{"line_number":377,"context_line":"        \"\"\""},{"line_number":378,"context_line":"        # Check that the reference is valid"},{"line_number":379,"context_line":"        if \u0027source-name\u0027 not in existing_ref:"},{"line_number":380,"context_line":"            reason \u003d _(\u0027Reference must contain source-name element.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_c48a8119","line":377,"in_reply_to":"da86d52c_bcec06f5","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":382,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dreason)"},{"line_number":383,"context_line":"        lv_name \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":384,"context_line":"        # Attempt tp locate the volume."},{"line_number":385,"context_line":"        try:"},{"line_number":386,"context_line":"            vol_obj \u003d self.client.req(\u0027volumes\u0027, name\u003dlv_name)[\u0027content\u0027]"},{"line_number":387,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_5cccea8a","line":384,"updated":"2015-02-16 03:04:54.000000000","message":"\u0027tp\u0027 means \u0027to\u0027 ?","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":382,"context_line":"                existing_ref\u003dexisting_ref, reason\u003dreason)"},{"line_number":383,"context_line":"        lv_name \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":384,"context_line":"        # Attempt tp locate the volume."},{"line_number":385,"context_line":"        try:"},{"line_number":386,"context_line":"            vol_obj \u003d self.client.req(\u0027volumes\u0027, name\u003dlv_name)[\u0027content\u0027]"},{"line_number":387,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_a4874d11","line":384,"in_reply_to":"da86d52c_5cccea8a","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            self.client.req(\u0027volumes\u0027, \u0027PUT\u0027, name\u003dvolume[\u0027id\u0027],"},{"line_number":402,"context_line":"                            data\u003d{\u0027vol-name\u0027: volume[\u0027name\u0027] + \u0027-unmanged\u0027})"},{"line_number":403,"context_line":"        except exception.NotFound:"},{"line_number":404,"context_line":"            pass"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":407,"context_line":"        \"\"\"Extend an existing volume\u0027s size.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_7c90ce4e","line":404,"updated":"2015-02-16 03:04:54.000000000","message":"Should log an info message here.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            self.client.req(\u0027volumes\u0027, \u0027PUT\u0027, name\u003dvolume[\u0027id\u0027],"},{"line_number":402,"context_line":"                            data\u003d{\u0027vol-name\u0027: volume[\u0027name\u0027] + \u0027-unmanged\u0027})"},{"line_number":403,"context_line":"        except exception.NotFound:"},{"line_number":404,"context_line":"            pass"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":407,"context_line":"        \"\"\"Extend an existing volume\u0027s size.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_649e3565","line":404,"in_reply_to":"da86d52c_7c90ce4e","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":407,"context_line":"        \"\"\"Extend an existing volume\u0027s size.\"\"\""},{"line_number":408,"context_line":"        data \u003d {\u0027vol-size\u0027: str(new_size) + \u0027g\u0027}"},{"line_number":409,"context_line":"        try:"},{"line_number":410,"context_line":"            self.client.req(\u0027volumes\u0027, \u0027PUT\u0027, data, name\u003dvolume[\u0027id\u0027])"},{"line_number":411,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_9c9d8269","line":408,"updated":"2015-02-16 03:04:54.000000000","message":"use six.text_type() instead of str().","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":407,"context_line":"        \"\"\"Extend an existing volume\u0027s size.\"\"\""},{"line_number":408,"context_line":"        data \u003d {\u0027vol-size\u0027: str(new_size) + \u0027g\u0027}"},{"line_number":409,"context_line":"        try:"},{"line_number":410,"context_line":"            self.client.req(\u0027volumes\u0027, \u0027PUT\u0027, data, name\u003dvolume[\u0027id\u0027])"},{"line_number":411,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_c4060185","line":408,"in_reply_to":"da86d52c_9c9d8269","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5bee70d408aed3258f1a89a8fbafdd5b9a5771db","unresolved":false,"context_lines":[{"line_number":426,"context_line":""},{"line_number":427,"context_line":"            lm_name \u003d \u0027%s_%s_%s\u0027 % (str(vol[\u0027index\u0027]),"},{"line_number":428,"context_line":"                                    str(ig[\u0027index\u0027]) if ig else \u0027any\u0027,"},{"line_number":429,"context_line":"                                    str(tg[\u0027index\u0027]))"},{"line_number":430,"context_line":"            LOG.info(_LI(\u0027removing lun map %s\u0027), lm_name)"},{"line_number":431,"context_line":"            self.client.req(\u0027lun-maps\u0027, \u0027DELETE\u0027, name\u003dlm_name)"},{"line_number":432,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1c8192fb","line":429,"updated":"2015-02-16 03:04:54.000000000","message":"Please use six.text_type() instead of str().","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":426,"context_line":""},{"line_number":427,"context_line":"            lm_name \u003d \u0027%s_%s_%s\u0027 % (str(vol[\u0027index\u0027]),"},{"line_number":428,"context_line":"                                    str(ig[\u0027index\u0027]) if ig else \u0027any\u0027,"},{"line_number":429,"context_line":"                                    str(tg[\u0027index\u0027]))"},{"line_number":430,"context_line":"            LOG.info(_LI(\u0027removing lun map %s\u0027), lm_name)"},{"line_number":431,"context_line":"            self.client.req(\u0027lun-maps\u0027, \u0027DELETE\u0027, name\u003dlm_name)"},{"line_number":432,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_e4fdc56f","line":429,"in_reply_to":"da86d52c_1c8192fb","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"fa6f10edb0ffe24a96359c6f017066948995a46f","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            lm_name \u003d \u0027%s_%s_%s\u0027 % (str(vol[\u0027index\u0027]),"},{"line_number":428,"context_line":"                                    str(ig[\u0027index\u0027]) if ig else \u0027any\u0027,"},{"line_number":429,"context_line":"                                    str(tg[\u0027index\u0027]))"},{"line_number":430,"context_line":"            LOG.info(_LI(\u0027removing lun map %s\u0027), lm_name)"},{"line_number":431,"context_line":"            self.client.req(\u0027lun-maps\u0027, \u0027DELETE\u0027, name\u003dlm_name)"},{"line_number":432,"context_line":"        except exception.NotFound:"},{"line_number":433,"context_line":"            LOG.warning(_LW(\"terminate_connection: lun map not found\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_c85d7517","line":430,"updated":"2015-02-15 23:21:13.000000000","message":"is the operator really going to know what the lun map means here? If not, please change the level to debug.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            lm_name \u003d \u0027%s_%s_%s\u0027 % (str(vol[\u0027index\u0027]),"},{"line_number":428,"context_line":"                                    str(ig[\u0027index\u0027]) if ig else \u0027any\u0027,"},{"line_number":429,"context_line":"                                    str(tg[\u0027index\u0027]))"},{"line_number":430,"context_line":"            LOG.info(_LI(\u0027removing lun map %s\u0027), lm_name)"},{"line_number":431,"context_line":"            self.client.req(\u0027lun-maps\u0027, \u0027DELETE\u0027, name\u003dlm_name)"},{"line_number":432,"context_line":"        except exception.NotFound:"},{"line_number":433,"context_line":"            LOG.warning(_LW(\"terminate_connection: lun map not found\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_442051f8","line":430,"in_reply_to":"da86d52c_c85d7517","updated":"2015-02-18 07:52:42.000000000","message":"Done","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"fa6f10edb0ffe24a96359c6f017066948995a46f","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            LOG.info(_LI(\u0027removing lun map %s\u0027), lm_name)"},{"line_number":431,"context_line":"            self.client.req(\u0027lun-maps\u0027, \u0027DELETE\u0027, name\u003dlm_name)"},{"line_number":432,"context_line":"        except exception.NotFound:"},{"line_number":433,"context_line":"            LOG.warning(_LW(\"terminate_connection: lun map not found\"))"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    def _get_password(self):"},{"line_number":436,"context_line":"        return \u0027\u0027.join(RANDOM.choice"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_e89959d1","line":433,"updated":"2015-02-15 23:21:13.000000000","message":"same as above.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"16eb7d891c9ee2a3ae68f6a74b71b6cc08d3cf9f","unresolved":false,"context_lines":[{"line_number":430,"context_line":"            LOG.info(_LI(\u0027removing lun map %s\u0027), lm_name)"},{"line_number":431,"context_line":"            self.client.req(\u0027lun-maps\u0027, \u0027DELETE\u0027, name\u003dlm_name)"},{"line_number":432,"context_line":"        except exception.NotFound:"},{"line_number":433,"context_line":"            LOG.warning(_LW(\"terminate_connection: lun map not found\"))"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    def _get_password(self):"},{"line_number":436,"context_line":"        return \u0027\u0027.join(RANDOM.choice"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_a4c66d14","line":433,"in_reply_to":"da86d52c_e89959d1","updated":"2015-02-18 07:52:42.000000000","message":"this is an attempt to unmap a connection that already isn\u0027t there, I would like to float this error. as there is a logical problem.","commit_id":"a02e149e6fb37c06251092be5c4607949eb12e45"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"af17b0bd4dca0de6b8b44b51b35db66dc0784dcb","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    cfg.StrOpt(\u0027xtremio_cluster_name\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":54,"context_line":"               help\u003d\u0027XMS cluster id in multi-cluster environment\u0027),"},{"line_number":55,"context_line":"    cfg.FloatOpt(\u0027xtremio_provisioning_factor\u0027,"},{"line_number":56,"context_line":"                 default\u003dDEFAULT_PROVISIONING_FACTOR,"},{"line_number":57,"context_line":"                 help\u003d\u0027Maximum factor between physical capacity to alowed\u0027"},{"line_number":58,"context_line":"                 \u0027 provisioned space, defaults to is %d\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_8015b141","line":55,"updated":"2015-02-24 22:08:38.000000000","message":"I talked to Mike about this. The default value of 2.0 for max_over_subscription_ratio seems to be too low. I\u0027m going to change the default to 20. Please remove this option and use max_over_subscription_ratio directly.","commit_id":"bfb07e161def810fdcae1476b9c172eb3667f662"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"d683ab2c8516e4ce6375ac8ef58dee2be39bf886","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    cfg.StrOpt(\u0027xtremio_cluster_name\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":54,"context_line":"               help\u003d\u0027XMS cluster id in multi-cluster environment\u0027),"},{"line_number":55,"context_line":"    cfg.FloatOpt(\u0027xtremio_provisioning_factor\u0027,"},{"line_number":56,"context_line":"                 default\u003dDEFAULT_PROVISIONING_FACTOR,"},{"line_number":57,"context_line":"                 help\u003d\u0027Maximum factor between physical capacity to alowed\u0027"},{"line_number":58,"context_line":"                 \u0027 provisioned space, defaults to is %d\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_fcad18ea","line":55,"in_reply_to":"ba7be1f8_8015b141","updated":"2015-02-25 15:57:56.000000000","message":"Done","commit_id":"bfb07e161def810fdcae1476b9c172eb3667f662"},{"author":{"_account_id":12535,"name":"Yaniv Kaul","email":"yaniv.kaul@emc.com","username":"yanivk"},"change_message_id":"e9e106f021eb665a6313730f093524e7d4c1c4a2","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            self.client.req(\u0027volumes\u0027, \u0027PUT\u0027, name\u003dvolume[\u0027id\u0027],"},{"line_number":416,"context_line":"                            data\u003d{\u0027vol-name\u0027: volume[\u0027name\u0027] + \u0027-unmanged\u0027})"},{"line_number":417,"context_line":"        except exception.NotFound:"},{"line_number":418,"context_line":"            LOG.info(_LI(\"Volume with the name %s wan\u0027t found, can\u0027t unmange\"),"},{"line_number":419,"context_line":"                     volume[\u0027id\u0027])"},{"line_number":420,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvolume[\u0027id\u0027])"},{"line_number":421,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_1f7be57b","line":418,"updated":"2015-02-24 19:43:30.000000000","message":"wan\u0027t -\u003e wasn\u0027t\nunmange -\u003e unmanage","commit_id":"bfb07e161def810fdcae1476b9c172eb3667f662"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"d683ab2c8516e4ce6375ac8ef58dee2be39bf886","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            self.client.req(\u0027volumes\u0027, \u0027PUT\u0027, name\u003dvolume[\u0027id\u0027],"},{"line_number":416,"context_line":"                            data\u003d{\u0027vol-name\u0027: volume[\u0027name\u0027] + \u0027-unmanged\u0027})"},{"line_number":417,"context_line":"        except exception.NotFound:"},{"line_number":418,"context_line":"            LOG.info(_LI(\"Volume with the name %s wan\u0027t found, can\u0027t unmange\"),"},{"line_number":419,"context_line":"                     volume[\u0027id\u0027])"},{"line_number":420,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dvolume[\u0027id\u0027])"},{"line_number":421,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba7be1f8_fc499831","line":418,"in_reply_to":"ba7be1f8_1f7be57b","updated":"2015-02-25 15:57:56.000000000","message":"Done","commit_id":"bfb07e161def810fdcae1476b9c172eb3667f662"}]}
