StorageControl

Struct StorageControl 

Source
pub struct StorageControl { /* private fields */ }
Expand description

Implements a client for the Cloud Storage API.

§Example

let client = StorageControl::builder().build().await?;
// use `client` to make requests to Cloud Storage.

§Configuration

To configure StorageControl use the with_* methods in the type returned by builder(). The default configuration should work for most applications. Common configuration changes include

  • with_endpoint(): by default this client uses the global default endpoint (https://storage.googleapis.com). Applications using regional endpoints or running in restricted networks (e.g. a network configured override this default.
  • with_credentials(): by default this client uses Application Default Credentials. Applications using custom authentication may need to override this default.

§Pooling and Cloning

StorageControl holds a connection pool internally, it is advised to create one and the reuse it. You do not need to wrap StorageControl in an Rc or Arc to reuse it, because it already uses an Arc internally.

§Service Description

The Cloud Storage API allows applications to read and write data through the abstractions of buckets and objects. For a description of these abstractions please see https://cloud.google.com/storage/docs.

This client is used to perform metadata operations, such as creating buckets, deleting objects, listing objects, etc. It does not expose any functions to write or read data in objects.

Resources are named as follows:

  • Projects are referred to as they are defined by the Resource Manager API, using strings like projects/123456 or projects/my-string-id.

  • Buckets are named using string names of the form: projects/{project}/buckets/{bucket} For globally unique buckets, _ may be substituted for the project.

  • Objects are uniquely identified by their name along with the name of the bucket they belong to, as separate strings in this API. For example:

    bucket = "projects/_/buckets/my-bucket"
    object = "my-object/with/a/folder-like/name"

    Note that object names can contain / characters, which are treated as any other character (no special directory semantics).

Implementations§

Source§

impl StorageControl

Source

pub fn builder() -> ClientBuilder

Returns a builder for StorageControl.

let client = StorageControl::builder().build().await?;
Source

pub fn delete_bucket(&self) -> DeleteBucket

Permanently deletes an empty bucket. The request fails if there are any live or noncurrent objects in the bucket, but the request succeeds if the bucket only contains soft-deleted objects or incomplete uploads, such as ongoing XML API multipart uploads. Does not permanently delete soft-deleted objects.

When this API is used to delete a bucket containing an object that has a soft delete policy enabled, the object becomes soft deleted, and the softDeleteTime and hardDeleteTime properties are set on the object.

Objects and multipart uploads that were in the bucket at the time of deletion are also retained for the specified retention duration. When a soft-deleted bucket reaches the end of its retention duration, it is permanently deleted. The hardDeleteTime of the bucket always equals or exceeds the expiration time of the last soft-deleted object in the bucket.

IAM Permissions:

Requires storage.buckets.delete IAM permission on the bucket.

Source

pub fn get_bucket(&self) -> GetBucket

Returns metadata for the specified bucket.

IAM Permissions:

Requires storage.buckets.get IAM permission on the bucket. Additionally, to return specific bucket metadata, the authenticated user must have the following permissions:

  • To return the IAM policies: storage.buckets.getIamPolicy
  • To return the bucket IP filtering rules: storage.buckets.getIpFilter
Source

pub fn create_bucket(&self) -> CreateBucket

Creates a new bucket.

IAM Permissions:

Requires storage.buckets.create IAM permission on the bucket. Additionally, to enable specific bucket features, the authenticated user must have the following permissions:

  • To enable object retention using the enableObjectRetention query parameter: storage.buckets.enableObjectRetention
  • To set the bucket IP filtering rules: storage.buckets.setIpFilter
Source

pub fn list_buckets(&self) -> ListBuckets

Retrieves a list of buckets for a given project, ordered lexicographically by name.

IAM Permissions:

Requires storage.buckets.list IAM permission on the bucket. Additionally, to enable specific bucket features, the authenticated user must have the following permissions:

  • To list the IAM policies: storage.buckets.getIamPolicy
  • To list the bucket IP filtering rules: storage.buckets.getIpFilter
Source

pub fn lock_bucket_retention_policy(&self) -> LockBucketRetentionPolicy

Permanently locks the retention policy that is currently applied to the specified bucket.

Caution: Locking a bucket is an irreversible action. Once you lock a bucket:

  • You cannot remove the retention policy from the bucket.
  • You cannot decrease the retention period for the policy.

Once locked, you must delete the entire bucket in order to remove the bucket’s retention policy. However, before you can delete the bucket, you must delete all the objects in the bucket, which is only possible if all the objects have reached the retention period set by the retention policy.

IAM Permissions:

Requires storage.buckets.update IAM permission on the bucket.

Source

pub fn update_bucket(&self) -> UpdateBucket

Updates a bucket. Changes to the bucket are readable immediately after writing, but configuration changes might take time to propagate. This method supports patch semantics.

IAM Permissions:

Requires storage.buckets.update IAM permission on the bucket. Additionally, to enable specific bucket features, the authenticated user must have the following permissions:

  • To set bucket IP filtering rules: storage.buckets.setIpFilter
  • To update public access prevention policies or access control lists (ACLs): storage.buckets.setIamPolicy
Source

pub fn compose_object(&self) -> ComposeObject

Concatenates a list of existing objects into a new object in the same bucket. The existing source objects are unaffected by this operation.

IAM Permissions:

Requires the storage.objects.create and storage.objects.get IAM permissions to use this method. If the new composite object overwrites an existing object, the authenticated user must also have the storage.objects.delete permission. If the request body includes the retention property, the authenticated user must also have the storage.objects.setRetention IAM permission.

Source

pub fn delete_object(&self) -> DeleteObject

Deletes an object and its metadata. Deletions are permanent if versioning is not enabled for the bucket, or if the generation parameter is used, or if soft delete is not enabled for the bucket. When this API is used to delete an object from a bucket that has soft delete policy enabled, the object becomes soft deleted, and the softDeleteTime and hardDeleteTime properties are set on the object. This API cannot be used to permanently delete soft-deleted objects. Soft-deleted objects are permanently deleted according to their hardDeleteTime.

You can use the RestoreObject API to restore soft-deleted objects until the soft delete retention period has passed.

IAM Permissions:

Requires storage.objects.delete IAM permission on the bucket.

Source

pub fn restore_object(&self) -> RestoreObject

Restores a soft-deleted object. When a soft-deleted object is restored, a new copy of that object is created in the same bucket and inherits the same metadata as the soft-deleted object. The inherited metadata is the metadata that existed when the original object became soft deleted, with the following exceptions:

  • The createTime of the new object is set to the time at which the soft-deleted object was restored.
  • The softDeleteTime and hardDeleteTime values are cleared.
  • A new generation is assigned and the metageneration is reset to 1.
  • If the soft-deleted object was in a bucket that had Autoclass enabled, the new object is restored to Standard storage.
  • The restored object inherits the bucket’s default object ACL, unless copySourceAcl is true.

If a live object using the same name already exists in the bucket and becomes overwritten, the live object becomes a noncurrent object if Object Versioning is enabled on the bucket. If Object Versioning is not enabled, the live object becomes soft deleted.

IAM Permissions:

Requires the following IAM permissions to use this method:

  • storage.objects.restore
  • storage.objects.create
  • storage.objects.delete (only required if overwriting an existing object)
  • storage.objects.getIamPolicy (only required if projection is full and the relevant bucket has uniform bucket-level access disabled)
  • storage.objects.setIamPolicy (only required if copySourceAcl is true and the relevant bucket has uniform bucket-level access disabled)
Source

pub fn get_object(&self) -> GetObject

Retrieves object metadata.

IAM Permissions:

Requires storage.objects.get IAM permission on the bucket. To return object ACLs, the authenticated user must also have the storage.objects.getIamPolicy permission.

Source

pub fn update_object(&self) -> UpdateObject

Updates an object’s metadata. Equivalent to JSON API’s storage.objects.patch method.

IAM Permissions:

Requires storage.objects.update IAM permission on the bucket.

Source

pub fn list_objects(&self) -> ListObjects

Retrieves a list of objects matching the criteria.

IAM Permissions:

The authenticated user requires storage.objects.list IAM permission to use this method. To return object ACLs, the authenticated user must also have the storage.objects.getIamPolicy permission.

Source

pub fn rewrite_object(&self) -> RewriteObject

Rewrites a source object to a destination object. Optionally overrides metadata.

Source

pub fn move_object(&self) -> MoveObject

Moves the source object to the destination object in the same bucket. This operation moves a source object to a destination object in the same bucket by renaming the object. The move itself is an atomic transaction, ensuring all steps either complete successfully or no changes are made.

IAM Permissions:

Requires the following IAM permissions to use this method:

  • storage.objects.move
  • storage.objects.create
  • storage.objects.delete (only required if overwriting an existing object)
Source

pub fn create_folder(&self) -> CreateFolder

Creates a new folder. This operation is only applicable to a hierarchical namespace enabled bucket.

Source

pub fn delete_folder(&self) -> DeleteFolder

Permanently deletes an empty folder. This operation is only applicable to a hierarchical namespace enabled bucket.

Source

pub fn get_folder(&self) -> GetFolder

Returns metadata for the specified folder. This operation is only applicable to a hierarchical namespace enabled bucket.

Source

pub fn list_folders(&self) -> ListFolders

Retrieves a list of folders. This operation is only applicable to a hierarchical namespace enabled bucket.

Source

pub fn rename_folder(&self) -> RenameFolder

Renames a source folder to a destination folder. This operation is only applicable to a hierarchical namespace enabled bucket. During a rename, the source and destination folders are locked until the long running operation completes.

§Long running operations

This method is used to start, and/or poll a long-running Operation. The Working with long-running operations chapter in the user guide covers these operations in detail.

Source

pub fn get_storage_layout(&self) -> GetStorageLayout

Returns the storage layout configuration for a given bucket.

Source

pub fn create_managed_folder(&self) -> CreateManagedFolder

Creates a new managed folder.

Source

pub fn delete_managed_folder(&self) -> DeleteManagedFolder

Permanently deletes an empty managed folder.

Source

pub fn get_managed_folder(&self) -> GetManagedFolder

Returns metadata for the specified managed folder.

Source

pub fn list_managed_folders(&self) -> ListManagedFolders

Retrieves a list of managed folders for a given bucket.

Source

pub fn create_anywhere_cache(&self) -> CreateAnywhereCache

Creates an Anywhere Cache instance.

§Long running operations

This method is used to start, and/or poll a long-running Operation. The Working with long-running operations chapter in the user guide covers these operations in detail.

Source

pub fn update_anywhere_cache(&self) -> UpdateAnywhereCache

Updates an Anywhere Cache instance. Mutable fields include ttl and admission_policy.

§Long running operations

This method is used to start, and/or poll a long-running Operation. The Working with long-running operations chapter in the user guide covers these operations in detail.

Source

pub fn disable_anywhere_cache(&self) -> DisableAnywhereCache

Disables an Anywhere Cache instance. A disabled instance is read-only. The disablement could be revoked by calling ResumeAnywhereCache. The cache instance will be deleted automatically if it remains in the disabled state for at least one hour.

Source

pub fn pause_anywhere_cache(&self) -> PauseAnywhereCache

Pauses an Anywhere Cache instance.

Source

pub fn resume_anywhere_cache(&self) -> ResumeAnywhereCache

Resumes a disabled or paused Anywhere Cache instance.

Source

pub fn get_anywhere_cache(&self) -> GetAnywhereCache

Gets an Anywhere Cache instance.

Source

pub fn list_anywhere_caches(&self) -> ListAnywhereCaches

Lists Anywhere Cache instances for a given bucket.

Source

pub fn get_project_intelligence_config(&self) -> GetProjectIntelligenceConfig

Returns the Project scoped singleton IntelligenceConfig resource.

Source

pub fn update_project_intelligence_config( &self, ) -> UpdateProjectIntelligenceConfig

Updates the Project scoped singleton IntelligenceConfig resource.

Source

pub fn get_folder_intelligence_config(&self) -> GetFolderIntelligenceConfig

Returns the Folder scoped singleton IntelligenceConfig resource.

Source

pub fn update_folder_intelligence_config( &self, ) -> UpdateFolderIntelligenceConfig

Updates the Folder scoped singleton IntelligenceConfig resource.

Source

pub fn get_organization_intelligence_config( &self, ) -> GetOrganizationIntelligenceConfig

Returns the Organization scoped singleton IntelligenceConfig resource.

Source

pub fn update_organization_intelligence_config( &self, ) -> UpdateOrganizationIntelligenceConfig

Updates the Organization scoped singleton IntelligenceConfig resource.

Source

pub fn get_iam_policy(&self) -> GetIamPolicy

Gets the IAM policy for a specified bucket. The resource field in the request should be projects/_/buckets/{bucket} for a bucket, or projects/_/buckets/{bucket}/managedFolders/{managedFolder} for a managed folder.

Source

pub fn set_iam_policy(&self) -> SetIamPolicy

Updates an IAM policy for the specified bucket. The resource field in the request should be projects/_/buckets/{bucket} for a bucket, or projects/_/buckets/{bucket}/managedFolders/{managedFolder} for a managed folder.

Source

pub fn test_iam_permissions(&self) -> TestIamPermissions

Tests a set of permissions on the given bucket, object, or managed folder to see which, if any, are held by the caller. The resource field in the request should be projects/_/buckets/{bucket} for a bucket, projects/_/buckets/{bucket}/objects/{object} for an object, or projects/_/buckets/{bucket}/managedFolders/{managedFolder} for a managed folder.

Source

pub fn get_operation(&self) -> GetOperation

Provides the Operations service functionality in this service.

Source

pub fn from_stub<T>(stub: T) -> Self
where T: StorageControl + 'static,

Creates a new client from the provided stub.

The most common case for calling this function is in tests mocking the client’s behavior.

Trait Implementations§

Source§

impl Clone for StorageControl

Source§

fn clone(&self) -> StorageControl

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StorageControl

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more