Ver Fonte

Rename object store containers to buckets to disambiguate from application containers

Enis Afgan há 10 anos atrás
pai
commit
e6217d1f18

+ 6 - 6
cloudbridge/cloud/base.py

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

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

@@ -1275,10 +1275,10 @@ class SecurityGroupRule(object):
         pass
         pass
 
 
 
 
-class ContainerObject(object):
+class BucketObject(object):
 
 
     """
     """
-    Represents an object stored within a container.
+    Represents an object stored within a bucket.
     """
     """
     __metaclass__ = ABCMeta
     __metaclass__ = ABCMeta
 
 
@@ -1305,8 +1305,7 @@ class ContainerObject(object):
     @abstractmethod
     @abstractmethod
     def download(self, target_stream):
     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
         :rtype: bool
         :return: ``True`` if successful.
         :return: ``True`` if successful.
@@ -1335,60 +1334,60 @@ class ContainerObject(object):
         pass
         pass
 
 
 
 
-class Container(PageableObjectMixin):
+class Bucket(PageableObjectMixin):
 
 
     __metaclass__ = ABCMeta
     __metaclass__ = ABCMeta
 
 
     @abstractproperty
     @abstractproperty
     def id(self):
     def id(self):
         """
         """
-        Get this container's id.
+        Get this bucket's id.
 
 
         :rtype: 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
         pass
 
 
     @abstractproperty
     @abstractproperty
     def name(self):
     def name(self):
         """
         """
-        Get this container's name.
+        Get this bucket's name.
 
 
         :rtype: str
         :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
         pass
 
 
     @abstractmethod
     @abstractmethod
     def get(self, key):
     def get(self, key):
         """
         """
-        Retrieve a given object from this container.
+        Retrieve a given object from this bucket.
 
 
         :type key: str
         :type key: str
         :param key: the identifier of the object to retrieve
         :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
         pass
 
 
     @abstractmethod
     @abstractmethod
     def list(self, limit=None, marker=None):
     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
         pass
 
 
     @abstractmethod
     @abstractmethod
     def delete(self, delete_contents=False):
     def delete(self, delete_contents=False):
         """
         """
-        Delete this container.
+        Delete this bucket.
 
 
         :type delete_contents: bool
         :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.
                                 will be deleted.
 
 
         :rtype: bool
         :rtype: bool

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

@@ -404,49 +404,49 @@ class ObjectStoreService(PageableObjectMixin, ProviderService):
     __metaclass__ = ABCMeta
     __metaclass__ = ABCMeta
 
 
     @abstractmethod
     @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.
         does not exist.
 
 
-        :rtype: ``object`` of :class:`.Container`
-        :return:  a Container instance
+        :rtype: ``object`` of :class:`.Bucket`
+        :return:  a Bucket instance or ``None``
         """
         """
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
     def find(self, name):
     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
         pass
 
 
     @abstractmethod
     @abstractmethod
     def list(self, limit=None, marker=None):
     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
         pass
 
 
     @abstractmethod
     @abstractmethod
     def create(self, name, location=None):
     def create(self, name, location=None):
         """
         """
-        Create a new container.
+        Create a new bucket.
 
 
         :type name: str
         :type name: str
-        :param name: The name of this container
+        :param name: The name of this bucket.
 
 
         :type location: ``object`` of :class:`.Region`
         :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
         pass
 
 

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

@@ -8,8 +8,8 @@ from boto.s3.key import Key
 from retrying import retry
 from retrying import retry
 
 
 from cloudbridge.cloud import helpers as cbhelpers
 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 BaseInstance
 from cloudbridge.cloud.base import BaseInstanceType
 from cloudbridge.cloud.base import BaseInstanceType
 from cloudbridge.cloud.base import BaseKeyPair
 from cloudbridge.cloud.base import BaseKeyPair
@@ -589,10 +589,10 @@ class AWSSecurityGroupRule(BaseSecurityGroupRule):
         return None
         return None
 
 
 
 
-class AWSContainerObject(BaseContainerObject):
+class AWSBucketObject(BaseBucketObject):
 
 
     def __init__(self, provider, key):
     def __init__(self, provider, key):
-        super(AWSContainerObject, self).__init__(provider)
+        super(AWSBucketObject, self).__init__(provider)
         self._key = key
         self._key = key
 
 
     @property
     @property
@@ -630,10 +630,10 @@ class AWSContainerObject(BaseContainerObject):
         self._key.delete()
         self._key.delete()
 
 
 
 
