mmv1/products/storagebatchoperations/Job.yaml (277 lines of code) (raw):
# Copyright 2024 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
name: 'Job'
kind: 'storagebatchoperations#jobs'
id_format: 'projects/{{project}}/locations/global/jobs/{{job_id}}'
base_url: 'projects/{{project}}/locations/global/jobs'
self_link: 'projects/{{project}}/locations/global/jobs/{{job_id}}'
create_url: 'projects/{{project}}/locations/global/jobs?jobId={{job_id}}'
delete_url: 'projects/{{project}}/locations/global/jobs/{{job_id}}'
import_format:
- 'projects/{{project}}/locations/global/jobs/{{job_id}}'
timeouts:
insert_minutes: 120
update_minutes: 120
delete_minutes: 20
autogen_async: true
async:
actions: ['create']
type: 'OpAsync'
operation:
base_url: '{{op_id}}'
result:
resource_inside_response: true
description: |
Storage Batch Operations (SBO) is a Cloud Storage management feature that offers a
seamless experience to perform single batch operations on millions of GCS objects in a
serverless manner.
examples:
- name: 'storage_batch_operations'
config_path: 'templates/terraform/examples/storage_batch_operations_job.tf.tmpl'
primary_resource_id: 'tf-job'
vars:
bucket_name: 'tf-sample-bucket'
job_id: 'tf-job'
ignore_read_extra:
- 'delete_protection'
custom_code:
custom_update: 'templates/terraform/custom_update/storage_batch_operations_job.go.tmpl'
pre_delete: 'templates/terraform/pre_delete/storage_batch_operations_job.go.tmpl'
virtual_fields:
- name: 'delete_protection'
description: |
If set to `true`, the storage batch operation job will not be deleted and new job will be created.
type: Boolean
default_value: true
parameters:
- name: 'jobId'
type: String
description: 'The ID of the job.'
url_param_only: true
immutable: true
validation:
regex: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?.$'
properties:
- name: 'createTime'
type: String
description: |
The timestamp at which this storage batch operation was created.
output: true
- name: 'updateTime'
type: String
description: |
The timestamp at which this storage batch operation was most recently updated.
output: true
- name: 'scheduleTime'
type: String
description: |
The time that the job was scheduled.
output: true
- name: 'completeTime'
type: String
description: |
The time that the job was completed.
output: true
- name: 'state'
type: String
description: |
State of the job.
output: true
- name: 'bucketList'
type: NestedObject
description: List of buckets and their objects to be transformed. Currently, only one bucket configuration is supported. If multiple buckets are specified, an error will be returned
immutable: true
min_size: 1
max_size: 1
properties:
- name: 'buckets'
type: Array
min_size: 1
max_size: 1
required: true
description: List of buckets and their objects to be transformed.
immutable: true
item_type:
type: NestedObject
properties:
- name: 'bucket'
type: string
required: true
immutable: true
description: 'Bucket name for the objects to be transformed.'
- name: 'prefixList'
type: NestedObject
immutable: true
min_size: 1
max_size: 1
description: 'Specifies objects matching a prefix set.'
exactly_one_of:
- 'bucket_list.0.buckets.0.prefix_list'
- 'bucket_list.0.buckets.0.manifest'
properties:
- name: 'includedObjectPrefixes'
type: Array
immutable: true
min_size: 1
item_type:
type: String
- name: 'manifest'
type: NestedObject
immutable: true
required: false
exactly_one_of:
- 'bucket_list.0.buckets.0.prefix_list'
- 'bucket_list.0.buckets.0.manifest'
description: 'contain the manifest source file that is a CSV file in a Google Cloud Storage bucket.'
properties:
- name: 'manifestLocation'
type: String
immutable: true
description: 'Specifies objects in a manifest file.'
- name: 'deleteObject'
type: NestedObject
description: 'allows batch operations to delete objects in bucket'
immutable: true
properties:
- name: 'permanentObjectDeletionEnabled'
type: Boolean
description: 'enable flag to permanently delete object and all object versions if versioning is enabled on bucket.'
immutable: true
required: true
send_empty_value: true
exactly_one_of:
- 'delete_object'
- 'put_metadata'
- 'rewrite_object'
- 'put_object_hold'
custom_flatten: 'templates/terraform/custom_flatten/storage_batch_operations_job_delete_object.go.tmpl'
- name: 'putMetadata'
type: NestedObject
description: 'allows batch operations to update metadata for objects in bucket'
immutable: true
exactly_one_of:
- 'delete_object'
- 'put_metadata'
- 'rewrite_object'
- 'put_object_hold'
properties:
- name: 'customTime'
type: String
immutable: true
description: 'Updates the objects fixed custom time metadata.'
at_least_one_of:
- 'put_metadata.0.content_disposition'
- 'put_metadata.0.content_encoding'
- 'put_metadata.0.content_language'
- 'put_metadata.0.content_type'
- 'put_metadata.0.cache_control'
- 'put_metadata.0.custom_metadata'
- 'put_metadata.0.custom_time'
- name: 'contentDisposition'
type: String
description: 'Content-Disposition of the object data.'
immutable: true
at_least_one_of:
- 'put_metadata.0.content_disposition'
- 'put_metadata.0.content_encoding'
- 'put_metadata.0.content_language'
- 'put_metadata.0.content_type'
- 'put_metadata.0.cache_control'
- 'put_metadata.0.custom_metadata'
- 'put_metadata.0.custom_time'
- name: 'contentEncoding'
type: String
description: 'Content Encoding of the object data.'
immutable: true
at_least_one_of:
- 'put_metadata.0.content_disposition'
- 'put_metadata.0.content_encoding'
- 'put_metadata.0.content_language'
- 'put_metadata.0.content_type'
- 'put_metadata.0.cache_control'
- 'put_metadata.0.custom_metadata'
- 'put_metadata.0.custom_time'
- name: 'contentType'
type: String
description: 'Content-Type of the object data.'
immutable: true
at_least_one_of:
- 'put_metadata.0.content_disposition'
- 'put_metadata.0.content_encoding'
- 'put_metadata.0.content_language'
- 'put_metadata.0.content_type'
- 'put_metadata.0.cache_control'
- 'put_metadata.0.custom_metadata'
- 'put_metadata.0.custom_time'
- name: 'contentLanguage'
type: String
description: 'Content-Language of the object data.'
immutable: true
at_least_one_of:
- 'put_metadata.0.content_disposition'
- 'put_metadata.0.content_encoding'
- 'put_metadata.0.content_language'
- 'put_metadata.0.content_type'
- 'put_metadata.0.cache_control'
- 'put_metadata.0.custom_metadata'
- 'put_metadata.0.custom_time'
- name: 'cacheControl'
type: String
description: 'Cache-Control directive to specify caching behavior of object data. If omitted and object is accessible to all anonymous users, the default will be public, max-age=3600'
immutable: true
at_least_one_of:
- 'put_metadata.0.content_disposition'
- 'put_metadata.0.content_encoding'
- 'put_metadata.0.content_language'
- 'put_metadata.0.content_type'
- 'put_metadata.0.cache_control'
- 'put_metadata.0.custom_metadata'
- 'put_metadata.0.custom_time'
- name: 'customMetadata'
type: KeyValuePairs
description: 'User-provided metadata, in key/value pairs.'
immutable: true
at_least_one_of:
- 'put_metadata.0.content_disposition'
- 'put_metadata.0.content_encoding'
- 'put_metadata.0.content_language'
- 'put_metadata.0.content_type'
- 'put_metadata.0.cache_control'
- 'put_metadata.0.custom_metadata'
- 'put_metadata.0.custom_time'
- name: 'rewriteObject'
type: NestedObject
description: 'allows to update encryption key for objects in bucket.'
immutable: true
exactly_one_of:
- 'delete_object'
- 'put_metadata'
- 'rewrite_object'
- 'put_object_hold'
properties:
- name: 'kmsKey'
type: String
description: 'valid kms key'
immutable: true
required: true
- name: 'putObjectHold'
type: NestedObject
description: 'allows to update temporary hold or eventBased hold for objects in bucket.'
immutable: true
exactly_one_of:
- 'delete_object'
- 'put_metadata'
- 'rewrite_object'
- 'put_object_hold'
properties:
- name: 'eventBasedHold'
type: TypeString
immutable: true
description: 'set/unset to update event based hold for objects.'
validation:
function: 'validation.StringInSlice([]string{"SET", "UNSET"}, false)'
- name: 'temporaryHold'
type: TypeString
immutable: true
description: 'set/unset to update temporary based hold for objects.'
validation:
function: 'validation.StringInSlice([]string{"SET", "UNSET"}, false)'