)]}'
{"tempest/api/compute/base.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6290d401393342219bdc8535764d1f7019906261","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            self.request_microversion))"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    @classmethod"},{"line_number":387,"context_line":"    def create_volume(cls, **kwargs):"},{"line_number":388,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":389,"context_line":"        volume \u003d common_volume.create_test_volume("},{"line_number":390,"context_line":"            client\u003dcls.volumes_client,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_7d5b87f6","line":387,"updated":"2016-12-14 21:13:36.000000000","message":"Do we really need this wrapper?","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9f75a86f80a1ef830283613ef7a88c3635fe6275","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            self.request_microversion))"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    @classmethod"},{"line_number":387,"context_line":"    def create_volume(cls, **kwargs):"},{"line_number":388,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":389,"context_line":"        volume \u003d common_volume.create_test_volume("},{"line_number":390,"context_line":"            client\u003dcls.volumes_client,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_803d1c91","line":387,"in_reply_to":"1a6eadb0_7d5b87f6","updated":"2016-12-16 02:31:07.000000000","message":"+1 to remove that but i think this is done mainly for auto cleanup - cls.volumes.append(volume)\n\nOnly burden for tests using common method is to delete volume by them self.","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"}],"tempest/api/compute/volumes/test_attach_volume.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"924c40588f66dddb36d6873f4d9f6c86179ec2e0","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _create_and_attach_volume(self, server):"},{"line_number":73,"context_line":"        # Create a volume and wait for it to become ready"},{"line_number":74,"context_line":"        volume \u003d self.create_volume(size\u003dCONF.volume.volume_size)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # Attach the volume to the server"},{"line_number":77,"context_line":"        self.attachment \u003d self.servers_client.attach_volume("}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_aea53c05","line":74,"updated":"2016-11-08 10:08:28.000000000","message":"Why do we have to repeat the volume_size ? In your tempest/common/volume.py there\u0027s this line \u0027kwargs[\u0027size\u0027] \u003d size or CONF.volume.volume_size\u0027 So if I understand, if we don\"t pass explicitly \u0027size\u0027, the default will be CONF.volume.volume_size right ?\n\nI suggest that if we don\"t want a size different than CONF.volume.volume_size then the caller (i.e the tests) shouldn\"t have to set explicitly the size.","commit_id":"7dc72de0425b3f98e87bed2f68ab7e55d527f2cb"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"3f55172cfc69b1dde7c243a9dda7b4441cdd62a7","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _create_and_attach_volume(self, server):"},{"line_number":73,"context_line":"        # Create a volume and wait for it to become ready"},{"line_number":74,"context_line":"        volume \u003d self.create_volume(size\u003dCONF.volume.volume_size)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # Attach the volume to the server"},{"line_number":77,"context_line":"        self.attachment \u003d self.servers_client.attach_volume("}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_5149a15e","line":74,"in_reply_to":"9a629dbe_aea53c05","updated":"2016-11-08 10:27:41.000000000","message":"Right, I\u0027ll remove it","commit_id":"7dc72de0425b3f98e87bed2f68ab7e55d527f2cb"}],"tempest/api/compute/volumes/test_volumes_get.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a1477f048021b62a4e86b1f7153f845034eb7abc","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        metadata \u003d {\u0027Type\u0027: \u0027work\u0027}"},{"line_number":46,"context_line":"        # Create volume"},{"line_number":47,"context_line":"        volume \u003d self.create_volume("},{"line_number":48,"context_line":"            size\u003dCONF.volume.volume_size,"},{"line_number":49,"context_line":"            volume_client\u003dself.volumes_extensions_client,"},{"line_number":50,"context_line":"            name\u003dv_name,"},{"line_number":51,"context_line":"            metadata\u003dmetadata)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_aa48f1cd","line":48,"updated":"2016-11-04 14:11:44.000000000","message":"Is the size argument mandatory ?","commit_id":"d1890ff1b5f073b2053f99fde54721ee60a9fe76"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"f992aeb369d2257db580fb683a39575ee876043b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        metadata \u003d {\u0027Type\u0027: \u0027work\u0027}"},{"line_number":46,"context_line":"        # Create volume"},{"line_number":47,"context_line":"        volume \u003d self.create_volume("},{"line_number":48,"context_line":"            size\u003dCONF.volume.volume_size,"},{"line_number":49,"context_line":"            volume_client\u003dself.volumes_extensions_client,"},{"line_number":50,"context_line":"            name\u003dv_name,"},{"line_number":51,"context_line":"            metadata\u003dmetadata)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_eaf1ec96","line":48,"in_reply_to":"ba5da102_aa48f1cd","updated":"2016-11-06 09:39:12.000000000","message":"Thanks for you comment,\nSize argument is not mandatory here, I\u0027ll remove it","commit_id":"d1890ff1b5f073b2053f99fde54721ee60a9fe76"}],"tempest/api/compute/volumes/test_volumes_list.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"994441aaab0d43375cfba1245142ef56abfa4ee3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VolumesTestJSON(base.BaseV2ComputeTest):"},{"line_number":25,"context_line":"    # NOTE: This test creates a number of 1G volumes. To run successfully,"},{"line_number":26,"context_line":"    # ensure that the backing file for the volume group that Nova uses"},{"line_number":27,"context_line":"    # has space for at least 3 1G volumes!"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_032f3788","line":24,"updated":"2016-10-10 10:27:58.000000000","message":"I don\u0027t think we should touch that file. This only does volume listing, so it\u0027s a good thing to share the volumes between tests. So we should keep the \"resource_setup\" method here.","commit_id":"830cbc78f62359158adb0344e05b6e0e3d856eab"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"caed6c531410059159279555edddd3e6cfc76767","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VolumesTestJSON(base.BaseV2ComputeTest):"},{"line_number":25,"context_line":"    # NOTE: This test creates a number of 1G volumes. To run successfully,"},{"line_number":26,"context_line":"    # ensure that the backing file for the volume group that Nova uses"},{"line_number":27,"context_line":"    # has space for at least 3 1G volumes!"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_23e0b3cc","line":24,"in_reply_to":"1a95cdbc_032f3788","updated":"2016-10-10 10:38:48.000000000","message":"Done","commit_id":"830cbc78f62359158adb0344e05b6e0e3d856eab"}],"tempest/api/volume/admin/test_volume_types.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6290d401393342219bdc8535764d1f7019906261","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        params \u003d {self.name_field: vol_name,"},{"line_number":50,"context_line":"                  \u0027volume_type\u0027: volume_types[0][\u0027id\u0027],"},{"line_number":51,"context_line":"                  \u0027size\u0027: CONF.volume.volume_size}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create volume"},{"line_number":54,"context_line":"        volume \u003d self.create_volume(**params)"},{"line_number":55,"context_line":"        self.assertEqual(volume_types[0][\u0027name\u0027], volume[\"volume_type\"])"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_5d3fab86","side":"PARENT","line":52,"updated":"2016-12-14 21:13:36.000000000","message":"NIT: Unrelated change?","commit_id":"3f2f0ea8c73042d5e4e0b94ccc5ed99d14167162"}],"tempest/api/volume/base.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6290d401393342219bdc8535764d1f7019906261","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        super(BaseVolumeTest, cls).resource_cleanup()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @classmethod"},{"line_number":114,"context_line":"    def create_volume(cls, **kwargs):"},{"line_number":115,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":116,"context_line":"        volume \u003d common_volume.create_test_volume(client\u003dcls.volumes_client,"},{"line_number":117,"context_line":"                                                  api_version\u003dcls._api_version,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_dde57b38","line":114,"updated":"2016-12-14 21:13:36.000000000","message":"Do we really need a wrapper here?","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9f75a86f80a1ef830283613ef7a88c3635fe6275","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        super(BaseVolumeTest, cls).resource_cleanup()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @classmethod"},{"line_number":114,"context_line":"    def create_volume(cls, **kwargs):"},{"line_number":115,"context_line":"        \"\"\"Wrapper utility that returns a test volume.\"\"\""},{"line_number":116,"context_line":"        volume \u003d common_volume.create_test_volume(client\u003dcls.volumes_client,"},{"line_number":117,"context_line":"                                                  api_version\u003dcls._api_version,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_004aec25","line":114,"in_reply_to":"1a6eadb0_dde57b38","updated":"2016-12-16 02:31:07.000000000","message":"+1 to remove but same reason.\n\nWe can avoid this by decorating or passing self/cls(test object) to common method and let is just add created volume in self/cls auto cleanup mechanism. \nwhat you say?","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"}],"tempest/common/volume.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a1477f048021b62a4e86b1f7153f845034eb7abc","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def create_test_volume(client, name\u003dNone, api_version\u003dNone, **kwargs):"},{"line_number":24,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":25,"context_line":"    if \u0027size\u0027 not in kwargs:"},{"line_number":26,"context_line":"        kwargs[\u0027size\u0027] \u003d CONF.volume.volume_size"},{"line_number":27,"context_line":"    name \u003d name or data_utils.rand_name(__name__ + \u0027-Volume\u0027)"},{"line_number":28,"context_line":"    # Special fields and resp coder for cinder v1 \u0026 v2"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_2a0b017f","line":25,"updated":"2016-11-04 14:11:44.000000000","message":"Is the size argument mandatory or optionnal ?","commit_id":"d1890ff1b5f073b2053f99fde54721ee60a9fe76"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"f992aeb369d2257db580fb683a39575ee876043b","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def create_test_volume(client, name\u003dNone, api_version\u003dNone, **kwargs):"},{"line_number":24,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":25,"context_line":"    if \u0027size\u0027 not in kwargs:"},{"line_number":26,"context_line":"        kwargs[\u0027size\u0027] \u003d CONF.volume.volume_size"},{"line_number":27,"context_line":"    name \u003d name or data_utils.rand_name(__name__ + \u0027-Volume\u0027)"},{"line_number":28,"context_line":"    # Special fields and resp coder for cinder v1 \u0026 v2"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_eadacc16","line":25,"in_reply_to":"ba5da102_2a0b017f","updated":"2016-11-06 09:39:12.000000000","message":"Size argument is mandatory here","commit_id":"d1890ff1b5f073b2053f99fde54721ee60a9fe76"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"ab31aa21359f1bcd5696c58ffdc42d0fffa74f67","unresolved":false,"context_lines":[{"line_number":23,"context_line":"def create_test_volume(client, name\u003dNone, api_version\u003dNone, size\u003dNone,"},{"line_number":24,"context_line":"                       wait_until\u003d\u0027available\u0027, **kwargs):"},{"line_number":25,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":26,"context_line":"    kwargs[\u0027size\u0027] \u003d size or CONF.volume.volume_size"},{"line_number":27,"context_line":"    name \u003d name or data_utils.rand_name(__name__ + \u0027-Volume\u0027)"},{"line_number":28,"context_line":"    # Special fields and resp coder for cinder v1 \u0026 v2"},{"line_number":29,"context_line":"    if api_version \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a71b18c_1c57eb26","line":26,"updated":"2016-12-05 11:28:35.000000000","message":"So the logic about the disk size when an imageRef is passed has been removed. This change might break people using a big (more than 1G) image in their CI.\n\nI still think this change is worth it. People with big images can still tweak their CONF.volume.volume_size parameter.","commit_id":"46d6d4a2f935183fcb8915e1cb12f5ac667309a2"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6290d401393342219bdc8535764d1f7019906261","unresolved":false,"context_lines":[{"line_number":20,"context_line":"CONF \u003d config.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def create_test_volume(client, name\u003dNone, api_version\u003dNone, size\u003dNone,"},{"line_number":24,"context_line":"                       image_ref\u003dNone, wait_until\u003d\u0027available\u0027, **kwargs):"},{"line_number":25,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":26,"context_line":"    kwargs[\u0027size\u0027] \u003d size or CONF.volume.volume_size"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_dd49fb61","line":23,"updated":"2016-12-14 21:13:36.000000000","message":"Why do we need both the client and the version? \nThe version could be implied from the client.\n\nIn fact I think we should have a concept of default volume API version in Tempest. \nVolume tests will be selective about the version of the volume API that they use, but for other tests it would be useful to have that configurable, similar to the auth_version. \n\nIf - for instance - a deployment doesn\u0027t run v1 or if v1 deprecated, we could change the default to v2. Also we could mix v1, v2 and v3 settings in different check jobs to increase coverage.\n\nInput for this would then be a client manager and an optional api_version. Most tests would not need to specify a client version anymore then.","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9f75a86f80a1ef830283613ef7a88c3635fe6275","unresolved":false,"context_lines":[{"line_number":20,"context_line":"CONF \u003d config.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def create_test_volume(client, name\u003dNone, api_version\u003dNone, size\u003dNone,"},{"line_number":24,"context_line":"                       image_ref\u003dNone, wait_until\u003d\u0027available\u0027, **kwargs):"},{"line_number":25,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":26,"context_line":"    kwargs[\u0027size\u0027] \u003d size or CONF.volume.volume_size"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_206288d8","line":23,"in_reply_to":"1a6eadb0_dd49fb61","updated":"2016-12-16 02:31:07.000000000","message":"Nice point, as we already have config options like \u0027api_v1\u0027 in volume group we can use those also.\n\nLike first go with v2 client by default and then v1 if not.\n\nYea, most of non cinder tests would not mind which API version create volume for them.","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9f75a86f80a1ef830283613ef7a88c3635fe6275","unresolved":false,"context_lines":[{"line_number":20,"context_line":"CONF \u003d config.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def create_test_volume(client, name\u003dNone, api_version\u003dNone, size\u003dNone,"},{"line_number":24,"context_line":"                       image_ref\u003dNone, wait_until\u003d\u0027available\u0027, **kwargs):"},{"line_number":25,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":26,"context_line":"    kwargs[\u0027size\u0027] \u003d size or CONF.volume.volume_size"},{"line_number":27,"context_line":"    if image_ref is not None:"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_e0c7b093","line":24,"range":{"start_line":23,"start_character":31,"end_line":24,"end_character":72},"updated":"2016-12-16 02:31:07.000000000","message":"Also it would be nice to combine all param going in *_client.create_volume( together for more clarity and others like client, wait_until etc also together.\n\nAn we need doc string also for those as this going to be common method.","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9f75a86f80a1ef830283613ef7a88c3635fe6275","unresolved":false,"context_lines":[{"line_number":23,"context_line":"def create_test_volume(client, name\u003dNone, api_version\u003dNone, size\u003dNone,"},{"line_number":24,"context_line":"                       image_ref\u003dNone, wait_until\u003d\u0027available\u0027, **kwargs):"},{"line_number":25,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":26,"context_line":"    kwargs[\u0027size\u0027] \u003d size or CONF.volume.volume_size"},{"line_number":27,"context_line":"    if image_ref is not None:"},{"line_number":28,"context_line":"        kwargs[\u0027imageRef\u0027] \u003d image_ref"},{"line_number":29,"context_line":"    name \u003d name or data_utils.rand_name(__name__ + \u0027-Volume\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_6566522b","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":52},"updated":"2016-12-16 02:31:07.000000000","message":"also we should calculate the default size w.r.t image_ref as done in tempest/api/volume/base.py","commit_id":"af0ff81867610fb0a87e34f99a3d86f616fc535b"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"12f724296c6484e56893f9600d0e6f8a0053b104","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"VOLUMES \u003d []"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def create_volume(client, image_ref\u003dNone, wait_until\u003d\u0027available\u0027, **kwargs):"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_9611a954","line":24,"updated":"2017-01-24 12:07:19.000000000","message":"This global variable is an issue.","commit_id":"37c11b3c78a7496ab7541907015b2c8c2602f064"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"12f724296c6484e56893f9600d0e6f8a0053b104","unresolved":false,"context_lines":[{"line_number":24,"context_line":"VOLUMES \u003d []"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def create_volume(client, image_ref\u003dNone, wait_until\u003d\u0027available\u0027, **kwargs):"},{"line_number":28,"context_line":"    \"\"\"Common wrapper utility returning a test volume.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    url \u003d getattr(client, \u0027base_url\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a3905b3_963fe9b2","line":27,"updated":"2017-01-24 12:07:19.000000000","message":"The fact that this is not an instance method prevent from using self.addCleanup() which should be the preferred way to cleanup volumes.","commit_id":"37c11b3c78a7496ab7541907015b2c8c2602f064"}]}