-class AWSContainer(BaseContainer):
+class AWSBucket(BaseBucket):
 
 
     def __init__(self, provider, bucket):
     def __init__(self, provider, bucket):
-        super(AWSContainer, self).__init__(provider)
+        super(AWSBucket, self).__init__(provider)
         self._bucket = bucket
         self._bucket = bucket
 
 
     @property
     @property
@@ -643,38 +643,38 @@ class AWSContainer(BaseContainer):
     @property
     @property
     def name(self):
     def name(self):
         """
         """
-        Get this container's name.
+        Get this bucket's name.
         """
         """
         return self._bucket.name
         return self._bucket.name
 
 
     def get(self, key):
     def get(self, key):
         """
         """
-        Retrieve a given object from this container.
+        Retrieve a given object from this bucket.
         """
         """
         raise NotImplementedError(
         raise NotImplementedError(
-            'Container.list not implemented by this provider')
+            'Bucket.list not implemented by this provider')
 
 
     def list(self, limit=None, marker=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.
         """
         """
-        objects = [AWSContainerObject(self._provider, obj)
+        objects = [AWSBucketObject(self._provider, obj)
                    for obj in self._bucket.list()]
                    for obj in self._bucket.list()]
         return cbhelpers.to_result_list(self._provider, objects, limit,
         return cbhelpers.to_result_list(self._provider, objects, limit,
                                         marker)
                                         marker)
 
 
     def delete(self, delete_contents=False):
     def delete(self, delete_contents=False):
         """
         """
-        Delete this container.
+        Delete this bucket.
         """
         """
         self._bucket.delete()
         self._bucket.delete()
 
 
     def create_object(self, name):
     def create_object(self, name):
         key = Key(self._bucket, name)
         key = Key(self._bucket, name)
-        return AWSContainerObject(self._provider, key)
+        return AWSBucketObject(self._provider, key)
 
 
 
 
 class AWSRegion(BaseRegion):
 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.interfaces.resources import Volume
 from cloudbridge.cloud.providers.aws import helpers as awshelpers
 from cloudbridge.cloud.providers.aws import helpers as awshelpers
 
 
-from .resources import AWSContainer
+from .resources import AWSBucket
 from .resources import AWSInstance
 from .resources import AWSInstance
 from .resources import AWSInstanceType
 from .resources import AWSInstanceType
 from .resources import AWSKeyPair
 from .resources import AWSKeyPair
@@ -321,41 +321,41 @@ class AWSObjectStoreService(BaseObjectStoreService):
     def __init__(self, provider):
     def __init__(self, provider):
         super(AWSObjectStoreService, self).__init__(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.
         does not exist.
         """
         """
-        bucket = self.provider.s3_conn.lookup(container_id)
+        bucket = self.provider.s3_conn.lookup(bucket_id)
         if bucket:
         if bucket:
-            return AWSContainer(self.provider, bucket)
+            return AWSBucket(self.provider, bucket)
         else:
         else:
             return None
             return None
 
 
     def find(self, name):
     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(
         raise NotImplementedError(
-            'find_container not implemented by this provider')
+            'ObjectStoreService.find not implemented by this provider.')
 
 
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         """
         """
         List all containers.
         List all containers.
         """
         """
-        buckets = [AWSContainer(self.provider, bucket)
+        buckets = [AWSBucket(self.provider, bucket)
                    for bucket in self.provider.s3_conn.get_all_buckets()]
                    for bucket in self.provider.s3_conn.get_all_buckets()]
         return cbhelpers.to_result_list(self.provider, buckets, limit,
         return cbhelpers.to_result_list(self.provider, buckets, limit,
                                         marker)
                                         marker)
 
 
     def create(self, name, location=None):
     def create(self, name, location=None):
         """
         """
-        Create a new container.
+        Create a new bucket.
         """
         """
         bucket = self.provider.s3_conn.create_bucket(
         bucket = self.provider.s3_conn.create_bucket(
             name,
             name,
             location=location if location else '')
             location=location if location else '')
-        return AWSContainer(self.provider, bucket)
+        return AWSBucket(self.provider, bucket)
 
 
 
 
 class AWSImageService(BaseImageService):
 class AWSImageService(BaseImageService):

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

@@ -6,8 +6,8 @@ import shutil
 import ipaddress
 import ipaddress
 from swiftclient.exceptions import ClientException
 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 BaseInstance
 from cloudbridge.cloud.base import BaseInstanceType
 from cloudbridge.cloud.base import BaseInstanceType
 from cloudbridge.cloud.base import BaseKeyPair
 from cloudbridge.cloud.base import BaseKeyPair
@@ -635,10 +635,10 @@ class OpenStackSecurityGroupRule(BaseSecurityGroupRule):
         return None
         return None
 
 
 
 
-class OpenStackContainerObject(BaseContainerObject):
+class OpenStackBucketObject(BaseBucketObject):
 
 
     def __init__(self, provider, cbcontainer, obj):
     def __init__(self, provider, cbcontainer, obj):
-        super(OpenStackContainerObject, self).__init__(provider)
+        super(OpenStackBucketObject, self).__init__(provider)
         self.cbcontainer = cbcontainer
         self.cbcontainer = cbcontainer
         self._obj = obj
         self._obj = obj
 
 
@@ -686,47 +686,47 @@ class OpenStackContainerObject(BaseContainerObject):
         return False
         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
     @property
     def id(self):
     def id(self):
-        return self._container.get("name")
+        return self._bucket.get("name")
 
 
     @property
     @property
     def name(self):
     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):
     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(
         _, object_list = self._provider.swift.get_container(
             self.name, prefix=key)
             self.name, prefix=key)
         if object_list:
         if object_list:
-            return OpenStackContainerObject(self._provider, self,
-                                            object_list[0])
+            return OpenStackBucketObject(self._provider, self,
+                                         object_list[0])
         else:
         else:
             return None
             return None
 
 
     def list(self, limit=None, marker=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):
         def _list_container_objects(nlimit):
             _, object_list = self._provider.swift.get_container(
             _, object_list = self._provider.swift.get_container(
                 self.name,
                 self.name,
                 limit=nlimit, marker=marker)
                 limit=nlimit, marker=marker)
-            return [OpenStackContainerObject(
+            return [OpenStackBucketObject(
                 self._provider, self, obj) for obj in object_list]
                 self._provider, self, obj) for obj in object_list]
 
 
         return oshelpers.to_result_list(
         return oshelpers.to_result_list(
@@ -736,7 +736,7 @@ class OpenStackContainer(BaseContainer):
 
 
     def delete(self, delete_contents=False):
     def delete(self, delete_contents=False):
         """
         """
-        Delete this container.
+        Delete this bucket.
         """
         """
         self._provider.swift.delete_container(self.name)
         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.interfaces.resources import Volume
 from cloudbridge.cloud.providers.openstack import helpers as oshelpers
 from cloudbridge.cloud.providers.openstack import helpers as oshelpers
 
 
-from .resources import OpenStackContainer
+from .resources import OpenStackBucket
 from .resources import OpenStackInstance
 from .resources import OpenStackInstance
 from .resources import OpenStackInstanceType
 from .resources import OpenStackInstanceType
 from .resources import OpenStackKeyPair
 from .resources import OpenStackKeyPair
@@ -396,24 +396,24 @@ class OpenStackObjectStoreService(BaseObjectStoreService):
     def __init__(self, provider):
     def __init__(self, provider):
         super(OpenStackObjectStoreService, self).__init__(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.
         does not exist.
         """
         """
         _, container_list = self.provider.swift.get_account(
         _, container_list = self.provider.swift.get_account(
-            prefix=container_id)
+            prefix=bucket_id)
         if container_list:
         if container_list:
-            return OpenStackContainer(self.provider, container_list[0])
+            return OpenStackBucket(self.provider, container_list[0])
         else:
         else:
             return None
             return None
 
 
     def find(self, name):
     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(
         raise NotImplementedError(
-            'find_container not implemented by this provider')
+            'ObjectStoreService.find not implemented by this provider')
 
 
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         """
         """
@@ -423,7 +423,7 @@ class OpenStackObjectStoreService(BaseObjectStoreService):
         def _list_containers(nlimit):
         def _list_containers(nlimit):
             _, container_list = self.provider.swift.get_account(
             _, container_list = self.provider.swift.get_account(
                 limit=nlimit, marker=marker)
                 limit=nlimit, marker=marker)
-            return [OpenStackContainer(self.provider, c)
+            return [OpenStackBucket(self.provider, c)
                     for c in container_list]
                     for c in container_list]
 
 
         return oshelpers.to_result_list(
         return oshelpers.to_result_list(
@@ -433,7 +433,7 @@ class OpenStackObjectStoreService(BaseObjectStoreService):
 
 
     def create(self, name, location=None):
     def create(self, name, location=None):
         """
         """
-        Create a new container.
+        Create a new bucket.
         """
         """
         self.provider.swift.put_container(name)
         self.provider.swift.put_container(name)
         return self.get(name)
         return self.get(name)

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

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

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

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

+ 3 - 3
docs/images/object_relationships_detailed.svg

@@ -558,7 +558,7 @@
        x="328.67926">snapshots</text>
        x="328.67926">snapshots</text>
   </a>
   </a>
   <a
   <a
-     xlink:href="../api_docs/cloud/resources.html#container"
+     xlink:href="../api_docs/cloud/resources.html#bucket"
      target="_parent"
      target="_parent"
      id="svg_25">
      id="svg_25">
     <path
     <path
@@ -574,7 +574,7 @@
        y="648.35571"
        y="648.35571"
        id="e33_5"
        id="e33_5"
        font-size="18.3663px"
        font-size="18.3663px"
-       xml:space="preserve">Container</text>
+       xml:space="preserve">Bucket</text>
   </a>
   </a>
   <a
   <a
      xlink:href="../api_docs/cloud/resources.html#containerobject"
      xlink:href="../api_docs/cloud/resources.html#containerobject"
@@ -593,7 +593,7 @@
        y="648.35571"
        y="648.35571"
        id="e34_5"
        id="e34_5"
        font-size="18.3663px"
        font-size="18.3663px"
-       xml:space="preserve">ContainerObject</text>
+       xml:space="preserve">BucketObject</text>
   </a>
   </a>
   <a
   <a
      xlink:href="../api_docs/cloud/resources.html#securitygrouprule"
      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__(
         super(CloudObjectStoreServiceTestCase, self).__init__(
             methodName=methodName, provider=provider)
             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(
             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"
                 "repr(obj) should contain the object id so that the object"
                 " can be reconstructed, but does not. eval(repr(obj)) == obj")
                 " 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(
             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)
                 name)
 
 
             # check iteration
             # 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(
             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)
                 name)
 
 
-            get_container = self.provider.object_store.get(
-                test_container.id)
+            get_bucket = self.provider.object_store.get(
+                test_bucket.id)
             self.assertTrue(
             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 "
                 "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(
         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)
             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.
         check whether list properly detects the new content.
         Delete everything afterwards.
         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)
         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_name = "hello_world.txt"
-            obj = test_container.create_object(obj_name)
+            obj = test_bucket.create_object(obj_name)
 
 
             self.assertTrue(
             self.assertTrue(
                 obj.id in repr(obj),
                 obj.id in repr(obj),
@@ -85,16 +85,16 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
                 # the content. Maybe the create_object method should accept
                 # the content. Maybe the create_object method should accept
                 # the file content as a parameter.
                 # the file content as a parameter.
                 obj.upload("dummy content")
                 obj.upload("dummy content")
-                objs = test_container.list()
+                objs = test_bucket.list()
 
 
                 # check iteration
                 # check iteration
-                iter_objs = list(test_container)
+                iter_objs = list(test_bucket)
                 self.assertListEqual(iter_objs, objs)
                 self.assertListEqual(iter_objs, objs)
 
 
                 found_objs = [o for o in objs if o.name == obj_name]
                 found_objs = [o for o in objs if o.name == obj_name]
                 self.assertTrue(
                 self.assertTrue(
                     len(found_objs) == 1,
                     len(found_objs) == 1,
-                    "List container objects does not return the expected"
+                    "List bucket objects does not return the expected"
                     " object %s" % obj_name)
                     " object %s" % obj_name)
 
 
                 self.assertTrue(
                 self.assertTrue(
@@ -103,24 +103,24 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
                     " expected: {1}" .format(found_objs[0].id,
                     " expected: {1}" .format(found_objs[0].id,
                                              obj.id))
                                              obj.id))
 
 
-            objs = test_container.list()
+            objs = test_bucket.list()
             found_objs = [o for o in objs if o.name == obj_name]
             found_objs = [o for o in objs if o.name == obj_name]
             self.assertTrue(
             self.assertTrue(
                 len(found_objs) == 0,
                 len(found_objs) == 0,
                 "Object %s should have been deleted but still exists." %
                 "Object %s should have been deleted but still exists." %
                 obj_name)
                 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_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()):
             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
                 # TODO: Upload and download methods accept different parameter
                 # types. Need to make this consistent - possibly provider
                 # types. Need to make this consistent - possibly provider
                 # multiple methods like upload_from_file, from_stream etc.
                 # multiple methods like upload_from_file, from_stream etc.