)]}'
{"tempest/api/volume/test_volume_manage.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"92b898d0ef0cd48ad24227e61d2a3d80856400cb","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class VolumesV2ManageTest(base.BaseVolumeTest):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027alt\u0027, \u0027admin\u0027]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_d44bf885","line":22,"updated":"2015-10-20 12:57:14.000000000","message":"Could this work without the \u0027alt\u0027 part ? i don\"t see where you are using the alternative credentials.","commit_id":"91ab812d80e627748f73b947b65159c11d4714a2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ec53954977c5eb52f383bbf4d80536a86420d099","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class VolumesV2ManageTest(base.BaseVolumeTest):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027alt\u0027, \u0027admin\u0027]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_57954230","line":22,"in_reply_to":"3a29b11f_d44bf885","updated":"2015-11-19 19:33:31.000000000","message":"Done","commit_id":"91ab812d80e627748f73b947b65159c11d4714a2"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"92b898d0ef0cd48ad24227e61d2a3d80856400cb","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.idempotent_id(\u002727e291b3-3e01-4f9f-8b9a-83a1ec7d44f8\u0027)"},{"line_number":39,"context_line":"    def test_volume_unmanage_manage(self):"},{"line_number":40,"context_line":"        self.volume \u003d self.create_volume()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        volume_info \u003d self.adm_client.show_volume(self.volume[\u0027id\u0027])"},{"line_number":43,"context_line":"        host \u003d volume_info[\u0027os-vol-host-attr:host\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_54dda8de","line":40,"updated":"2015-10-20 12:57:14.000000000","message":"Why do you need an instance variable here ?\n\n  volume \u003d self.create_volume()\n\nShould work","commit_id":"91ab812d80e627748f73b947b65159c11d4714a2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ec53954977c5eb52f383bbf4d80536a86420d099","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @test.idempotent_id(\u002727e291b3-3e01-4f9f-8b9a-83a1ec7d44f8\u0027)"},{"line_number":39,"context_line":"    def test_volume_unmanage_manage(self):"},{"line_number":40,"context_line":"        self.volume \u003d self.create_volume()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        volume_info \u003d self.adm_client.show_volume(self.volume[\u0027id\u0027])"},{"line_number":43,"context_line":"        host \u003d volume_info[\u0027os-vol-host-attr:host\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_f780f6f8","line":40,"in_reply_to":"3a29b11f_54dda8de","updated":"2015-11-19 19:33:31.000000000","message":"I think I copied this from the extend test, assuming it had some safety cleanup measure, but it doesn\u0027t look like it.  Will remove.","commit_id":"91ab812d80e627748f73b947b65159c11d4714a2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ecf42c74cb12b5bc4845907f60b71f8e47bec0e6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    @test.idempotent_id(\u002727e291b3-3e01-4f9f-8b9a-83a1ec7d44f8\u0027)"},{"line_number":39,"context_line":"    def test_volume_unmanage_manage(self):"},{"line_number":40,"context_line":"        volume \u003d self.create_volume()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        volume_info \u003d self.adm_client.show_volume(volume[\u0027id\u0027])"},{"line_number":43,"context_line":"        host \u003d volume_info[\u0027os-vol-host-attr:host\u0027]"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_7b6993bd","line":41,"updated":"2015-12-02 19:18:07.000000000","message":"Needs to wait for the volume to be scheduled before doing the show, this is currently racy.","commit_id":"e8f55dc5a3371fcb3da49cdcb781f426de5b2c3f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"927893e1ad8f0419779888c258d44de9c843254b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    @test.idempotent_id(\u002727e291b3-3e01-4f9f-8b9a-83a1ec7d44f8\u0027)"},{"line_number":39,"context_line":"    def test_volume_unmanage_manage(self):"},{"line_number":40,"context_line":"        volume \u003d self.create_volume()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        volume_info \u003d self.adm_client.show_volume(volume[\u0027id\u0027])"},{"line_number":43,"context_line":"        host \u003d volume_info[\u0027os-vol-host-attr:host\u0027]"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_7b4c3342","line":41,"in_reply_to":"9a8ffd7b_7b6993bd","updated":"2015-12-02 19:19:13.000000000","message":"create_volume() does that, never mind.","commit_id":"e8f55dc5a3371fcb3da49cdcb781f426de5b2c3f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"98464db82151cca9f3592c2dfc5b08829ac4b54f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            host,"},{"line_number":53,"context_line":"            \u0027volume-%s\u0027 % volume[\u0027id\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.client.wait_for_volume_status(new_volume_info[\u0027id\u0027], \u0027available\u0027)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self.client.delete_volume(new_volume_info[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_a4ccbc89","line":55,"updated":"2015-12-02 20:19:10.000000000","message":"This needs to use adm_client to find the new volume.","commit_id":"e8f55dc5a3371fcb3da49cdcb781f426de5b2c3f"}],"tempest/api/volume/test_volume_unmanage.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffc424c69376e217bed5e8430049169484e95651","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # or a failure in the process, so this test will only fail"},{"line_number":39,"context_line":"        # if the result checking is turned on."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        if (CONF.volume.volume_manage_supported):"},{"line_number":42,"context_line":"            # From the API POV, the result of unmanage is the same"},{"line_number":43,"context_line":"            # as deletion."},{"line_number":44,"context_line":"            self.client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_5a63d641","line":41,"updated":"2015-09-08 20:29:19.000000000","message":"This should be in a skip_check method at the top of the class and raise a skip_exception if not True. So something like:\n\n  @classmethod\n  def skip_checks(cls):\n      super(VolumesV2UnmanageTest, cls).skip_checks()\n      if not CONF.volume_feature_enabled.volume_manage:\n          raise self.skipException(\u0027cinder manage support is required)\n\nYou can refer to how other tests deal with feature flags for examples.","commit_id":"84e30d975ef37f56965b83eee7617840e49972c4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"33ca00ae4962f63fb34673290503771eae60a9a0","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            # From the API POV, the result of unmanage is the same"},{"line_number":43,"context_line":"            # as deletion."},{"line_number":44,"context_line":"            self.client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.adm_client.force_delete_volume(self.volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_da904651","line":45,"updated":"2015-09-08 20:15:54.000000000","message":"This isn\u0027t right, because it will leak volumes on the storage backend.  We need to do unmanage, manage, then delete, for this to not leak resources.","commit_id":"84e30d975ef37f56965b83eee7617840e49972c4"}],"tempest/config.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffc424c69376e217bed5e8430049169484e95651","unresolved":false,"context_lines":[{"line_number":687,"context_line":"    cfg.IntOpt(\u0027volume_size\u0027,"},{"line_number":688,"context_line":"               default\u003d1,"},{"line_number":689,"context_line":"               help\u003d\u0027Default size in GB for volumes created by volumes tests\u0027),"},{"line_number":690,"context_line":"    cfg.BoolOpt(\u0027volume_manage_supported\u0027,"},{"line_number":691,"context_line":"                default\u003dFalse,"},{"line_number":692,"context_line":"                help\u003d\u0027Whether the Cinder driver supports manage/unmanage operations.\u0027)"},{"line_number":693,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_face6a2c","line":690,"updated":"2015-09-08 20:29:19.000000000","message":"Since this is an option feature which is backend specific this should be in the volume_feature_group below and just be called volume manage.","commit_id":"84e30d975ef37f56965b83eee7617840e49972c4"}],"tempest/services/volume/base/base_volumes_client.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b387ae3c85c682cc45e1638cffdcc19ccbc5116c","unresolved":false,"context_lines":[{"line_number":342,"context_line":"        resp, body \u003d self.post(url, post_body)"},{"line_number":343,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":344,"context_line":"        body \u003d json.loads(body)"},{"line_number":345,"context_line":"        return service_client.ResponseBody(resp, body[\u0027volume\u0027])"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def unmanage_volume(self, volume_id):"},{"line_number":348,"context_line":"        \"\"\"Unmanages a volume."}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_7ac9db78","line":345,"updated":"2015-12-10 15:39:01.000000000","message":"Tempest clients have changed recently, we now return the entire body. This should be:\n\nreturn service_client.ResponseBody(resp, body)","commit_id":"767ea3f4f4c60188e49af5c01a0d1863b9f1feaf"}],"tempest/services/volume/json/volumes_client.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"2ebe2ab89812c6fa0fe0996d79d1c23b638672ec","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        resp, body \u003d self.post(\u0027volumes/%s/action\u0027 % volume_id, post_body)"},{"line_number":365,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def manage_volume(self, host, volume_id_ref):"},{"line_number":368,"context_line":"        \"\"\"Manages a volume.\"\"\""},{"line_number":369,"context_line":"        ref \u003d {\u0027host\u0027: host,"},{"line_number":370,"context_line":"               \u0027ref\u0027: {\u0027source-name\u0027: volume_id_ref}}"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_12572f03","line":367,"updated":"2015-12-02 10:16:39.000000000","message":"The signature of this method should be\n  def manage_volume(self, **kwargs)\nAnd the caller should call this method this way:\n  ...manage_volume(host\u003dhost, ref\u003d{\u0027source-name\u0027: volume_id_ref})","commit_id":"e8f55dc5a3371fcb3da49cdcb781f426de5b2c3f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bda28b4f151397dd2479d857a3a53f29621c44ac","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        resp, body \u003d self.post(\u0027volumes/%s/action\u0027 % volume_id, post_body)"},{"line_number":365,"context_line":"        self.expected_success(202, resp.status)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def manage_volume(self, host, volume_id_ref):"},{"line_number":368,"context_line":"        \"\"\"Manages a volume.\"\"\""},{"line_number":369,"context_line":"        ref \u003d {\u0027host\u0027: host,"},{"line_number":370,"context_line":"               \u0027ref\u0027: {\u0027source-name\u0027: volume_id_ref}}"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_8fb0b144","line":367,"in_reply_to":"9a8ffd7b_12572f03","updated":"2015-12-02 20:29:13.000000000","message":"Done","commit_id":"e8f55dc5a3371fcb3da49cdcb781f426de5b2c3f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"2ebe2ab89812c6fa0fe0996d79d1c23b638672ec","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        \"\"\"Manages a volume.\"\"\""},{"line_number":369,"context_line":"        ref \u003d {\u0027host\u0027: host,"},{"line_number":370,"context_line":"               \u0027ref\u0027: {\u0027source-name\u0027: volume_id_ref}}"},{"line_number":371,"context_line":"        post_body \u003d json.dumps({\u0027volume\u0027: ref})"},{"line_number":372,"context_line":"        url \u003d \u0027os-volume-manage\u0027"},{"line_number":373,"context_line":"        resp, body \u003d self.post(url, post_body)"},{"line_number":374,"context_line":"        self.expected_success(202, resp.status)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_72779b9f","line":371,"updated":"2015-12-02 10:16:39.000000000","message":"Then, this should be\npost_body \u003d json.dumps({\u0027volume\u0027: kwargs})","commit_id":"e8f55dc5a3371fcb3da49cdcb781f426de5b2c3f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bda28b4f151397dd2479d857a3a53f29621c44ac","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        \"\"\"Manages a volume.\"\"\""},{"line_number":369,"context_line":"        ref \u003d {\u0027host\u0027: host,"},{"line_number":370,"context_line":"               \u0027ref\u0027: {\u0027source-name\u0027: volume_id_ref}}"},{"line_number":371,"context_line":"        post_body \u003d json.dumps({\u0027volume\u0027: ref})"},{"line_number":372,"context_line":"        url \u003d \u0027os-volume-manage\u0027"},{"line_number":373,"context_line":"        resp, body \u003d self.post(url, post_body)"},{"line_number":374,"context_line":"        self.expected_success(202, resp.status)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_afad75ea","line":371,"in_reply_to":"9a8ffd7b_72779b9f","updated":"2015-12-02 20:29:13.000000000","message":"Done","commit_id":"e8f55dc5a3371fcb3da49cdcb781f426de5b2c3f"}]}
