)]}'
{"rally/plugins/openstack/services/storage/block.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    @service.should_be_overridden"},{"line_number":48,"context_line":"    def create_volume(self, size, consistencygroup_id\u003dNone,"},{"line_number":49,"context_line":"                      group_id\u003dNone, snapshot_id\u003dNone, source_volid\u003dNone,"},{"line_number":50,"context_line":"                      display_name\u003dNone, display_description\u003dNone,"},{"line_number":51,"context_line":"                      name\u003dNone, description\u003dNone,"},{"line_number":52,"context_line":"                      volume_type\u003dNone, user_id\u003dNone,"},{"line_number":53,"context_line":"                      project_id\u003dNone, availability_zone\u003dNone,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_dd3ce731","line":50,"range":{"start_line":50,"start_character":22,"end_line":50,"end_character":41},"updated":"2017-03-09 10:48:40.000000000","message":"it is redundant. we already have unified \"name\" field","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        :param consistencygroup_id: ID of the consistencygroup"},{"line_number":61,"context_line":"        :param group_id: ID of the group"},{"line_number":62,"context_line":"        :param snapshot_id: ID of the snapshot"},{"line_number":63,"context_line":"        :param display_name: Name of the volume"},{"line_number":64,"context_line":"        :param display_description: Description of the volume"},{"line_number":65,"context_line":"        :param name: Name of the volume"},{"line_number":66,"context_line":"        :param description: Description of the volume"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_fd49abd1","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":47},"updated":"2017-03-09 10:48:40.000000000","message":"do not forget to remove it here","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @service.should_be_overridden"},{"line_number":115,"context_line":"    def update_volume(self, volume_id,"},{"line_number":116,"context_line":"                      display_name\u003dNone, display_description\u003dNone,"},{"line_number":117,"context_line":"                      name\u003dNone, description\u003dNone):"},{"line_number":118,"context_line":"        \"\"\"Update the name or description for a volume."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_2f36a803","line":116,"range":{"start_line":116,"start_character":21,"end_line":116,"end_character":41},"updated":"2017-03-09 10:48:40.000000000","message":"same here","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"}],"rally/plugins/openstack/services/storage/cinder_common.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_volume(self, size, **kwargs):"},{"line_number":42,"context_line":"        \"\"\"Create a new volume.\"\"\""},{"line_number":43,"context_line":"        if isinstance(size, dict):"},{"line_number":44,"context_line":"            size \u003d random.randint(size[\"min\"], size[\"max\"])"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_022c5b49","line":41,"range":{"start_line":41,"start_character":32,"end_line":41,"end_character":42},"updated":"2017-03-09 10:48:40.000000000","message":"I prefer to specify all acceptable arguments. It really helps to debug difference between versions. Also, displayed_name argument should be available only in case of cinder v1.","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        aname \u003d \"cinder_v%s.extend_volume\" % self.version"},{"line_number":88,"context_line":"        with atomic.ActionTimer(self, aname):"},{"line_number":89,"context_line":"            volume.extend(volume, new_size)"},{"line_number":90,"context_line":"            self._wait_available_volume(volume)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def list_snapshots(self, detailed\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_a53719e2","line":89,"range":{"start_line":89,"start_character":12,"end_line":89,"end_character":43},"updated":"2017-03-09 10:48:40.000000000","message":"wow. it sounds so shirty... I mean resource of cinderclient accepts as a first argument an object to extend...[*]\n\nActually, let\u0027s avoid calling methods on resources. It is better to call methods of their managers. I mean ` self._get_client().volumes.extends(volume, new_size)` is much better. Also, it relates to all other methods like delete.\n\n[*] - https://github.com/openstack/python-cinderclient/blob/master/cinderclient/v2/volumes.py#L148","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        \"\"\""},{"line_number":178,"context_line":"        aname \u003d \"cinder_v%s.upload_volume_to_image\" % self.version"},{"line_number":179,"context_line":"        with atomic.ActionTimer(self, aname):"},{"line_number":180,"context_line":"            resp, img \u003d volume.upload_to_image(force,"},{"line_number":181,"context_line":"                                               self.generate_random_name(),"},{"line_number":182,"context_line":"                                               container_format,"},{"line_number":183,"context_line":"                                               disk_format)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_c555edc6","line":180,"range":{"start_line":180,"start_character":23,"end_line":180,"end_character":46},"updated":"2017-03-09 10:48:40.000000000","message":"same here. let\u0027s use calls to manager class","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"df1fcee8bd08ead162e510e59dd9528f94ff25eb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_volume(self, size, **kwargs):"},{"line_number":42,"context_line":"        \"\"\"Create a new volume.\"\"\""},{"line_number":43,"context_line":"        if isinstance(size, dict):"},{"line_number":44,"context_line":"            size \u003d random.randint(size[\"min\"], size[\"max\"])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_8a1679ef","line":41,"range":{"start_line":41,"start_character":34,"end_line":41,"end_character":42},"updated":"2017-03-08 11:19:50.000000000","message":"Pls use exact params","commit_id":"1d9206352809f9addd05620766b817cf11b87e01"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"de4c8af8956c3dc33f146436e4e5e3ff509f41cf","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_volume(self, size, **kwargs):"},{"line_number":42,"context_line":"        \"\"\"Create a new volume.\"\"\""},{"line_number":43,"context_line":"        if isinstance(size, dict):"},{"line_number":44,"context_line":"            size \u003d random.randint(size[\"min\"], size[\"max\"])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_51089691","line":41,"range":{"start_line":41,"start_character":34,"end_line":41,"end_character":42},"in_reply_to":"9a30ddce_7e7d6ce6","updated":"2017-03-09 05:38:43.000000000","message":"we need to consider which params do the scenarios we need:)","commit_id":"1d9206352809f9addd05620766b817cf11b87e01"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"805b4c208b4512b4185b60c90091c1851b02ceb1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            check_interval\u003dCONF.benchmark.cinder_volume_create_poll_interval"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def create_volume(self, size, **kwargs):"},{"line_number":42,"context_line":"        \"\"\"Create a new volume.\"\"\""},{"line_number":43,"context_line":"        if isinstance(size, dict):"},{"line_number":44,"context_line":"            size \u003d random.randint(size[\"min\"], size[\"max\"])"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_7e7d6ce6","line":41,"range":{"start_line":41,"start_character":34,"end_line":41,"end_character":42},"in_reply_to":"9a30ddce_8a1679ef","updated":"2017-03-09 00:42:01.000000000","message":"Here is used by cinder v1 and v2, or move to cinder service class.","commit_id":"1d9206352809f9addd05620766b817cf11b87e01"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"df1fcee8bd08ead162e510e59dd9528f94ff25eb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":56,"context_line":"        \"\"\"List all volumes.\"\"\""},{"line_number":57,"context_line":"        aname \u003d \"cinder_v%s.list_volumes\" % self.version"},{"line_number":58,"context_line":"        with atomic.ActionTimer(self, aname):"},{"line_number":59,"context_line":"            return self._get_client().volumes.list(detailed)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def get_volume(self, volume_id):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_aab6ddd9","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":45},"updated":"2017-03-08 11:19:50.000000000","message":"Why not use optional_action_timer here?","commit_id":"1d9206352809f9addd05620766b817cf11b87e01"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"805b4c208b4512b4185b60c90091c1851b02ceb1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":56,"context_line":"        \"\"\"List all volumes.\"\"\""},{"line_number":57,"context_line":"        aname \u003d \"cinder_v%s.list_volumes\" % self.version"},{"line_number":58,"context_line":"        with atomic.ActionTimer(self, aname):"},{"line_number":59,"context_line":"            return self._get_client().volumes.list(detailed)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def get_volume(self, volume_id):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_fef4fc87","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":45},"in_reply_to":"9a30ddce_aab6ddd9","updated":"2017-03-09 00:42:01.000000000","message":"We need to name the action with self.version.","commit_id":"1d9206352809f9addd05620766b817cf11b87e01"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"de4c8af8956c3dc33f146436e4e5e3ff509f41cf","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":56,"context_line":"        \"\"\"List all volumes.\"\"\""},{"line_number":57,"context_line":"        aname \u003d \"cinder_v%s.list_volumes\" % self.version"},{"line_number":58,"context_line":"        with atomic.ActionTimer(self, aname):"},{"line_number":59,"context_line":"            return self._get_client().volumes.list(detailed)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def get_volume(self, volume_id):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a30ddce_11aa9e70","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":45},"in_reply_to":"9a30ddce_fef4fc87","updated":"2017-03-09 05:38:43.000000000","message":"Ok, Let us finish the atomic action refactor. It looks redudant. How about adjust the `optional_action_timer`?","commit_id":"1d9206352809f9addd05620766b817cf11b87e01"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0b118873bd4c89feb8c91a8600fcb9be6da4bee8","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class UnifiedCinderMixin(object):"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":348,"context_line":"        \"\"\"Lists all volumes."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        :param detailed: Whether to return detailed volume info."},{"line_number":351,"context_line":"        :returns: Return volumes list."},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        return self._impl.list_volumes(detailed\u003ddetailed)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def get_volume(self, volume_id):"},{"line_number":356,"context_line":"        \"\"\"Get a volume."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        :param volume_id: The ID of the volume to get."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        :returns: Return the volume."},{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        return self._impl.get_volume(volume_id)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def delete_volume(self, volume):"},{"line_number":365,"context_line":"        \"\"\"Delete a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_645fa40e","line":362,"range":{"start_line":347,"start_character":4,"end_line":362,"end_character":47},"updated":"2017-03-20 16:54:11.000000000","message":"these methods should return unified objects. Let\u0027s create unified \"Volume\" class with unified properties.","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"61634696f03a96494791411d8f6c8a56f7e45434","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class UnifiedCinderMixin(object):"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":348,"context_line":"        \"\"\"Lists all volumes."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        :param detailed: Whether to return detailed volume info."},{"line_number":351,"context_line":"        :returns: Return volumes list."},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        return self._impl.list_volumes(detailed\u003ddetailed)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def get_volume(self, volume_id):"},{"line_number":356,"context_line":"        \"\"\"Get a volume."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        :param volume_id: The ID of the volume to get."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        :returns: Return the volume."},{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        return self._impl.get_volume(volume_id)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def delete_volume(self, volume):"},{"line_number":365,"context_line":"        \"\"\"Delete a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_d9ef43e7","line":362,"range":{"start_line":347,"start_character":4,"end_line":362,"end_character":47},"in_reply_to":"1a1ced50_56424269","updated":"2017-03-21 08:01:17.000000000","message":"copy that. but a storage is likely not enough with volume type. set_keys method is not defined in the manage class of volume type , we need to use the return value of create or get volume type. :(\nhttps://github.com/openstack/python-cinderclient/blob/master/cinderclient/v3/volume_types.py#L46","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"232715a8ac3512f2050b6263195e8fcad2cee471","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class UnifiedCinderMixin(object):"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":348,"context_line":"        \"\"\"Lists all volumes."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        :param detailed: Whether to return detailed volume info."},{"line_number":351,"context_line":"        :returns: Return volumes list."},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        return self._impl.list_volumes(detailed\u003ddetailed)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def get_volume(self, volume_id):"},{"line_number":356,"context_line":"        \"\"\"Get a volume."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        :param volume_id: The ID of the volume to get."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        :returns: Return the volume."},{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        return self._impl.get_volume(volume_id)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def delete_volume(self, volume):"},{"line_number":365,"context_line":"        \"\"\"Delete a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_ef727648","line":362,"range":{"start_line":347,"start_character":4,"end_line":362,"end_character":47},"in_reply_to":"1a1ced50_645fa40e","updated":"2017-03-21 06:34:48.000000000","message":"Do you mean that we need to use custom volume class instead of raw volume class(v1 and v2)?\nhttps://github.com/openstack/python-cinderclient/blob/master/cinderclient/v1/volumes.py#L24","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"adfd85978d609f47a6afa59eb0532a014e83ccdd","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class UnifiedCinderMixin(object):"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":348,"context_line":"        \"\"\"Lists all volumes."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        :param detailed: Whether to return detailed volume info."},{"line_number":351,"context_line":"        :returns: Return volumes list."},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        return self._impl.list_volumes(detailed\u003ddetailed)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def get_volume(self, volume_id):"},{"line_number":356,"context_line":"        \"\"\"Get a volume."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        :param volume_id: The ID of the volume to get."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        :returns: Return the volume."},{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        return self._impl.get_volume(volume_id)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def delete_volume(self, volume):"},{"line_number":365,"context_line":"        \"\"\"Delete a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_79864fdc","line":362,"range":{"start_line":347,"start_character":4,"end_line":362,"end_character":47},"in_reply_to":"1a1ced50_d9ef43e7","updated":"2017-03-21 08:09:50.000000000","message":"It s*cks...\n\nLet\u0027s assume that VolumeTypes is only one exception and we will not have cases in future. It looks like it doesn\u0027t have any difference between Cinder versions, so let\u0027s create custom classes for volumes and leave raw resource of VolumeTypes without transformation.","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"391262e833e71095d122f565cf907c1fc61b640a","unresolved":false,"context_lines":[{"line_number":344,"context_line":""},{"line_number":345,"context_line":"class UnifiedCinderMixin(object):"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def list_volumes(self, detailed\u003dTrue):"},{"line_number":348,"context_line":"        \"\"\"Lists all volumes."},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        :param detailed: Whether to return detailed volume info."},{"line_number":351,"context_line":"        :returns: Return volumes list."},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        return self._impl.list_volumes(detailed\u003ddetailed)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    def get_volume(self, volume_id):"},{"line_number":356,"context_line":"        \"\"\"Get a volume."},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        :param volume_id: The ID of the volume to get."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        :returns: Return the volume."},{"line_number":361,"context_line":"        \"\"\""},{"line_number":362,"context_line":"        return self._impl.get_volume(volume_id)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def delete_volume(self, volume):"},{"line_number":365,"context_line":"        \"\"\"Delete a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_56424269","line":362,"range":{"start_line":347,"start_character":4,"end_line":362,"end_character":47},"in_reply_to":"1a1ced50_ef727648","updated":"2017-03-21 07:43:01.000000000","message":"Yes, but we do not need to implement all methods and etc. That custom volume class should be just a storage for unified properties. Like we have here - https://github.com/openstack/rally/blob/master/rally/plugins/openstack/services/identity/identity.py#L20","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0b118873bd4c89feb8c91a8600fcb9be6da4bee8","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        \"\"\"Extend the size of the specified volume.\"\"\""},{"line_number":370,"context_line":"        return self._impl.extend_volume(volume, new_size\u003dnew_size)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def list_snapshots(self, detailed\u003dTrue):"},{"line_number":373,"context_line":"        \"\"\"Get a list of all snapshots.\"\"\""},{"line_number":374,"context_line":"        return self._impl.list_snapshots(detailed\u003ddetailed)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"    def set_metadata(self, volume, sets\u003d10, set_size\u003d3):"},{"line_number":377,"context_line":"        \"\"\"Update/Set a volume metadata."}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_44bb8827","line":374,"range":{"start_line":372,"start_character":4,"end_line":374,"end_character":59},"updated":"2017-03-20 16:54:11.000000000","message":"I suppose same here.","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"}],"rally/plugins/openstack/services/storage/cinder_v1.py":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"e29b7d7876c0d3b3bfc88c3e4117b586d7b83df7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        return self._clients.cinder(\"1\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @atomic.action_timer(\"cinder_v1.create_volume\")"},{"line_number":30,"context_line":"    def create_volume(self, size, **kwargs):"},{"line_number":31,"context_line":"        kwargs[\"display_name\"] \u003d self.generate_random_name()"},{"line_number":32,"context_line":"        return super(CinderV1Service, self).create_volume(size, **kwargs)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_7bde826e","line":30,"range":{"start_line":30,"start_character":34,"end_line":30,"end_character":42},"updated":"2017-02-06 07:08:16.000000000","message":"I think exact params would be better:)","commit_id":"4bd57ee57105e9896b1682720ad34b04319c5548"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"9031751e8461c67839238581805849e27c00bf22","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        return self._clients.cinder(\"1\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @atomic.action_timer(\"cinder_v1.create_volume\")"},{"line_number":30,"context_line":"    def create_volume(self, size, **kwargs):"},{"line_number":31,"context_line":"        kwargs[\"display_name\"] \u003d self.generate_random_name()"},{"line_number":32,"context_line":"        return super(CinderV1Service, self).create_volume(size, **kwargs)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_ea29b538","line":30,"range":{"start_line":30,"start_character":34,"end_line":30,"end_character":42},"in_reply_to":"1a430d35_7bde826e","updated":"2017-02-06 10:46:13.000000000","message":"Yep, i will do it. :)","commit_id":"4bd57ee57105e9896b1682720ad34b04319c5548"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        :returns: Return a new volume."},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":"        kwargs \u003d {\"display_name\": self.generate_random_name(),"},{"line_number":52,"context_line":"                  \"display_description\": display_description,"},{"line_number":53,"context_line":"                  \"snapshot_id\": snapshot_id,"},{"line_number":54,"context_line":"                  \"source_volid\": source_volid,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_65e28105","line":51,"updated":"2017-03-09 10:48:40.000000000","message":"since we are generating the name here, it looks like we do not need to accept the name of volume","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @atomic.action_timer(\"cinder_v1.create_snapshot\")"},{"line_number":86,"context_line":"    def create_snapshot(self, volume_id, force\u003dFalse,"},{"line_number":87,"context_line":"                        display_name\u003dNone, display_description\u003dNone):"},{"line_number":88,"context_line":"        \"\"\"Create one snapshot."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        Returns when the snapshot is actually created and is in the \"Available\""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_85e77511","line":87,"range":{"start_line":87,"start_character":24,"end_line":87,"end_character":43},"updated":"2017-03-09 10:48:40.000000000","message":"same here","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d239ecb005128ca7125c5ab5540b6fc8e58c80a","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def create_volume(self, size, consistencygroup_id\u003dNone,"},{"line_number":143,"context_line":"                      group_id\u003dNone, snapshot_id\u003dNone, source_volid\u003dNone,"},{"line_number":144,"context_line":"                      display_name\u003dNone, display_description\u003dNone,"},{"line_number":145,"context_line":"                      name\u003dNone, description\u003dNone,"},{"line_number":146,"context_line":"                      volume_type\u003dNone, user_id\u003dNone,"},{"line_number":147,"context_line":"                      project_id\u003dNone, availability_zone\u003dNone,"},{"line_number":148,"context_line":"                      metadata\u003dNone, imageRef\u003dNone, scheduler_hints\u003dNone,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_9042ff3c","line":145,"range":{"start_line":144,"start_character":22,"end_line":145,"end_character":50},"updated":"2017-03-09 10:48:40.000000000","message":"If we decided to allow to transmit volume\u0027s name here, let\u0027s expect only one unified argument, \"name\", and transmit it as displayed_name to CinderV1Service\u0027s method.","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"7fcf7a081dc96a8a2d056d02d36804cc7fa6c5ef","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def create_volume(self, size, consistencygroup_id\u003dNone,"},{"line_number":143,"context_line":"                      group_id\u003dNone, snapshot_id\u003dNone, source_volid\u003dNone,"},{"line_number":144,"context_line":"                      display_name\u003dNone, display_description\u003dNone,"},{"line_number":145,"context_line":"                      name\u003dNone, description\u003dNone,"},{"line_number":146,"context_line":"                      volume_type\u003dNone, user_id\u003dNone,"},{"line_number":147,"context_line":"                      project_id\u003dNone, availability_zone\u003dNone,"},{"line_number":148,"context_line":"                      metadata\u003dNone, imageRef\u003dNone, scheduler_hints\u003dNone,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_f04a5bab","line":145,"range":{"start_line":144,"start_character":22,"end_line":145,"end_character":50},"in_reply_to":"9a30ddce_9042ff3c","updated":"2017-03-09 14:48:12.000000000","message":"Here i just hope they keep backward compatible, we did not prohibit these arguments all the time,i worried external users have transmited the name arguments in their tests. Maybe, it is the time that we remove these arguments, Ok? :)","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0b118873bd4c89feb8c91a8600fcb9be6da4bee8","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        :returns: Return a new volume."},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        kwargs \u003d {\"display_name\": self.generate_random_name(),"},{"line_number":51,"context_line":"                  \"display_description\": display_description,"},{"line_number":52,"context_line":"                  \"snapshot_id\": snapshot_id,"},{"line_number":53,"context_line":"                  \"source_volid\": source_volid,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_84eae00d","line":50,"range":{"start_line":50,"start_character":16,"end_line":50,"end_character":62},"updated":"2017-03-20 16:54:11.000000000","message":"since name can be specified, you need to write it like:\n\n    \"display_name\": display_name or self.generate_random_name()\n\nRelates to all names in that module","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0b118873bd4c89feb8c91a8600fcb9be6da4bee8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        :returns: The updated volume."},{"line_number":83,"context_line":"        \"\"\""},{"line_number":84,"context_line":"        display_name \u003d self.generate_random_name()"},{"line_number":85,"context_line":"        return self._get_client().volumes.update(volume_id,"},{"line_number":86,"context_line":"                                                 display_name,"},{"line_number":87,"context_line":"                                                 display_description)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @atomic.action_timer(\"cinder_v1.list_types\")"},{"line_number":90,"context_line":"    def list_types(self, search_opts\u003dNone):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_445708ce","line":87,"range":{"start_line":85,"start_character":49,"end_line":87,"end_character":68},"updated":"2017-03-20 16:54:11.000000000","message":"please, use keyword argument here, I mean `volumes.update(volume_id, display_name\u003ddisplay_name, display_description\u003ddisplay_description)`. It is required thing to avoid problems like https://review.openstack.org/#/c/309470/","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"}],"rally/plugins/openstack/services/storage/cinder_v2.py":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"82cfc310b0428cf725515f226c8e431281832b36","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                      project_id\u003dNone, availability_zone\u003dNone,"},{"line_number":32,"context_line":"                      metadata\u003dNone, imageRef\u003dNone, scheduler_hints\u003dNone,"},{"line_number":33,"context_line":"                      source_replica\u003dNone, multiattach\u003dFalse,"},{"line_number":34,"context_line":"                      atomic_action\u003dTrue):"},{"line_number":35,"context_line":"        \"\"\"Creates a volume."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param size: Size of volume in GB"}],"source_content_type":"text/x-python","patch_set":21,"id":"da36d5c6_e2b47ef3","line":34,"range":{"start_line":34,"start_character":22,"end_line":34,"end_character":40},"updated":"2017-02-21 16:17:44.000000000","message":"It is not used in this function.","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"a0edce6677d6aa864a3736f78b5c1380236cc332","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                      project_id\u003dNone, availability_zone\u003dNone,"},{"line_number":32,"context_line":"                      metadata\u003dNone, imageRef\u003dNone, scheduler_hints\u003dNone,"},{"line_number":33,"context_line":"                      source_replica\u003dNone, multiattach\u003dFalse,"},{"line_number":34,"context_line":"                      atomic_action\u003dTrue):"},{"line_number":35,"context_line":"        \"\"\"Creates a volume."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param size: Size of volume in GB"}],"source_content_type":"text/x-python","patch_set":21,"id":"da36d5c6_5c5fdd0d","line":34,"range":{"start_line":34,"start_character":22,"end_line":34,"end_character":40},"in_reply_to":"da36d5c6_5055061b","updated":"2017-02-22 04:42:03.000000000","message":"I see it In this line https://github.com/openstack/rally/blob/master/rally/task/atomic.py#L90.\nBut it\u0027s default is True. If we don\u0027t plan change this value, we can cancel this param:)","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"6f6007878b8734008f27bdb3df6796e5d6f307c0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                      project_id\u003dNone, availability_zone\u003dNone,"},{"line_number":32,"context_line":"                      metadata\u003dNone, imageRef\u003dNone, scheduler_hints\u003dNone,"},{"line_number":33,"context_line":"                      source_replica\u003dNone, multiattach\u003dFalse,"},{"line_number":34,"context_line":"                      atomic_action\u003dTrue):"},{"line_number":35,"context_line":"        \"\"\"Creates a volume."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param size: Size of volume in GB"}],"source_content_type":"text/x-python","patch_set":21,"id":"da36d5c6_857603d5","line":34,"range":{"start_line":34,"start_character":22,"end_line":34,"end_character":40},"in_reply_to":"da36d5c6_5c5fdd0d","updated":"2017-02-24 01:13:01.000000000","message":"Agree.Here in the scenario CinderVolumes.create_volume_and_clone,we\nchange this argument，rename create_volume to clone_volume.","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"fe237f46a2259bb14c3ce3d86647daa5e56ecfee","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                      project_id\u003dNone, availability_zone\u003dNone,"},{"line_number":32,"context_line":"                      metadata\u003dNone, imageRef\u003dNone, scheduler_hints\u003dNone,"},{"line_number":33,"context_line":"                      source_replica\u003dNone, multiattach\u003dFalse,"},{"line_number":34,"context_line":"                      atomic_action\u003dTrue):"},{"line_number":35,"context_line":"        \"\"\"Creates a volume."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param size: Size of volume in GB"}],"source_content_type":"text/x-python","patch_set":21,"id":"da36d5c6_5055061b","line":34,"range":{"start_line":34,"start_character":22,"end_line":34,"end_character":40},"in_reply_to":"da36d5c6_e2b47ef3","updated":"2017-02-22 01:13:33.000000000","message":"Thanks for your comment.\nThis argument is not friendly. atomic_action is used by atomic.optional_action_timer, the action is renamed in the scenario CinderVolumes.create_volume_and_clone","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0b118873bd4c89feb8c91a8600fcb9be6da4bee8","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        :returns: Return a new volume."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        kwargs \u003d {\"name\": self.generate_random_name(),"},{"line_number":59,"context_line":"                  \"description\": description,"},{"line_number":60,"context_line":"                  \"consistencygroup_id\": consistencygroup_id,"},{"line_number":61,"context_line":"                  \"snapshot_id\": snapshot_id,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_842d8048","line":58,"range":{"start_line":58,"start_character":17,"end_line":58,"end_character":54},"updated":"2017-03-20 16:54:11.000000000","message":"same here","commit_id":"ba6ea855d3e39a760ae2e5c6b6b4ad051582ce68"}],"tests/unit/plugins/openstack/services/storage/test_block.py":[{"author":{"_account_id":23094,"name":"Staroverov Anton","email":"avstaroverov@gmail.com","username":"astaroverov"},"change_message_id":"346621b387362663651b4e60aaca90ffcb5a4887","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        return service"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_create_volume(self):"},{"line_number":35,"context_line":"        service \u003d self.get_service_with_fake_impl()"},{"line_number":36,"context_line":"        service.create_volume(\"fake_volume\")"},{"line_number":37,"context_line":"        service._impl.create_volume.assert_called_once_with("},{"line_number":38,"context_line":"            \"fake_volume\", availability_zone\u003dNone, consistencygroup_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_42402a57","line":35,"updated":"2017-03-07 09:19:27.000000000","message":"Why you\u0027re don\u0027t move this code to setUp() module?","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"72b245b31fd05041f1243ab9762cf20458a6de11","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        return service"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_create_volume(self):"},{"line_number":35,"context_line":"        service \u003d self.get_service_with_fake_impl()"},{"line_number":36,"context_line":"        service.create_volume(\"fake_volume\")"},{"line_number":37,"context_line":"        service._impl.create_volume.assert_called_once_with("},{"line_number":38,"context_line":"            \"fake_volume\", availability_zone\u003dNone, consistencygroup_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_d52bc4e9","line":35,"in_reply_to":"9a30ddce_42402a57","updated":"2017-03-08 10:46:39.000000000","message":"Done","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":23094,"name":"Staroverov Anton","email":"avstaroverov@gmail.com","username":"astaroverov"},"change_message_id":"346621b387362663651b4e60aaca90ffcb5a4887","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def test_list_volumes(self):"},{"line_number":46,"context_line":"        service \u003d self.get_service_with_fake_impl()"},{"line_number":47,"context_line":"        service.list_volumes(detailed\u003dTrue)"},{"line_number":48,"context_line":"        service._impl.list_volumes.assert_called_once_with(detailed\u003dTrue)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_get_volume(self):"},{"line_number":51,"context_line":"        service \u003d self.get_service_with_fake_impl()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_8d55f3c7","line":48,"updated":"2017-03-07 09:19:27.000000000","message":"I propose you to add assertion on return value for all tests","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"72b245b31fd05041f1243ab9762cf20458a6de11","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def test_list_volumes(self):"},{"line_number":46,"context_line":"        service \u003d self.get_service_with_fake_impl()"},{"line_number":47,"context_line":"        service.list_volumes(detailed\u003dTrue)"},{"line_number":48,"context_line":"        service._impl.list_volumes.assert_called_once_with(detailed\u003dTrue)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_get_volume(self):"},{"line_number":51,"context_line":"        service \u003d self.get_service_with_fake_impl()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a30ddce_15363c52","line":48,"in_reply_to":"9a30ddce_8d55f3c7","updated":"2017-03-08 10:46:39.000000000","message":"Done","commit_id":"f340901233e3b54f6216e415a6f9655f2e3e7627"}]}
