)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f54d84b30569aad84df9eef13ccf6952336bc798","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Peter Pentchev \u003copenstack-dev@storpool.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-12-12 13:52:46 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add the Nova StorPool attachment driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":10,"context_line":"Implements: blueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_332ec3a5","line":7,"updated":"2014-12-15 07:20:34.000000000","message":"Please add a prefix libvirt:\n\nCan you add a little meat to the commit message explaing what the SP driver is so that the layman can understand.\n\nIn addition to this it looks like the commit message is missing a BP - I think that adding a new driver should at least have a BP","commit_id":"0b0b9dbc587ae9735680859e0c9ffa66d89769f0"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"0dce729ffdbb326891a636ae23ba7d984f43393d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Peter Pentchev \u003copenstack-dev@storpool.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-12-12 13:52:46 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add the Nova StorPool attachment driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":10,"context_line":"Implements: blueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_bfa50da3","line":7,"in_reply_to":"3a961159_332ec3a5","updated":"2014-12-15 13:23:10.000000000","message":"The prefix and a brief description was added in patchset 3, thanks!\n\nHowever, I really do not understand what you mean about the blueprint - isn\u0027t the \"Implements: blueprint...\" line immediately after the \"Change-Id\" enough?  We do indeed have a BP, including a spec pending approval at https://review.openstack.org/#/c/115716/","commit_id":"0b0b9dbc587ae9735680859e0c9ffa66d89769f0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f54d84b30569aad84df9eef13ccf6952336bc798","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add the Nova StorPool attachment driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":10,"context_line":"Implements: blueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_731beb80","line":9,"updated":"2014-12-15 07:20:34.000000000","message":"Missing DocImpact","commit_id":"0b0b9dbc587ae9735680859e0c9ffa66d89769f0"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"0dce729ffdbb326891a636ae23ba7d984f43393d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add the Nova StorPool attachment driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":10,"context_line":"Implements: blueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_dff57983","line":9,"in_reply_to":"3a961159_731beb80","updated":"2014-12-15 13:23:10.000000000","message":"Right, added a DocImpact line with no contents in patchset 3.  I\u0027m not quite sure which pieces of documentation exactly mention the various volume drivers, though, so I could not provide guidelines here; a couple of quick searches on docs.openstack.org only came up with a couple of places where this option is mentioned as new in IceHouse and also a couple of reference lists for all the possible configuration options.","commit_id":"0b0b9dbc587ae9735680859e0c9ffa66d89769f0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"124648e904a48318a7862e13ede8bf29a878703a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This driver allows StorPool volumes defined in Cinder to be attached as"},{"line_number":21,"context_line":"additional disks to a virtual machine."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"DocImpact"},{"line_number":24,"context_line":"Change-Id:\tI3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":25,"context_line":"Implements:\tblueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a7b0d38_dd592990","line":22,"updated":"2015-12-22 20:48:20.000000000","message":"The nova change needs to depend on the os-brick change, which is:\n\nhttps://review.openstack.org/#/c/192639/\n\nSo you could add:\n\nDepends-On: I33cfd7ab9a1d201f6c49357cacb4a809453b7201\n\nBut we\u0027d still need nova to require a minimum version of os-brick that has that change, and it looks like that change is waiting for StorPool CI results.","commit_id":"397e954c546a82e0b3374eee87b604f19d3f7673"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"124648e904a48318a7862e13ede8bf29a878703a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"This driver allows StorPool volumes defined in Cinder to be attached as"},{"line_number":21,"context_line":"additional disks to a virtual machine."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"DocImpact"},{"line_number":24,"context_line":"Change-Id:\tI3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":25,"context_line":"Implements:\tblueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1a7b0d38_9d6de134","line":23,"updated":"2015-12-22 20:48:20.000000000","message":"What is the DocImpact? Just add a release note to the change with a feature note that there is a new storpool driver for libvirt volumes.","commit_id":"397e954c546a82e0b3374eee87b604f19d3f7673"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7c27e5468b1566498678100e3118f40fcb0b37da","unresolved":false,"context_lines":[{"line_number":23,"context_line":"DocImpact"},{"line_number":24,"context_line":"Change-Id:\tI3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":25,"context_line":"Implements:\tblueprint libvirt-storpool-volume-attach"},{"line_number":26,"context_line":"Depends-On:\tI33cfd7ab9a1d201f6c49357cacb4a809453b7201"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"9f91af0f_91a148fb","line":26,"updated":"2018-01-08 20:31:25.000000000","message":"This is now in os-brick but you need to push a patch to the openstack/requirements repo to raise the minimum required version of os-brick to be 2.2.0:\n\nhttps://github.com/openstack/requirements/blob/master/global-requirements.txt#L156","commit_id":"09399fe146ac4a648bc1df394c9606d46e20f93f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"This driver allows StorPool volumes defined in Cinder to be attached as"},{"line_number":21,"context_line":"additional disks to a virtual machine."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"DocImpact"},{"line_number":24,"context_line":"Change-Id:\tI3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":25,"context_line":"Implements:\tblueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7f96bb07_b0a27999","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":9},"updated":"2018-01-23 20:52:48.000000000","message":"This can be removed as it will generate a bug report against nova and we wouldn\u0027t have anything to document for this outside of the nova repo, so far as I can tell. If you want to just document that this release contains the ability to attach storpool volumes to qemu-backed instances, then that would be sufficient to do in a release note in this change itself, which you\u0027ve already done so I\u0027d just remove this tag.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"This driver allows StorPool volumes defined in Cinder to be attached as"},{"line_number":21,"context_line":"additional disks to a virtual machine."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"DocImpact"},{"line_number":24,"context_line":"Change-Id:\tI3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":25,"context_line":"Implements:\tblueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7f96bb07_461d7b71","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":9},"in_reply_to":"7f96bb07_b0a27999","updated":"2018-01-23 22:09:51.000000000","message":"Done","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"additional disks to a virtual machine."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"DocImpact"},{"line_number":24,"context_line":"Change-Id:\tI3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":25,"context_line":"Implements:\tblueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7f96bb07_70acf18b","line":24,"range":{"start_line":24,"start_character":10,"end_line":24,"end_character":11},"updated":"2018-01-23 20:52:48.000000000","message":"egad tabs","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"additional disks to a virtual machine."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"DocImpact"},{"line_number":24,"context_line":"Change-Id:\tI3d40009eb17d054f33b3ed641643e285ba094ec2"},{"line_number":25,"context_line":"Implements:\tblueprint libvirt-storpool-volume-attach"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7f96bb07_6607571e","line":24,"range":{"start_line":24,"start_character":10,"end_line":24,"end_character":11},"in_reply_to":"7f96bb07_70acf18b","updated":"2018-01-23 22:09:51.000000000","message":"Sorry, a habit from some other large open-source projects :)  I\u0027d removed them from my other OpenStack patches, forgot to touch this one up.  Removed.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"}],"nova/tests/unit/virt/libvirt/test_storpool.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7e53691a8a35d6a8a37392b80fb523851f9989d1","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        self.driver.disconnect_volume({\u0027serial\u0027: \u00272\u0027}, None)"},{"line_number":149,"context_line":"        self.assertDictEqual({}, requests)"},{"line_number":150,"context_line":"        self.assertDictEqual({}, attached)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_7d35bc43","line":150,"updated":"2015-01-15 12:05:43.000000000","message":"I\u0027d also expect this in test_volume.py","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"6f6745bc7b665c71cd8b7a488f802c630660593a","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        self.driver.disconnect_volume({\u0027serial\u0027: \u00272\u0027}, None)"},{"line_number":149,"context_line":"        self.assertDictEqual({}, requests)"},{"line_number":150,"context_line":"        self.assertDictEqual({}, attached)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_e932ec5d","line":150,"in_reply_to":"3a961159_7d35bc43","updated":"2015-01-24 13:14:39.000000000","message":"Done in patchset 6, although it took some, uh, \"artistry\" (read: gross hacks galore) to get rid of the additional top-level functions, classes and variables, move them all into the LibvirtVolumeTestCase and keep the changes as local as possible.  I think it was worth it in the end, though - thanks for pointing that out, it was indeed reasonable.","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"}],"nova/tests/unit/virt/libvirt/test_volume.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"3484df822994ce71a9113afb807c5b0eae53a48d","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"        self.assertDictEqual({"},{"line_number":1750,"context_line":"            self.storpoolVolumeName(n): True for n in names"},{"line_number":1751,"context_line":"        }, storpool.test_attached)"},{"line_number":1752,"context_line":""},{"line_number":1753,"context_line":"    @mock_storpool"},{"line_number":1754,"context_line":"    @mock_storpool_get_config"},{"line_number":1755,"context_line":"    def test_storpool_config(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_a3097634","line":1752,"updated":"2015-02-13 11:23:43.000000000","message":"Looking at this, I can\u0027t help wondering if we\u0027re not better off creating a \u0027fakestorpool.py\u0027 class that just replicates the storpool python API, and a FakeStorePoolFixture class that monkeypatches spopenstack.AttachDB API to return the fakestorpool class. eg the same way that we use fakelibvirt.py and FakeLibvirtFixture in the tests. That\u0027s almost what you\u0027ve done here anyway, but it is a little hairy inline here i think.","commit_id":"0cabea5a823299d3c5a76a3f6cfc9bddd888c648"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"3e6867c31e77fd3b0dd180da0cf4f9d1eb178c6a","unresolved":false,"context_lines":[{"line_number":1749,"context_line":"        self.assertDictEqual({"},{"line_number":1750,"context_line":"            self.storpoolVolumeName(n): True for n in names"},{"line_number":1751,"context_line":"        }, storpool.test_attached)"},{"line_number":1752,"context_line":""},{"line_number":1753,"context_line":"    @mock_storpool"},{"line_number":1754,"context_line":"    @mock_storpool_get_config"},{"line_number":1755,"context_line":"    def test_storpool_config(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_76c9f177","line":1752,"in_reply_to":"da86d52c_a3097634","updated":"2015-07-13 14:55:17.000000000","message":"Hmm, this does sound sensible and it would match the way fakelibvirt.py works; there is just one problem: are you saying that we should make the Nova testsuite depend on the external, third-party (maintained by StorPool, but still) Python module storpool.spopenstack?  I\u0027m not saying that I do not kind of enjoy the mental image of having the storpool and storpool.spopenstack modules be part of OpenStack\u0027s global requirements, but, well, I can kind of imagine that this might not really happen so easily :)\n\nIs this what you meant?  Or do you mean that we should also implement a fake storpool.spopenstack.AttachDB in addition to the fake storpool.spapi.Api?","commit_id":"0cabea5a823299d3c5a76a3f6cfc9bddd888c648"}],"nova/tests/unit/virt/libvirt/volume/test_storpool.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self.inst \u003d inst"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def factory(self, proto, helper):"},{"line_number":71,"context_line":"        self.inst.assertEqual(proto, \u0027STORPOOL\u0027)"},{"line_number":72,"context_line":"        self.inst.assertIsNotNone(helper)"},{"line_number":73,"context_line":"        return MockStorPoolConnector(self.inst)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_2bd27a5d","line":71,"range":{"start_line":71,"start_character":37,"end_line":71,"end_character":47},"updated":"2018-01-23 20:52:48.000000000","message":"Seems you should compare to the constant from the os-brick library.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self.inst \u003d inst"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def factory(self, proto, helper):"},{"line_number":71,"context_line":"        self.inst.assertEqual(proto, \u0027STORPOOL\u0027)"},{"line_number":72,"context_line":"        self.inst.assertIsNotNone(helper)"},{"line_number":73,"context_line":"        return MockStorPoolConnector(self.inst)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_8602a30a","line":71,"range":{"start_line":71,"start_character":37,"end_line":71,"end_character":47},"in_reply_to":"7f96bb07_2bd27a5d","updated":"2018-01-23 22:09:51.000000000","message":"Done","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        return MockStorPoolConnector(self.inst)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LibvirtStorPoolVolumeDriverTestCase("},{"line_number":77,"context_line":"        test_volume.LibvirtVolumeBaseTestCase):"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def mock_storpool(f):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_eb40120a","line":76,"range":{"start_line":76,"start_character":6,"end_line":76,"end_character":41},"updated":"2018-01-23 20:52:48.000000000","message":"You don\u0027t have a unit test for extend_volume.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        return MockStorPoolConnector(self.inst)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class LibvirtStorPoolVolumeDriverTestCase("},{"line_number":77,"context_line":"        test_volume.LibvirtVolumeBaseTestCase):"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def mock_storpool(f):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_8812b157","line":76,"range":{"start_line":76,"start_character":6,"end_line":76,"end_character":41},"in_reply_to":"7f96bb07_eb40120a","updated":"2018-01-23 22:09:51.000000000","message":"Done","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def assertStorpoolAttached(self, names):"},{"line_number":92,"context_line":"        self.assertListEqual(sorted(test_attached.keys()), sorted(names))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def conn_info(self, volume):"},{"line_number":95,"context_line":"        return {"},{"line_number":96,"context_line":"            \u0027data\u0027: {"},{"line_number":97,"context_line":"                \u0027access_mode\u0027: \u0027rw\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_6bbf22fb","line":94,"range":{"start_line":94,"start_character":24,"end_line":94,"end_character":30},"updated":"2018-01-23 20:52:48.000000000","message":"nit: volume_id or similar would be more clear.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def assertStorpoolAttached(self, names):"},{"line_number":92,"context_line":"        self.assertListEqual(sorted(test_attached.keys()), sorted(names))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def conn_info(self, volume):"},{"line_number":95,"context_line":"        return {"},{"line_number":96,"context_line":"            \u0027data\u0027: {"},{"line_number":97,"context_line":"                \u0027access_mode\u0027: \u0027rw\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_0828e183","line":94,"range":{"start_line":94,"start_character":24,"end_line":94,"end_character":30},"in_reply_to":"7f96bb07_6bbf22fb","updated":"2018-01-23 22:09:51.000000000","message":"Done","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    \u0027veritas_hyperscale\u003d\u0027"},{"line_number":172,"context_line":"        \u0027nova.virt.libvirt.volume.vrtshyperscale.\u0027"},{"line_number":173,"context_line":"        \u0027LibvirtHyperScaleVolumeDriver\u0027,"},{"line_number":174,"context_line":"    \u0027storpool\u003dnova.virt.libvirt.volume.storpool.LibvirtStorPoolVolumeDriver\u0027,"},{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_d0cb8547","line":174,"range":{"start_line":174,"start_character":5,"end_line":174,"end_character":13},"updated":"2018-01-23 20:52:48.000000000","message":"Yup it matches the cinder backend:\n\nhttps://review.openstack.org/#/c/220155/12/cinder/volume/drivers/storpool.py@158","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"}],"nova/virt/libvirt/sp.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f54d84b30569aad84df9eef13ccf6952336bc798","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                                                       is_block_dev\u003dTrue)"},{"line_number":37,"context_line":"        self._attach \u003d spopenstack.AttachDB(log\u003dLOG)"},{"line_number":38,"context_line":"        self._attach.api()"},{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def get_config(self, connection_info, disk_info):"},{"line_number":42,"context_line":"        \"\"\"Returns xml for libvirt.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_f360bb02","line":39,"updated":"2014-12-15 07:20:34.000000000","message":"why pass?","commit_id":"0b0b9dbc587ae9735680859e0c9ffa66d89769f0"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"0dce729ffdbb326891a636ae23ba7d984f43393d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                                                       is_block_dev\u003dTrue)"},{"line_number":37,"context_line":"        self._attach \u003d spopenstack.AttachDB(log\u003dLOG)"},{"line_number":38,"context_line":"        self._attach.api()"},{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def get_config(self, connection_info, disk_info):"},{"line_number":42,"context_line":"        \"\"\"Returns xml for libvirt.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_9f37714c","line":39,"in_reply_to":"3a961159_f360bb02","updated":"2014-12-15 13:23:10.000000000","message":"Oof, yes, this was left over from an initial do-nothing attempt that, well, did not really work since it did nothing :)  Thanks, removed in patchset 3.","commit_id":"0b0b9dbc587ae9735680859e0c9ffa66d89769f0"}],"nova/virt/libvirt/storpool.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7e53691a8a35d6a8a37392b80fb523851f9989d1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Attach StorPool-backed Cinder volumes to Nova virtual machines."},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from __future__ import absolute_import"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo.utils import importutils"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_7d993c6c","line":21,"updated":"2015-01-15 12:05:43.000000000","message":"I\u0027m not seeing any obvious need for this \u0026 we don\u0027t do it elsewhere in Nova AFAIK","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"6f6745bc7b665c71cd8b7a488f802c630660593a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Attach StorPool-backed Cinder volumes to Nova virtual machines."},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from __future__ import absolute_import"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo.utils import importutils"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_09349848","line":21,"in_reply_to":"3a961159_7d993c6c","updated":"2015-01-24 13:14:39.000000000","message":"Yeah, well, it was actually needed because a couple of lines further down there was an \"from storpool import spopenstack\" and since *this* file was named storpool.py, Python did not even bother looking at the top-level \"storpool\" namespace to get the real StorPool API bindings (available from PyPI as storpool and storpool.spopenstack).  Now that the code is moved into virt/libvirt/volume.py in patchset 6, this is no longer necessary.","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7e53691a8a35d6a8a37392b80fb523851f9989d1","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class LibvirtStorPoolVolumeDriver("},{"line_number":36,"context_line":"    nova.virt.libvirt.volume.LibvirtBaseVolumeDriver):"},{"line_number":37,"context_line":"    def __init__(self, connection):"},{"line_number":38,"context_line":"        super(LibvirtStorPoolVolumeDriver, self).__init__(connection,"},{"line_number":39,"context_line":"                                                       is_block_dev\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_1d03d876","line":36,"updated":"2015-01-15 12:05:43.000000000","message":"Don\u0027t you need to list this class in the  volume_drivers config parameter in driver.py, otherwise nothing will be setup to use this new class out of the box.","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"6f6745bc7b665c71cd8b7a488f802c630660593a","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class LibvirtStorPoolVolumeDriver("},{"line_number":36,"context_line":"    nova.virt.libvirt.volume.LibvirtBaseVolumeDriver):"},{"line_number":37,"context_line":"    def __init__(self, connection):"},{"line_number":38,"context_line":"        super(LibvirtStorPoolVolumeDriver, self).__init__(connection,"},{"line_number":39,"context_line":"                                                       is_block_dev\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_29395441","line":36,"in_reply_to":"3a961159_1d03d876","updated":"2015-01-24 13:14:39.000000000","message":"Well, it was still usable if the operator set libvirt_volume_drivers in nova.conf, but, yes, it\u0027s better to add it to driver.py indeed, thanks.  Done in patchset 6.","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7e53691a8a35d6a8a37392b80fb523851f9989d1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        req_id \u003d \u0027nova-attach--{id}\u0027.format(id\u003dvolume_id)"},{"line_number":69,"context_line":"        name \u003d self._attach.volumeName(volume_id)"},{"line_number":70,"context_line":"        self._attach.sync(req_id, name)"},{"line_number":71,"context_line":"        self._attach.remove(req_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_bdc9e47a","line":71,"updated":"2015-01-15 12:05:43.000000000","message":"Historically we\u0027ve put all volume drivers in the same volume.py file. Although that is getting a little large, I think having consistency is more important right now.  When we split that file up, we should do so for all drivers at once, and will probably put them into a subdirectory too.","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"6f6745bc7b665c71cd8b7a488f802c630660593a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        req_id \u003d \u0027nova-attach--{id}\u0027.format(id\u003dvolume_id)"},{"line_number":69,"context_line":"        name \u003d self._attach.volumeName(volume_id)"},{"line_number":70,"context_line":"        self._attach.sync(req_id, name)"},{"line_number":71,"context_line":"        self._attach.remove(req_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a930d6b_494140a8","line":71,"in_reply_to":"3a961159_bdc9e47a","updated":"2015-01-24 13:14:39.000000000","message":"Right, we developed it as a separate file for minimal changes and ease of test installations (easier to just drop a file into an existing OpenStack setup), but you\u0027re right, it makes more sense for it to be in there with the rest of the drivers.  Done in patchset 6.","commit_id":"0064b3316776119efff34b74b7ea329948fb197d"}],"nova/virt/libvirt/volume/storpool.py":[{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"81ea4e34be5b3c9fcd2257656b6eac9b85d9f7b0","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def __init__(self, connection):"},{"line_number":29,"context_line":"        super(LibvirtStorPoolVolumeDriver, self).__init__(connection,"},{"line_number":30,"context_line":"                                                       is_block_dev\u003dTrue)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        self.connector \u003d connector.InitiatorConnector.factory("},{"line_number":33,"context_line":"            \u0027STORPOOL\u0027, utils._get_root_helper())"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_a52f6b87","line":30,"updated":"2015-08-14 05:12:23.000000000","message":"Since you are passing is_block_dev\u003dTrue, you could rather use LibvirtVolumeDriver as the base class instead of LibvirtBaseVolumeDriver ?","commit_id":"8e62068202808aba84a4eb7788651beefa7ad6c1"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"81ea4e34be5b3c9fcd2257656b6eac9b85d9f7b0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        conf \u003d super(LibvirtStorPoolVolumeDriver, self).get_config("},{"line_number":38,"context_line":"            connection_info, disk_info)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        conf.source_type \u003d \u0027block\u0027"},{"line_number":41,"context_line":"        conf.source_path \u003d connection_info[\u0027data\u0027][\u0027device_path\u0027]"},{"line_number":42,"context_line":"        return conf"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_0555fff8","line":40,"updated":"2015-08-14 05:12:23.000000000","message":"If you agree to above, then this is not needed as LibvirtVolumeDriver defaults to using source_type \u003d block","commit_id":"8e62068202808aba84a4eb7788651beefa7ad6c1"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"81ea4e34be5b3c9fcd2257656b6eac9b85d9f7b0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        LOG.debug(\"Attached StorPool volume %s.\", device_info)"},{"line_number":48,"context_line":"        connection_info[\u0027data\u0027][\u0027device_path\u0027] \u003d device_info[\u0027path\u0027]"},{"line_number":49,"context_line":"        return self.get_config(connection_info, disk_info)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def disconnect_volume(self, connection_info, disk_dev):"},{"line_number":52,"context_line":"        LOG.debug(\"Disconnecting StorPool volume %s (%s)\","},{"line_number":53,"context_line":"                  disk_dev, connection_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_6502c30b","line":50,"updated":"2015-08-14 05:12:23.000000000","message":"I don\u0027t think you need to return anything from connect_volume, the last line is not needed IMHO","commit_id":"8e62068202808aba84a4eb7788651beefa7ad6c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class LibvirtStorPoolVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver):"},{"line_number":27,"context_line":"    \"\"\"Driver to attach StorPool volumes to libvirt.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, host):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_301ae97c","line":26,"range":{"start_line":26,"start_character":49,"end_line":26,"end_character":72},"updated":"2018-01-23 20:52:48.000000000","message":"If you extend LibvirtVolumeDriver, then you don\u0027t need to implement get_config because they are the exact same.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class LibvirtStorPoolVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver):"},{"line_number":27,"context_line":"    \"\"\"Driver to attach StorPool volumes to libvirt.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, host):"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_a8368de6","line":26,"range":{"start_line":26,"start_character":49,"end_line":26,"end_character":72},"in_reply_to":"7f96bb07_301ae97c","updated":"2018-01-23 22:09:51.000000000","message":"Hey look, a shiny new thing to play with that saves work!  A shiny new thing from, erm, well, 2013... *crawls off into a corner*\n\nDone, removed the get_config() method, and also see below.  Thanks!","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \"\"\"Driver to attach StorPool volumes to libvirt.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, host):"},{"line_number":30,"context_line":"        super(LibvirtStorPoolVolumeDriver, self).__init__(host,"},{"line_number":31,"context_line":"                                                       is_block_dev\u003dTrue)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self.connector \u003d connector.InitiatorConnector.factory("},{"line_number":34,"context_line":"            initiator.STORPOOL, utils.get_root_helper())"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_504f7591","line":31,"range":{"start_line":30,"start_character":58,"end_line":31,"end_character":72},"updated":"2018-01-23 20:52:48.000000000","message":"nit: alignment is a bit ugly here","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \"\"\"Driver to attach StorPool volumes to libvirt.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, host):"},{"line_number":30,"context_line":"        super(LibvirtStorPoolVolumeDriver, self).__init__(host,"},{"line_number":31,"context_line":"                                                       is_block_dev\u003dTrue)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self.connector \u003d connector.InitiatorConnector.factory("},{"line_number":34,"context_line":"            initiator.STORPOOL, utils.get_root_helper())"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_c8567907","line":31,"range":{"start_line":30,"start_character":58,"end_line":31,"end_character":72},"in_reply_to":"7f96bb07_504f7591","updated":"2018-01-23 22:09:51.000000000","message":"Yeah, with the switch to LibvirtVolumeDriver this argument actually went away whatsoever... but I\u0027m still not sure how I\u0027d missed it, and I\u0027m pretty sure I\u0027d run pep8 and flake8 on these files.  Interesting, will need to experiment.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def connect_volume(self, connection_info, instance):"},{"line_number":46,"context_line":"        LOG.debug(\"Attaching a StorPool volume: %s.\","},{"line_number":47,"context_line":"                  connection_info, instance\u003dinstance)"},{"line_number":48,"context_line":"        device_info \u003d self.connector.connect_volume(connection_info[\u0027data\u0027])"},{"line_number":49,"context_line":"        LOG.debug(\"Attached StorPool volume %s.\","},{"line_number":50,"context_line":"                  device_info, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_4b02660b","line":47,"range":{"start_line":47,"start_character":18,"end_line":47,"end_character":33},"updated":"2018-01-23 20:52:48.000000000","message":"This can contain credentials in it so you shouldn\u0027t log this entire dict. You could pull the volume ID out of it though or some other type of identifier.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def connect_volume(self, connection_info, instance):"},{"line_number":46,"context_line":"        LOG.debug(\"Attaching a StorPool volume: %s.\","},{"line_number":47,"context_line":"                  connection_info, instance\u003dinstance)"},{"line_number":48,"context_line":"        device_info \u003d self.connector.connect_volume(connection_info[\u0027data\u0027])"},{"line_number":49,"context_line":"        LOG.debug(\"Attached StorPool volume %s.\","},{"line_number":50,"context_line":"                  device_info, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_6845e542","line":47,"range":{"start_line":47,"start_character":18,"end_line":47,"end_character":33},"in_reply_to":"7f96bb07_4b02660b","updated":"2018-01-23 22:09:51.000000000","message":"Good point, now only logging the volume ID.  Thanks.","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7dd9e50d149472b63bed9862b48b4159f123be0d","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def disconnect_volume(self, connection_info, instance):"},{"line_number":54,"context_line":"        LOG.debug(\"Disconnecting StorPool volume %s\","},{"line_number":55,"context_line":"                  connection_info, instance\u003dinstance)"},{"line_number":56,"context_line":"        self.connector.disconnect_volume(connection_info[\u0027data\u0027], None)"},{"line_number":57,"context_line":"        LOG.debug(\"Disconnected StorPool volume\", instance\u003dinstance)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_4b50260b","line":55,"range":{"start_line":55,"start_character":18,"end_line":55,"end_character":33},"updated":"2018-01-23 20:52:48.000000000","message":"same","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"e528ffe995ddc90fe458b4629c4642b91ac8d4f3","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def disconnect_volume(self, connection_info, instance):"},{"line_number":54,"context_line":"        LOG.debug(\"Disconnecting StorPool volume %s\","},{"line_number":55,"context_line":"                  connection_info, instance\u003dinstance)"},{"line_number":56,"context_line":"        self.connector.disconnect_volume(connection_info[\u0027data\u0027], None)"},{"line_number":57,"context_line":"        LOG.debug(\"Disconnected StorPool volume\", instance\u003dinstance)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_0876a1a5","line":55,"range":{"start_line":55,"start_character":18,"end_line":55,"end_character":33},"in_reply_to":"7f96bb07_4b50260b","updated":"2018-01-23 22:09:51.000000000","message":"Done","commit_id":"b765444da4a015e55ca1af4ca692934c2aeb3683"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2f492f54c40439b2678ab5fcafea5c2ed7da57d5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class LibvirtStorPoolVolumeDriver(libvirt_volume.LibvirtVolumeDriver):"},{"line_number":27,"context_line":"    \"\"\"Driver to attach StorPool volumes to libvirt.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, host):"},{"line_number":30,"context_line":"        super(LibvirtStorPoolVolumeDriver, self).__init__(host)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f93b717_35cc6434","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":55},"updated":"2018-01-25 14:49:27.000000000","message":"There\u0027s a lot of commonality among drivers like this and \u0027nova.virt.libvirt.volume.aoe\u0027 (or anything that uses os-brick, I guess. We should refactor to rework that","commit_id":"b100eb05ab5f69576f3588d646158cbf5a7dad19"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2f492f54c40439b2678ab5fcafea5c2ed7da57d5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def connect_volume(self, connection_info, instance):"},{"line_number":36,"context_line":"        LOG.debug(\"Attaching StorPool volume %s\","},{"line_number":37,"context_line":"                  connection_info[\u0027data\u0027][\u0027volume\u0027], instance\u003dinstance)"},{"line_number":38,"context_line":"        device_info \u003d self.connector.connect_volume(connection_info[\u0027data\u0027])"},{"line_number":39,"context_line":"        LOG.debug(\"Attached StorPool volume %s\","},{"line_number":40,"context_line":"                  device_info, instance\u003dinstance)"},{"line_number":41,"context_line":"        connection_info[\u0027data\u0027][\u0027device_path\u0027] \u003d device_info[\u0027path\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f93b717_751e6cbb","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":76},"updated":"2018-01-25 14:49:27.000000000","message":"This will raise an exception if it fails [1] so we don\u0027t need to check the return code or anything\n\n[1] https://github.com/openstack/os-brick/blob/7dd2076a/os_brick/initiator/connectors/storpool.py#L55","commit_id":"b100eb05ab5f69576f3588d646158cbf5a7dad19"}]}
