)]}'
{"nova/tests/unit/virt/powervm/disk/fake_adapter.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"877904524492b2fd1ad3049fe1d87a30fb9da9bb","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.virt.powervm.disk import driver as disk_dvr"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class FakeDiskAdapter(disk_dvr.DiskAdapter):"},{"line_number":21,"context_line":"    def _vios_uuids(self):"},{"line_number":22,"context_line":"        pass"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_1bcae3a0","line":20,"updated":"2018-05-16 19:44:29.000000000","message":"could probably use a comment here explaining why we\u0027ve done this... i.e., to stub abstract methods and properties so that we can instantiate the class for testing.","commit_id":"101bc3723f0cae209aa237229ea8522dd54a8148"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"2514216fdb7a4e84e3b6f7e317a60b28e51ad6a4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from nova.virt.powervm.disk import driver as disk_dvr"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class FakeDiskAdapter(disk_dvr.DiskAdapter):"},{"line_number":21,"context_line":"    def _vios_uuids(self):"},{"line_number":22,"context_line":"        pass"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_7b92f74d","line":20,"in_reply_to":"5f7c97a3_1bcae3a0","updated":"2018-05-16 19:58:14.000000000","message":"Done","commit_id":"101bc3723f0cae209aa237229ea8522dd54a8148"}],"nova/tests/unit/virt/powervm/disk/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f44941bc6033effd45337e80eb405c9ca12c73b3","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        # The values (adapter and host uuid) are not used in the base."},{"line_number":37,"context_line":"        # Default them to None."},{"line_number":38,"context_line":"        self.st_adpt \u003d disk_dvr.DiskAdapter(None, None)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @mock.patch(\"pypowervm.util.sanitize_file_name_for_api\")"},{"line_number":41,"context_line":"    def test_get_disk_name(self, mock_san):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_b57bc0bc","line":38,"updated":"2018-05-16 18:36:08.000000000","message":"This is going to fail because you can\u0027t instantiate an abstract base class. You might as well just leave that in the tests for SSPDiskAdapter and each implementation of the base class likely needs its own test?","commit_id":"1d6afafa113a9f724d78e3acab9b54284f7dd3cd"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"2fbbc88c6a4f5d6390deaea3eec76be797c4f656","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        # The values (adapter and host uuid) are not used in the base."},{"line_number":37,"context_line":"        # Default them to None."},{"line_number":38,"context_line":"        self.st_adpt \u003d disk_dvr.DiskAdapter(None, None)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @mock.patch(\"pypowervm.util.sanitize_file_name_for_api\")"},{"line_number":41,"context_line":"    def test_get_disk_name(self, mock_san):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_1bf18302","line":38,"in_reply_to":"5f7c97a3_9557a427","updated":"2018-05-16 19:41:05.000000000","message":"Done","commit_id":"1d6afafa113a9f724d78e3acab9b54284f7dd3cd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3869c78140ad7200539d6515bb58957adc4323fd","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        # The values (adapter and host uuid) are not used in the base."},{"line_number":37,"context_line":"        # Default them to None."},{"line_number":38,"context_line":"        self.st_adpt \u003d disk_dvr.DiskAdapter(None, None)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @mock.patch(\"pypowervm.util.sanitize_file_name_for_api\")"},{"line_number":41,"context_line":"    def test_get_disk_name(self, mock_san):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f7c97a3_9557a427","line":38,"in_reply_to":"5f7c97a3_b57bc0bc","updated":"2018-05-16 18:37:09.000000000","message":"Alternatively, create a fake subclass in this test module and use that for the tests in the base class.","commit_id":"1d6afafa113a9f724d78e3acab9b54284f7dd3cd"}],"nova/virt/powervm/disk/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2770c65fb92d8b8e75a570cc00aba63df54b5f30","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        Default is to make the capacity arbitrarily large."},{"line_number":206,"context_line":"        \"\"\""},{"line_number":207,"context_line":"        return 1 \u003c\u003c 21"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @property"},{"line_number":210,"context_line":"    def capacity_used(self):"},{"line_number":211,"context_line":"        \"\"\"Capacity of the storage in gigabytes that is used."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        Default is to say none of it is used."},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":"        return 0"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    @staticmethod"},{"line_number":218,"context_line":"    def _get_disk_name(disk_type, instance, short\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_fb2282ba","line":215,"range":{"start_line":207,"start_character":0,"end_line":215,"end_character":16},"updated":"2018-03-17 23:45:20.000000000","message":"These defaults are kinda goofy.  Why wouldn\u0027t we raise NotImplementedError and force subclasses to implement these?","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"39b8c4ca0c16ac36e16e72a8cef11b703eec56dc","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        Default is to make the capacity arbitrarily large."},{"line_number":206,"context_line":"        \"\"\""},{"line_number":207,"context_line":"        return 1 \u003c\u003c 21"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @property"},{"line_number":210,"context_line":"    def capacity_used(self):"},{"line_number":211,"context_line":"        \"\"\"Capacity of the storage in gigabytes that is used."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        Default is to say none of it is used."},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":"        return 0"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    @staticmethod"},{"line_number":218,"context_line":"    def _get_disk_name(disk_type, instance, short\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_cc3e8b28","line":215,"range":{"start_line":207,"start_character":0,"end_line":215,"end_character":16},"in_reply_to":"df7087c5_fb2282ba","updated":"2018-03-21 15:35:10.000000000","message":"Done","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2770c65fb92d8b8e75a570cc00aba63df54b5f30","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        :return: A list of all the backing storage elements that were"},{"line_number":240,"context_line":"                 disconnected from the I/O Server and VM."},{"line_number":241,"context_line":"        \"\"\""},{"line_number":242,"context_line":"        pass"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def delete_disks(self, storage_elems):"},{"line_number":245,"context_line":"        \"\"\"Removes the disks specified by the mappings."}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_1b2096b0","line":242,"range":{"start_line":242,"start_character":8,"end_line":242,"end_character":12},"updated":"2018-03-17 23:45:20.000000000","message":"raise NotImplementedError()","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"39b8c4ca0c16ac36e16e72a8cef11b703eec56dc","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        :return: A list of all the backing storage elements that were"},{"line_number":240,"context_line":"                 disconnected from the I/O Server and VM."},{"line_number":241,"context_line":"        \"\"\""},{"line_number":242,"context_line":"        pass"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def delete_disks(self, storage_elems):"},{"line_number":245,"context_line":"        \"\"\"Removes the disks specified by the mappings."}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_ec226f01","line":242,"range":{"start_line":242,"start_character":8,"end_line":242,"end_character":12},"in_reply_to":"df7087c5_1b2096b0","updated":"2018-03-21 15:35:10.000000000","message":"Done","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2770c65fb92d8b8e75a570cc00aba63df54b5f30","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                           the image of the instance."},{"line_number":261,"context_line":"        :return: The backing pypowervm storage object that was created."},{"line_number":262,"context_line":"        \"\"\""},{"line_number":263,"context_line":"        pass"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def attach_disk(self, instance, disk_info, stg_ftsk):"},{"line_number":266,"context_line":"        \"\"\"Attaches the disk image to the Virtual Machine."}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_bb2c0aad","line":263,"range":{"start_line":263,"start_character":8,"end_line":263,"end_character":12},"updated":"2018-03-17 23:45:20.000000000","message":"ditto","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"39b8c4ca0c16ac36e16e72a8cef11b703eec56dc","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                           the image of the instance."},{"line_number":261,"context_line":"        :return: The backing pypowervm storage object that was created."},{"line_number":262,"context_line":"        \"\"\""},{"line_number":263,"context_line":"        pass"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def attach_disk(self, instance, disk_info, stg_ftsk):"},{"line_number":266,"context_line":"        \"\"\"Attaches the disk image to the Virtual Machine."}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_4c791bfa","line":263,"range":{"start_line":263,"start_character":8,"end_line":263,"end_character":12},"in_reply_to":"df7087c5_bb2c0aad","updated":"2018-03-21 15:35:10.000000000","message":"Done","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2770c65fb92d8b8e75a570cc00aba63df54b5f30","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                         the FeedTask is not provided, the updates will be run"},{"line_number":277,"context_line":"                         immediately when this method is executed."},{"line_number":278,"context_line":"        \"\"\""},{"line_number":279,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_db29be9b","line":279,"range":{"start_line":279,"start_character":8,"end_line":279,"end_character":12},"updated":"2018-03-17 23:45:20.000000000","message":"ditto","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"39b8c4ca0c16ac36e16e72a8cef11b703eec56dc","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                         the FeedTask is not provided, the updates will be run"},{"line_number":277,"context_line":"                         immediately when this method is executed."},{"line_number":278,"context_line":"        \"\"\""},{"line_number":279,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_8c2173fe","line":279,"range":{"start_line":279,"start_character":8,"end_line":279,"end_character":12},"in_reply_to":"df7087c5_db29be9b","updated":"2018-03-21 15:35:10.000000000","message":"Done","commit_id":"c7597721d425affa5527af1fe8bd15b5c8e241ff"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"4c874a998ce57c72d02925eb11af74c6082a8db5","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":65,"context_line":"class DiskAdapter(object):"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d {"},{"line_number":68,"context_line":"        \u0027shared_storage\u0027: False,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_0bcf54b0","line":65,"updated":"2018-03-29 18:45:14.000000000","message":"is there any rhyme or reason to the ordering of the methods in this class? I didn\u0027t immediately see one. Give that a thought.","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"0f796491c8ecbdc6a21025ad8c0a00c4942397aa","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":65,"context_line":"class DiskAdapter(object):"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d {"},{"line_number":68,"context_line":"        \u0027shared_storage\u0027: False,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_117f6515","line":65,"in_reply_to":"bf659307_0bcf54b0","updated":"2018-03-31 21:08:41.000000000","message":"I\u0027ve been trying to keep them in the same order as OOT because it makes it way easier to compare the two. If we want to reorder that\u0027s fine, just need to either backport to OOT or change there first","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"4c874a998ce57c72d02925eb11af74c6082a8db5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def disk_match_func(self, disk_type, instance):"},{"line_number":89,"context_line":"        \"\"\"Return a matching function to locate the disk for an instance."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        :param disk_type: One of the DiskType enum values."}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_0bf674fa","line":88,"updated":"2018-03-29 18:45:14.000000000","message":"will need to update per comments in https://review.openstack.org/#/c/543023","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"0f796491c8ecbdc6a21025ad8c0a00c4942397aa","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def disk_match_func(self, disk_type, instance):"},{"line_number":89,"context_line":"        \"\"\"Return a matching function to locate the disk for an instance."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        :param disk_type: One of the DiskType enum values."}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_7186e115","line":88,"in_reply_to":"bf659307_0bf674fa","updated":"2018-03-31 21:08:41.000000000","message":"Done","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"4c874a998ce57c72d02925eb11af74c6082a8db5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        raise NotImplementedError()"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def boot_disk_path_for_instance(self, instance, vios_uuid):"},{"line_number":105,"context_line":"        \"\"\"Find scsi mappings on given VIOS for the instance."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        This method finds all scsi mappings on a given vios that are associated"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_0ba8b4d8","line":104,"updated":"2018-03-29 18:45:14.000000000","message":"ditto","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"0f796491c8ecbdc6a21025ad8c0a00c4942397aa","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        raise NotImplementedError()"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def boot_disk_path_for_instance(self, instance, vios_uuid):"},{"line_number":105,"context_line":"        \"\"\"Find scsi mappings on given VIOS for the instance."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        This method finds all scsi mappings on a given vios that are associated"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_51815dfa","line":104,"in_reply_to":"bf659307_0ba8b4d8","updated":"2018-03-31 21:08:41.000000000","message":"Done","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0beb9f37cfa7074626ad4e9fbfc8804cc4baeeae","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d {"},{"line_number":68,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":69,"context_line":"        \u0027has_imagecache\u0027: False,"},{"line_number":70,"context_line":"        \u0027snapshot\u0027: False,"},{"line_number":71,"context_line":"    }"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_5044d173","line":69,"updated":"2018-05-15 21:12:15.000000000","message":"This is new...not sure where these capabilities are even checked though...","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0f1d52c480e01839f068254503f15ec6ba729470","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d {"},{"line_number":68,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":69,"context_line":"        \u0027has_imagecache\u0027: False,"},{"line_number":70,"context_line":"        \u0027snapshot\u0027: False,"},{"line_number":71,"context_line":"    }"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_72653fb4","line":69,"in_reply_to":"5f7c97a3_170cfd91","updated":"2018-05-16 16:34:21.000000000","message":"OK, well, kind of annoying to see stuff like this added when nothing is using it yet, but meh.","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"78ff4b09708f64696ddf125f581ca2f345150153","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    capabilities \u003d {"},{"line_number":68,"context_line":"        \u0027shared_storage\u0027: False,"},{"line_number":69,"context_line":"        \u0027has_imagecache\u0027: False,"},{"line_number":70,"context_line":"        \u0027snapshot\u0027: False,"},{"line_number":71,"context_line":"    }"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_170cfd91","line":69,"in_reply_to":"5f7c97a3_5044d173","updated":"2018-05-16 16:23:50.000000000","message":"Right now nowhere, but they are being introduced for the future patches where we check the capabilities. Then next change in the series will check the snapshot capability. https://review.openstack.org/#/c/549300/26/nova/virt/powervm/driver.py@322\n\nThe other capabilities will be used in further follow on patches (like imagecache)","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0beb9f37cfa7074626ad4e9fbfc8804cc4baeeae","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.mp_uuid \u003d mgmt.mgmt_uuid(self._adapter)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @property"},{"line_number":84,"context_line":"    def _vios_uuids(self):"},{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_300b552a","line":84,"updated":"2018-05-15 21:12:15.000000000","message":"Why isn\u0027t this marked as an @abstractproperty?","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"78ff4b09708f64696ddf125f581ca2f345150153","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.mp_uuid \u003d mgmt.mgmt_uuid(self._adapter)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @property"},{"line_number":84,"context_line":"    def _vios_uuids(self):"},{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_f7006136","line":84,"in_reply_to":"5f7c97a3_300b552a","updated":"2018-05-16 16:23:50.000000000","message":"Done","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0beb9f37cfa7074626ad4e9fbfc8804cc4baeeae","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @staticmethod"},{"line_number":89,"context_line":"    def _disk_match_func(self, disk_type, instance):"},{"line_number":90,"context_line":"        \"\"\"Return a matching function to locate the disk for an instance."},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_10109956","line":88,"updated":"2018-05-15 21:12:15.000000000","message":"Why isn\u0027t this marked as an abstractmethod? Similar for the methods below that raise NotImplementedError but are used by the public methods in the base class here.","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"78ff4b09708f64696ddf125f581ca2f345150153","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @staticmethod"},{"line_number":89,"context_line":"    def _disk_match_func(self, disk_type, instance):"},{"line_number":90,"context_line":"        \"\"\"Return a matching function to locate the disk for an instance."},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_97fb2d45","line":88,"in_reply_to":"5f7c97a3_10109956","updated":"2018-05-16 16:23:50.000000000","message":"Done","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d6736d5d9bcb6fd8eb9a923faede1c9da0bc00c5","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        self._host_uuid \u003d host_uuid"},{"line_number":81,"context_line":"        self.mp_uuid \u003d mgmt.mgmt_uuid(self._adapter)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @abstractproperty"},{"line_number":84,"context_line":"    def _vios_uuids(self):"},{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_55ba6ce1","line":83,"range":{"start_line":83,"start_character":5,"end_line":83,"end_character":21},"updated":"2018-05-16 18:08:32.000000000","message":"needs to be @abc.abstractproperty","commit_id":"7eaccd4a4a8e26e8e63ef3b0c8c2f91b43e7801f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d6736d5d9bcb6fd8eb9a923faede1c9da0bc00c5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \"\"\"List the UUIDs of the Virtual I/O Servers hosting the storage.\"\"\""},{"line_number":86,"context_line":"        raise NotImplementedError()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @abstractmethod"},{"line_number":89,"context_line":"    def _disk_match_func(self, disk_type, instance):"},{"line_number":90,"context_line":"        \"\"\"Return a matching function to locate the disk for an instance."},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_75bf68d0","line":88,"updated":"2018-05-16 18:08:32.000000000","message":"needs to be @abc.abstractmethod","commit_id":"7eaccd4a4a8e26e8e63ef3b0c8c2f91b43e7801f"}],"nova/virt/powervm/disk/ssp.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"4c874a998ce57c72d02925eb11af74c6082a8db5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    Cinder) to connect to virtual machines."},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    capabilities \u003d {"},{"line_number":49,"context_line":"        \u0027shared_storage\u0027: True,"},{"line_number":50,"context_line":"        \u0027snapshot\u0027: True,"},{"line_number":51,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_f0f0cbff","line":48,"updated":"2018-03-29 18:45:14.000000000","message":"missing has_imagecache, and the nice note that the OOT driver gives explaining why that is False for this class since it is certainly not intuitive.","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"0f796491c8ecbdc6a21025ad8c0a00c4942397aa","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    Cinder) to connect to virtual machines."},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    capabilities \u003d {"},{"line_number":49,"context_line":"        \u0027shared_storage\u0027: True,"},{"line_number":50,"context_line":"        \u0027snapshot\u0027: True,"},{"line_number":51,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf659307_317ce91d","line":48,"in_reply_to":"bf659307_f0f0cbff","updated":"2018-03-31 21:08:41.000000000","message":"Done","commit_id":"ee9d1ae641da15097985eca53a7a4b09161626b7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0beb9f37cfa7074626ad4e9fbfc8804cc4baeeae","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    Cinder) to connect to virtual machines."},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    capabilities \u003d {"},{"line_number":49,"context_line":"        \u0027shared_storage\u0027: True,"},{"line_number":50,"context_line":"        # NOTE(efried): Whereas the SSP disk driver definitely does image"},{"line_number":51,"context_line":"        # caching, it\u0027s not through the nova.virt.imagecache.ImageCacheManager"}],"source_content_type":"text/x-python","patch_set":17,"id":"5f7c97a3_703c6de0","line":48,"updated":"2018-05-15 21:12:15.000000000","message":"Why are these even in here? Nothing reads this as far as I know. I\u0027m guessing the answer is, we hook this up with the driver capabilities based on the storage backend configured for this host, but that\u0027s currently in out of tree magic land.","commit_id":"34be739c696f8da6bdb4536cf123aa63523b5178"}]}
