Move all modules under the next structure: - rally_openstack.common - rally_openstack.enviromnet - rally_openstack.task - rally_openstack.verification Change-Id: I41702d017cd49b117da3b8e12b19c7327229ae32
118 lines
4.8 KiB
Python
118 lines
4.8 KiB
Python
# Copyright 2015: Cisco Systems, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from rally.task import atomic
|
|
|
|
from rally_openstack.task import scenario
|
|
|
|
|
|
class SwiftScenario(scenario.OpenStackScenario):
|
|
"""Base class for Swift scenarios with basic atomic actions."""
|
|
|
|
@atomic.action_timer("swift.list_containers")
|
|
def _list_containers(self, full_listing=True, **kwargs):
|
|
"""Return list of containers.
|
|
|
|
:param full_listing: bool, enable unlimit number of listing returned
|
|
:param kwargs: dict, other optional parameters to get_account
|
|
|
|
:returns: tuple, (dict of response headers, a list of containers)
|
|
"""
|
|
return self.clients("swift").get_account(full_listing=full_listing,
|
|
**kwargs)
|
|
|
|
@atomic.action_timer("swift.create_container")
|
|
def _create_container(self, public=False, **kwargs):
|
|
"""Create a new container.
|
|
|
|
:param public: bool, set container as public
|
|
:param kwargs: dict, other optional parameters to put_container
|
|
|
|
:returns: container name
|
|
"""
|
|
if public:
|
|
kwargs.setdefault("headers", {})
|
|
kwargs["headers"].setdefault("X-Container-Read", ".r:*,.rlistings")
|
|
|
|
container_name = self.generate_random_name()
|
|
|
|
self.clients("swift").put_container(container_name, **kwargs)
|
|
return container_name
|
|
|
|
@atomic.action_timer("swift.delete_container")
|
|
def _delete_container(self, container_name, **kwargs):
|
|
"""Delete a container with given name.
|
|
|
|
:param container_name: str, name of the container to delete
|
|
:param kwargs: dict, other optional parameters to delete_container
|
|
"""
|
|
self.clients("swift").delete_container(container_name, **kwargs)
|
|
|
|
@atomic.action_timer("swift.list_objects")
|
|
def _list_objects(self, container_name, full_listing=True, **kwargs):
|
|
"""Return objects inside container.
|
|
|
|
:param container_name: str, name of the container to make the list
|
|
objects operation against
|
|
:param full_listing: bool, enable unlimit number of listing returned
|
|
:param kwargs: dict, other optional parameters to get_container
|
|
|
|
:returns: tuple, (dict of response headers, a list of objects)
|
|
"""
|
|
return self.clients("swift").get_container(container_name,
|
|
full_listing=full_listing,
|
|
**kwargs)
|
|
|
|
@atomic.action_timer("swift.upload_object")
|
|
def _upload_object(self, container_name, content, **kwargs):
|
|
"""Upload content to a given container.
|
|
|
|
:param container_name: str, name of the container to upload object to
|
|
:param content: file stream, content to upload
|
|
:param kwargs: dict, other optional parameters to put_object
|
|
|
|
:returns: tuple, (etag and object name)
|
|
"""
|
|
object_name = self.generate_random_name()
|
|
|
|
return (self.clients("swift").put_object(container_name, object_name,
|
|
content, **kwargs),
|
|
object_name)
|
|
|
|
@atomic.action_timer("swift.download_object")
|
|
def _download_object(self, container_name, object_name, **kwargs):
|
|
"""Download object from container.
|
|
|
|
:param container_name: str, name of the container to download object
|
|
from
|
|
:param object_name: str, name of the object to download
|
|
:param kwargs: dict, other optional parameters to get_object
|
|
|
|
:returns: tuple, (dict of response headers, the object's contents)
|
|
"""
|
|
return self.clients("swift").get_object(container_name, object_name,
|
|
**kwargs)
|
|
|
|
@atomic.action_timer("swift.delete_object")
|
|
def _delete_object(self, container_name, object_name, **kwargs):
|
|
"""Delete object from container.
|
|
|
|
:param container_name: str, name of the container to delete object from
|
|
:param object_name: str, name of the object to delete
|
|
:param kwargs: dict, other optional parameters to delete_object
|
|
"""
|
|
self.clients("swift").delete_object(container_name, object_name,
|
|
**kwargs)
|