Procházet zdrojové kódy

Rename object store containers to buckets to disambiguate from application containers

Enis Afgan před 10 roky
rodič
revize
e6217d1f18

+ 6 - 6
cloudbridge/cloud/base.py

@@ -10,8 +10,8 @@ import six
 from cloudbridge.cloud.interfaces import CloudProvider
 from cloudbridge.cloud.interfaces.resources \
     import InvalidConfigurationException
-from cloudbridge.cloud.interfaces.resources import Container
-from cloudbridge.cloud.interfaces.resources import ContainerObject
+from cloudbridge.cloud.interfaces.resources import Bucket
+from cloudbridge.cloud.interfaces.resources import BucketObject
 from cloudbridge.cloud.interfaces.resources import Instance
 from cloudbridge.cloud.interfaces.resources import InstanceState
 from cloudbridge.cloud.interfaces.resources import InstanceType
@@ -558,13 +558,13 @@ class BaseRegion(Region):
                 self.id == other.id)
 
 
-class BaseContainerObject(ContainerObject):
+class BaseBucketObject(BucketObject):
 
     def __init__(self, provider):
         self._provider = provider
 
     def __eq__(self, other):
-        return (isinstance(other, ContainerObject) and
+        return (isinstance(other, BucketObject) and
                 # pylint:disable=protected-access
                 self._provider == other._provider and
                 self.id == other.id and
@@ -576,13 +576,13 @@ class BaseContainerObject(ContainerObject):
                                       self.name)
 
 
-class BaseContainer(BasePageableObjectMixin, Container):
+class BaseBucket(BasePageableObjectMixin, Bucket):
 
     def __init__(self, provider):
         self._provider = provider
 
     def __eq__(self, other):
-        return (isinstance(other, Container) and
+        return (isinstance(other, Bucket) and
                 # pylint:disable=protected-access
                 self._provider == other._provider and
                 self.id == other.id and

+ 16 - 17
cloudbridge/cloud/interfaces/resources.py

@@ -1275,10 +1275,10 @@ class SecurityGroupRule(object):
         pass
 
 
-class ContainerObject(object):
+class BucketObject(object):
 
     """
-    Represents an object stored within a container.
+    Represents an object stored within a bucket.
     """
     __metaclass__ = ABCMeta
 
@@ -1305,8 +1305,7 @@ class ContainerObject(object):
     @abstractmethod
     def download(self, target_stream):
         """
-        Download this object and write its
-        contents to the target_stream.
+        Download this object and write its contents to the ``target_stream``.
 
         :rtype: bool
         :return: ``True`` if successful.
@@ -1335,60 +1334,60 @@ class ContainerObject(object):
         pass
 
 
-class Container(PageableObjectMixin):
+class Bucket(PageableObjectMixin):
 
     __metaclass__ = ABCMeta
 
     @abstractproperty
     def id(self):
         """
-        Get this container's id.
+        Get this bucket's id.
 
         :rtype: id
-        :return: id of this container as returned by the cloud middleware.
+        :return: id of this bucket as returned by the cloud middleware.
         """
         pass
 
     @abstractproperty
     def name(self):
         """
-        Get this container's name.
+        Get this bucket's name.
 
         :rtype: str
-        :return: Name of this container as returned by the cloud middleware.
+        :return: Name of this bucket as returned by the cloud middleware.
         """
         pass
 
     @abstractmethod
     def get(self, key):
         """
-        Retrieve a given object from this container.
+        Retrieve a given object from this bucket.
 
         :type key: str
         :param key: the identifier of the object to retrieve
 
-        :rtype: :class:``.ContainerObject``
-        :return: The ContainerObject or ``None`` if it cannot be found.
+        :rtype: :class:``.BucketObject``
+        :return: The BucketObject or ``None`` if it cannot be found.
         """
         pass
 
     @abstractmethod
     def list(self, limit=None, marker=None):
         """
-        List all objects within this container.
+        List all objects within this bucket.
 
-        :rtype: :class:``.ContainerObject``
-        :return: List of all available ContainerObjects within this container.
+        :rtype: :class:``.BucketObject``
+        :return: List of all available BucketObjects within this bucket.
         """
         pass
 
     @abstractmethod
     def delete(self, delete_contents=False):
         """
-        Delete this container.
+        Delete this bucket.
 
         :type delete_contents: bool
-        :param delete_contents: If ``True``, all objects within the container
+        :param delete_contents: If ``True``, all objects within the bucket
                                 will be deleted.
 
         :rtype: bool

+ 15 - 15
cloudbridge/cloud/interfaces/services.py

@@ -404,49 +404,49 @@ class ObjectStoreService(PageableObjectMixin, ProviderService):
     __metaclass__ = ABCMeta
 
     @abstractmethod
-    def get(self, container_id):
+    def get(self, bucket_id):
         """
-        Returns a container given its id. Returns None if the container
+        Returns a bucket given its ID. Returns ``None`` if the bucket
         does not exist.
 
-        :rtype: ``object`` of :class:`.Container`
-        :return:  a Container instance
+        :rtype: ``object`` of :class:`.Bucket`
+        :return:  a Bucket instance or ``None``
         """
         pass
 
     @abstractmethod
     def find(self, name):
         """
-        Searches for a container by a given list of attributes
+        Searches for a bucket by a given list of attributes.
 
-        :rtype: ``object`` of :class:`.Container`
-        :return:  a Container instance
+        :rtype: ``object`` of :class:`.Bucket`
+        :return:  a Bucket instance
         """
         pass
 
     @abstractmethod
     def list(self, limit=None, marker=None):
         """
-        List all containers.
+        List all buckets.
 
-        :rtype: ``list`` of :class:`.Container`
-        :return:  list of container objects
+        :rtype: ``list`` of :class:`.Bucket`
+        :return:  list of bucket objects
         """
         pass
 
     @abstractmethod
     def create(self, name, location=None):
         """
-        Create a new container.
+        Create a new bucket.
 
         :type name: str
-        :param name: The name of this container
+        :param name: The name of this bucket.
 
         :type location: ``object`` of :class:`.Region`
-        :param location: The region in which to place this container
+        :param location: The region in which to place this bucket.
 
-        :return:  a Container object
-        :rtype: ``object`` of :class:`.Container`
+        :return:  a Bucket object
+        :rtype: ``object`` of :class:`.Bucket`
         """
         pass
 

+ 15 - 15
cloudbridge/cloud/providers/aws/resources.py

@@ -8,8 +8,8 @@ from boto.s3.key import Key
 from retrying import retry
 
 from cloudbridge.cloud import helpers as cbhelpers
-from cloudbridge.cloud.base import BaseContainer
-from cloudbridge.cloud.base import BaseContainerObject
+from cloudbridge.cloud.base import BaseBucket
+from cloudbridge.cloud.base import BaseBucketObject
 from cloudbridge.cloud.base import BaseInstance
 from cloudbridge.cloud.base import BaseInstanceType
 from cloudbridge.cloud.base import BaseKeyPair
@@ -589,10 +589,10 @@ class AWSSecurityGroupRule(BaseSecurityGroupRule):
         return None
 
 
-class AWSContainerObject(BaseContainerObject):
+class AWSBucketObject(BaseBucketObject):
 
     def __init__(self, provider, key):
-        super(AWSContainerObject, self).__init__(provider)
+        super(AWSBucketObject, self).__init__(provider)
         self._key = key
 
     @property
@@ -630,10 +630,10 @@ class AWSContainerObject(BaseContainerObject):
         self._key.delete()
 
 
-class AWSContainer(BaseContainer):
+class AWSBucket(BaseBucket):
 
     def __init__(self, provider, bucket):
-        super(AWSContainer, self).__init__(provider)
+        super(AWSBucket, self).__init__(provider)
         self._bucket = bucket
 
     @property
@@ -643,38 +643,38 @@ class AWSContainer(BaseContainer):
     @property
     def name(self):
         """
-        Get this container's name.
+        Get this bucket's name.
         """
         return self._bucket.name
 
     def get(self, key):
         """
-        Retrieve a given object from this container.
+        Retrieve a given object from this bucket.
         """
         raise NotImplementedError(
-            'Container.list not implemented by this provider')
+            'Bucket.list not implemented by this provider')
 
     def list(self, limit=None, marker=None):
         """
-        List all objects within this container.
+        List all objects within this bucket.
 
-        :rtype: ContainerObject
-        :return: List of all available ContainerObjects within this container
+        :rtype: BucketObject
+        :return: List of all available BucketObjects within this bucket.
         """
-        objects = [AWSContainerObject(self._provider, obj)
+        objects = [AWSBucketObject(self._provider, obj)
                    for obj in self._bucket.list()]
         return cbhelpers.to_result_list(self._provider, objects, limit,
                                         marker)
 
     def delete(self, delete_contents=False):
         """
-        Delete this container.
+        Delete this bucket.
         """
         self._bucket.delete()
 
     def create_object(self, name):
         key = Key(self._bucket, name)
-        return AWSContainerObject(self._provider, key)
+        return AWSBucketObject(self._provider, key)
 
 
 class AWSRegion(BaseRegion):

+ 10 - 10
cloudbridge/cloud/providers/aws/services.py

@@ -34,7 +34,7 @@ from cloudbridge.cloud.interfaces.resources import Snapshot
 from cloudbridge.cloud.interfaces.resources import Volume
 from cloudbridge.cloud.providers.aws import helpers as awshelpers
 
-from .resources import AWSContainer
+from .resources import AWSBucket
 from .resources import AWSInstance
 from .resources import AWSInstanceType
 from .resources import AWSKeyPair
@@ -321,41 +321,41 @@ class AWSObjectStoreService(BaseObjectStoreService):
     def __init__(self, provider):
         super(AWSObjectStoreService, self).__init__(provider)
 
-    def get(self, container_id):
+    def get(self, bucket_id):
         """
-        Returns a container given its id. Returns None if the container
+        Returns a bucket given its ID. Returns ``None`` if the bucket
         does not exist.
         """
-        bucket = self.provider.s3_conn.lookup(container_id)
+        bucket = self.provider.s3_conn.lookup(bucket_id)
         if bucket:
-            return AWSContainer(self.provider, bucket)
+            return AWSBucket(self.provider, bucket)
         else:
             return None
 
     def find(self, name):
         """
-        Searches for a container by a given list of attributes
+        Searches for a bucket by a given list of attributes.
         """
         raise NotImplementedError(
-            'find_container not implemented by this provider')
+            'ObjectStoreService.find not implemented by this provider.')
 
     def list(self, limit=None, marker=None):
         """
         List all containers.
         """
-        buckets = [AWSContainer(self.provider, bucket)
+        buckets = [AWSBucket(self.provider, bucket)
                    for bucket in self.provider.s3_conn.get_all_buckets()]
         return cbhelpers.to_result_list(self.provider, buckets, limit,
                                         marker)
 
     def create(self, name, location=None):
         """
-        Create a new container.
+        Create a new bucket.
         """
         bucket = self.provider.s3_conn.create_bucket(
             name,
             location=location if location else '')
-        return AWSContainer(self.provider, bucket)
+        return AWSBucket(self.provider, bucket)
 
 
 class AWSImageService(BaseImageService):

+ 19 - 19
cloudbridge/cloud/providers/openstack/resources.py

@@ -6,8 +6,8 @@ import shutil
 import ipaddress
 from swiftclient.exceptions import ClientException
 
-from cloudbridge.cloud.base import BaseContainer
-from cloudbridge.cloud.base import BaseContainerObject
+from cloudbridge.cloud.base import BaseBucket
+from cloudbridge.cloud.base import BaseBucketObject
 from cloudbridge.cloud.base import BaseInstance
 from cloudbridge.cloud.base import BaseInstanceType
 from cloudbridge.cloud.base import BaseKeyPair
@@ -635,10 +635,10 @@ class OpenStackSecurityGroupRule(BaseSecurityGroupRule):
         return None
 
 
-class OpenStackContainerObject(BaseContainerObject):
+class OpenStackBucketObject(BaseBucketObject):
 
     def __init__(self, provider, cbcontainer, obj):
-        super(OpenStackContainerObject, self).__init__(provider)
+        super(OpenStackBucketObject, self).__init__(provider)
         self.cbcontainer = cbcontainer
         self._obj = obj
 
@@ -686,47 +686,47 @@ class OpenStackContainerObject(BaseContainerObject):
         return False
 
 
-class OpenStackContainer(BaseContainer):
+class OpenStackBucket(BaseBucket):
 
-    def __init__(self, provider, container):
-        super(OpenStackContainer, self).__init__(provider)
-        self._container = container
+    def __init__(self, provider, bucket):
+        super(OpenStackBucket, self).__init__(provider)
+        self._bucket = bucket
 
     @property
     def id(self):
-        return self._container.get("name")
+        return self._bucket.get("name")
 
     @property
     def name(self):
         """
-        Get this container's name.
+        Get this bucket's name.
         """
-        return self._container.get("name")
+        return self._bucket.get("name")
 
     def get(self, key):
         """
-        Retrieve a given object from this container.
+        Retrieve a given object from this bucket.
         """
         _, object_list = self._provider.swift.get_container(
             self.name, prefix=key)
         if object_list:
-            return OpenStackContainerObject(self._provider, self,
-                                            object_list[0])
+            return OpenStackBucketObject(self._provider, self,
+                                         object_list[0])
         else:
             return None
 
     def list(self, limit=None, marker=None):
         """
-        List all objects within this container.
+        List all objects within this bucket.
 
-        :rtype: ContainerObject
-        :return: List of all available ContainerObjects within this container
+        :rtype: BucketObject
+        :return: List of all available BucketObjects within this bucket.
         """
         def _list_container_objects(nlimit):
             _, object_list = self._provider.swift.get_container(
                 self.name,
                 limit=nlimit, marker=marker)
-            return [OpenStackContainerObject(
+            return [OpenStackBucketObject(
                 self._provider, self, obj) for obj in object_list]
 
         return oshelpers.to_result_list(
@@ -736,7 +736,7 @@ class OpenStackContainer(BaseContainer):
 
     def delete(self, delete_contents=False):
         """
-        Delete this container.
+        Delete this bucket.
         """
         self._provider.swift.delete_container(self.name)
 

+ 9 - 9
cloudbridge/cloud/providers/openstack/services.py

@@ -27,7 +27,7 @@ from cloudbridge.cloud.interfaces.resources import Snapshot
 from cloudbridge.cloud.interfaces.resources import Volume
 from cloudbridge.cloud.providers.openstack import helpers as oshelpers
 
-from .resources import OpenStackContainer
+from .resources import OpenStackBucket
 from .resources import OpenStackInstance
 from .resources import OpenStackInstanceType
 from .resources import OpenStackKeyPair
@@ -396,24 +396,24 @@ class OpenStackObjectStoreService(BaseObjectStoreService):
     def __init__(self, provider):
         super(OpenStackObjectStoreService, self).__init__(provider)
 
-    def get(self, container_id):
+    def get(self, bucket_id):
         """
-        Returns a container given its id. Returns None if the container
+        Returns a bucket given its ID. Returns ``None`` if the bucket
         does not exist.
         """
         _, container_list = self.provider.swift.get_account(
-            prefix=container_id)
+            prefix=bucket_id)
         if container_list:
-            return OpenStackContainer(self.provider, container_list[0])
+            return OpenStackBucket(self.provider, container_list[0])
         else:
             return None
 
     def find(self, name):
         """
-        Searches for a container by a given list of attributes
+        Searches for a bucket by a given list of attributes.
         """
         raise NotImplementedError(
-            'find_container not implemented by this provider')
+            'ObjectStoreService.find not implemented by this provider')
 
     def list(self, limit=None, marker=None):
         """
@@ -423,7 +423,7 @@ class OpenStackObjectStoreService(BaseObjectStoreService):
         def _list_containers(nlimit):
             _, container_list = self.provider.swift.get_account(
                 limit=nlimit, marker=marker)
-            return [OpenStackContainer(self.provider, c)
+            return [OpenStackBucket(self.provider, c)
                     for c in container_list]
 
         return oshelpers.to_result_list(
@@ -433,7 +433,7 @@ class OpenStackObjectStoreService(BaseObjectStoreService):
 
     def create(self, name, location=None):
         """
-        Create a new container.
+        Create a new bucket.
         """
         self.provider.swift.put_container(name)
         return self.get(name)

+ 61 - 61
docs/api_docs/cloud/resources.rst

@@ -3,117 +3,117 @@ Resources
 
 .. contents:: :local:
 
-CloudProviderServiceType
-------------------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.CloudProviderServiceType
-    :members:
-
 CloudBridgeBaseException
 ------------------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.CloudBridgeBaseException
+.. autoclass:: cloudbridge.cloud.interfaces.services.CloudBridgeBaseException
     :members:
 
-WaitStateException
-------------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.WaitStateException
+CloudProviderServiceType
+------------------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.CloudProviderServiceType
     :members:
 
-InvalidConfigurationException
------------------------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.InvalidConfigurationException
+Bucket
+---------
+.. autoclass:: cloudbridge.cloud.interfaces.services.Bucket
     :members:
 
-ObjectLifeCycleMixin
---------------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.ObjectLifeCycleMixin
+BucketObject
+---------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.BucketObject
     :members:
 
-ResultList
-----------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.ResultList
+Instance
+--------
+.. autoclass:: cloudbridge.cloud.interfaces.services.Instance
     :members:
 
 InstanceState
 -------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.InstanceState
+.. autoclass:: cloudbridge.cloud.interfaces.services.InstanceState
     :members:
 
-Instance
---------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.Instance
+InstanceType
+------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.InstanceType
     :members:
 
-MachineImageState
------------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.MachineImageState
+InvalidConfigurationException
+-----------------------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.InvalidConfigurationException
+    :members:
+
+KeyPair
+-------
+.. autoclass:: cloudbridge.cloud.interfaces.services.KeyPair
     :members:
 
 LaunchConfig
 ------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.LaunchConfig
+.. autoclass:: cloudbridge.cloud.interfaces.services.LaunchConfig
     :members:
 
 MachineImage
 ------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.MachineImage
+.. autoclass:: cloudbridge.cloud.interfaces.services.MachineImage
     :members:
 
-VolumeState
------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.VolumeState
+MachineImageState
+-----------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.MachineImageState
     :members:
 
-Volume
-------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.Volume
+ObjectLifeCycleMixin
+--------------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.ObjectLifeCycleMixin
     :members:
 
-SnapshotState
+PlacementZone
 -------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.SnapshotState
+.. autoclass:: cloudbridge.cloud.interfaces.services.PlacementZone
     :members:
 
-Snapshot
---------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.Snapshot
+Region
+------
+.. autoclass:: cloudbridge.cloud.interfaces.services.Region
     :members:
 
-KeyPair
--------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.KeyPair
+ResultList
+----------
+.. autoclass:: cloudbridge.cloud.interfaces.services.ResultList
     :members:
 
-Region
-------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.Region
+SecurityGroup
+-------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.SecurityGroup
     :members:
 
-PlacementZone
--------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.PlacementZone
+SecurityGroupRule
+-----------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.SecurityGroupRule
     :members:
 
-InstanceType
-------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.InstanceType
+Snapshot
+--------
+.. autoclass:: cloudbridge.cloud.interfaces.services.Snapshot
     :members:
 
-SecurityGroup
+SnapshotState
 -------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.SecurityGroup
+.. autoclass:: cloudbridge.cloud.interfaces.services.SnapshotState
     :members:
 
-SecurityGroupRule
------------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.SecurityGroupRule
+Volume
+------
+.. autoclass:: cloudbridge.cloud.interfaces.services.Volume
     :members:
 
-ContainerObject
----------------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.ContainerObject
+VolumeState
+-----------
+.. autoclass:: cloudbridge.cloud.interfaces.services.VolumeState
     :members:
 
-Container
----------
-.. autoclass:: cloudbridge.cloud.interfaces.resources.Container
+WaitStateException
+------------------
+.. autoclass:: cloudbridge.cloud.interfaces.services.WaitStateException
     :members:

+ 34 - 32
docs/api_docs/cloud/services.rst

@@ -1,67 +1,69 @@
 Services
 ========
 
-ProviderService
----------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.ProviderService
+.. contents:: :local:
+
+BlockStoreService
+-----------------
+.. autoclass:: cloudbridge.cloud.interfaces.resources.BlockStoreService
     :members:
 
 ComputeService
 --------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.ComputeService
+.. autoclass:: cloudbridge.cloud.interfaces.resources.ComputeService
     :members:
 
-InstanceService
----------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.InstanceService
-    :members:
-
-VolumeService
--------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.VolumeService
+ImageService
+------------
+.. autoclass:: cloudbridge.cloud.interfaces.resources.ImageService
     :members:
 
-SnapshotService
+InstanceService
 ---------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.SnapshotService
+.. autoclass:: cloudbridge.cloud.interfaces.resources.InstanceService
     :members:
 
-BlockStoreService
------------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.BlockStoreService
+InstanceTypesService
+--------------------
+.. autoclass:: cloudbridge.cloud.interfaces.resources.InstanceTypesService
     :members:
 
-ImageService
-------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.ImageService
+KeyPairService
+--------------
+.. autoclass:: cloudbridge.cloud.interfaces.resources.KeyPairService
     :members:
 
 ObjectStoreService
 ------------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.ObjectStoreService
+.. autoclass:: cloudbridge.cloud.interfaces.resources.ObjectStoreService
     :members:
 
-SecurityService
+ProviderService
 ---------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.SecurityService
+.. autoclass:: cloudbridge.cloud.interfaces.resources.ProviderService
     :members:
 
-KeyPairService
---------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.KeyPairService
+RegionService
+-------------
+.. autoclass:: cloudbridge.cloud.interfaces.resources.RegionService
     :members:
 
 SecurityGroupService
 --------------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.SecurityGroupService
+.. autoclass:: cloudbridge.cloud.interfaces.resources.SecurityGroupService
     :members:
 
-InstanceTypesService
---------------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.InstanceTypesService
+SecurityService
+---------------
+.. autoclass:: cloudbridge.cloud.interfaces.resources.SecurityService
     :members:
 
-RegionService
+SnapshotService
+---------------
+.. autoclass:: cloudbridge.cloud.interfaces.resources.SnapshotService
+    :members:
+
+VolumeService
 -------------
-.. autoclass:: cloudbridge.cloud.interfaces.services.RegionService
+.. autoclass:: cloudbridge.cloud.interfaces.resources.VolumeService
     :members:

+ 3 - 3
docs/images/object_relationships_detailed.svg

@@ -558,7 +558,7 @@
        x="328.67926">snapshots</text>
   </a>
   <a
-     xlink:href="../api_docs/cloud/resources.html#container"
+     xlink:href="../api_docs/cloud/resources.html#bucket"
      target="_parent"
      id="svg_25">
     <path
@@ -574,7 +574,7 @@
        y="648.35571"
        id="e33_5"
        font-size="18.3663px"
-       xml:space="preserve">Container</text>
+       xml:space="preserve">Bucket</text>
   </a>
   <a
      xlink:href="../api_docs/cloud/resources.html#containerobject"
@@ -593,7 +593,7 @@
        y="648.35571"
        id="e34_5"
        font-size="18.3663px"
-       xml:space="preserve">ContainerObject</text>
+       xml:space="preserve">BucketObject</text>
   </a>
   <a
      xlink:href="../api_docs/cloud/resources.html#securitygrouprule"

+ 44 - 44
test/test_object_store_service.py

@@ -11,68 +11,68 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
         super(CloudObjectStoreServiceTestCase, self).__init__(
             methodName=methodName, provider=provider)
 
-    def test_crud_container(self):
+    def test_crud_bucket(self):
         """
-        Create a new container, check whether the expected values are set,
-        and delete it
+        Create a new bucket, check whether the expected values are set,
+        and delete it.
         """
-        name = "cbtestcreatecontainer-{0}".format(uuid.uuid4())
-        test_container = self.provider.object_store.create(name)
-        with helpers.cleanup_action(lambda: test_container.delete()):
+        name = "cbtestcreatebucket-{0}".format(uuid.uuid4())
+        test_bucket = self.provider.object_store.create(name)
+        with helpers.cleanup_action(lambda: test_bucket.delete()):
             self.assertTrue(
-                test_container.id in repr(test_container),
+                test_bucket.id in repr(test_bucket),
                 "repr(obj) should contain the object id so that the object"
                 " can be reconstructed, but does not. eval(repr(obj)) == obj")
 
-            containers = self.provider.object_store.list()
+            buckets = self.provider.object_store.list()
 
-            found_containers = [c for c in containers if c.name == name]
+            found_buckets = [c for c in buckets if c.name == name]
             self.assertTrue(
-                len(found_containers) == 1,
-                "List containers does not return the expected container %s" %
+                len(found_buckets) == 1,
+                "List buckets does not return the expected bucket %s" %
                 name)
 
             # check iteration
-            found_containers = [c for c in self.provider.object_store
-                                if c.name == name]
+            found_buckets = [c for c in self.provider.object_store
+                             if c.name == name]
             self.assertTrue(
-                len(found_containers) == 1,
-                "Iter containers does not return the expected container %s" %
+                len(found_buckets) == 1,
+                "Iter buckets does not return the expected bucket %s" %
                 name)
 
-            get_container = self.provider.object_store.get(
-                test_container.id)
+            get_bucket = self.provider.object_store.get(
+                test_bucket.id)
             self.assertTrue(
-                found_containers[0] ==
-                get_container == test_container,
+                found_buckets[0] ==
+                get_bucket == test_bucket,
                 "Objects returned by list: {0} and get: {1} are not as "
-                " expected: {2}" .format(found_containers[0].id,
-                                         get_container.id,
-                                         test_container.name))
+                " expected: {2}" .format(found_buckets[0].id,
+                                         get_bucket.id,
+                                         test_bucket.name))
 
-        containers = self.provider.object_store.list()
-        found_containers = [c for c in containers if c.name == name]
+        buckets = self.provider.object_store.list()
+        found_buckets = [c for c in buckets if c.name == name]
         self.assertTrue(
-            len(found_containers) == 0,
-            "Container %s should have been deleted but still exists." %
+            len(found_buckets) == 0,
+            "Bucket %s should have been deleted but still exists." %
             name)
 
-    def test_crud_container_objects(self):
+    def test_crud_bucket_objects(self):
         """
-        Create a new container, upload some contents into the container, and
+        Create a new bucket, upload some contents into the bucket, and
         check whether list properly detects the new content.
         Delete everything afterwards.
         """
-        name = "cbtestcontainerobjs-{0}".format(uuid.uuid4())
-        test_container = self.provider.object_store.create(name)
+        name = "cbtestbucketobjs-{0}".format(uuid.uuid4())
+        test_bucket = self.provider.object_store.create(name)
 
-        # ensure that the container is empty
-        objects = test_container.list()
+        # ensure that the bucket is empty
+        objects = test_bucket.list()
         self.assertEqual([], objects)
 
-        with helpers.cleanup_action(lambda: test_container.delete()):
+        with helpers.cleanup_action(lambda: test_bucket.delete()):
             obj_name = "hello_world.txt"
-            obj = test_container.create_object(obj_name)
+            obj = test_bucket.create_object(obj_name)
 
             self.assertTrue(
                 obj.id in repr(obj),
@@ -85,16 +85,16 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
                 # the content. Maybe the create_object method should accept
                 # the file content as a parameter.
                 obj.upload("dummy content")
-                objs = test_container.list()
+                objs = test_bucket.list()
 
                 # check iteration
-                iter_objs = list(test_container)
+                iter_objs = list(test_bucket)
                 self.assertListEqual(iter_objs, objs)
 
                 found_objs = [o for o in objs if o.name == obj_name]
                 self.assertTrue(
                     len(found_objs) == 1,
-                    "List container objects does not return the expected"
+                    "List bucket objects does not return the expected"
                     " object %s" % obj_name)
 
                 self.assertTrue(
@@ -103,24 +103,24 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
                     " expected: {1}" .format(found_objs[0].id,
                                              obj.id))
 
-            objs = test_container.list()
+            objs = test_bucket.list()
             found_objs = [o for o in objs if o.name == obj_name]
             self.assertTrue(
                 len(found_objs) == 0,
                 "Object %s should have been deleted but still exists." %
                 obj_name)
 
-    def test_upload_download_container_content(self):
+    def test_upload_download_bucket_content(self):
 
-        name = "cbtestcontainerobjs-{0}".format(uuid.uuid4())
-        test_container = self.provider.object_store.create(name)
+        name = "cbtestbucketobjs-{0}".format(uuid.uuid4())
+        test_bucket = self.provider.object_store.create(name)
 
-        with helpers.cleanup_action(lambda: test_container.delete()):
+        with helpers.cleanup_action(lambda: test_bucket.delete()):
             obj_name = "hello_upload_download.txt"
-            obj = test_container.create_object(obj_name)
+            obj = test_bucket.create_object(obj_name)
 
             with helpers.cleanup_action(lambda: obj.delete()):
-                content = b"Hello World. Here's some content"
+                content = b"Hello World. Here's some content."
                 # TODO: Upload and download methods accept different parameter
                 # types. Need to make this consistent - possibly provider
                 # multiple methods like upload_from_file, from_stream etc.