Class RegionScopedSwiftBlobStore
java.lang.Object
org.jclouds.openstack.swift.v1.blobstore.RegionScopedSwiftBlobStore
- All Implemented Interfaces:
BlobStore
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final com.google.common.cache.LoadingCache
<String, com.google.common.base.Optional<Container>> protected Logger
protected int
protected final PayloadSlicer
protected final com.google.common.util.concurrent.ListeningExecutorService
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
RegionScopedSwiftBlobStore
(com.google.inject.Injector baseGraph, BlobStoreContext context, SwiftApi api, com.google.common.base.Supplier<Set<? extends Location>> locations, String regionId, PayloadSlicer slicer, com.google.common.util.concurrent.ListeningExecutorService userExecutor) -
Method Summary
Modifier and TypeMethodDescriptionvoid
blobBuilder
(String name) boolean
blobExists
(String container, String name) Determines if a blob existsblobMetadata
(String container, String name) Retrieves the metadata of aBlob
at locationcontainer/name
void
clearContainer
(String containerName) This will delete the contents of a container at its root path without deleting the containervoid
clearContainer
(String containerName, ListContainerOptions options) LikeBlobStore.clearContainer(String)
except you can use options to do things like recursive deletes, or clear at a different path than root.completeMultipartUpload
(MultipartUpload mpu, List<MultipartPart> parts) boolean
containerExists
(String container) determines if a service-level container existscopyBlob
(String fromContainer, String fromName, String toContainer, String toName, CopyOptions options) Copy blob from one container to another.long
countBlobs
(String containerName) long
countBlobs
(String containerName, ListContainerOptions options) boolean
createContainerInLocation
(Location location, String container) Creates a namespace for your blobsboolean
createContainerInLocation
(Location location, String container, CreateContainerOptions options) void
createDirectory
(String containerName, String directory) Creates a folder or a directory marker depending on the servicevoid
deleteContainer
(String container) This will delete everything inside a container recursively.boolean
deleteContainerIfEmpty
(String container) Deletes a container if it is empty.void
deleteDirectory
(String containerName, String directory) Deletes a folder or a directory marker depending on the serviceboolean
directoryExists
(String containerName, String directory) Determines if a directory existsvoid
downloadBlob
(String container, String name, File destination) void
downloadBlob
(String container, String name, File destination, ExecutorService executor) Retrieves aBlob
representing the data at locationcontainer/name
getBlob
(String container, String name, GetOptions options) Retrieves aBlob
representing the data at locationcontainer/name
getBlobAccess
(String container, String name) getContainerAccess
(String name) long
int
long
initiateMultipartUpload
(String container, BlobMetadata blobMetadata, PutOptions options) PageSet
<? extends StorageMetadata> list()
Lists all root-level resources available to the identity.PageSet
<? extends StorageMetadata> Lists all resources in a container non-recursive.PageSet
<? extends StorageMetadata> list
(String container, ListContainerOptions options) LikeBlobStore.list(String)
except you can control the size, recursion, and context of the list usingoptions
The get locations command returns all the valid locations for containers.listMultipartUploads
(String container) Adds aBlob
representing the data at locationcontainer/blob.metadata.name
putBlob
(String container, Blob blob, PutOptions options) Adds aBlob
representing the data at locationcontainer/blob.metadata.name
options using multipart strategies.protected String
putMultipartBlob
(String container, Blob blob, PutOptions overrides) Upload using a user-provided executor, or the jclouds userExecutorprotected String
putMultipartBlob
(String container, Blob blob, PutOptions overrides, com.google.common.util.concurrent.ListeningExecutorService executor) void
removeBlob
(String container, String name) Deletes aBlob
representing the data at locationcontainer/name
void
removeBlobs
(String container, Iterable<String> names) Delete multiple single-part objects.void
setBlobAccess
(String container, String name, BlobAccess access) void
setContainerAccess
(String name, ContainerAccess access) streamBlob
(String container, String name) streamBlob
(String container, String name, ExecutorService executor) protected com.google.common.base.Function
<SwiftObject, MutableBlobMetadata> toBlobMetadata
(String container) uploadMultipartPart
(MultipartUpload mpu, int partNumber, Payload payload)
-
Field Details
-
slicer
-
userExecutor
protected final com.google.common.util.concurrent.ListeningExecutorService userExecutor -
logger
-
containerCache
-
retryCountLimit
@Inject(optional=true) @Named("jclouds.max-retries") protected int retryCountLimit
-
-
Constructor Details
-
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 Details
-
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 interfaceBlobStore
-
list
Description copied from interface:BlobStore
Lists all root-level resources available to the identity. -
containerExists
Description copied from interface:BlobStore
determines if a service-level container exists- Specified by:
containerExists
in interfaceBlobStore
-
createContainerInLocation
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 interfaceBlobStore
- 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 locationcontainer
- namespace. Typically constrained to lowercase alpha-numeric and hyphens.- Returns:
- true if the container was created, false if it already existed.
-
createContainerInLocation
public boolean createContainerInLocation(Location location, String container, CreateContainerOptions options) - Specified by:
createContainerInLocation
in interfaceBlobStore
- Parameters:
options
- controls default access control- See Also:
-
getContainerAccess
- Specified by:
getContainerAccess
in interfaceBlobStore
-
setContainerAccess
- Specified by:
setContainerAccess
in interfaceBlobStore
-
list
Description copied from interface:BlobStore
Lists all resources in a container non-recursive. -
list
Description copied from interface:BlobStore
LikeBlobStore.list(String)
except you can control the size, recursion, and context of the list usingoptions
-
blobExists
Description copied from interface:BlobStore
Determines if a blob exists- Specified by:
blobExists
in interfaceBlobStore
- Parameters:
container
- container where the blob resides
-
putBlob
Description copied from interface:BlobStore
Adds aBlob
representing the data at locationcontainer/blob.metadata.name
-
putBlob
Description copied from interface:BlobStore
Adds aBlob
representing the data at locationcontainer/blob.metadata.name
options using multipart strategies. -
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 -
blobMetadata
Description copied from interface:BlobStore
Retrieves the metadata of aBlob
at locationcontainer/name
- Specified by:
blobMetadata
in interfaceBlobStore
- 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
Description copied from interface:BlobStore
Retrieves aBlob
representing the data at locationcontainer/name
-
getBlob
Description copied from interface:BlobStore
Retrieves aBlob
representing the data at locationcontainer/name
-
removeBlob
Description copied from interface:BlobStore
Deletes aBlob
representing the data at locationcontainer/name
- Specified by:
removeBlob
in interfaceBlobStore
- Parameters:
container
- container where this exists.name
- fully qualified name relative to the container.
-
removeBlobs
Delete multiple single-part objects. Note that this does not remove the subobjects of a multi-part upload.- Specified by:
removeBlobs
in interfaceBlobStore
- Parameters:
container
- container where this exists.names
- fully qualified names relative to the container.
-
getBlobAccess
- Specified by:
getBlobAccess
in interfaceBlobStore
-
setBlobAccess
- Specified by:
setBlobAccess
in interfaceBlobStore
-
getContext
- Specified by:
getContext
in interfaceBlobStore
- Returns:
- a reference to the context that created this BlobStore.
-
blobBuilder
- Specified by:
blobBuilder
in interfaceBlobStore
- Returns:
- builder for creating new
Blob
s
-
directoryExists
Description copied from interface:BlobStore
Determines if a directory exists- Specified by:
directoryExists
in interfaceBlobStore
- Parameters:
containerName
- container where the directory residesdirectory
- full path to the directory
-
createDirectory
Description copied from interface:BlobStore
Creates a folder or a directory marker depending on the service- Specified by:
createDirectory
in interfaceBlobStore
- Parameters:
containerName
- container to create the directory indirectory
- full path to the directory
-
deleteDirectory
Description copied from interface:BlobStore
Deletes a folder or a directory marker depending on the service- Specified by:
deleteDirectory
in interfaceBlobStore
-
countBlobs
- Specified by:
countBlobs
in interfaceBlobStore
- Returns:
- a count of all blobs in the container, excluding directory markers
-
initiateMultipartUpload
public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) - Specified by:
initiateMultipartUpload
in interfaceBlobStore
-
abortMultipartUpload
- Specified by:
abortMultipartUpload
in interfaceBlobStore
-
completeMultipartUpload
- Specified by:
completeMultipartUpload
in interfaceBlobStore
-
uploadMultipartPart
- Specified by:
uploadMultipartPart
in interfaceBlobStore
-
listMultipartUpload
- Specified by:
listMultipartUpload
in interfaceBlobStore
-
listMultipartUploads
- Specified by:
listMultipartUploads
in interfaceBlobStore
-
getMinimumMultipartPartSize
public long getMinimumMultipartPartSize()- Specified by:
getMinimumMultipartPartSize
in interfaceBlobStore
-
getMaximumMultipartPartSize
public long getMaximumMultipartPartSize()- Specified by:
getMaximumMultipartPartSize
in interfaceBlobStore
-
getMaximumNumberOfParts
public int getMaximumNumberOfParts()- Specified by:
getMaximumNumberOfParts
in interfaceBlobStore
-
clearContainer
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 interfaceBlobStore
- Parameters:
containerName
- what to clear
-
clearContainer
Description copied from interface:BlobStore
LikeBlobStore.clearContainer(String)
except you can use options to do things like recursive deletes, or clear at a different path than root.- Specified by:
clearContainer
in interfaceBlobStore
- Parameters:
containerName
- what to clearoptions
- recursion and path to clear
-
deleteContainer
Description copied from interface:BlobStore
This will delete everything inside a container recursively.- Specified by:
deleteContainer
in interfaceBlobStore
- Parameters:
container
- what to delete
-
deleteContainerIfEmpty
Description copied from interface:BlobStore
Deletes a container if it is empty.- Specified by:
deleteContainerIfEmpty
in interfaceBlobStore
- Parameters:
container
- name of the container to delete- Returns:
- true if the container was deleted or does not exist
-
toBlobMetadata
protected com.google.common.base.Function<SwiftObject,MutableBlobMetadata> toBlobMetadata(String container) -
countBlobs
- Specified by:
countBlobs
in interfaceBlobStore
- Returns:
- a count of all blobs that are in a listing constrained by the options specified, excluding directory markers
-
putMultipartBlob
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) -
downloadBlob
- Specified by:
downloadBlob
in interfaceBlobStore
-
downloadBlob
@Beta public void downloadBlob(String container, String name, File destination, ExecutorService executor) - Specified by:
downloadBlob
in interfaceBlobStore
-
streamBlob
- Specified by:
streamBlob
in interfaceBlobStore
-
streamBlob
- Specified by:
streamBlob
in interfaceBlobStore
-