# Copyright 2015 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. require 'date' require 'google/apis/core/base_service' require 'google/apis/core/json_representation' require 'google/apis/core/hashable' require 'google/apis/errors' module Google module Apis module StoragetransferV1 # AWS access key (see # [AWS Security # Credentials](https://docs.aws.amazon.com/general/latest/gr/aws-security- # credentials.html)). class AwsAccessKey include Google::Apis::Core::Hashable # Required. AWS access key ID. # Corresponds to the JSON property `accessKeyId` # @return [String] attr_accessor :access_key_id # Required. AWS secret access key. This field is not returned in RPC # responses. # Corresponds to the JSON property `secretAccessKey` # @return [String] attr_accessor :secret_access_key def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @access_key_id = args[:access_key_id] if args.key?(:access_key_id) @secret_access_key = args[:secret_access_key] if args.key?(:secret_access_key) end end # An AwsS3Data resource can be a data source, but not a data sink. # In an AwsS3Data resource, an object's name is the S3 object's key name. class AwsS3Data include Google::Apis::Core::Hashable # AWS access key (see # [AWS Security # Credentials](https://docs.aws.amazon.com/general/latest/gr/aws-security- # credentials.html)). # Corresponds to the JSON property `awsAccessKey` # @return [Google::Apis::StoragetransferV1::AwsAccessKey] attr_accessor :aws_access_key # Required. S3 Bucket name (see # [Creating a # bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get- # location-example.html)). # Corresponds to the JSON property `bucketName` # @return [String] attr_accessor :bucket_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @aws_access_key = args[:aws_access_key] if args.key?(:aws_access_key) @bucket_name = args[:bucket_name] if args.key?(:bucket_name) end end # An AzureBlobStorageData resource can be a data source, but not a data sink. # An AzureBlobStorageData resource represents one Azure container. The storage # account determines the [Azure # endpoint](https://docs.microsoft.com/en-us/azure/storage/common/storage-create- # storage-account#storage-account-endpoints). # In an AzureBlobStorageData resource, a blobs's name is the [Azure Blob # Storage blob's key # name](https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and- # referencing-containers--blobs--and-metadata#blob-names). class AzureBlobStorageData include Google::Apis::Core::Hashable # Azure credentials # Corresponds to the JSON property `azureCredentials` # @return [Google::Apis::StoragetransferV1::AzureCredentials] attr_accessor :azure_credentials # Required. The container to transfer from the Azure Storage account. # Corresponds to the JSON property `container` # @return [String] attr_accessor :container # Required. The name of the Azure Storage account. # Corresponds to the JSON property `storageAccount` # @return [String] attr_accessor :storage_account def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @azure_credentials = args[:azure_credentials] if args.key?(:azure_credentials) @container = args[:container] if args.key?(:container) @storage_account = args[:storage_account] if args.key?(:storage_account) end end # Azure credentials class AzureCredentials include Google::Apis::Core::Hashable # Required. Azure shared access signature. (see # [Grant limited access to Azure Storage resources using shared access # signatures # (SAS)](https://docs.microsoft.com/en-us/azure/storage/common/storage-sas- # overview)). # Corresponds to the JSON property `sasToken` # @return [String] attr_accessor :sas_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @sas_token = args[:sas_token] if args.key?(:sas_token) end end # Represents a whole or partial calendar date, e.g. a birthday. The time of day # and time zone are either specified elsewhere or are not significant. The date # is relative to the Proleptic Gregorian Calendar. This can represent: # * A full date, with non-zero year, month and day values # * A month and day value, with a zero year, e.g. an anniversary # * A year on its own, with zero month and day values # * A year and month value, with a zero day, e.g. a credit card expiration date # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. class Date include Google::Apis::Core::Hashable # Day of month. Must be from 1 to 31 and valid for the year and month, or 0 # if specifying a year by itself or a year and month where the day is not # significant. # Corresponds to the JSON property `day` # @return [Fixnum] attr_accessor :day # Month of year. Must be from 1 to 12, or 0 if specifying a year without a # month and day. # Corresponds to the JSON property `month` # @return [Fixnum] attr_accessor :month # Year of date. Must be from 1 to 9999, or 0 if specifying a date without # a year. # Corresponds to the JSON property `year` # @return [Fixnum] attr_accessor :year def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @day = args[:day] if args.key?(:day) @month = args[:month] if args.key?(:month) @year = args[:year] if args.key?(:year) end end # A generic empty message that you can re-use to avoid defining duplicated # empty messages in your APIs. A typical example is to use it as the request # or the response type of an API method. For instance: # service Foo ` # rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); # ` # The JSON representation for `Empty` is empty JSON object ````. class Empty include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # An entry describing an error that has occurred. class ErrorLogEntry include Google::Apis::Core::Hashable # A list of messages that carry the error details. # Corresponds to the JSON property `errorDetails` # @return [Array] attr_accessor :error_details # Required. A URL that refers to the target (a data source, a data sink, # or an object) with which the error is associated. # Corresponds to the JSON property `url` # @return [String] attr_accessor :url def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @error_details = args[:error_details] if args.key?(:error_details) @url = args[:url] if args.key?(:url) end end # A summary of errors by error code, plus a count and sample error log # entries. class ErrorSummary include Google::Apis::Core::Hashable # Required. # Corresponds to the JSON property `errorCode` # @return [String] attr_accessor :error_code # Required. Count of this type of error. # Corresponds to the JSON property `errorCount` # @return [Fixnum] attr_accessor :error_count # Error samples. # At most 5 error log entries will be recorded for a given # error code for a single transfer operation. # Corresponds to the JSON property `errorLogEntries` # @return [Array] attr_accessor :error_log_entries def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @error_code = args[:error_code] if args.key?(:error_code) @error_count = args[:error_count] if args.key?(:error_count) @error_log_entries = args[:error_log_entries] if args.key?(:error_log_entries) end end # In a GcsData resource, an object's name is the Cloud Storage object's # name and its "last modification time" refers to the object's `updated` # property of Cloud Storage objects, which changes when the content or the # metadata of the object is updated. class GcsData include Google::Apis::Core::Hashable # Required. Cloud Storage bucket name (see # [Bucket Name # Requirements](https://cloud.google.com/storage/docs/naming#requirements)). # Corresponds to the JSON property `bucketName` # @return [String] attr_accessor :bucket_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bucket_name = args[:bucket_name] if args.key?(:bucket_name) end end # Google service account class GoogleServiceAccount include Google::Apis::Core::Hashable # Email address of the service account. # Corresponds to the JSON property `accountEmail` # @return [String] attr_accessor :account_email def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @account_email = args[:account_email] if args.key?(:account_email) end end # An HttpData resource specifies a list of objects on the web to be transferred # over HTTP. The information of the objects to be transferred is contained in # a file referenced by a URL. The first line in the file must be # `"TsvHttpData-1.0"`, which specifies the format of the file. Subsequent # lines specify the information of the list of objects, one object per list # entry. Each entry has the following tab-delimited fields: # * **HTTP URL** — The location of the object. # * **Length** — The size of the object in bytes. # * **MD5** — The base64-encoded MD5 hash of the object. # For an example of a valid TSV file, see # [Transferring data from # URLs](https://cloud.google.com/storage-transfer/docs/create-url-list). # When transferring data based on a URL list, keep the following in mind: # * When an object located at `http(s)://hostname:port/` is # transferred to a data sink, the name of the object at the data sink is # `/`. # * If the specified size of an object does not match the actual size of the # object fetched, the object will not be transferred. # * If the specified MD5 does not match the MD5 computed from the transferred # bytes, the object transfer will fail. For more information, see # [Generating MD5 # hashes](https://cloud.google.com/storage-transfer/docs/create-url-list#md5) # * Ensure that each URL you specify is publicly accessible. For # example, in Cloud Storage you can # [share an object publicly] # (https://cloud.google.com/storage/docs/cloud-console#_sharingdata) and get # a link to it. # * Storage Transfer Service obeys `robots.txt` rules and requires the source # HTTP server to support `Range` requests and to return a `Content-Length` # header in each response. # * ObjectConditions have no effect when filtering objects to transfer. class HttpData include Google::Apis::Core::Hashable # Required. The URL that points to the file that stores the object list # entries. This file must allow public access. Currently, only URLs with # HTTP and HTTPS schemes are supported. # Corresponds to the JSON property `listUrl` # @return [String] attr_accessor :list_url def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @list_url = args[:list_url] if args.key?(:list_url) end end # The response message for Operations.ListOperations. class ListOperationsResponse include Google::Apis::Core::Hashable # The standard List next-page token. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A list of operations that matches the specified filter in the request. # Corresponds to the JSON property `operations` # @return [Array] attr_accessor :operations def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @operations = args[:operations] if args.key?(:operations) end end # Response from ListTransferJobs. class ListTransferJobsResponse include Google::Apis::Core::Hashable # The list next page token. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A list of transfer jobs. # Corresponds to the JSON property `transferJobs` # @return [Array] attr_accessor :transfer_jobs def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @transfer_jobs = args[:transfer_jobs] if args.key?(:transfer_jobs) end end # Specification to configure notifications published to Cloud Pub/Sub. # Notifications will be published to the customer-provided topic using the # following `PubsubMessage.attributes`: # * `"eventType"`: one of the EventType values # * `"payloadFormat"`: one of the PayloadFormat values # * `"projectId"`: the project_id of the # `TransferOperation` # * `"transferJobName"`: the # transfer_job_name of the # `TransferOperation` # * `"transferOperationName"`: the name of the # `TransferOperation` # The `PubsubMessage.data` will contain a TransferOperation resource # formatted according to the specified `PayloadFormat`. class NotificationConfig include Google::Apis::Core::Hashable # Event types for which a notification is desired. If empty, send # notifications for all event types. # Corresponds to the JSON property `eventTypes` # @return [Array] attr_accessor :event_types # Required. The desired format of the notification message payloads. # Corresponds to the JSON property `payloadFormat` # @return [String] attr_accessor :payload_format # Required. The `Topic.name` of the Cloud Pub/Sub topic to which to publish # notifications. Must be of the format: `projects/`project`/topics/`topic``. # Not matching this format will result in an # INVALID_ARGUMENT error. # Corresponds to the JSON property `pubsubTopic` # @return [String] attr_accessor :pubsub_topic def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @event_types = args[:event_types] if args.key?(:event_types) @payload_format = args[:payload_format] if args.key?(:payload_format) @pubsub_topic = args[:pubsub_topic] if args.key?(:pubsub_topic) end end # Conditions that determine which objects will be transferred. Applies only # to S3 and Cloud Storage objects. # The "last modification time" refers to the time of the # last change to the object's content or metadata — specifically, this is # the `updated` property of Cloud Storage objects and the `LastModified` # field of S3 objects. class ObjectConditions include Google::Apis::Core::Hashable # `exclude_prefixes` must follow the requirements described for # include_prefixes. # The max size of `exclude_prefixes` is 1000. # Corresponds to the JSON property `excludePrefixes` # @return [Array] attr_accessor :exclude_prefixes # If `include_prefixes` is specified, objects that satisfy the object # conditions must have names that start with one of the `include_prefixes` # and that do not start with any of the exclude_prefixes. If # `include_prefixes` is not specified, all objects except those that have # names starting with one of the `exclude_prefixes` must satisfy the object # conditions. # Requirements: # * Each include-prefix and exclude-prefix can contain any sequence of # Unicode characters, to a max length of 1024 bytes when UTF8-encoded, # and must not contain Carriage Return or Line Feed characters. Wildcard # matching and regular expression matching are not supported. # * Each include-prefix and exclude-prefix must omit the leading slash. # For example, to include the `requests.gz` object in a transfer from # `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include # prefix as `logs/y=2015/requests.gz`. # * None of the include-prefix or the exclude-prefix values can be empty, # if specified. # * Each include-prefix must include a distinct portion of the object # namespace. No include-prefix may be a prefix of another # include-prefix. # * Each exclude-prefix must exclude a distinct portion of the object # namespace. No exclude-prefix may be a prefix of another # exclude-prefix. # * If `include_prefixes` is specified, then each exclude-prefix must start # with the value of a path explicitly included by `include_prefixes`. # The max size of `include_prefixes` is 1000. # Corresponds to the JSON property `includePrefixes` # @return [Array] attr_accessor :include_prefixes # If specified, only objects with a "last modification time" before this # timestamp and objects that don't have a "last modification time" will be # transferred. # Corresponds to the JSON property `lastModifiedBefore` # @return [String] attr_accessor :last_modified_before # If specified, only objects with a "last modification time" on or after # this timestamp and objects that don't have a "last modification time" are # transferred. # The `last_modified_since` and `last_modified_before` fields can be used # together for chunked data processing. For example, consider a script that # processes each day's worth of data at a time. For that you'd set each # of the fields as follows: # * `last_modified_since` to the start of the day # * `last_modified_before` to the end of the day # Corresponds to the JSON property `lastModifiedSince` # @return [String] attr_accessor :last_modified_since # If specified, only objects with a "last modification time" on or after # `NOW` - `max_time_elapsed_since_last_modification` and objects that don't # have a "last modification time" are transferred. # For each TransferOperation started by this TransferJob, # `NOW` refers to the start_time of the # `TransferOperation`. # Corresponds to the JSON property `maxTimeElapsedSinceLastModification` # @return [String] attr_accessor :max_time_elapsed_since_last_modification # If specified, only objects with a "last modification time" before # `NOW` - `min_time_elapsed_since_last_modification` and objects that don't # have a "last modification time" are transferred. # For each TransferOperation started by this TransferJob, `NOW` # refers to the start_time of the # `TransferOperation`. # Corresponds to the JSON property `minTimeElapsedSinceLastModification` # @return [String] attr_accessor :min_time_elapsed_since_last_modification def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @exclude_prefixes = args[:exclude_prefixes] if args.key?(:exclude_prefixes) @include_prefixes = args[:include_prefixes] if args.key?(:include_prefixes) @last_modified_before = args[:last_modified_before] if args.key?(:last_modified_before) @last_modified_since = args[:last_modified_since] if args.key?(:last_modified_since) @max_time_elapsed_since_last_modification = args[:max_time_elapsed_since_last_modification] if args.key?(:max_time_elapsed_since_last_modification) @min_time_elapsed_since_last_modification = args[:min_time_elapsed_since_last_modification] if args.key?(:min_time_elapsed_since_last_modification) end end # This resource represents a long-running operation that is the result of a # network API call. class Operation include Google::Apis::Core::Hashable # If the value is `false`, it means the operation is still in progress. # If `true`, the operation is completed, and either `error` or `response` is # available. # Corresponds to the JSON property `done` # @return [Boolean] attr_accessor :done alias_method :done?, :done # The `Status` type defines a logical error model that is suitable for # different programming environments, including REST APIs and RPC APIs. It is # used by [gRPC](https://github.com/grpc). Each `Status` message contains # three pieces of data: error code, error message, and error details. # You can find out more about this error model and how to work with it in the # [API Design Guide](https://cloud.google.com/apis/design/errors). # Corresponds to the JSON property `error` # @return [Google::Apis::StoragetransferV1::Status] attr_accessor :error # Represents the transfer operation object. # Corresponds to the JSON property `metadata` # @return [Hash] attr_accessor :metadata # The server-assigned name, which is only unique within the same service that # originally returns it. If you use the default HTTP mapping, the `name` should # have the format of `transferOperations/some/unique/name`. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The normal response of the operation in case of success. If the original # method returns no data on success, such as `Delete`, the response is # `google.protobuf.Empty`. If the original method is standard # `Get`/`Create`/`Update`, the response should be the resource. For other # methods, the response should have the type `XxxResponse`, where `Xxx` # is the original method name. For example, if the original method name # is `TakeSnapshot()`, the inferred response type is # `TakeSnapshotResponse`. # Corresponds to the JSON property `response` # @return [Hash] attr_accessor :response def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @done = args[:done] if args.key?(:done) @error = args[:error] if args.key?(:error) @metadata = args[:metadata] if args.key?(:metadata) @name = args[:name] if args.key?(:name) @response = args[:response] if args.key?(:response) end end # Request passed to PauseTransferOperation. class PauseTransferOperationRequest include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # Request passed to ResumeTransferOperation. class ResumeTransferOperationRequest include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # Transfers can be scheduled to recur or to run just once. class Schedule include Google::Apis::Core::Hashable # Represents a whole or partial calendar date, e.g. a birthday. The time of day # and time zone are either specified elsewhere or are not significant. The date # is relative to the Proleptic Gregorian Calendar. This can represent: # * A full date, with non-zero year, month and day values # * A month and day value, with a zero year, e.g. an anniversary # * A year on its own, with zero month and day values # * A year and month value, with a zero day, e.g. a credit card expiration date # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # Corresponds to the JSON property `scheduleEndDate` # @return [Google::Apis::StoragetransferV1::Date] attr_accessor :schedule_end_date # Represents a whole or partial calendar date, e.g. a birthday. The time of day # and time zone are either specified elsewhere or are not significant. The date # is relative to the Proleptic Gregorian Calendar. This can represent: # * A full date, with non-zero year, month and day values # * A month and day value, with a zero year, e.g. an anniversary # * A year on its own, with zero month and day values # * A year and month value, with a zero day, e.g. a credit card expiration date # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # Corresponds to the JSON property `scheduleStartDate` # @return [Google::Apis::StoragetransferV1::Date] attr_accessor :schedule_start_date # Represents a time of day. The date and time zone are either not significant # or are specified elsewhere. An API may choose to allow leap seconds. Related # types are google.type.Date and `google.protobuf.Timestamp`. # Corresponds to the JSON property `startTimeOfDay` # @return [Google::Apis::StoragetransferV1::TimeOfDay] attr_accessor :start_time_of_day def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @schedule_end_date = args[:schedule_end_date] if args.key?(:schedule_end_date) @schedule_start_date = args[:schedule_start_date] if args.key?(:schedule_start_date) @start_time_of_day = args[:start_time_of_day] if args.key?(:start_time_of_day) end end # The `Status` type defines a logical error model that is suitable for # different programming environments, including REST APIs and RPC APIs. It is # used by [gRPC](https://github.com/grpc). Each `Status` message contains # three pieces of data: error code, error message, and error details. # You can find out more about this error model and how to work with it in the # [API Design Guide](https://cloud.google.com/apis/design/errors). class Status include Google::Apis::Core::Hashable # The status code, which should be an enum value of google.rpc.Code. # Corresponds to the JSON property `code` # @return [Fixnum] attr_accessor :code # A list of messages that carry the error details. There is a common set of # message types for APIs to use. # Corresponds to the JSON property `details` # @return [Array>] attr_accessor :details # A developer-facing error message, which should be in English. Any # user-facing error message should be localized and sent in the # google.rpc.Status.details field, or localized by the client. # Corresponds to the JSON property `message` # @return [String] attr_accessor :message def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @code = args[:code] if args.key?(:code) @details = args[:details] if args.key?(:details) @message = args[:message] if args.key?(:message) end end # Represents a time of day. The date and time zone are either not significant # or are specified elsewhere. An API may choose to allow leap seconds. Related # types are google.type.Date and `google.protobuf.Timestamp`. class TimeOfDay include Google::Apis::Core::Hashable # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose # to allow the value "24:00:00" for scenarios like business closing time. # Corresponds to the JSON property `hours` # @return [Fixnum] attr_accessor :hours # Minutes of hour of day. Must be from 0 to 59. # Corresponds to the JSON property `minutes` # @return [Fixnum] attr_accessor :minutes # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. # Corresponds to the JSON property `nanos` # @return [Fixnum] attr_accessor :nanos # Seconds of minutes of the time. Must normally be from 0 to 59. An API may # allow the value 60 if it allows leap-seconds. # Corresponds to the JSON property `seconds` # @return [Fixnum] attr_accessor :seconds def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @hours = args[:hours] if args.key?(:hours) @minutes = args[:minutes] if args.key?(:minutes) @nanos = args[:nanos] if args.key?(:nanos) @seconds = args[:seconds] if args.key?(:seconds) end end # A collection of counters that report the progress of a transfer operation. class TransferCounters include Google::Apis::Core::Hashable # Bytes that are copied to the data sink. # Corresponds to the JSON property `bytesCopiedToSink` # @return [Fixnum] attr_accessor :bytes_copied_to_sink # Bytes that are deleted from the data sink. # Corresponds to the JSON property `bytesDeletedFromSink` # @return [Fixnum] attr_accessor :bytes_deleted_from_sink # Bytes that are deleted from the data source. # Corresponds to the JSON property `bytesDeletedFromSource` # @return [Fixnum] attr_accessor :bytes_deleted_from_source # Bytes that failed to be deleted from the data sink. # Corresponds to the JSON property `bytesFailedToDeleteFromSink` # @return [Fixnum] attr_accessor :bytes_failed_to_delete_from_sink # Bytes found in the data source that are scheduled to be transferred, # excluding any that are filtered based on object conditions or skipped due # to sync. # Corresponds to the JSON property `bytesFoundFromSource` # @return [Fixnum] attr_accessor :bytes_found_from_source # Bytes found only in the data sink that are scheduled to be deleted. # Corresponds to the JSON property `bytesFoundOnlyFromSink` # @return [Fixnum] attr_accessor :bytes_found_only_from_sink # Bytes in the data source that failed to be transferred or that failed to # be deleted after being transferred. # Corresponds to the JSON property `bytesFromSourceFailed` # @return [Fixnum] attr_accessor :bytes_from_source_failed # Bytes in the data source that are not transferred because they already # exist in the data sink. # Corresponds to the JSON property `bytesFromSourceSkippedBySync` # @return [Fixnum] attr_accessor :bytes_from_source_skipped_by_sync # Objects that are copied to the data sink. # Corresponds to the JSON property `objectsCopiedToSink` # @return [Fixnum] attr_accessor :objects_copied_to_sink # Objects that are deleted from the data sink. # Corresponds to the JSON property `objectsDeletedFromSink` # @return [Fixnum] attr_accessor :objects_deleted_from_sink # Objects that are deleted from the data source. # Corresponds to the JSON property `objectsDeletedFromSource` # @return [Fixnum] attr_accessor :objects_deleted_from_source # Objects that failed to be deleted from the data sink. # Corresponds to the JSON property `objectsFailedToDeleteFromSink` # @return [Fixnum] attr_accessor :objects_failed_to_delete_from_sink # Objects found in the data source that are scheduled to be transferred, # excluding any that are filtered based on object conditions or skipped due # to sync. # Corresponds to the JSON property `objectsFoundFromSource` # @return [Fixnum] attr_accessor :objects_found_from_source # Objects found only in the data sink that are scheduled to be deleted. # Corresponds to the JSON property `objectsFoundOnlyFromSink` # @return [Fixnum] attr_accessor :objects_found_only_from_sink # Objects in the data source that failed to be transferred or that failed # to be deleted after being transferred. # Corresponds to the JSON property `objectsFromSourceFailed` # @return [Fixnum] attr_accessor :objects_from_source_failed # Objects in the data source that are not transferred because they already # exist in the data sink. # Corresponds to the JSON property `objectsFromSourceSkippedBySync` # @return [Fixnum] attr_accessor :objects_from_source_skipped_by_sync def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bytes_copied_to_sink = args[:bytes_copied_to_sink] if args.key?(:bytes_copied_to_sink) @bytes_deleted_from_sink = args[:bytes_deleted_from_sink] if args.key?(:bytes_deleted_from_sink) @bytes_deleted_from_source = args[:bytes_deleted_from_source] if args.key?(:bytes_deleted_from_source) @bytes_failed_to_delete_from_sink = args[:bytes_failed_to_delete_from_sink] if args.key?(:bytes_failed_to_delete_from_sink) @bytes_found_from_source = args[:bytes_found_from_source] if args.key?(:bytes_found_from_source) @bytes_found_only_from_sink = args[:bytes_found_only_from_sink] if args.key?(:bytes_found_only_from_sink) @bytes_from_source_failed = args[:bytes_from_source_failed] if args.key?(:bytes_from_source_failed) @bytes_from_source_skipped_by_sync = args[:bytes_from_source_skipped_by_sync] if args.key?(:bytes_from_source_skipped_by_sync) @objects_copied_to_sink = args[:objects_copied_to_sink] if args.key?(:objects_copied_to_sink) @objects_deleted_from_sink = args[:objects_deleted_from_sink] if args.key?(:objects_deleted_from_sink) @objects_deleted_from_source = args[:objects_deleted_from_source] if args.key?(:objects_deleted_from_source) @objects_failed_to_delete_from_sink = args[:objects_failed_to_delete_from_sink] if args.key?(:objects_failed_to_delete_from_sink) @objects_found_from_source = args[:objects_found_from_source] if args.key?(:objects_found_from_source) @objects_found_only_from_sink = args[:objects_found_only_from_sink] if args.key?(:objects_found_only_from_sink) @objects_from_source_failed = args[:objects_from_source_failed] if args.key?(:objects_from_source_failed) @objects_from_source_skipped_by_sync = args[:objects_from_source_skipped_by_sync] if args.key?(:objects_from_source_skipped_by_sync) end end # This resource represents the configuration of a transfer job that runs # periodically. class TransferJob include Google::Apis::Core::Hashable # Output only. The time that the transfer job was created. # Corresponds to the JSON property `creationTime` # @return [String] attr_accessor :creation_time # Output only. The time that the transfer job was deleted. # Corresponds to the JSON property `deletionTime` # @return [String] attr_accessor :deletion_time # A description provided by the user for the job. Its max length is 1024 # bytes when Unicode-encoded. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # Output only. The time that the transfer job was last modified. # Corresponds to the JSON property `lastModificationTime` # @return [String] attr_accessor :last_modification_time # A unique name (within the transfer project) assigned when the job is # created. If this field is empty in a CreateTransferJobRequest, Storage # Transfer Service will assign a unique name. Otherwise, the specified name # is used as the unique name for this job. # If the specified name is in use by a job, the creation request fails with # an ALREADY_EXISTS error. # This name must start with `"transferJobs/"` prefix and end with a letter or # a number, and should be no more than 128 characters. # Example: `"transferJobs/[A-Za-z0-9-._~]*[A-Za-z0-9]$"` # Invalid job names will fail with an # INVALID_ARGUMENT error. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # Specification to configure notifications published to Cloud Pub/Sub. # Notifications will be published to the customer-provided topic using the # following `PubsubMessage.attributes`: # * `"eventType"`: one of the EventType values # * `"payloadFormat"`: one of the PayloadFormat values # * `"projectId"`: the project_id of the # `TransferOperation` # * `"transferJobName"`: the # transfer_job_name of the # `TransferOperation` # * `"transferOperationName"`: the name of the # `TransferOperation` # The `PubsubMessage.data` will contain a TransferOperation resource # formatted according to the specified `PayloadFormat`. # Corresponds to the JSON property `notificationConfig` # @return [Google::Apis::StoragetransferV1::NotificationConfig] attr_accessor :notification_config # The ID of the Google Cloud Platform Project that owns the job. # Corresponds to the JSON property `projectId` # @return [String] attr_accessor :project_id # Transfers can be scheduled to recur or to run just once. # Corresponds to the JSON property `schedule` # @return [Google::Apis::StoragetransferV1::Schedule] attr_accessor :schedule # Status of the job. This value MUST be specified for # `CreateTransferJobRequests`. # **Note:** The effect of the new job status takes place during a subsequent # job run. For example, if you change the job status from # ENABLED to DISABLED, and an operation # spawned by the transfer is running, the status change would not affect the # current operation. # Corresponds to the JSON property `status` # @return [String] attr_accessor :status # Configuration for running a transfer. # Corresponds to the JSON property `transferSpec` # @return [Google::Apis::StoragetransferV1::TransferSpec] attr_accessor :transfer_spec def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @creation_time = args[:creation_time] if args.key?(:creation_time) @deletion_time = args[:deletion_time] if args.key?(:deletion_time) @description = args[:description] if args.key?(:description) @last_modification_time = args[:last_modification_time] if args.key?(:last_modification_time) @name = args[:name] if args.key?(:name) @notification_config = args[:notification_config] if args.key?(:notification_config) @project_id = args[:project_id] if args.key?(:project_id) @schedule = args[:schedule] if args.key?(:schedule) @status = args[:status] if args.key?(:status) @transfer_spec = args[:transfer_spec] if args.key?(:transfer_spec) end end # A description of the execution of a transfer. class TransferOperation include Google::Apis::Core::Hashable # A collection of counters that report the progress of a transfer operation. # Corresponds to the JSON property `counters` # @return [Google::Apis::StoragetransferV1::TransferCounters] attr_accessor :counters # End time of this transfer execution. # Corresponds to the JSON property `endTime` # @return [String] attr_accessor :end_time # Summarizes errors encountered with sample error log entries. # Corresponds to the JSON property `errorBreakdowns` # @return [Array] attr_accessor :error_breakdowns # A globally unique ID assigned by the system. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # Specification to configure notifications published to Cloud Pub/Sub. # Notifications will be published to the customer-provided topic using the # following `PubsubMessage.attributes`: # * `"eventType"`: one of the EventType values # * `"payloadFormat"`: one of the PayloadFormat values # * `"projectId"`: the project_id of the # `TransferOperation` # * `"transferJobName"`: the # transfer_job_name of the # `TransferOperation` # * `"transferOperationName"`: the name of the # `TransferOperation` # The `PubsubMessage.data` will contain a TransferOperation resource # formatted according to the specified `PayloadFormat`. # Corresponds to the JSON property `notificationConfig` # @return [Google::Apis::StoragetransferV1::NotificationConfig] attr_accessor :notification_config # The ID of the Google Cloud Platform Project that owns the operation. # Corresponds to the JSON property `projectId` # @return [String] attr_accessor :project_id # Start time of this transfer execution. # Corresponds to the JSON property `startTime` # @return [String] attr_accessor :start_time # Status of the transfer operation. # Corresponds to the JSON property `status` # @return [String] attr_accessor :status # The name of the transfer job that triggers this transfer operation. # Corresponds to the JSON property `transferJobName` # @return [String] attr_accessor :transfer_job_name # Configuration for running a transfer. # Corresponds to the JSON property `transferSpec` # @return [Google::Apis::StoragetransferV1::TransferSpec] attr_accessor :transfer_spec def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @counters = args[:counters] if args.key?(:counters) @end_time = args[:end_time] if args.key?(:end_time) @error_breakdowns = args[:error_breakdowns] if args.key?(:error_breakdowns) @name = args[:name] if args.key?(:name) @notification_config = args[:notification_config] if args.key?(:notification_config) @project_id = args[:project_id] if args.key?(:project_id) @start_time = args[:start_time] if args.key?(:start_time) @status = args[:status] if args.key?(:status) @transfer_job_name = args[:transfer_job_name] if args.key?(:transfer_job_name) @transfer_spec = args[:transfer_spec] if args.key?(:transfer_spec) end end # TransferOptions uses three boolean parameters to define the actions # to be performed on objects in a transfer. class TransferOptions include Google::Apis::Core::Hashable # Whether objects should be deleted from the source after they are # transferred to the sink. # **Note:** This option and delete_objects_unique_in_sink are mutually # exclusive. # Corresponds to the JSON property `deleteObjectsFromSourceAfterTransfer` # @return [Boolean] attr_accessor :delete_objects_from_source_after_transfer alias_method :delete_objects_from_source_after_transfer?, :delete_objects_from_source_after_transfer # Whether objects that exist only in the sink should be deleted. # **Note:** This option and delete_objects_from_source_after_transfer are # mutually exclusive. # Corresponds to the JSON property `deleteObjectsUniqueInSink` # @return [Boolean] attr_accessor :delete_objects_unique_in_sink alias_method :delete_objects_unique_in_sink?, :delete_objects_unique_in_sink # Whether overwriting objects that already exist in the sink is allowed. # Corresponds to the JSON property `overwriteObjectsAlreadyExistingInSink` # @return [Boolean] attr_accessor :overwrite_objects_already_existing_in_sink alias_method :overwrite_objects_already_existing_in_sink?, :overwrite_objects_already_existing_in_sink def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @delete_objects_from_source_after_transfer = args[:delete_objects_from_source_after_transfer] if args.key?(:delete_objects_from_source_after_transfer) @delete_objects_unique_in_sink = args[:delete_objects_unique_in_sink] if args.key?(:delete_objects_unique_in_sink) @overwrite_objects_already_existing_in_sink = args[:overwrite_objects_already_existing_in_sink] if args.key?(:overwrite_objects_already_existing_in_sink) end end # Configuration for running a transfer. class TransferSpec include Google::Apis::Core::Hashable # An AwsS3Data resource can be a data source, but not a data sink. # In an AwsS3Data resource, an object's name is the S3 object's key name. # Corresponds to the JSON property `awsS3DataSource` # @return [Google::Apis::StoragetransferV1::AwsS3Data] attr_accessor :aws_s3_data_source # An AzureBlobStorageData resource can be a data source, but not a data sink. # An AzureBlobStorageData resource represents one Azure container. The storage # account determines the [Azure # endpoint](https://docs.microsoft.com/en-us/azure/storage/common/storage-create- # storage-account#storage-account-endpoints). # In an AzureBlobStorageData resource, a blobs's name is the [Azure Blob # Storage blob's key # name](https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and- # referencing-containers--blobs--and-metadata#blob-names). # Corresponds to the JSON property `azureBlobStorageDataSource` # @return [Google::Apis::StoragetransferV1::AzureBlobStorageData] attr_accessor :azure_blob_storage_data_source # In a GcsData resource, an object's name is the Cloud Storage object's # name and its "last modification time" refers to the object's `updated` # property of Cloud Storage objects, which changes when the content or the # metadata of the object is updated. # Corresponds to the JSON property `gcsDataSink` # @return [Google::Apis::StoragetransferV1::GcsData] attr_accessor :gcs_data_sink # In a GcsData resource, an object's name is the Cloud Storage object's # name and its "last modification time" refers to the object's `updated` # property of Cloud Storage objects, which changes when the content or the # metadata of the object is updated. # Corresponds to the JSON property `gcsDataSource` # @return [Google::Apis::StoragetransferV1::GcsData] attr_accessor :gcs_data_source # An HttpData resource specifies a list of objects on the web to be transferred # over HTTP. The information of the objects to be transferred is contained in # a file referenced by a URL. The first line in the file must be # `"TsvHttpData-1.0"`, which specifies the format of the file. Subsequent # lines specify the information of the list of objects, one object per list # entry. Each entry has the following tab-delimited fields: # * **HTTP URL** — The location of the object. # * **Length** — The size of the object in bytes. # * **MD5** — The base64-encoded MD5 hash of the object. # For an example of a valid TSV file, see # [Transferring data from # URLs](https://cloud.google.com/storage-transfer/docs/create-url-list). # When transferring data based on a URL list, keep the following in mind: # * When an object located at `http(s)://hostname:port/` is # transferred to a data sink, the name of the object at the data sink is # `/`. # * If the specified size of an object does not match the actual size of the # object fetched, the object will not be transferred. # * If the specified MD5 does not match the MD5 computed from the transferred # bytes, the object transfer will fail. For more information, see # [Generating MD5 # hashes](https://cloud.google.com/storage-transfer/docs/create-url-list#md5) # * Ensure that each URL you specify is publicly accessible. For # example, in Cloud Storage you can # [share an object publicly] # (https://cloud.google.com/storage/docs/cloud-console#_sharingdata) and get # a link to it. # * Storage Transfer Service obeys `robots.txt` rules and requires the source # HTTP server to support `Range` requests and to return a `Content-Length` # header in each response. # * ObjectConditions have no effect when filtering objects to transfer. # Corresponds to the JSON property `httpDataSource` # @return [Google::Apis::StoragetransferV1::HttpData] attr_accessor :http_data_source # Conditions that determine which objects will be transferred. Applies only # to S3 and Cloud Storage objects. # The "last modification time" refers to the time of the # last change to the object's content or metadata — specifically, this is # the `updated` property of Cloud Storage objects and the `LastModified` # field of S3 objects. # Corresponds to the JSON property `objectConditions` # @return [Google::Apis::StoragetransferV1::ObjectConditions] attr_accessor :object_conditions # TransferOptions uses three boolean parameters to define the actions # to be performed on objects in a transfer. # Corresponds to the JSON property `transferOptions` # @return [Google::Apis::StoragetransferV1::TransferOptions] attr_accessor :transfer_options def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @aws_s3_data_source = args[:aws_s3_data_source] if args.key?(:aws_s3_data_source) @azure_blob_storage_data_source = args[:azure_blob_storage_data_source] if args.key?(:azure_blob_storage_data_source) @gcs_data_sink = args[:gcs_data_sink] if args.key?(:gcs_data_sink) @gcs_data_source = args[:gcs_data_source] if args.key?(:gcs_data_source) @http_data_source = args[:http_data_source] if args.key?(:http_data_source) @object_conditions = args[:object_conditions] if args.key?(:object_conditions) @transfer_options = args[:transfer_options] if args.key?(:transfer_options) end end # Request passed to UpdateTransferJob. class UpdateTransferJobRequest include Google::Apis::Core::Hashable # Required. The ID of the Google Cloud Platform Console project that owns the # job. # Corresponds to the JSON property `projectId` # @return [String] attr_accessor :project_id # This resource represents the configuration of a transfer job that runs # periodically. # Corresponds to the JSON property `transferJob` # @return [Google::Apis::StoragetransferV1::TransferJob] attr_accessor :transfer_job # The field mask of the fields in `transferJob` that are to be updated in # this request. Fields in `transferJob` that can be updated are: # description, # transfer_spec, # notification_config, and # status. To update the `transfer_spec` of the job, a # complete transfer specification must be provided. An incomplete # specification missing any required fields will be rejected with the error # INVALID_ARGUMENT. # Corresponds to the JSON property `updateTransferJobFieldMask` # @return [String] attr_accessor :update_transfer_job_field_mask def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @project_id = args[:project_id] if args.key?(:project_id) @transfer_job = args[:transfer_job] if args.key?(:transfer_job) @update_transfer_job_field_mask = args[:update_transfer_job_field_mask] if args.key?(:update_transfer_job_field_mask) end end end end end