Class RegionScopedSwiftBlobStore

    • Field Detail

      • userExecutor

        protected final com.google.common.util.concurrent.ListeningExecutorService userExecutor
      • logger

        protected Logger logger
      • containerCache

        protected final com.google.common.cache.LoadingCache<String,​com.google.common.base.Optional<Container>> containerCache
      • retryCountLimit

        @Inject(optional=true)
        @Named("jclouds.max-retries")
        protected int retryCountLimit
    • Constructor Detail

      • RegionScopedSwiftBlobStore

        @Inject
        protected RegionScopedSwiftBlobStore​(com.google.inject.Injector baseGraph,
                                             BlobStoreContext context,
                                             SwiftApi api,
                                             com.google.common.base.Supplier<Set<? extends Location>> locations,
                                             String regionId,
                                             PayloadSlicer slicer,
                                             @Named("jclouds.user-threads")
                                             com.google.common.util.concurrent.ListeningExecutorService userExecutor)
    • Method Detail

      • listAssignableLocations

        public Set<? extends Location> listAssignableLocations()
        Description copied from interface: BlobStore
        The get locations command returns all the valid locations for containers. A location has a scope, which is typically region or zone. A region is a general area, like eu-west, where a zone is similar to a datacenter. If a location has a parent, that implies it is within that location. For example a location can be a rack, whose parent is likely to be a zone.
        Specified by:
        listAssignableLocations in interface BlobStore
      • containerExists

        public boolean containerExists​(String container)
        Description copied from interface: BlobStore
        determines if a service-level container exists
        Specified by:
        containerExists in interface BlobStore
      • createContainerInLocation

        public boolean createContainerInLocation​(Location location,
                                                 String container)
        Description copied from interface: BlobStore
        Creates a namespace for your blobs

        A container is a namespace for your objects. Depending on the service, the scope can be global, identity, or sub-identity scoped. For example, in Amazon S3, containers are called buckets, and they must be uniquely named such that no-one else in the world conflicts. In other blobstores, the naming convention of the container is less strict. All blobstores allow you to list your containers and also the contents within them. These contents can either be blobs, folders, or virtual paths.

        Specified by:
        createContainerInLocation in interface BlobStore
        Parameters:
        location - some blobstores allow you to specify a location, such as US-EAST, for where this container will exist. null will choose a default location
        container - namespace. Typically constrained to lowercase alpha-numeric and hyphens.
        Returns:
        true if the container was created, false if it already existed.
      • list

        public PageSet<? extends StorageMetadata> list​(String container)
        Description copied from interface: BlobStore
        Lists all resources in a container non-recursive.
        Specified by:
        list in interface BlobStore
        Parameters:
        container - what to list
        Returns:
        a list that may be incomplete, depending on whether PageSet#getNextMarker is set
      • blobExists

        public boolean blobExists​(String container,
                                  String name)
        Description copied from interface: BlobStore
        Determines if a blob exists
        Specified by:
        blobExists in interface BlobStore
        Parameters:
        container - container where the blob resides
      • putBlob

        public String putBlob​(String container,
                              Blob blob)
        Description copied from interface: BlobStore
        Adds a Blob representing the data at location container/blob.metadata.name
        Specified by:
        putBlob in interface BlobStore
        Parameters:
        container - container to place the blob.
        blob - fully qualified name relative to the container.
        Returns:
        etag of the blob you uploaded, possibly null where etags are unsupported
      • putBlob

        public String putBlob​(String container,
                              Blob blob,
                              PutOptions options)
        Description copied from interface: BlobStore
        Adds a Blob representing the data at location container/blob.metadata.name options using multipart strategies.
        Specified by:
        putBlob in interface BlobStore
        Parameters:
        container - container to place the blob.
        blob - fully qualified name relative to the container.
        options - byte range options
        Returns:
        etag of the blob you uploaded, possibly null where etags are unsupported
      • copyBlob

        public String copyBlob​(String fromContainer,
                               String fromName,
                               String toContainer,
                               String toName,
                               CopyOptions options)
        Description copied from interface: BlobStore
        Copy blob from one container to another. Some providers implement this more efficiently than corresponding getBlob and putBlob operations. Note: options are currently ignored
        Specified by:
        copyBlob in interface BlobStore
        Returns:
        ETag of new blob
      • blobMetadata

        public BlobMetadata blobMetadata​(String container,
                                         String name)
        Description copied from interface: BlobStore
        Retrieves the metadata of a Blob at location container/name
        Specified by:
        blobMetadata in interface BlobStore
        Parameters:
        container - container where this exists.
        name - fully qualified name relative to the container.
        Returns:
        null if name isn't present or the blob you intended to receive.
      • getBlob

        public Blob getBlob​(String container,
                            String key)
        Description copied from interface: BlobStore
        Retrieves a Blob representing the data at location container/name
        Specified by:
        getBlob in interface BlobStore
        Parameters:
        container - container where this exists.
        key - fully qualified name relative to the container.
        Returns:
        the blob you intended to receive or null, if it doesn't exist.
      • getBlob

        public Blob getBlob​(String container,
                            String name,
                            GetOptions options)
        Description copied from interface: BlobStore
        Retrieves a Blob representing the data at location container/name
        Specified by:
        getBlob in interface BlobStore
        Parameters:
        container - container where this exists.
        name - fully qualified name relative to the container.
        options - byte range or condition options
        Returns:
        the blob you intended to receive or null, if it doesn't exist.
      • removeBlob

        public void removeBlob​(String container,
                               String name)
        Description copied from interface: BlobStore
        Deletes a Blob representing the data at location container/name
        Specified by:
        removeBlob in interface BlobStore
        Parameters:
        container - container where this exists.
        name - fully qualified name relative to the container.
      • removeBlobs

        public void removeBlobs​(String container,
                                Iterable<String> names)
        Delete multiple single-part objects. Note that this does not remove the subobjects of a multi-part upload.
        Specified by:
        removeBlobs in interface BlobStore
        Parameters:
        container - container where this exists.
        names - fully qualified names relative to the container.
      • directoryExists

        public boolean directoryExists​(String containerName,
                                       String directory)
        Description copied from interface: BlobStore
        Determines if a directory exists
        Specified by:
        directoryExists in interface BlobStore
        Parameters:
        containerName - container where the directory resides
        directory - full path to the directory
      • createDirectory

        public void createDirectory​(String containerName,
                                    String directory)
        Description copied from interface: BlobStore
        Creates a folder or a directory marker depending on the service
        Specified by:
        createDirectory in interface BlobStore
        Parameters:
        containerName - container to create the directory in
        directory - full path to the directory
      • deleteDirectory

        public void deleteDirectory​(String containerName,
                                    String directory)
        Description copied from interface: BlobStore
        Deletes a folder or a directory marker depending on the service
        Specified by:
        deleteDirectory in interface BlobStore
      • countBlobs

        public long countBlobs​(String containerName)
        Specified by:
        countBlobs in interface BlobStore
        Returns:
        a count of all blobs in the container, excluding directory markers
      • clearContainer

        public void clearContainer​(String containerName)
        Description copied from interface: BlobStore
        This will delete the contents of a container at its root path without deleting the container
        Specified by:
        clearContainer in interface BlobStore
        Parameters:
        containerName - what to clear
      • deleteContainer

        public void deleteContainer​(String container)
        Description copied from interface: BlobStore
        This will delete everything inside a container recursively.
        Specified by:
        deleteContainer in interface BlobStore
        Parameters:
        container - what to delete
      • deleteContainerIfEmpty

        public boolean deleteContainerIfEmpty​(String container)
        Description copied from interface: BlobStore
        Deletes a container if it is empty.
        Specified by:
        deleteContainerIfEmpty in interface BlobStore
        Parameters:
        container - name of the container to delete
        Returns:
        true if the container was deleted or does not exist
      • countBlobs

        public long countBlobs​(String containerName,
                               ListContainerOptions options)
        Specified by:
        countBlobs in interface BlobStore
        Returns:
        a count of all blobs that are in a listing constrained by the options specified, excluding directory markers
      • putMultipartBlob

        @Beta
        protected String putMultipartBlob​(String container,
                                          Blob blob,
                                          PutOptions overrides)
        Upload using a user-provided executor, or the jclouds userExecutor
        Parameters:
        container -
        blob -
        overrides -
        Returns:
        the multipart blob etag
      • putMultipartBlob

        @Beta
        protected String putMultipartBlob​(String container,
                                          Blob blob,
                                          PutOptions overrides,
                                          com.google.common.util.concurrent.ListeningExecutorService executor)