diff --git a/apis/dataflow/v1beta1/dataflowflextemplatejob_types.go b/apis/dataflow/v1beta1/dataflowflextemplatejob_types.go new file mode 100644 index 00000000000..5c747e9e8ad --- /dev/null +++ b/apis/dataflow/v1beta1/dataflowflextemplatejob_types.go @@ -0,0 +1,455 @@ +// Copyright 2024 Google LLC +// +// 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. + +package v1beta1 + +import ( + refs "github.com/GoogleCloudPlatform/k8s-config-connector/apis/refs/v1beta1" + "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/apis/k8s/v1alpha1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +var DataFlowFlexTemplateJobGVK = GroupVersion.WithKind("DataFlowFlexTemplateJob") + +// DataFlowFlexTemplateJobSpec defines the desired state of DataFlowFlexTemplateJob +// +kcc:proto=google.dataflow.v1beta3.FlexTemplateRuntimeEnvironment +type DataFlowFlexTemplateJobSpec struct { + + /* NOTYET + // The DataFlowFlexTemplateJob name. If not given, the metadata.name will be used. + // +optional + ResourceID *string `json:"resourceID,omitempty"` + */ + + // Immutable. The region in which the created job should run. + // +required + Region string `json:"region"` + + // Cloud Storage path to a file with json serialized ContainerSpec as + // content. + // +required + ContainerSpecGcsPath *string `json:"containerSpecGcsPath,omitempty"` + + // The parameters for FlexTemplate. + // Ex. {"num_workers":"5"} + Parameters map[string]string `json:"parameters,omitempty"` + + // Map of transform name prefixes of the job to be replaced + // with the corresponding name prefixes of the new job. + // Only applicable when updating a pipeline. + TransformNameMappings map[string]string `json:"transformNameMappings,omitempty"` + + /* + // Required. The job name to use for the created job. For update job request, + // job name should be same as the existing running job. + JobName *string `json:"jobName,omitempty"` + + // Spec about the container image to launch. + ContainerSpec *ContainerSpec `json:"containerSpec,omitempty"` + + + + // Launch options for this flex template job. This is a common set of options + // across languages and templates. This should not be used to pass job + // parameters. + LaunchOptions map[string]string `json:"launchOptions,omitempty"` + + // The runtime environment for the FlexTemplate job + Environment *FlexTemplateRuntimeEnvironment `json:"environment,omitempty"` + + // Set this to true if you are sending a request to update a running + // streaming job. When set, the job name should be the same as the + // running job. + Update *bool `json:"update,omitempty"` + + */ + + // The initial number of Google Compute Engine instances for the job. + NumWorkers *int32 `json:"numWorkers,omitempty"` + + // The maximum number of Google Compute Engine instances to be made + // available to your pipeline during execution, from 1 to 1000. + MaxWorkers *int32 `json:"maxWorkers,omitempty"` + + /* NOTYET + // The Compute Engine [availability + // zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) + // for launching worker instances to run your pipeline. + // In the future, worker_zone will take precedence. + Zone *string `json:"zone,omitempty"` + */ + + // The email address of the service account to run the job as. + ServiceAccountEmailRef *refs.IAMServiceAccountRef `json:"serviceAccountEmailRef,omitempty"` + + // The Cloud Storage path to use for temporary files. + // Must be a valid Cloud Storage URL, beginning with `gs://`. + TempLocation *string `json:"tempLocation,omitempty"` + + // The machine type to use for the job. Defaults to the value from the + // template if not specified. + MachineType *string `json:"machineType,omitempty"` + + // Additional experiment flags for the job. + AdditionalExperiments []string `json:"additionalExperiments,omitempty"` + + // Network to which VMs will be assigned. If empty or unspecified, + // the service will use the network "default". + NetworkRef *refs.ComputeNetworkRef `json:"networkRef,omitempty"` + + // Subnetwork to which VMs will be assigned, if desired. You can specify a + // subnetwork using either a complete URL or an abbreviated path. Expected to + // be of the form + // "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" + // or "regions/REGION/subnetworks/SUBNETWORK". If the subnetwork is located in + // a Shared VPC network, you must use the complete URL. + SubnetworkRef *refs.ComputeSubnetworkRef `json:"subnetworkRef,omitempty"` + + /* NOTYET + // Additional user labels to be specified for the job. + // Keys and values must follow the restrictions specified in the [labeling + // restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) + // page. + // An object containing a list of "key": value pairs. + // Example: { "name": "wrench", "mass": "1kg", "count": "3" }. + AdditionalUserLabels map[string]string `json:"additionalUserLabels,omitempty"` + */ + + // The Cloud KMS key for the job. + // Key format is: + // projects//locations//keyRings//cryptoKeys/ + KmsKeyNameRef *refs.KMSCryptoKeyRef `json:"kmsKeyNameRef,omitempty"` + + // Configuration for VM IPs. + IpConfiguration *string `json:"ipConfiguration,omitempty"` + + /* NOTYET + // The Compute Engine region + // (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in + // which worker processing should occur, e.g. "us-west1". Mutually exclusive + // with worker_zone. If neither worker_region nor worker_zone is specified, + // default to the control plane's region. + WorkerRegion *string `json:"workerRegion,omitempty"` + */ + + /* NOTYET + // The Compute Engine zone + // (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in + // which worker processing should occur, e.g. "us-west1-a". Mutually exclusive + // with worker_region. If neither worker_region nor worker_zone is specified, + // a zone in the control plane's region is chosen based on available capacity. + // If both `worker_zone` and `zone` are set, `worker_zone` takes precedence. + WorkerZone *string `json:"workerZone,omitempty"` + */ + + // Whether to enable Streaming Engine for the job. + EnableStreamingEngine *bool `json:"enableStreamingEngine,omitempty"` + + /*NOTYET + // Set FlexRS goal for the job. + // https://cloud.google.com/dataflow/docs/guides/flexrs + FlexrsGoal *string `json:"flexrsGoal,omitempty"` + */ + + // The Cloud Storage path for staging local files. + // Must be a valid Cloud Storage URL, beginning with `gs://`. + StagingLocation *string `json:"stagingLocation,omitempty"` + + // Docker registry location of container image to use for the 'worker harness. + // Default is the container for the version of the SDK. Note this field is + // only valid for portable pipelines. + SdkContainerImage *string `json:"sdkContainerImage,omitempty"` + + /* NOTYET + // Worker disk size, in gigabytes. + DiskSizeGb *int32 `json:"diskSizeGb,omitempty"` + */ + + // The algorithm to use for autoscaling + AutoscalingAlgorithm *string `json:"autoscalingAlgorithm,omitempty"` + + /* NOTYET + // If true, save a heap dump before killing a thread or process which is GC + // thrashing or out of memory. The location of the heap file will either be + // echoed back to the user, or the user will be given the opportunity to + // download the heap file. + DumpHeapOnOom *bool `json:"dumpHeapOnOom,omitempty"` + */ + + /* NOTYET + // Cloud Storage bucket (directory) to upload heap dumps to the given + // location. Enabling this implies that heap dumps should be generated on OOM + // (dump_heap_on_oom is set to true). + SaveHeapDumpsToGcsPath *string `json:"saveHeapDumpsToGcsPath,omitempty"` + */ + + // The machine type to use for launching the job. The default is + // n1-standard-1. + LauncherMachineType *string `json:"launcherMachineType,omitempty"` + + /* TODO + // The unique ID of this job. + // + // This field is set by the Cloud Dataflow service when the Job is + // created, and is immutable for the life of the job. + ID *string `json:"id,omitempty"` + */ + + /* TODO + // The ID of the Cloud Platform project that the job belongs to. + ProjectID *string `json:"projectID,omitempty"` + */ + + /* TODO + // The user-specified Cloud Dataflow job name. + // + // Only one Job with a given name may exist in a project at any + // given time. If a caller attempts to create a Job with the same + // name as an already-existing Job, the attempt returns the + // existing Job. + // + // The name must match the regular expression + // `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` + Name *string `json:"name,omitempty"` + */ + + /* + // The environment for the job. + Environment *Environment `json:"environment,omitempty"` + */ + + /* + // Exactly one of step or steps_location should be specified. + // + // The top-level steps that constitute the entire job. Only retrieved with + // JOB_VIEW_ALL. + Steps []Step `json:"steps,omitempty"` + + // The Cloud Storage location where the steps are stored. + StepsLocation *string `json:"stepsLocation,omitempty"` + + // The job's requested state. + // + // `UpdateJob` may be used to switch between the `JOB_STATE_STOPPED` and + // `JOB_STATE_RUNNING` states, by setting requested_state. `UpdateJob` may + // also be used to directly set a job's requested state to + // `JOB_STATE_CANCELLED` or `JOB_STATE_DONE`, irrevocably terminating the + // job if it has not already reached a terminal state. + RequestedState *string `json:"requestedState,omitempty"` + */ + + /* TODO + // Deprecated. + ExecutionInfo *JobExecutionInfo `json:"executionInfo,omitempty"` + */ + + /* + // The map of transform name prefixes of the job to be replaced to the + // corresponding name prefixes of the new job. + TransformNameMapping map[string]string `json:"transformNameMapping,omitempty"` + */ + + /* TODO + // The client's unique identifier of the job, re-used across retried attempts. + // If this field is set, the service will ensure its uniqueness. + // The request to create a job will fail if the service has knowledge of a + // previously submitted job with the same client's ID and job name. + // The caller may use this field to ensure idempotence of job + // creation across retried attempts to create a job. + // By default, the field is empty and, in that case, the service ignores it. + ClientRequestID *string `json:"clientRequestID,omitempty"` + */ + + /* + // A set of files the system should be aware of that are used + // for temporary storage. These temporary files will be + // removed on job completion. + // No duplicates are allowed. + // No file patterns are supported. + // + // The supported files are: + // + // Google Cloud Storage: + // + // storage.googleapis.com/{bucket}/{object} + // bucket.storage.googleapis.com/{object} + TempFiles []string `json:"tempFiles,omitempty"` + + // User-defined labels for this job. + // + // The labels map can contain no more than 64 entries. Entries of the labels + // map are UTF8 strings that comply with the following restrictions: + // + // * Keys must conform to regexp: [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62} + // * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} + // * Both keys and values are additionally constrained to be <= 128 bytes in + // size. + Labels map[string]string `json:"labels,omitempty"` + + // The [regional endpoint] + // (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that + // contains this job. + Location *string `json:"location,omitempty"` + + // Preliminary field: The format of this data may change at any time. + // A description of the user pipeline and stages through which it is executed. + // Created by Cloud Dataflow service. Only retrieved with + // JOB_VIEW_DESCRIPTION or JOB_VIEW_ALL. + PipelineDescription *PipelineDescription `json:"pipelineDescription,omitempty"` + + // This field may be mutated by the Cloud Dataflow service; + // callers cannot mutate it. + StageStates []ExecutionStageState `json:"stageStates,omitempty"` + */ + + /* TODO + // This field is populated by the Dataflow service to support filtering jobs + // by the metadata values provided here. Populated for ListJobs and all GetJob + // views SUMMARY and higher. + JobMetadata *JobMetadata `json:"jobMetadata,omitempty"` + */ + + /* + TODO + // Reserved for future use. This field is set only in responses from the + // server; it is ignored if it is set in any requests. + SatisfiesPzs *bool `json:"satisfiesPzs,omitempty"` + */ +} + +// DataFlowFlexTemplateJobStatus defines the config connector machine state of DataFlowFlexTemplateJob +type DataFlowFlexTemplateJobStatus struct { + /* Conditions represent the latest available observations of the + object's current state. */ + Conditions []v1alpha1.Condition `json:"conditions,omitempty"` + + // ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource. + // +optional + ObservedGeneration *int64 `json:"observedGeneration,omitempty"` + + /* NOTYET - keeping compatability with terraform + // A unique specifier for the DataFlowFlexTemplateJob resource in GCP. + // +optional + ExternalRef *string `json:"externalRef,omitempty"` + */ + + /* NOTYET - keeping compatability with terraform + // ObservedState is the state of the resource as most recently observed in GCP. + // +optional + ObservedState *DataFlowFlexTemplateJobObservedState `json:"observedState,omitempty"` + */ + + // TODO: Description for JobID? + + JobID string `json:"jobId,omitempty"` + + // The current state of the job. + // + // Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise + // specified. + // + // A job in the `JOB_STATE_RUNNING` state may asynchronously enter a + // terminal state. After a job has reached a terminal state, no + // further state updates may be made. + // + // This field may be mutated by the Cloud Dataflow service; + // callers cannot mutate it. + CurrentState *string `json:"state,omitempty"` + + // The type of Cloud Dataflow job. + Type *string `json:"type,omitempty"` +} + +// DataFlowFlexTemplateJobSpec defines the desired state of DataFlowFlexTemplateJob +type DataFlowFlexTemplateJobObservedState struct { + /* + // The current state of the job. + // + // Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise + // specified. + // + // A job in the `JOB_STATE_RUNNING` state may asynchronously enter a + // terminal state. After a job has reached a terminal state, no + // further state updates may be made. + // + // This field may be mutated by the Cloud Dataflow service; + // callers cannot mutate it. + CurrentState *string `json:"currentState,omitempty"` + + // The timestamp associated with the current state. + CurrentStateTime *string `json:"currentStateTime,omitempty"` + + // The timestamp when the job was initially created. Immutable and set by the + // Cloud Dataflow service. + CreateTime *string `json:"createTime,omitempty"` + + // If this job is an update of an existing job, this field is the job ID + // of the job it replaced. + // + // When sending a `CreateJobRequest`, you can update a job by specifying it + // here. The job named here is stopped, and its intermediate state is + // transferred to this job. + ReplaceJobID *string `json:"replaceJobID,omitempty"` + + // If another job is an update of this job (and thus, this job is in + // `JOB_STATE_UPDATED`), this field contains the ID of that job. + ReplacedByJobID *string `json:"replacedByJobID,omitempty"` + + // The timestamp when the job was started (transitioned to JOB_STATE_PENDING). + // Flexible resource scheduling jobs are started with some delay after job + // creation, so start_time is unset before start and is updated when the + // job is started by the Cloud Dataflow service. For other jobs, start_time + // always equals to create_time and is immutable and set by the Cloud Dataflow + // service. + StartTime *string `json:"startTime,omitempty"` + + // If this is specified, the job's initial state is populated from the given + // snapshot. + CreatedFromSnapshotID *string `json:"createdFromSnapshotID,omitempty"` + */ +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +kubebuilder:resource:categories=gcp,shortName=gcpdataflowflextemplatejob;gcpdataflowflextemplatejobs +// +kubebuilder:subresource:status +// +kubebuilder:metadata:labels="cnrm.cloud.google.com/managed-by-kcc=true";"cnrm.cloud.google.com/stability-level=stable";"cnrm.cloud.google.com/tf2crd=true";"cnrm.cloud.google.com/system=true" +// +kubebuilder:printcolumn:name="Age",JSONPath=".metadata.creationTimestamp",type="date" +// +kubebuilder:printcolumn:name="Ready",JSONPath=".status.conditions[?(@.type=='Ready')].status",type="string",description="When 'True', the most recent reconcile of the resource succeeded" +// +kubebuilder:printcolumn:name="Status",JSONPath=".status.conditions[?(@.type=='Ready')].reason",type="string",description="The reason for the value in 'Ready'" +// +kubebuilder:printcolumn:name="Status Age",JSONPath=".status.conditions[?(@.type=='Ready')].lastTransitionTime",type="date",description="The last transition time for the value in 'Status'" + +// DataFlowFlexTemplateJob is the Schema for the DataFlowFlexTemplateJob API +// +k8s:openapi-gen=true +type DataFlowFlexTemplateJob struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + // +required + Spec DataFlowFlexTemplateJobSpec `json:"spec,omitempty"` + + Status DataFlowFlexTemplateJobStatus `json:"status,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// DataFlowFlexTemplateJobList contains a list of DataFlowFlexTemplateJob +type DataFlowFlexTemplateJobList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []DataFlowFlexTemplateJob `json:"items"` +} + +func init() { + SchemeBuilder.Register(&DataFlowFlexTemplateJob{}, &DataFlowFlexTemplateJobList{}) +} diff --git a/apis/dataflow/v1beta1/doc.go b/apis/dataflow/v1beta1/doc.go new file mode 100644 index 00000000000..53c972fe50d --- /dev/null +++ b/apis/dataflow/v1beta1/doc.go @@ -0,0 +1,16 @@ +// Copyright 2024 Google LLC +// +// 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. + +// +kcc:proto=google.dataflow.v1beta3 +package v1beta1 diff --git a/apis/dataflow/v1beta1/groupversion_info.go b/apis/dataflow/v1beta1/groupversion_info.go new file mode 100644 index 00000000000..c2722cac7df --- /dev/null +++ b/apis/dataflow/v1beta1/groupversion_info.go @@ -0,0 +1,33 @@ +// Copyright 2024 Google LLC +// +// 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. + +// +kubebuilder:object:generate=true +// +groupName=dataflow.cnrm.cloud.google.com +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: "dataflow.cnrm.cloud.google.com", Version: "v1beta1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/apis/dataflow/v1beta1/types.generated.go b/apis/dataflow/v1beta1/types.generated.go new file mode 100644 index 00000000000..da6447910cb --- /dev/null +++ b/apis/dataflow/v1beta1/types.generated.go @@ -0,0 +1,1518 @@ +// Copyright 2024 Google LLC +// +// 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. + +package v1beta1 + +// +kcc:proto=google.dataflow.v1beta3.AutoscalingEvent +type AutoscalingEvent struct { + // The current number of workers the job has. + CurrentNumWorkers *int64 `json:"currentNumWorkers,omitempty"` + + // The target number of workers the worker pool wants to resize to use. + TargetNumWorkers *int64 `json:"targetNumWorkers,omitempty"` + + // The type of autoscaling event to report. + EventType *string `json:"eventType,omitempty"` + + // A message describing why the system decided to adjust the current + // number of workers, why it failed, or why the system decided to + // not make any changes to the number of workers. + Description *StructuredMessage `json:"description,omitempty"` + + // The time this event was emitted to indicate a new target or current + // num_workers value. + Time *string `json:"time,omitempty"` + + // A short and friendly name for the worker pool this event refers to. + WorkerPool *string `json:"workerPool,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.AutoscalingSettings +type AutoscalingSettings struct { + // The algorithm to use for autoscaling. + Algorithm *string `json:"algorithm,omitempty"` + + // The maximum number of workers to cap scaling at. + MaxNumWorkers *int32 `json:"maxNumWorkers,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.BigQueryIODetails +type BigQueryIODetails struct { + // Table accessed in the connection. + Table *string `json:"table,omitempty"` + + // Dataset accessed in the connection. + Dataset *string `json:"dataset,omitempty"` + + // Project accessed in the connection. + ProjectID *string `json:"projectID,omitempty"` + + // Query used to access data in the connection. + Query *string `json:"query,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.BigTableIODetails +type BigTableIODetails struct { + // ProjectId accessed in the connection. + ProjectID *string `json:"projectID,omitempty"` + + // InstanceId accessed in the connection. + InstanceID *string `json:"instanceID,omitempty"` + + // TableId accessed in the connection. + TableID *string `json:"tableID,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ComputationTopology +type ComputationTopology struct { + // The system stage name. + SystemStageName *string `json:"systemStageName,omitempty"` + + // The ID of the computation. + ComputationID *string `json:"computationID,omitempty"` + + // The key ranges processed by the computation. + KeyRanges []KeyRangeLocation `json:"keyRanges,omitempty"` + + // The inputs to the computation. + Inputs []StreamLocation `json:"inputs,omitempty"` + + // The outputs from the computation. + Outputs []StreamLocation `json:"outputs,omitempty"` + + // The state family values. + StateFamilies []StateFamilyConfig `json:"stateFamilies,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ContainerSpec +type ContainerSpec struct { + // Name of the docker container image. E.g., gcr.io/project/some-image + Image *string `json:"image,omitempty"` + + // Metadata describing a template including description and validation rules. + Metadata *TemplateMetadata `json:"metadata,omitempty"` + + // Required. SDK info of the Flex Template. + SdkInfo *SDKInfo `json:"sdkInfo,omitempty"` + + // Default runtime environment for the job. + DefaultEnvironment *FlexTemplateRuntimeEnvironment `json:"defaultEnvironment,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.CustomSourceLocation +type CustomSourceLocation struct { + // Whether this source is stateful. + Stateful *bool `json:"stateful,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.DataDiskAssignment +type DataDiskAssignment struct { + // VM instance name the data disks mounted to, for example + // "myproject-1014-104817-4c2-harness-0". + VmInstance *string `json:"vmInstance,omitempty"` + + // Mounted data disks. The order is important a data disk's 0-based index in + // this list defines which persistent directory the disk is mounted to, for + // example the list of { "myproject-1014-104817-4c2-harness-0-disk-0" }, + // { "myproject-1014-104817-4c2-harness-0-disk-1" }. + DataDisks []string `json:"dataDisks,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.DatastoreIODetails +type DatastoreIODetails struct { + // Namespace used in the connection. + Namespace *string `json:"namespace,omitempty"` + + // ProjectId accessed in the connection. + ProjectID *string `json:"projectID,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.DebugOptions +type DebugOptions struct { + // When true, enables the logging of the literal hot key to the user's Cloud + // Logging. + EnableHotKeyLogging *bool `json:"enableHotKeyLogging,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.Disk +type Disk struct { + // Size of disk in GB. If zero or unspecified, the service will + // attempt to choose a reasonable default. + SizeGb *int32 `json:"sizeGb,omitempty"` + + // Disk storage type, as defined by Google Compute Engine. This + // must be a disk type appropriate to the project and zone in which + // the workers will run. If unknown or unspecified, the service + // will attempt to choose a reasonable default. + // + // For example, the standard persistent disk type is a resource name + // typically ending in "pd-standard". If SSD persistent disks are + // available, the resource name typically ends with "pd-ssd". The + // actual valid values are defined the Google Compute Engine API, + // not by the Cloud Dataflow API; consult the Google Compute Engine + // documentation for more information about determining the set of + // available disk types for a particular project and zone. + // + // Google Compute Engine Disk types are local to a particular + // project in a particular zone, and so the resource name will + // typically look something like this: + // + // compute.googleapis.com/projects/project-id/zones/zone/diskTypes/pd-standard + DiskType *string `json:"diskType,omitempty"` + + // Directory in a VM where disk is mounted. + MountPoint *string `json:"mountPoint,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.DisplayData +type DisplayData struct { + // The key identifying the display data. + // This is intended to be used as a label for the display data + // when viewed in a dax monitoring system. + Key *string `json:"key,omitempty"` + + // The namespace for the key. This is usually a class name or programming + // language namespace (i.e. python module) which defines the display data. + // This allows a dax monitoring system to specially handle the data + // and perform custom rendering. + Namespace *string `json:"namespace,omitempty"` + + // Contains value if the data is of string type. + StrValue *string `json:"strValue,omitempty"` + + // Contains value if the data is of int64 type. + Int64Value *int64 `json:"int64Value,omitempty"` + + // Contains value if the data is of float type. + FloatValue *float32 `json:"floatValue,omitempty"` + + // Contains value if the data is of java class type. + JavaClassValue *string `json:"javaClassValue,omitempty"` + + // Contains value if the data is of timestamp type. + TimestampValue *string `json:"timestampValue,omitempty"` + + // Contains value if the data is of duration type. + DurationValue *string `json:"durationValue,omitempty"` + + // Contains value if the data is of a boolean type. + BoolValue *bool `json:"boolValue,omitempty"` + + // A possible additional shorter value to display. + // For example a java_class_name_value of com.mypackage.MyDoFn + // will be stored with MyDoFn as the short_str_value and + // com.mypackage.MyDoFn as the java_class_name value. + // short_str_value can be displayed and java_class_name_value + // will be displayed as a tooltip. + ShortStrValue *string `json:"shortStrValue,omitempty"` + + // An optional full URL. + URL *string `json:"url,omitempty"` + + // An optional label to display in a dax UI for the element. + Label *string `json:"label,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.DynamicTemplateLaunchParams +type DynamicTemplateLaunchParams struct { + // Path to dynamic template spec file on Cloud Storage. + // The file must be a Json serialized DynamicTemplateFieSpec object. + GcsPath *string `json:"gcsPath,omitempty"` + + // Cloud Storage path for staging dependencies. + // Must be a valid Cloud Storage URL, beginning with `gs://`. + StagingLocation *string `json:"stagingLocation,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.Environment +type Environment struct { + // The prefix of the resources the system should use for temporary + // storage. The system will append the suffix "/temp-{JOBNAME} to + // this resource prefix, where {JOBNAME} is the value of the + // job_name field. The resulting bucket and object prefix is used + // as the prefix of the resources used to store temporary data + // needed during the job execution. NOTE: This will override the + // value in taskrunner_settings. + // The supported resource type is: + // + // Google Cloud Storage: + // + // storage.googleapis.com/{bucket}/{object} + // bucket.storage.googleapis.com/{object} + TempStoragePrefix *string `json:"tempStoragePrefix,omitempty"` + + // The type of cluster manager API to use. If unknown or + // unspecified, the service will attempt to choose a reasonable + // default. This should be in the form of the API service name, + // e.g. "compute.googleapis.com". + ClusterManagerApiService *string `json:"clusterManagerApiService,omitempty"` + + // The list of experiments to enable. This field should be used for SDK + // related experiments and not for service related experiments. The proper + // field for service related experiments is service_options. + Experiments []string `json:"experiments,omitempty"` + + // The list of service options to enable. This field should be used for + // service related experiments only. These experiments, when graduating to GA, + // should be replaced by dedicated fields or become default (i.e. always on). + ServiceOptions []string `json:"serviceOptions,omitempty"` + + // If set, contains the Cloud KMS key identifier used to encrypt data + // at rest, AKA a Customer Managed Encryption Key (CMEK). + // + // Format: + // projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY + ServiceKmsKeyName *string `json:"serviceKmsKeyName,omitempty"` + + // The worker pools. At least one "harness" worker pool must be + // specified in order for the job to have workers. + WorkerPools []WorkerPool `json:"workerPools,omitempty"` + + // A description of the process that generated the request. + UserAgent *google_protobuf_Struct `json:"userAgent,omitempty"` + + // A structure describing which components and their versions of the service + // are required in order to run the job. + Version *google_protobuf_Struct `json:"version,omitempty"` + + // The dataset for the current project where various workflow + // related tables are stored. + // + // The supported resource type is: + // + // Google BigQuery: + // bigquery.googleapis.com/{dataset} + Dataset *string `json:"dataset,omitempty"` + + // The Cloud Dataflow SDK pipeline options specified by the user. These + // options are passed through the service and are used to recreate the + // SDK pipeline options on the worker in a language agnostic and platform + // independent way. + SdkPipelineOptions *google_protobuf_Struct `json:"sdkPipelineOptions,omitempty"` + + // Experimental settings. + InternalExperiments *google_protobuf_Any `json:"internalExperiments,omitempty"` + + // Identity to run virtual machines as. Defaults to the default account. + ServiceAccountEmail *string `json:"serviceAccountEmail,omitempty"` + + // Which Flexible Resource Scheduling mode to run in. + FlexResourceSchedulingGoal *string `json:"flexResourceSchedulingGoal,omitempty"` + + // The Compute Engine region + // (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in + // which worker processing should occur, e.g. "us-west1". Mutually exclusive + // with worker_zone. If neither worker_region nor worker_zone is specified, + // default to the control plane's region. + WorkerRegion *string `json:"workerRegion,omitempty"` + + // The Compute Engine zone + // (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in + // which worker processing should occur, e.g. "us-west1-a". Mutually exclusive + // with worker_region. If neither worker_region nor worker_zone is specified, + // a zone in the control plane's region is chosen based on available capacity. + WorkerZone *string `json:"workerZone,omitempty"` + + // Output only. The shuffle mode used for the job. + ShuffleMode *string `json:"shuffleMode,omitempty"` + + // Any debugging options to be supplied to the job. + DebugOptions *DebugOptions `json:"debugOptions,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ExecutionStageState +type ExecutionStageState struct { + // The name of the execution stage. + ExecutionStageName *string `json:"executionStageName,omitempty"` + + // Executions stage states allow the same set of values as JobState. + ExecutionStageState *string `json:"executionStageState,omitempty"` + + // The time at which the stage transitioned to this state. + CurrentStateTime *string `json:"currentStateTime,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ExecutionStageSummary +type ExecutionStageSummary struct { + // Dataflow service generated name for this stage. + Name *string `json:"name,omitempty"` + + // Dataflow service generated id for this stage. + ID *string `json:"id,omitempty"` + + // Type of transform this stage is executing. + Kind *string `json:"kind,omitempty"` + + // Input sources for this stage. + InputSource []ExecutionStageSummary_StageSource `json:"inputSource,omitempty"` + + // Output sources for this stage. + OutputSource []ExecutionStageSummary_StageSource `json:"outputSource,omitempty"` + + // Other stages that must complete before this stage can run. + PrerequisiteStage []string `json:"prerequisiteStage,omitempty"` + + // Transforms that comprise this execution stage. + ComponentTransform []ExecutionStageSummary_ComponentTransform `json:"componentTransform,omitempty"` + + // Collections produced and consumed by component transforms of this stage. + ComponentSource []ExecutionStageSummary_ComponentSource `json:"componentSource,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ExecutionStageSummary.ComponentSource +type ExecutionStageSummary_ComponentSource struct { + // Human-readable name for this transform; may be user or system generated. + UserName *string `json:"userName,omitempty"` + + // Dataflow service generated name for this source. + Name *string `json:"name,omitempty"` + + // User name for the original user transform or collection with which this + // source is most closely associated. + OriginalTransformOrCollection *string `json:"originalTransformOrCollection,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ExecutionStageSummary.ComponentTransform +type ExecutionStageSummary_ComponentTransform struct { + // Human-readable name for this transform; may be user or system generated. + UserName *string `json:"userName,omitempty"` + + // Dataflow service generated name for this source. + Name *string `json:"name,omitempty"` + + // User name for the original user transform with which this transform is + // most closely associated. + OriginalTransform *string `json:"originalTransform,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ExecutionStageSummary.StageSource +type ExecutionStageSummary_StageSource struct { + // Human-readable name for this source; may be user or system generated. + UserName *string `json:"userName,omitempty"` + + // Dataflow service generated name for this source. + Name *string `json:"name,omitempty"` + + // User name for the original user transform or collection with which this + // source is most closely associated. + OriginalTransformOrCollection *string `json:"originalTransformOrCollection,omitempty"` + + // Size of the source, if measurable. + SizeBytes *int64 `json:"sizeBytes,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.FailedLocation +type FailedLocation struct { + // The name of the [regional endpoint] + // (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that + // failed to respond. + Name *string `json:"name,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.FileIODetails +type FileIODetails struct { + // File Pattern used to access files by the connector. + FilePattern *string `json:"filePattern,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.InvalidTemplateParameters +type InvalidTemplateParameters struct { + // Describes all parameter violations in a template request. + ParameterViolations []InvalidTemplateParameters_ParameterViolation `json:"parameterViolations,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.InvalidTemplateParameters.ParameterViolation +type InvalidTemplateParameters_ParameterViolation struct { + // The parameter that failed to validate. + Parameter *string `json:"parameter,omitempty"` + + // A description of why the parameter failed to validate. + Description *string `json:"description,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.Job +type Job struct { + // The unique ID of this job. + // + // This field is set by the Cloud Dataflow service when the Job is + // created, and is immutable for the life of the job. + ID *string `json:"id,omitempty"` + + // The ID of the Cloud Platform project that the job belongs to. + ProjectID *string `json:"projectID,omitempty"` + + // The user-specified Cloud Dataflow job name. + // + // Only one Job with a given name may exist in a project at any + // given time. If a caller attempts to create a Job with the same + // name as an already-existing Job, the attempt returns the + // existing Job. + // + // The name must match the regular expression + // `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` + Name *string `json:"name,omitempty"` + + // The type of Cloud Dataflow job. + Type *string `json:"type,omitempty"` + + // The environment for the job. + Environment *Environment `json:"environment,omitempty"` + + // Exactly one of step or steps_location should be specified. + // + // The top-level steps that constitute the entire job. Only retrieved with + // JOB_VIEW_ALL. + Steps []Step `json:"steps,omitempty"` + + // The Cloud Storage location where the steps are stored. + StepsLocation *string `json:"stepsLocation,omitempty"` + + // The current state of the job. + // + // Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise + // specified. + // + // A job in the `JOB_STATE_RUNNING` state may asynchronously enter a + // terminal state. After a job has reached a terminal state, no + // further state updates may be made. + // + // This field may be mutated by the Cloud Dataflow service; + // callers cannot mutate it. + CurrentState *string `json:"currentState,omitempty"` + + // The timestamp associated with the current state. + CurrentStateTime *string `json:"currentStateTime,omitempty"` + + // The job's requested state. + // + // `UpdateJob` may be used to switch between the `JOB_STATE_STOPPED` and + // `JOB_STATE_RUNNING` states, by setting requested_state. `UpdateJob` may + // also be used to directly set a job's requested state to + // `JOB_STATE_CANCELLED` or `JOB_STATE_DONE`, irrevocably terminating the + // job if it has not already reached a terminal state. + RequestedState *string `json:"requestedState,omitempty"` + + // Deprecated. + ExecutionInfo *JobExecutionInfo `json:"executionInfo,omitempty"` + + // The timestamp when the job was initially created. Immutable and set by the + // Cloud Dataflow service. + CreateTime *string `json:"createTime,omitempty"` + + // If this job is an update of an existing job, this field is the job ID + // of the job it replaced. + // + // When sending a `CreateJobRequest`, you can update a job by specifying it + // here. The job named here is stopped, and its intermediate state is + // transferred to this job. + ReplaceJobID *string `json:"replaceJobID,omitempty"` + + // The map of transform name prefixes of the job to be replaced to the + // corresponding name prefixes of the new job. + TransformNameMapping map[string]string `json:"transformNameMapping,omitempty"` + + // The client's unique identifier of the job, re-used across retried attempts. + // If this field is set, the service will ensure its uniqueness. + // The request to create a job will fail if the service has knowledge of a + // previously submitted job with the same client's ID and job name. + // The caller may use this field to ensure idempotence of job + // creation across retried attempts to create a job. + // By default, the field is empty and, in that case, the service ignores it. + ClientRequestID *string `json:"clientRequestID,omitempty"` + + // If another job is an update of this job (and thus, this job is in + // `JOB_STATE_UPDATED`), this field contains the ID of that job. + ReplacedByJobID *string `json:"replacedByJobID,omitempty"` + + // A set of files the system should be aware of that are used + // for temporary storage. These temporary files will be + // removed on job completion. + // No duplicates are allowed. + // No file patterns are supported. + // + // The supported files are: + // + // Google Cloud Storage: + // + // storage.googleapis.com/{bucket}/{object} + // bucket.storage.googleapis.com/{object} + TempFiles []string `json:"tempFiles,omitempty"` + + // User-defined labels for this job. + // + // The labels map can contain no more than 64 entries. Entries of the labels + // map are UTF8 strings that comply with the following restrictions: + // + // * Keys must conform to regexp: [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62} + // * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} + // * Both keys and values are additionally constrained to be <= 128 bytes in + // size. + Labels map[string]string `json:"labels,omitempty"` + + // The [regional endpoint] + // (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that + // contains this job. + Location *string `json:"location,omitempty"` + + // Preliminary field: The format of this data may change at any time. + // A description of the user pipeline and stages through which it is executed. + // Created by Cloud Dataflow service. Only retrieved with + // JOB_VIEW_DESCRIPTION or JOB_VIEW_ALL. + PipelineDescription *PipelineDescription `json:"pipelineDescription,omitempty"` + + // This field may be mutated by the Cloud Dataflow service; + // callers cannot mutate it. + StageStates []ExecutionStageState `json:"stageStates,omitempty"` + + // This field is populated by the Dataflow service to support filtering jobs + // by the metadata values provided here. Populated for ListJobs and all GetJob + // views SUMMARY and higher. + JobMetadata *JobMetadata `json:"jobMetadata,omitempty"` + + // The timestamp when the job was started (transitioned to JOB_STATE_PENDING). + // Flexible resource scheduling jobs are started with some delay after job + // creation, so start_time is unset before start and is updated when the + // job is started by the Cloud Dataflow service. For other jobs, start_time + // always equals to create_time and is immutable and set by the Cloud Dataflow + // service. + StartTime *string `json:"startTime,omitempty"` + + // If this is specified, the job's initial state is populated from the given + // snapshot. + CreatedFromSnapshotID *string `json:"createdFromSnapshotID,omitempty"` + + // Reserved for future use. This field is set only in responses from the + // server; it is ignored if it is set in any requests. + SatisfiesPzs *bool `json:"satisfiesPzs,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.JobExecutionDetails +type JobExecutionDetails struct { + // The stages of the job execution. + Stages []StageSummary `json:"stages,omitempty"` + + // If present, this response does not contain all requested tasks. To obtain + // the next page of results, repeat the request with page_token set to this + // value. + NextPageToken *string `json:"nextPageToken,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.JobExecutionInfo +type JobExecutionInfo struct { + + // TODO: map type string message for stages + +} + +// +kcc:proto=google.dataflow.v1beta3.JobExecutionStageInfo +type JobExecutionStageInfo struct { + // The steps associated with the execution stage. + // Note that stages may have several steps, and that a given step + // might be run by more than one stage. + StepName []string `json:"stepName,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.JobMessage +type JobMessage struct { + // Deprecated. + ID *string `json:"id,omitempty"` + + // The timestamp of the message. + Time *string `json:"time,omitempty"` + + // The text of the message. + MessageText *string `json:"messageText,omitempty"` + + // Importance level of the message. + MessageImportance *string `json:"messageImportance,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.JobMetrics +type JobMetrics struct { + // Timestamp as of which metric values are current. + MetricTime *string `json:"metricTime,omitempty"` + + // All metrics for this job. + Metrics []MetricUpdate `json:"metrics,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.KeyRangeDataDiskAssignment +type KeyRangeDataDiskAssignment struct { + // The start (inclusive) of the key range. + Start *string `json:"start,omitempty"` + + // The end (exclusive) of the key range. + End *string `json:"end,omitempty"` + + // The name of the data disk where data for this range is stored. + // This name is local to the Google Cloud Platform project and uniquely + // identifies the disk within that project, for example + // "myproject-1014-104817-4c2-harness-0-disk-1". + DataDisk *string `json:"dataDisk,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.KeyRangeLocation +type KeyRangeLocation struct { + // The start (inclusive) of the key range. + Start *string `json:"start,omitempty"` + + // The end (exclusive) of the key range. + End *string `json:"end,omitempty"` + + // The physical location of this range assignment to be used for + // streaming computation cross-worker message delivery. + DeliveryEndpoint *string `json:"deliveryEndpoint,omitempty"` + + // The name of the data disk where data for this range is stored. + // This name is local to the Google Cloud Platform project and uniquely + // identifies the disk within that project, for example + // "myproject-1014-104817-4c2-harness-0-disk-1". + DataDisk *string `json:"dataDisk,omitempty"` + + // DEPRECATED. The location of the persistent state for this range, as a + // persistent directory in the worker local filesystem. + DeprecatedPersistentDirectory *string `json:"deprecatedPersistentDirectory,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.LaunchFlexTemplateParameter +type LaunchFlexTemplateParameter struct { + // Required. The job name to use for the created job. For update job request, + // job name should be same as the existing running job. + JobName *string `json:"jobName,omitempty"` + + // Spec about the container image to launch. + ContainerSpec *ContainerSpec `json:"containerSpec,omitempty"` + + // Cloud Storage path to a file with json serialized ContainerSpec as + // content. + ContainerSpecGcsPath *string `json:"containerSpecGcsPath,omitempty"` + + // The parameters for FlexTemplate. + // Ex. {"num_workers":"5"} + Parameters map[string]string `json:"parameters,omitempty"` + + // Launch options for this flex template job. This is a common set of options + // across languages and templates. This should not be used to pass job + // parameters. + LaunchOptions map[string]string `json:"launchOptions,omitempty"` + + // The runtime environment for the FlexTemplate job + Environment *FlexTemplateRuntimeEnvironment `json:"environment,omitempty"` + + // Set this to true if you are sending a request to update a running + // streaming job. When set, the job name should be the same as the + // running job. + Update *bool `json:"update,omitempty"` + + // Use this to pass transform_name_mappings for streaming update jobs. + // Ex:{"oldTransformName":"newTransformName",...}' + TransformNameMappings map[string]string `json:"transformNameMappings,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.LaunchTemplateParameters +type LaunchTemplateParameters struct { + // Required. The job name to use for the created job. + JobName *string `json:"jobName,omitempty"` + + // The runtime parameters to pass to the job. + Parameters map[string]string `json:"parameters,omitempty"` + + // The runtime environment for the job. + Environment *RuntimeEnvironment `json:"environment,omitempty"` + + // If set, replace the existing pipeline with the name specified by jobName + // with this pipeline, preserving state. + Update *bool `json:"update,omitempty"` + + // Only applicable when updating a pipeline. Map of transform name prefixes of + // the job to be replaced to the corresponding name prefixes of the new job. + TransformNameMapping map[string]string `json:"transformNameMapping,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.MetricStructuredName +type MetricStructuredName struct { + // Origin (namespace) of metric name. May be blank for user-define metrics; + // will be "dataflow" for metrics defined by the Dataflow service or SDK. + Origin *string `json:"origin,omitempty"` + + // Worker-defined metric name. + Name *string `json:"name,omitempty"` + + // Zero or more labeled fields which identify the part of the job this + // metric is associated with, such as the name of a step or collection. + // + // For example, built-in counters associated with steps will have + // context['step'] = . Counters associated with PCollections + // in the SDK will have context['pcollection'] = . + Context map[string]string `json:"context,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.MetricUpdate +type MetricUpdate struct { + // Name of the metric. + Name *MetricStructuredName `json:"name,omitempty"` + + // Metric aggregation kind. The possible metric aggregation kinds are + // "Sum", "Max", "Min", "Mean", "Set", "And", "Or", and "Distribution". + // The specified aggregation kind is case-insensitive. + // + // If omitted, this is not an aggregated value but instead + // a single metric sample value. + Kind *string `json:"kind,omitempty"` + + // True if this metric is reported as the total cumulative aggregate + // value accumulated since the worker started working on this WorkItem. + // By default this is false, indicating that this metric is reported + // as a delta that is not associated with any WorkItem. + Cumulative *bool `json:"cumulative,omitempty"` + + // Worker-computed aggregate value for aggregation kinds "Sum", "Max", "Min", + // "And", and "Or". The possible value types are Long, Double, and Boolean. + Scalar *google_protobuf_Value `json:"scalar,omitempty"` + + // Worker-computed aggregate value for the "Mean" aggregation kind. + // This holds the sum of the aggregated values and is used in combination + // with mean_count below to obtain the actual mean aggregate value. + // The only possible value types are Long and Double. + MeanSum *google_protobuf_Value `json:"meanSum,omitempty"` + + // Worker-computed aggregate value for the "Mean" aggregation kind. + // This holds the count of the aggregated values and is used in combination + // with mean_sum above to obtain the actual mean aggregate value. + // The only possible value type is Long. + MeanCount *google_protobuf_Value `json:"meanCount,omitempty"` + + // Worker-computed aggregate value for the "Set" aggregation kind. The only + // possible value type is a list of Values whose type can be Long, Double, + // or String, according to the metric's type. All Values in the list must + // be of the same type. + Set *google_protobuf_Value `json:"set,omitempty"` + + // A struct value describing properties of a distribution of numeric values. + Distribution *google_protobuf_Value `json:"distribution,omitempty"` + + // A struct value describing properties of a Gauge. + // Metrics of gauge type show the value of a metric across time, and is + // aggregated based on the newest value. + Gauge *google_protobuf_Value `json:"gauge,omitempty"` + + // Worker-computed aggregate value for internal use by the Dataflow + // service. + Internal *google_protobuf_Value `json:"internal,omitempty"` + + // Timestamp associated with the metric value. Optional when workers are + // reporting work progress; it will be filled in responses from the + // metrics API. + UpdateTime *string `json:"updateTime,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.MountedDataDisk +type MountedDataDisk struct { + // The name of the data disk. + // This name is local to the Google Cloud Platform project and uniquely + // identifies the disk within that project, for example + // "myproject-1014-104817-4c2-harness-0-disk-1". + DataDisk *string `json:"dataDisk,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.Package +type Package struct { + // The name of the package. + Name *string `json:"name,omitempty"` + + // The resource to read the package from. The supported resource type is: + // + // Google Cloud Storage: + // + // storage.googleapis.com/{bucket} + // bucket.storage.googleapis.com/ + Location *string `json:"location,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.PipelineDescription +type PipelineDescription struct { + // Description of each transform in the pipeline and collections between them. + OriginalPipelineTransform []TransformSummary `json:"originalPipelineTransform,omitempty"` + + // Description of each stage of execution of the pipeline. + ExecutionPipelineStage []ExecutionStageSummary `json:"executionPipelineStage,omitempty"` + + // Pipeline level display data. + DisplayData []DisplayData `json:"displayData,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ProgressTimeseries +type ProgressTimeseries struct { + // The current progress of the component, in the range [0,1]. + CurrentProgress *float64 `json:"currentProgress,omitempty"` + + // History of progress for the component. + // + // Points are sorted by time. + DataPoints []ProgressTimeseries_Point `json:"dataPoints,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.ProgressTimeseries.Point +type ProgressTimeseries_Point struct { + // The timestamp of the point. + Time *string `json:"time,omitempty"` + + // The value of the point. + Value *float64 `json:"value,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.PubSubIODetails +type PubSubIODetails struct { + // Topic accessed in the connection. + Topic *string `json:"topic,omitempty"` + + // Subscription used in the connection. + Subscription *string `json:"subscription,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.PubsubLocation +type PubsubLocation struct { + // A pubsub topic, in the form of + // "pubsub.googleapis.com/topics//" + Topic *string `json:"topic,omitempty"` + + // A pubsub subscription, in the form of + // "pubsub.googleapis.com/subscriptions//" + Subscription *string `json:"subscription,omitempty"` + + // If set, contains a pubsub label from which to extract record timestamps. + // If left empty, record timestamps will be generated upon arrival. + TimestampLabel *string `json:"timestampLabel,omitempty"` + + // If set, contains a pubsub label from which to extract record ids. + // If left empty, record deduplication will be strictly best effort. + IDLabel *string `json:"idLabel,omitempty"` + + // Indicates whether the pipeline allows late-arriving data. + DropLateData *bool `json:"dropLateData,omitempty"` + + // If set, specifies the pubsub subscription that will be used for tracking + // custom time timestamps for watermark estimation. + TrackingSubscription *string `json:"trackingSubscription,omitempty"` + + // If true, then the client has requested to get pubsub attributes. + WithAttributes *bool `json:"withAttributes,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.RuntimeEnvironment +type RuntimeEnvironment struct { + // The initial number of Google Compute Engine instnaces for the job. + NumWorkers *int32 `json:"numWorkers,omitempty"` + + // The maximum number of Google Compute Engine instances to be made + // available to your pipeline during execution, from 1 to 1000. + MaxWorkers *int32 `json:"maxWorkers,omitempty"` + + // The Compute Engine [availability + // zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) + // for launching worker instances to run your pipeline. + // In the future, worker_zone will take precedence. + Zone *string `json:"zone,omitempty"` + + // The email address of the service account to run the job as. + ServiceAccountEmail *string `json:"serviceAccountEmail,omitempty"` + + // The Cloud Storage path to use for temporary files. + // Must be a valid Cloud Storage URL, beginning with `gs://`. + TempLocation *string `json:"tempLocation,omitempty"` + + // Whether to bypass the safety checks for the job's temporary directory. + // Use with caution. + BypassTempDirValidation *bool `json:"bypassTempDirValidation,omitempty"` + + // The machine type to use for the job. Defaults to the value from the + // template if not specified. + MachineType *string `json:"machineType,omitempty"` + + // Additional experiment flags for the job, specified with the + // `--experiments` option. + AdditionalExperiments []string `json:"additionalExperiments,omitempty"` + + // Network to which VMs will be assigned. If empty or unspecified, + // the service will use the network "default". + Network *string `json:"network,omitempty"` + + // Subnetwork to which VMs will be assigned, if desired. You can specify a + // subnetwork using either a complete URL or an abbreviated path. Expected to + // be of the form + // "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" + // or "regions/REGION/subnetworks/SUBNETWORK". If the subnetwork is located in + // a Shared VPC network, you must use the complete URL. + Subnetwork *string `json:"subnetwork,omitempty"` + + // Additional user labels to be specified for the job. + // Keys and values should follow the restrictions specified in the [labeling + // restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) + // page. + // An object containing a list of "key": value pairs. + // Example: { "name": "wrench", "mass": "1kg", "count": "3" }. + AdditionalUserLabels map[string]string `json:"additionalUserLabels,omitempty"` + + // Name for the Cloud KMS key for the job. + // Key format is: + // projects//locations//keyRings//cryptoKeys/ + KmsKeyName *string `json:"kmsKeyName,omitempty"` + + // Configuration for VM IPs. + IpConfiguration *string `json:"ipConfiguration,omitempty"` + + // The Compute Engine region + // (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in + // which worker processing should occur, e.g. "us-west1". Mutually exclusive + // with worker_zone. If neither worker_region nor worker_zone is specified, + // default to the control plane's region. + WorkerRegion *string `json:"workerRegion,omitempty"` + + // The Compute Engine zone + // (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in + // which worker processing should occur, e.g. "us-west1-a". Mutually exclusive + // with worker_region. If neither worker_region nor worker_zone is specified, + // a zone in the control plane's region is chosen based on available capacity. + // If both `worker_zone` and `zone` are set, `worker_zone` takes precedence. + WorkerZone *string `json:"workerZone,omitempty"` + + // Whether to enable Streaming Engine for the job. + EnableStreamingEngine *bool `json:"enableStreamingEngine,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.SDKInfo +type SDKInfo struct { + // Required. The SDK Language. + Language *string `json:"language,omitempty"` + + // Optional. The SDK version. + Version *string `json:"version,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.SdkHarnessContainerImage +type SdkHarnessContainerImage struct { + // A docker container image that resides in Google Container Registry. + ContainerImage *string `json:"containerImage,omitempty"` + + // If true, recommends the Dataflow service to use only one core per SDK + // container instance with this image. If false (or unset) recommends using + // more than one core per SDK container instance with this image for + // efficiency. Note that Dataflow service may choose to override this property + // if needed. + UseSingleCorePerContainer *bool `json:"useSingleCorePerContainer,omitempty"` + + // Environment ID for the Beam runner API proto Environment that corresponds + // to the current SDK Harness. + EnvironmentID *string `json:"environmentID,omitempty"` + + // The set of capabilities enumerated in the above Environment proto. See also + // https://github.com/apache/beam/blob/master/model/pipeline/src/main/proto/beam_runner_api.proto + Capabilities []string `json:"capabilities,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.SdkVersion +type SdkVersion struct { + // The version of the SDK used to run the job. + Version *string `json:"version,omitempty"` + + // A readable string describing the version of the SDK. + VersionDisplayName *string `json:"versionDisplayName,omitempty"` + + // The support status for this SDK version. + SdkSupportStatus *string `json:"sdkSupportStatus,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.Snapshot +type Snapshot struct { + // The unique ID of this snapshot. + ID *string `json:"id,omitempty"` + + // The project this snapshot belongs to. + ProjectID *string `json:"projectID,omitempty"` + + // The job this snapshot was created from. + SourceJobID *string `json:"sourceJobID,omitempty"` + + // The time this snapshot was created. + CreationTime *string `json:"creationTime,omitempty"` + + // The time after which this snapshot will be automatically deleted. + Ttl *string `json:"ttl,omitempty"` + + // State of the snapshot. + State *string `json:"state,omitempty"` + + // Pub/Sub snapshot metadata. + PubsubMetadata []PubsubSnapshotMetadata `json:"pubsubMetadata,omitempty"` + + // User specified description of the snapshot. Maybe empty. + Description *string `json:"description,omitempty"` + + // The disk byte size of the snapshot. Only available for snapshots in READY + // state. + DiskSizeBytes *int64 `json:"diskSizeBytes,omitempty"` + + // Cloud region where this snapshot lives in, e.g., "us-central1". + Region *string `json:"region,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.SpannerIODetails +type SpannerIODetails struct { + // ProjectId accessed in the connection. + ProjectID *string `json:"projectID,omitempty"` + + // InstanceId accessed in the connection. + InstanceID *string `json:"instanceID,omitempty"` + + // DatabaseId accessed in the connection. + DatabaseID *string `json:"databaseID,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StageExecutionDetails +type StageExecutionDetails struct { + // Workers that have done work on the stage. + Workers []WorkerDetails `json:"workers,omitempty"` + + // If present, this response does not contain all requested tasks. To obtain + // the next page of results, repeat the request with page_token set to this + // value. + NextPageToken *string `json:"nextPageToken,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StageSummary +type StageSummary struct { + // ID of this stage + StageID *string `json:"stageID,omitempty"` + + // State of this stage. + State *string `json:"state,omitempty"` + + // Start time of this stage. + StartTime *string `json:"startTime,omitempty"` + + // End time of this stage. + // + // If the work item is completed, this is the actual end time of the stage. + // Otherwise, it is the predicted end time. + EndTime *string `json:"endTime,omitempty"` + + // Progress for this stage. + // Only applicable to Batch jobs. + Progress *ProgressTimeseries `json:"progress,omitempty"` + + // Metrics for this stage. + Metrics []MetricUpdate `json:"metrics,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StateFamilyConfig +type StateFamilyConfig struct { + // The state family value. + StateFamily *string `json:"stateFamily,omitempty"` + + // If true, this family corresponds to a read operation. + IsRead *bool `json:"isRead,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.Step +type Step struct { + // The kind of step in the Cloud Dataflow job. + Kind *string `json:"kind,omitempty"` + + // The name that identifies the step. This must be unique for each + // step with respect to all other steps in the Cloud Dataflow job. + Name *string `json:"name,omitempty"` + + // Named properties associated with the step. Each kind of + // predefined step has its own required set of properties. + // Must be provided on Create. Only retrieved with JOB_VIEW_ALL. + Properties *google_protobuf_Struct `json:"properties,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StreamLocation +type StreamLocation struct { + // The stream is part of another computation within the current + // streaming Dataflow job. + StreamingStageLocation *StreamingStageLocation `json:"streamingStageLocation,omitempty"` + + // The stream is a pubsub stream. + PubsubLocation *PubsubLocation `json:"pubsubLocation,omitempty"` + + // The stream is a streaming side input. + SideInputLocation *StreamingSideInputLocation `json:"sideInputLocation,omitempty"` + + // The stream is a custom source. + CustomSourceLocation *CustomSourceLocation `json:"customSourceLocation,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StreamingApplianceSnapshotConfig +type StreamingApplianceSnapshotConfig struct { + // If set, indicates the snapshot id for the snapshot being performed. + SnapshotID *string `json:"snapshotID,omitempty"` + + // Indicates which endpoint is used to import appliance state. + ImportStateEndpoint *string `json:"importStateEndpoint,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StreamingComputationRanges +type StreamingComputationRanges struct { + // The ID of the computation. + ComputationID *string `json:"computationID,omitempty"` + + // Data disk assignments for ranges from this computation. + RangeAssignments []KeyRangeDataDiskAssignment `json:"rangeAssignments,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StreamingSideInputLocation +type StreamingSideInputLocation struct { + // Identifies the particular side input within the streaming Dataflow job. + Tag *string `json:"tag,omitempty"` + + // Identifies the state family where this side input is stored. + StateFamily *string `json:"stateFamily,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StreamingStageLocation +type StreamingStageLocation struct { + // Identifies the particular stream within the streaming Dataflow + // job. + StreamID *string `json:"streamID,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StructuredMessage +type StructuredMessage struct { + // Human-readable version of message. + MessageText *string `json:"messageText,omitempty"` + + // Identifier for this message type. Used by external systems to + // internationalize or personalize message. + MessageKey *string `json:"messageKey,omitempty"` + + // The structured data associated with this message. + Parameters []StructuredMessage_Parameter `json:"parameters,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.StructuredMessage.Parameter +type StructuredMessage_Parameter struct { + // Key or name for this parameter. + Key *string `json:"key,omitempty"` + + // Value for this parameter. + Value *google_protobuf_Value `json:"value,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.TaskRunnerSettings +type TaskRunnerSettings struct { + // The UNIX user ID on the worker VM to use for tasks launched by + // taskrunner; e.g. "root". + TaskUser *string `json:"taskUser,omitempty"` + + // The UNIX group ID on the worker VM to use for tasks launched by + // taskrunner; e.g. "wheel". + TaskGroup *string `json:"taskGroup,omitempty"` + + // The OAuth2 scopes to be requested by the taskrunner in order to + // access the Cloud Dataflow API. + OauthScopes []string `json:"oauthScopes,omitempty"` + + // The base URL for the taskrunner to use when accessing Google Cloud APIs. + // + // When workers access Google Cloud APIs, they logically do so via + // relative URLs. If this field is specified, it supplies the base + // URL to use for resolving these relative URLs. The normative + // algorithm used is defined by RFC 1808, "Relative Uniform Resource + // Locators". + // + // If not specified, the default value is "http://www.googleapis.com/" + BaseURL *string `json:"baseURL,omitempty"` + + // The API version of endpoint, e.g. "v1b3" + DataflowApiVersion *string `json:"dataflowApiVersion,omitempty"` + + // The settings to pass to the parallel worker harness. + ParallelWorkerSettings *WorkerSettings `json:"parallelWorkerSettings,omitempty"` + + // The location on the worker for task-specific subdirectories. + BaseTaskDir *string `json:"baseTaskDir,omitempty"` + + // Whether to continue taskrunner if an exception is hit. + ContinueOnException *bool `json:"continueOnException,omitempty"` + + // Whether to send taskrunner log info to Google Compute Engine VM serial + // console. + LogToSerialconsole *bool `json:"logToSerialconsole,omitempty"` + + // Whether to also send taskrunner log info to stderr. + Alsologtostderr *bool `json:"alsologtostderr,omitempty"` + + // Indicates where to put logs. If this is not specified, the logs + // will not be uploaded. + // + // The supported resource type is: + // + // Google Cloud Storage: + // storage.googleapis.com/{bucket}/{object} + // bucket.storage.googleapis.com/{object} + LogUploadLocation *string `json:"logUploadLocation,omitempty"` + + // The directory on the VM to store logs. + LogDir *string `json:"logDir,omitempty"` + + // The prefix of the resources the taskrunner should use for + // temporary storage. + // + // The supported resource type is: + // + // Google Cloud Storage: + // storage.googleapis.com/{bucket}/{object} + // bucket.storage.googleapis.com/{object} + TempStoragePrefix *string `json:"tempStoragePrefix,omitempty"` + + // The command to launch the worker harness. + HarnessCommand *string `json:"harnessCommand,omitempty"` + + // The file to store the workflow in. + WorkflowFileName *string `json:"workflowFileName,omitempty"` + + // The file to store preprocessing commands in. + CommandlinesFileName *string `json:"commandlinesFileName,omitempty"` + + // The ID string of the VM. + VmID *string `json:"vmID,omitempty"` + + // The suggested backend language. + LanguageHint *string `json:"languageHint,omitempty"` + + // The streaming worker main class name. + StreamingWorkerMainClass *string `json:"streamingWorkerMainClass,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.TopologyConfig +type TopologyConfig struct { + // The computations associated with a streaming Dataflow job. + Computations []ComputationTopology `json:"computations,omitempty"` + + // The disks assigned to a streaming Dataflow job. + DataDiskAssignments []DataDiskAssignment `json:"dataDiskAssignments,omitempty"` + + // Maps user stage names to stable computation names. + UserStageToComputationNameMap map[string]string `json:"userStageToComputationNameMap,omitempty"` + + // The size (in bits) of keys that will be assigned to source messages. + ForwardingKeyBits *int32 `json:"forwardingKeyBits,omitempty"` + + // Version number for persistent state. + PersistentStateVersion *int32 `json:"persistentStateVersion,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.TransformSummary +type TransformSummary struct { + // Type of transform. + Kind *string `json:"kind,omitempty"` + + // SDK generated id of this transform instance. + ID *string `json:"id,omitempty"` + + // User provided name for this transform instance. + Name *string `json:"name,omitempty"` + + // Transform-specific display data. + DisplayData []DisplayData `json:"displayData,omitempty"` + + // User names for all collection outputs to this transform. + OutputCollectionName []string `json:"outputCollectionName,omitempty"` + + // User names for all collection inputs to this transform. + InputCollectionName []string `json:"inputCollectionName,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.WorkItemDetails +type WorkItemDetails struct { + // Name of this work item. + TaskID *string `json:"taskID,omitempty"` + + // Attempt ID of this work item + AttemptID *string `json:"attemptID,omitempty"` + + // Start time of this work item attempt. + StartTime *string `json:"startTime,omitempty"` + + // End time of this work item attempt. + // + // If the work item is completed, this is the actual end time of the work + // item. Otherwise, it is the predicted end time. + EndTime *string `json:"endTime,omitempty"` + + // State of this work item. + State *string `json:"state,omitempty"` + + // Progress of this work item. + Progress *ProgressTimeseries `json:"progress,omitempty"` + + // Metrics for this work item. + Metrics []MetricUpdate `json:"metrics,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.WorkerDetails +type WorkerDetails struct { + // Name of this worker + WorkerName *string `json:"workerName,omitempty"` + + // Work items processed by this worker, sorted by time. + WorkItems []WorkItemDetails `json:"workItems,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.WorkerPool +type WorkerPool struct { + // The kind of the worker pool; currently only `harness` and `shuffle` + // are supported. + Kind *string `json:"kind,omitempty"` + + // Number of Google Compute Engine workers in this pool needed to + // execute the job. If zero or unspecified, the service will + // attempt to choose a reasonable default. + NumWorkers *int32 `json:"numWorkers,omitempty"` + + // Packages to be installed on workers. + Packages []Package `json:"packages,omitempty"` + + // The default package set to install. This allows the service to + // select a default set of packages which are useful to worker + // harnesses written in a particular language. + DefaultPackageSet *string `json:"defaultPackageSet,omitempty"` + + // Machine type (e.g. "n1-standard-1"). If empty or unspecified, the + // service will attempt to choose a reasonable default. + MachineType *string `json:"machineType,omitempty"` + + // Sets the policy for determining when to turndown worker pool. + // Allowed values are: `TEARDOWN_ALWAYS`, `TEARDOWN_ON_SUCCESS`, and + // `TEARDOWN_NEVER`. + // `TEARDOWN_ALWAYS` means workers are always torn down regardless of whether + // the job succeeds. `TEARDOWN_ON_SUCCESS` means workers are torn down + // if the job succeeds. `TEARDOWN_NEVER` means the workers are never torn + // down. + // + // If the workers are not torn down by the service, they will + // continue to run and use Google Compute Engine VM resources in the + // user's project until they are explicitly terminated by the user. + // Because of this, Google recommends using the `TEARDOWN_ALWAYS` + // policy except for small, manually supervised test jobs. + // + // If unknown or unspecified, the service will attempt to choose a reasonable + // default. + TeardownPolicy *string `json:"teardownPolicy,omitempty"` + + // Size of root disk for VMs, in GB. If zero or unspecified, the service will + // attempt to choose a reasonable default. + DiskSizeGb *int32 `json:"diskSizeGb,omitempty"` + + // Type of root disk for VMs. If empty or unspecified, the service will + // attempt to choose a reasonable default. + DiskType *string `json:"diskType,omitempty"` + + // Fully qualified source image for disks. + DiskSourceImage *string `json:"diskSourceImage,omitempty"` + + // Zone to run the worker pools in. If empty or unspecified, the service + // will attempt to choose a reasonable default. + Zone *string `json:"zone,omitempty"` + + // Settings passed through to Google Compute Engine workers when + // using the standard Dataflow task runner. Users should ignore + // this field. + TaskrunnerSettings *TaskRunnerSettings `json:"taskrunnerSettings,omitempty"` + + // The action to take on host maintenance, as defined by the Google + // Compute Engine API. + OnHostMaintenance *string `json:"onHostMaintenance,omitempty"` + + // Data disks that are used by a VM in this workflow. + DataDisks []Disk `json:"dataDisks,omitempty"` + + // Metadata to set on the Google Compute Engine VMs. + Metadata map[string]string `json:"metadata,omitempty"` + + // Settings for autoscaling of this WorkerPool. + AutoscalingSettings *AutoscalingSettings `json:"autoscalingSettings,omitempty"` + + // Extra arguments for this worker pool. + PoolArgs *google_protobuf_Any `json:"poolArgs,omitempty"` + + // Network to which VMs will be assigned. If empty or unspecified, + // the service will use the network "default". + Network *string `json:"network,omitempty"` + + // Subnetwork to which VMs will be assigned, if desired. Expected to be of + // the form "regions/REGION/subnetworks/SUBNETWORK". + Subnetwork *string `json:"subnetwork,omitempty"` + + // Required. Docker container image that executes the Cloud Dataflow worker + // harness, residing in Google Container Registry. + // + // Deprecated for the Fn API path. Use sdk_harness_container_images instead. + WorkerHarnessContainerImage *string `json:"workerHarnessContainerImage,omitempty"` + + // The number of threads per worker harness. If empty or unspecified, the + // service will choose a number of threads (according to the number of cores + // on the selected machine type for batch, or 1 by convention for streaming). + NumThreadsPerWorker *int32 `json:"numThreadsPerWorker,omitempty"` + + // Configuration for VM IPs. + IpConfiguration *string `json:"ipConfiguration,omitempty"` + + // Set of SDK harness containers needed to execute this pipeline. This will + // only be set in the Fn API path. For non-cross-language pipelines this + // should have only one entry. Cross-language pipelines will have two or more + // entries. + SdkHarnessContainerImages []SdkHarnessContainerImage `json:"sdkHarnessContainerImages,omitempty"` +} + +// +kcc:proto=google.dataflow.v1beta3.WorkerSettings +type WorkerSettings struct { + // The base URL for accessing Google Cloud APIs. + // + // When workers access Google Cloud APIs, they logically do so via + // relative URLs. If this field is specified, it supplies the base + // URL to use for resolving these relative URLs. The normative + // algorithm used is defined by RFC 1808, "Relative Uniform Resource + // Locators". + // + // If not specified, the default value is "http://www.googleapis.com/" + BaseURL *string `json:"baseURL,omitempty"` + + // Whether to send work progress updates to the service. + ReportingEnabled *bool `json:"reportingEnabled,omitempty"` + + // The Cloud Dataflow service path relative to the root URL, for example, + // "dataflow/v1b3/projects". + ServicePath *string `json:"servicePath,omitempty"` + + // The Shuffle service path relative to the root URL, for example, + // "shuffle/v1beta1". + ShuffleServicePath *string `json:"shuffleServicePath,omitempty"` + + // The ID of the worker running this pipeline. + WorkerID *string `json:"workerID,omitempty"` + + // The prefix of the resources the system should use for temporary + // storage. + // + // The supported resource type is: + // + // Google Cloud Storage: + // + // storage.googleapis.com/{bucket}/{object} + // bucket.storage.googleapis.com/{object} + TempStoragePrefix *string `json:"tempStoragePrefix,omitempty"` +} diff --git a/apis/dataflow/v1beta1/types.go b/apis/dataflow/v1beta1/types.go new file mode 100644 index 00000000000..e66a7f39a23 --- /dev/null +++ b/apis/dataflow/v1beta1/types.go @@ -0,0 +1,19 @@ +package v1beta1 + +type google_protobuf_Struct struct { +} + +type google_protobuf_Any struct { +} + +type google_protobuf_Value struct { +} + +type TemplateMetadata struct { +} + +type PubsubSnapshotMetadata struct { +} + +type FlexTemplateRuntimeEnvironment struct { +} diff --git a/apis/dataflow/v1beta1/zz_generated.deepcopy.go b/apis/dataflow/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 00000000000..33bf73455d2 --- /dev/null +++ b/apis/dataflow/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,2763 @@ +//go:build !ignore_autogenerated + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +import ( + refsv1beta1 "github.com/GoogleCloudPlatform/k8s-config-connector/apis/refs/v1beta1" + "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/apis/k8s/v1alpha1" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalingEvent) DeepCopyInto(out *AutoscalingEvent) { + *out = *in + if in.CurrentNumWorkers != nil { + in, out := &in.CurrentNumWorkers, &out.CurrentNumWorkers + *out = new(int64) + **out = **in + } + if in.TargetNumWorkers != nil { + in, out := &in.TargetNumWorkers, &out.TargetNumWorkers + *out = new(int64) + **out = **in + } + if in.EventType != nil { + in, out := &in.EventType, &out.EventType + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(StructuredMessage) + (*in).DeepCopyInto(*out) + } + if in.Time != nil { + in, out := &in.Time, &out.Time + *out = new(string) + **out = **in + } + if in.WorkerPool != nil { + in, out := &in.WorkerPool, &out.WorkerPool + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalingEvent. +func (in *AutoscalingEvent) DeepCopy() *AutoscalingEvent { + if in == nil { + return nil + } + out := new(AutoscalingEvent) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AutoscalingSettings) DeepCopyInto(out *AutoscalingSettings) { + *out = *in + if in.Algorithm != nil { + in, out := &in.Algorithm, &out.Algorithm + *out = new(string) + **out = **in + } + if in.MaxNumWorkers != nil { + in, out := &in.MaxNumWorkers, &out.MaxNumWorkers + *out = new(int32) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoscalingSettings. +func (in *AutoscalingSettings) DeepCopy() *AutoscalingSettings { + if in == nil { + return nil + } + out := new(AutoscalingSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BigQueryIODetails) DeepCopyInto(out *BigQueryIODetails) { + *out = *in + if in.Table != nil { + in, out := &in.Table, &out.Table + *out = new(string) + **out = **in + } + if in.Dataset != nil { + in, out := &in.Dataset, &out.Dataset + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.Query != nil { + in, out := &in.Query, &out.Query + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BigQueryIODetails. +func (in *BigQueryIODetails) DeepCopy() *BigQueryIODetails { + if in == nil { + return nil + } + out := new(BigQueryIODetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BigTableIODetails) DeepCopyInto(out *BigTableIODetails) { + *out = *in + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.InstanceID != nil { + in, out := &in.InstanceID, &out.InstanceID + *out = new(string) + **out = **in + } + if in.TableID != nil { + in, out := &in.TableID, &out.TableID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BigTableIODetails. +func (in *BigTableIODetails) DeepCopy() *BigTableIODetails { + if in == nil { + return nil + } + out := new(BigTableIODetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputationTopology) DeepCopyInto(out *ComputationTopology) { + *out = *in + if in.SystemStageName != nil { + in, out := &in.SystemStageName, &out.SystemStageName + *out = new(string) + **out = **in + } + if in.ComputationID != nil { + in, out := &in.ComputationID, &out.ComputationID + *out = new(string) + **out = **in + } + if in.KeyRanges != nil { + in, out := &in.KeyRanges, &out.KeyRanges + *out = make([]KeyRangeLocation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Inputs != nil { + in, out := &in.Inputs, &out.Inputs + *out = make([]StreamLocation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Outputs != nil { + in, out := &in.Outputs, &out.Outputs + *out = make([]StreamLocation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.StateFamilies != nil { + in, out := &in.StateFamilies, &out.StateFamilies + *out = make([]StateFamilyConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputationTopology. +func (in *ComputationTopology) DeepCopy() *ComputationTopology { + if in == nil { + return nil + } + out := new(ComputationTopology) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerSpec) DeepCopyInto(out *ContainerSpec) { + *out = *in + if in.Image != nil { + in, out := &in.Image, &out.Image + *out = new(string) + **out = **in + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = new(TemplateMetadata) + **out = **in + } + if in.SdkInfo != nil { + in, out := &in.SdkInfo, &out.SdkInfo + *out = new(SDKInfo) + (*in).DeepCopyInto(*out) + } + if in.DefaultEnvironment != nil { + in, out := &in.DefaultEnvironment, &out.DefaultEnvironment + *out = new(FlexTemplateRuntimeEnvironment) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerSpec. +func (in *ContainerSpec) DeepCopy() *ContainerSpec { + if in == nil { + return nil + } + out := new(ContainerSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomSourceLocation) DeepCopyInto(out *CustomSourceLocation) { + *out = *in + if in.Stateful != nil { + in, out := &in.Stateful, &out.Stateful + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomSourceLocation. +func (in *CustomSourceLocation) DeepCopy() *CustomSourceLocation { + if in == nil { + return nil + } + out := new(CustomSourceLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataDiskAssignment) DeepCopyInto(out *DataDiskAssignment) { + *out = *in + if in.VmInstance != nil { + in, out := &in.VmInstance, &out.VmInstance + *out = new(string) + **out = **in + } + if in.DataDisks != nil { + in, out := &in.DataDisks, &out.DataDisks + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataDiskAssignment. +func (in *DataDiskAssignment) DeepCopy() *DataDiskAssignment { + if in == nil { + return nil + } + out := new(DataDiskAssignment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataFlowFlexTemplateJob) DeepCopyInto(out *DataFlowFlexTemplateJob) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataFlowFlexTemplateJob. +func (in *DataFlowFlexTemplateJob) DeepCopy() *DataFlowFlexTemplateJob { + if in == nil { + return nil + } + out := new(DataFlowFlexTemplateJob) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DataFlowFlexTemplateJob) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataFlowFlexTemplateJobList) DeepCopyInto(out *DataFlowFlexTemplateJobList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DataFlowFlexTemplateJob, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataFlowFlexTemplateJobList. +func (in *DataFlowFlexTemplateJobList) DeepCopy() *DataFlowFlexTemplateJobList { + if in == nil { + return nil + } + out := new(DataFlowFlexTemplateJobList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DataFlowFlexTemplateJobList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataFlowFlexTemplateJobObservedState) DeepCopyInto(out *DataFlowFlexTemplateJobObservedState) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataFlowFlexTemplateJobObservedState. +func (in *DataFlowFlexTemplateJobObservedState) DeepCopy() *DataFlowFlexTemplateJobObservedState { + if in == nil { + return nil + } + out := new(DataFlowFlexTemplateJobObservedState) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataFlowFlexTemplateJobSpec) DeepCopyInto(out *DataFlowFlexTemplateJobSpec) { + *out = *in + if in.ContainerSpecGcsPath != nil { + in, out := &in.ContainerSpecGcsPath, &out.ContainerSpecGcsPath + *out = new(string) + **out = **in + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.TransformNameMappings != nil { + in, out := &in.TransformNameMappings, &out.TransformNameMappings + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.NumWorkers != nil { + in, out := &in.NumWorkers, &out.NumWorkers + *out = new(int32) + **out = **in + } + if in.MaxWorkers != nil { + in, out := &in.MaxWorkers, &out.MaxWorkers + *out = new(int32) + **out = **in + } + if in.ServiceAccountEmailRef != nil { + in, out := &in.ServiceAccountEmailRef, &out.ServiceAccountEmailRef + *out = new(refsv1beta1.IAMServiceAccountRef) + **out = **in + } + if in.TempLocation != nil { + in, out := &in.TempLocation, &out.TempLocation + *out = new(string) + **out = **in + } + if in.MachineType != nil { + in, out := &in.MachineType, &out.MachineType + *out = new(string) + **out = **in + } + if in.AdditionalExperiments != nil { + in, out := &in.AdditionalExperiments, &out.AdditionalExperiments + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NetworkRef != nil { + in, out := &in.NetworkRef, &out.NetworkRef + *out = new(refsv1beta1.ComputeNetworkRef) + **out = **in + } + if in.SubnetworkRef != nil { + in, out := &in.SubnetworkRef, &out.SubnetworkRef + *out = new(refsv1beta1.ComputeSubnetworkRef) + **out = **in + } + if in.KmsKeyNameRef != nil { + in, out := &in.KmsKeyNameRef, &out.KmsKeyNameRef + *out = new(refsv1beta1.KMSCryptoKeyRef) + **out = **in + } + if in.IpConfiguration != nil { + in, out := &in.IpConfiguration, &out.IpConfiguration + *out = new(string) + **out = **in + } + if in.EnableStreamingEngine != nil { + in, out := &in.EnableStreamingEngine, &out.EnableStreamingEngine + *out = new(bool) + **out = **in + } + if in.StagingLocation != nil { + in, out := &in.StagingLocation, &out.StagingLocation + *out = new(string) + **out = **in + } + if in.SdkContainerImage != nil { + in, out := &in.SdkContainerImage, &out.SdkContainerImage + *out = new(string) + **out = **in + } + if in.AutoscalingAlgorithm != nil { + in, out := &in.AutoscalingAlgorithm, &out.AutoscalingAlgorithm + *out = new(string) + **out = **in + } + if in.LauncherMachineType != nil { + in, out := &in.LauncherMachineType, &out.LauncherMachineType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataFlowFlexTemplateJobSpec. +func (in *DataFlowFlexTemplateJobSpec) DeepCopy() *DataFlowFlexTemplateJobSpec { + if in == nil { + return nil + } + out := new(DataFlowFlexTemplateJobSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataFlowFlexTemplateJobStatus) DeepCopyInto(out *DataFlowFlexTemplateJobStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]v1alpha1.Condition, len(*in)) + copy(*out, *in) + } + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } + if in.CurrentState != nil { + in, out := &in.CurrentState, &out.CurrentState + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataFlowFlexTemplateJobStatus. +func (in *DataFlowFlexTemplateJobStatus) DeepCopy() *DataFlowFlexTemplateJobStatus { + if in == nil { + return nil + } + out := new(DataFlowFlexTemplateJobStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DatastoreIODetails) DeepCopyInto(out *DatastoreIODetails) { + *out = *in + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatastoreIODetails. +func (in *DatastoreIODetails) DeepCopy() *DatastoreIODetails { + if in == nil { + return nil + } + out := new(DatastoreIODetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DebugOptions) DeepCopyInto(out *DebugOptions) { + *out = *in + if in.EnableHotKeyLogging != nil { + in, out := &in.EnableHotKeyLogging, &out.EnableHotKeyLogging + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DebugOptions. +func (in *DebugOptions) DeepCopy() *DebugOptions { + if in == nil { + return nil + } + out := new(DebugOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Disk) DeepCopyInto(out *Disk) { + *out = *in + if in.SizeGb != nil { + in, out := &in.SizeGb, &out.SizeGb + *out = new(int32) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.MountPoint != nil { + in, out := &in.MountPoint, &out.MountPoint + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Disk. +func (in *Disk) DeepCopy() *Disk { + if in == nil { + return nil + } + out := new(Disk) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DisplayData) DeepCopyInto(out *DisplayData) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } + if in.StrValue != nil { + in, out := &in.StrValue, &out.StrValue + *out = new(string) + **out = **in + } + if in.Int64Value != nil { + in, out := &in.Int64Value, &out.Int64Value + *out = new(int64) + **out = **in + } + if in.FloatValue != nil { + in, out := &in.FloatValue, &out.FloatValue + *out = new(float32) + **out = **in + } + if in.JavaClassValue != nil { + in, out := &in.JavaClassValue, &out.JavaClassValue + *out = new(string) + **out = **in + } + if in.TimestampValue != nil { + in, out := &in.TimestampValue, &out.TimestampValue + *out = new(string) + **out = **in + } + if in.DurationValue != nil { + in, out := &in.DurationValue, &out.DurationValue + *out = new(string) + **out = **in + } + if in.BoolValue != nil { + in, out := &in.BoolValue, &out.BoolValue + *out = new(bool) + **out = **in + } + if in.ShortStrValue != nil { + in, out := &in.ShortStrValue, &out.ShortStrValue + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DisplayData. +func (in *DisplayData) DeepCopy() *DisplayData { + if in == nil { + return nil + } + out := new(DisplayData) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DynamicTemplateLaunchParams) DeepCopyInto(out *DynamicTemplateLaunchParams) { + *out = *in + if in.GcsPath != nil { + in, out := &in.GcsPath, &out.GcsPath + *out = new(string) + **out = **in + } + if in.StagingLocation != nil { + in, out := &in.StagingLocation, &out.StagingLocation + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamicTemplateLaunchParams. +func (in *DynamicTemplateLaunchParams) DeepCopy() *DynamicTemplateLaunchParams { + if in == nil { + return nil + } + out := new(DynamicTemplateLaunchParams) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Environment) DeepCopyInto(out *Environment) { + *out = *in + if in.TempStoragePrefix != nil { + in, out := &in.TempStoragePrefix, &out.TempStoragePrefix + *out = new(string) + **out = **in + } + if in.ClusterManagerApiService != nil { + in, out := &in.ClusterManagerApiService, &out.ClusterManagerApiService + *out = new(string) + **out = **in + } + if in.Experiments != nil { + in, out := &in.Experiments, &out.Experiments + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ServiceOptions != nil { + in, out := &in.ServiceOptions, &out.ServiceOptions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ServiceKmsKeyName != nil { + in, out := &in.ServiceKmsKeyName, &out.ServiceKmsKeyName + *out = new(string) + **out = **in + } + if in.WorkerPools != nil { + in, out := &in.WorkerPools, &out.WorkerPools + *out = make([]WorkerPool, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserAgent != nil { + in, out := &in.UserAgent, &out.UserAgent + *out = new(google_protobuf_Struct) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(google_protobuf_Struct) + **out = **in + } + if in.Dataset != nil { + in, out := &in.Dataset, &out.Dataset + *out = new(string) + **out = **in + } + if in.SdkPipelineOptions != nil { + in, out := &in.SdkPipelineOptions, &out.SdkPipelineOptions + *out = new(google_protobuf_Struct) + **out = **in + } + if in.InternalExperiments != nil { + in, out := &in.InternalExperiments, &out.InternalExperiments + *out = new(google_protobuf_Any) + **out = **in + } + if in.ServiceAccountEmail != nil { + in, out := &in.ServiceAccountEmail, &out.ServiceAccountEmail + *out = new(string) + **out = **in + } + if in.FlexResourceSchedulingGoal != nil { + in, out := &in.FlexResourceSchedulingGoal, &out.FlexResourceSchedulingGoal + *out = new(string) + **out = **in + } + if in.WorkerRegion != nil { + in, out := &in.WorkerRegion, &out.WorkerRegion + *out = new(string) + **out = **in + } + if in.WorkerZone != nil { + in, out := &in.WorkerZone, &out.WorkerZone + *out = new(string) + **out = **in + } + if in.ShuffleMode != nil { + in, out := &in.ShuffleMode, &out.ShuffleMode + *out = new(string) + **out = **in + } + if in.DebugOptions != nil { + in, out := &in.DebugOptions, &out.DebugOptions + *out = new(DebugOptions) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Environment. +func (in *Environment) DeepCopy() *Environment { + if in == nil { + return nil + } + out := new(Environment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecutionStageState) DeepCopyInto(out *ExecutionStageState) { + *out = *in + if in.ExecutionStageName != nil { + in, out := &in.ExecutionStageName, &out.ExecutionStageName + *out = new(string) + **out = **in + } + if in.ExecutionStageState != nil { + in, out := &in.ExecutionStageState, &out.ExecutionStageState + *out = new(string) + **out = **in + } + if in.CurrentStateTime != nil { + in, out := &in.CurrentStateTime, &out.CurrentStateTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionStageState. +func (in *ExecutionStageState) DeepCopy() *ExecutionStageState { + if in == nil { + return nil + } + out := new(ExecutionStageState) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecutionStageSummary) DeepCopyInto(out *ExecutionStageSummary) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } + if in.InputSource != nil { + in, out := &in.InputSource, &out.InputSource + *out = make([]ExecutionStageSummary_StageSource, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.OutputSource != nil { + in, out := &in.OutputSource, &out.OutputSource + *out = make([]ExecutionStageSummary_StageSource, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PrerequisiteStage != nil { + in, out := &in.PrerequisiteStage, &out.PrerequisiteStage + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ComponentTransform != nil { + in, out := &in.ComponentTransform, &out.ComponentTransform + *out = make([]ExecutionStageSummary_ComponentTransform, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ComponentSource != nil { + in, out := &in.ComponentSource, &out.ComponentSource + *out = make([]ExecutionStageSummary_ComponentSource, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionStageSummary. +func (in *ExecutionStageSummary) DeepCopy() *ExecutionStageSummary { + if in == nil { + return nil + } + out := new(ExecutionStageSummary) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecutionStageSummary_ComponentSource) DeepCopyInto(out *ExecutionStageSummary_ComponentSource) { + *out = *in + if in.UserName != nil { + in, out := &in.UserName, &out.UserName + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OriginalTransformOrCollection != nil { + in, out := &in.OriginalTransformOrCollection, &out.OriginalTransformOrCollection + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionStageSummary_ComponentSource. +func (in *ExecutionStageSummary_ComponentSource) DeepCopy() *ExecutionStageSummary_ComponentSource { + if in == nil { + return nil + } + out := new(ExecutionStageSummary_ComponentSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecutionStageSummary_ComponentTransform) DeepCopyInto(out *ExecutionStageSummary_ComponentTransform) { + *out = *in + if in.UserName != nil { + in, out := &in.UserName, &out.UserName + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OriginalTransform != nil { + in, out := &in.OriginalTransform, &out.OriginalTransform + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionStageSummary_ComponentTransform. +func (in *ExecutionStageSummary_ComponentTransform) DeepCopy() *ExecutionStageSummary_ComponentTransform { + if in == nil { + return nil + } + out := new(ExecutionStageSummary_ComponentTransform) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExecutionStageSummary_StageSource) DeepCopyInto(out *ExecutionStageSummary_StageSource) { + *out = *in + if in.UserName != nil { + in, out := &in.UserName, &out.UserName + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.OriginalTransformOrCollection != nil { + in, out := &in.OriginalTransformOrCollection, &out.OriginalTransformOrCollection + *out = new(string) + **out = **in + } + if in.SizeBytes != nil { + in, out := &in.SizeBytes, &out.SizeBytes + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionStageSummary_StageSource. +func (in *ExecutionStageSummary_StageSource) DeepCopy() *ExecutionStageSummary_StageSource { + if in == nil { + return nil + } + out := new(ExecutionStageSummary_StageSource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FailedLocation) DeepCopyInto(out *FailedLocation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FailedLocation. +func (in *FailedLocation) DeepCopy() *FailedLocation { + if in == nil { + return nil + } + out := new(FailedLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FileIODetails) DeepCopyInto(out *FileIODetails) { + *out = *in + if in.FilePattern != nil { + in, out := &in.FilePattern, &out.FilePattern + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileIODetails. +func (in *FileIODetails) DeepCopy() *FileIODetails { + if in == nil { + return nil + } + out := new(FileIODetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexTemplateRuntimeEnvironment) DeepCopyInto(out *FlexTemplateRuntimeEnvironment) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexTemplateRuntimeEnvironment. +func (in *FlexTemplateRuntimeEnvironment) DeepCopy() *FlexTemplateRuntimeEnvironment { + if in == nil { + return nil + } + out := new(FlexTemplateRuntimeEnvironment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InvalidTemplateParameters) DeepCopyInto(out *InvalidTemplateParameters) { + *out = *in + if in.ParameterViolations != nil { + in, out := &in.ParameterViolations, &out.ParameterViolations + *out = make([]InvalidTemplateParameters_ParameterViolation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InvalidTemplateParameters. +func (in *InvalidTemplateParameters) DeepCopy() *InvalidTemplateParameters { + if in == nil { + return nil + } + out := new(InvalidTemplateParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InvalidTemplateParameters_ParameterViolation) DeepCopyInto(out *InvalidTemplateParameters_ParameterViolation) { + *out = *in + if in.Parameter != nil { + in, out := &in.Parameter, &out.Parameter + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InvalidTemplateParameters_ParameterViolation. +func (in *InvalidTemplateParameters_ParameterViolation) DeepCopy() *InvalidTemplateParameters_ParameterViolation { + if in == nil { + return nil + } + out := new(InvalidTemplateParameters_ParameterViolation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobExecutionDetails) DeepCopyInto(out *JobExecutionDetails) { + *out = *in + if in.Stages != nil { + in, out := &in.Stages, &out.Stages + *out = make([]StageSummary, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NextPageToken != nil { + in, out := &in.NextPageToken, &out.NextPageToken + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobExecutionDetails. +func (in *JobExecutionDetails) DeepCopy() *JobExecutionDetails { + if in == nil { + return nil + } + out := new(JobExecutionDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobExecutionInfo) DeepCopyInto(out *JobExecutionInfo) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobExecutionInfo. +func (in *JobExecutionInfo) DeepCopy() *JobExecutionInfo { + if in == nil { + return nil + } + out := new(JobExecutionInfo) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobExecutionStageInfo) DeepCopyInto(out *JobExecutionStageInfo) { + *out = *in + if in.StepName != nil { + in, out := &in.StepName, &out.StepName + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobExecutionStageInfo. +func (in *JobExecutionStageInfo) DeepCopy() *JobExecutionStageInfo { + if in == nil { + return nil + } + out := new(JobExecutionStageInfo) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobMessage) DeepCopyInto(out *JobMessage) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Time != nil { + in, out := &in.Time, &out.Time + *out = new(string) + **out = **in + } + if in.MessageText != nil { + in, out := &in.MessageText, &out.MessageText + *out = new(string) + **out = **in + } + if in.MessageImportance != nil { + in, out := &in.MessageImportance, &out.MessageImportance + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobMessage. +func (in *JobMessage) DeepCopy() *JobMessage { + if in == nil { + return nil + } + out := new(JobMessage) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JobMetrics) DeepCopyInto(out *JobMetrics) { + *out = *in + if in.MetricTime != nil { + in, out := &in.MetricTime, &out.MetricTime + *out = new(string) + **out = **in + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]MetricUpdate, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobMetrics. +func (in *JobMetrics) DeepCopy() *JobMetrics { + if in == nil { + return nil + } + out := new(JobMetrics) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyRangeDataDiskAssignment) DeepCopyInto(out *KeyRangeDataDiskAssignment) { + *out = *in + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } + if in.End != nil { + in, out := &in.End, &out.End + *out = new(string) + **out = **in + } + if in.DataDisk != nil { + in, out := &in.DataDisk, &out.DataDisk + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyRangeDataDiskAssignment. +func (in *KeyRangeDataDiskAssignment) DeepCopy() *KeyRangeDataDiskAssignment { + if in == nil { + return nil + } + out := new(KeyRangeDataDiskAssignment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyRangeLocation) DeepCopyInto(out *KeyRangeLocation) { + *out = *in + if in.Start != nil { + in, out := &in.Start, &out.Start + *out = new(string) + **out = **in + } + if in.End != nil { + in, out := &in.End, &out.End + *out = new(string) + **out = **in + } + if in.DeliveryEndpoint != nil { + in, out := &in.DeliveryEndpoint, &out.DeliveryEndpoint + *out = new(string) + **out = **in + } + if in.DataDisk != nil { + in, out := &in.DataDisk, &out.DataDisk + *out = new(string) + **out = **in + } + if in.DeprecatedPersistentDirectory != nil { + in, out := &in.DeprecatedPersistentDirectory, &out.DeprecatedPersistentDirectory + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyRangeLocation. +func (in *KeyRangeLocation) DeepCopy() *KeyRangeLocation { + if in == nil { + return nil + } + out := new(KeyRangeLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LaunchFlexTemplateParameter) DeepCopyInto(out *LaunchFlexTemplateParameter) { + *out = *in + if in.JobName != nil { + in, out := &in.JobName, &out.JobName + *out = new(string) + **out = **in + } + if in.ContainerSpec != nil { + in, out := &in.ContainerSpec, &out.ContainerSpec + *out = new(ContainerSpec) + (*in).DeepCopyInto(*out) + } + if in.ContainerSpecGcsPath != nil { + in, out := &in.ContainerSpecGcsPath, &out.ContainerSpecGcsPath + *out = new(string) + **out = **in + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.LaunchOptions != nil { + in, out := &in.LaunchOptions, &out.LaunchOptions + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Environment != nil { + in, out := &in.Environment, &out.Environment + *out = new(FlexTemplateRuntimeEnvironment) + **out = **in + } + if in.Update != nil { + in, out := &in.Update, &out.Update + *out = new(bool) + **out = **in + } + if in.TransformNameMappings != nil { + in, out := &in.TransformNameMappings, &out.TransformNameMappings + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LaunchFlexTemplateParameter. +func (in *LaunchFlexTemplateParameter) DeepCopy() *LaunchFlexTemplateParameter { + if in == nil { + return nil + } + out := new(LaunchFlexTemplateParameter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LaunchTemplateParameters) DeepCopyInto(out *LaunchTemplateParameters) { + *out = *in + if in.JobName != nil { + in, out := &in.JobName, &out.JobName + *out = new(string) + **out = **in + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Environment != nil { + in, out := &in.Environment, &out.Environment + *out = new(RuntimeEnvironment) + (*in).DeepCopyInto(*out) + } + if in.Update != nil { + in, out := &in.Update, &out.Update + *out = new(bool) + **out = **in + } + if in.TransformNameMapping != nil { + in, out := &in.TransformNameMapping, &out.TransformNameMapping + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LaunchTemplateParameters. +func (in *LaunchTemplateParameters) DeepCopy() *LaunchTemplateParameters { + if in == nil { + return nil + } + out := new(LaunchTemplateParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricStructuredName) DeepCopyInto(out *MetricStructuredName) { + *out = *in + if in.Origin != nil { + in, out := &in.Origin, &out.Origin + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Context != nil { + in, out := &in.Context, &out.Context + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricStructuredName. +func (in *MetricStructuredName) DeepCopy() *MetricStructuredName { + if in == nil { + return nil + } + out := new(MetricStructuredName) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricUpdate) DeepCopyInto(out *MetricUpdate) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(MetricStructuredName) + (*in).DeepCopyInto(*out) + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } + if in.Cumulative != nil { + in, out := &in.Cumulative, &out.Cumulative + *out = new(bool) + **out = **in + } + if in.Scalar != nil { + in, out := &in.Scalar, &out.Scalar + *out = new(google_protobuf_Value) + **out = **in + } + if in.MeanSum != nil { + in, out := &in.MeanSum, &out.MeanSum + *out = new(google_protobuf_Value) + **out = **in + } + if in.MeanCount != nil { + in, out := &in.MeanCount, &out.MeanCount + *out = new(google_protobuf_Value) + **out = **in + } + if in.Set != nil { + in, out := &in.Set, &out.Set + *out = new(google_protobuf_Value) + **out = **in + } + if in.Distribution != nil { + in, out := &in.Distribution, &out.Distribution + *out = new(google_protobuf_Value) + **out = **in + } + if in.Gauge != nil { + in, out := &in.Gauge, &out.Gauge + *out = new(google_protobuf_Value) + **out = **in + } + if in.Internal != nil { + in, out := &in.Internal, &out.Internal + *out = new(google_protobuf_Value) + **out = **in + } + if in.UpdateTime != nil { + in, out := &in.UpdateTime, &out.UpdateTime + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricUpdate. +func (in *MetricUpdate) DeepCopy() *MetricUpdate { + if in == nil { + return nil + } + out := new(MetricUpdate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MountedDataDisk) DeepCopyInto(out *MountedDataDisk) { + *out = *in + if in.DataDisk != nil { + in, out := &in.DataDisk, &out.DataDisk + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MountedDataDisk. +func (in *MountedDataDisk) DeepCopy() *MountedDataDisk { + if in == nil { + return nil + } + out := new(MountedDataDisk) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Package) DeepCopyInto(out *Package) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Package. +func (in *Package) DeepCopy() *Package { + if in == nil { + return nil + } + out := new(Package) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineDescription) DeepCopyInto(out *PipelineDescription) { + *out = *in + if in.OriginalPipelineTransform != nil { + in, out := &in.OriginalPipelineTransform, &out.OriginalPipelineTransform + *out = make([]TransformSummary, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ExecutionPipelineStage != nil { + in, out := &in.ExecutionPipelineStage, &out.ExecutionPipelineStage + *out = make([]ExecutionStageSummary, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DisplayData != nil { + in, out := &in.DisplayData, &out.DisplayData + *out = make([]DisplayData, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineDescription. +func (in *PipelineDescription) DeepCopy() *PipelineDescription { + if in == nil { + return nil + } + out := new(PipelineDescription) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProgressTimeseries) DeepCopyInto(out *ProgressTimeseries) { + *out = *in + if in.CurrentProgress != nil { + in, out := &in.CurrentProgress, &out.CurrentProgress + *out = new(float64) + **out = **in + } + if in.DataPoints != nil { + in, out := &in.DataPoints, &out.DataPoints + *out = make([]ProgressTimeseries_Point, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProgressTimeseries. +func (in *ProgressTimeseries) DeepCopy() *ProgressTimeseries { + if in == nil { + return nil + } + out := new(ProgressTimeseries) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProgressTimeseries_Point) DeepCopyInto(out *ProgressTimeseries_Point) { + *out = *in + if in.Time != nil { + in, out := &in.Time, &out.Time + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProgressTimeseries_Point. +func (in *ProgressTimeseries_Point) DeepCopy() *ProgressTimeseries_Point { + if in == nil { + return nil + } + out := new(ProgressTimeseries_Point) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PubSubIODetails) DeepCopyInto(out *PubSubIODetails) { + *out = *in + if in.Topic != nil { + in, out := &in.Topic, &out.Topic + *out = new(string) + **out = **in + } + if in.Subscription != nil { + in, out := &in.Subscription, &out.Subscription + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PubSubIODetails. +func (in *PubSubIODetails) DeepCopy() *PubSubIODetails { + if in == nil { + return nil + } + out := new(PubSubIODetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PubsubLocation) DeepCopyInto(out *PubsubLocation) { + *out = *in + if in.Topic != nil { + in, out := &in.Topic, &out.Topic + *out = new(string) + **out = **in + } + if in.Subscription != nil { + in, out := &in.Subscription, &out.Subscription + *out = new(string) + **out = **in + } + if in.TimestampLabel != nil { + in, out := &in.TimestampLabel, &out.TimestampLabel + *out = new(string) + **out = **in + } + if in.IDLabel != nil { + in, out := &in.IDLabel, &out.IDLabel + *out = new(string) + **out = **in + } + if in.DropLateData != nil { + in, out := &in.DropLateData, &out.DropLateData + *out = new(bool) + **out = **in + } + if in.TrackingSubscription != nil { + in, out := &in.TrackingSubscription, &out.TrackingSubscription + *out = new(string) + **out = **in + } + if in.WithAttributes != nil { + in, out := &in.WithAttributes, &out.WithAttributes + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PubsubLocation. +func (in *PubsubLocation) DeepCopy() *PubsubLocation { + if in == nil { + return nil + } + out := new(PubsubLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PubsubSnapshotMetadata) DeepCopyInto(out *PubsubSnapshotMetadata) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PubsubSnapshotMetadata. +func (in *PubsubSnapshotMetadata) DeepCopy() *PubsubSnapshotMetadata { + if in == nil { + return nil + } + out := new(PubsubSnapshotMetadata) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RuntimeEnvironment) DeepCopyInto(out *RuntimeEnvironment) { + *out = *in + if in.NumWorkers != nil { + in, out := &in.NumWorkers, &out.NumWorkers + *out = new(int32) + **out = **in + } + if in.MaxWorkers != nil { + in, out := &in.MaxWorkers, &out.MaxWorkers + *out = new(int32) + **out = **in + } + if in.Zone != nil { + in, out := &in.Zone, &out.Zone + *out = new(string) + **out = **in + } + if in.ServiceAccountEmail != nil { + in, out := &in.ServiceAccountEmail, &out.ServiceAccountEmail + *out = new(string) + **out = **in + } + if in.TempLocation != nil { + in, out := &in.TempLocation, &out.TempLocation + *out = new(string) + **out = **in + } + if in.BypassTempDirValidation != nil { + in, out := &in.BypassTempDirValidation, &out.BypassTempDirValidation + *out = new(bool) + **out = **in + } + if in.MachineType != nil { + in, out := &in.MachineType, &out.MachineType + *out = new(string) + **out = **in + } + if in.AdditionalExperiments != nil { + in, out := &in.AdditionalExperiments, &out.AdditionalExperiments + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.Subnetwork != nil { + in, out := &in.Subnetwork, &out.Subnetwork + *out = new(string) + **out = **in + } + if in.AdditionalUserLabels != nil { + in, out := &in.AdditionalUserLabels, &out.AdditionalUserLabels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.KmsKeyName != nil { + in, out := &in.KmsKeyName, &out.KmsKeyName + *out = new(string) + **out = **in + } + if in.IpConfiguration != nil { + in, out := &in.IpConfiguration, &out.IpConfiguration + *out = new(string) + **out = **in + } + if in.WorkerRegion != nil { + in, out := &in.WorkerRegion, &out.WorkerRegion + *out = new(string) + **out = **in + } + if in.WorkerZone != nil { + in, out := &in.WorkerZone, &out.WorkerZone + *out = new(string) + **out = **in + } + if in.EnableStreamingEngine != nil { + in, out := &in.EnableStreamingEngine, &out.EnableStreamingEngine + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeEnvironment. +func (in *RuntimeEnvironment) DeepCopy() *RuntimeEnvironment { + if in == nil { + return nil + } + out := new(RuntimeEnvironment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SDKInfo) DeepCopyInto(out *SDKInfo) { + *out = *in + if in.Language != nil { + in, out := &in.Language, &out.Language + *out = new(string) + **out = **in + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SDKInfo. +func (in *SDKInfo) DeepCopy() *SDKInfo { + if in == nil { + return nil + } + out := new(SDKInfo) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SdkHarnessContainerImage) DeepCopyInto(out *SdkHarnessContainerImage) { + *out = *in + if in.ContainerImage != nil { + in, out := &in.ContainerImage, &out.ContainerImage + *out = new(string) + **out = **in + } + if in.UseSingleCorePerContainer != nil { + in, out := &in.UseSingleCorePerContainer, &out.UseSingleCorePerContainer + *out = new(bool) + **out = **in + } + if in.EnvironmentID != nil { + in, out := &in.EnvironmentID, &out.EnvironmentID + *out = new(string) + **out = **in + } + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SdkHarnessContainerImage. +func (in *SdkHarnessContainerImage) DeepCopy() *SdkHarnessContainerImage { + if in == nil { + return nil + } + out := new(SdkHarnessContainerImage) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SdkVersion) DeepCopyInto(out *SdkVersion) { + *out = *in + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } + if in.VersionDisplayName != nil { + in, out := &in.VersionDisplayName, &out.VersionDisplayName + *out = new(string) + **out = **in + } + if in.SdkSupportStatus != nil { + in, out := &in.SdkSupportStatus, &out.SdkSupportStatus + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SdkVersion. +func (in *SdkVersion) DeepCopy() *SdkVersion { + if in == nil { + return nil + } + out := new(SdkVersion) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Snapshot) DeepCopyInto(out *Snapshot) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.SourceJobID != nil { + in, out := &in.SourceJobID, &out.SourceJobID + *out = new(string) + **out = **in + } + if in.CreationTime != nil { + in, out := &in.CreationTime, &out.CreationTime + *out = new(string) + **out = **in + } + if in.Ttl != nil { + in, out := &in.Ttl, &out.Ttl + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.PubsubMetadata != nil { + in, out := &in.PubsubMetadata, &out.PubsubMetadata + *out = make([]PubsubSnapshotMetadata, len(*in)) + copy(*out, *in) + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DiskSizeBytes != nil { + in, out := &in.DiskSizeBytes, &out.DiskSizeBytes + *out = new(int64) + **out = **in + } + if in.Region != nil { + in, out := &in.Region, &out.Region + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Snapshot. +func (in *Snapshot) DeepCopy() *Snapshot { + if in == nil { + return nil + } + out := new(Snapshot) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpannerIODetails) DeepCopyInto(out *SpannerIODetails) { + *out = *in + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.InstanceID != nil { + in, out := &in.InstanceID, &out.InstanceID + *out = new(string) + **out = **in + } + if in.DatabaseID != nil { + in, out := &in.DatabaseID, &out.DatabaseID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpannerIODetails. +func (in *SpannerIODetails) DeepCopy() *SpannerIODetails { + if in == nil { + return nil + } + out := new(SpannerIODetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StageExecutionDetails) DeepCopyInto(out *StageExecutionDetails) { + *out = *in + if in.Workers != nil { + in, out := &in.Workers, &out.Workers + *out = make([]WorkerDetails, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NextPageToken != nil { + in, out := &in.NextPageToken, &out.NextPageToken + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StageExecutionDetails. +func (in *StageExecutionDetails) DeepCopy() *StageExecutionDetails { + if in == nil { + return nil + } + out := new(StageExecutionDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StageSummary) DeepCopyInto(out *StageSummary) { + *out = *in + if in.StageID != nil { + in, out := &in.StageID, &out.StageID + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.Progress != nil { + in, out := &in.Progress, &out.Progress + *out = new(ProgressTimeseries) + (*in).DeepCopyInto(*out) + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]MetricUpdate, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StageSummary. +func (in *StageSummary) DeepCopy() *StageSummary { + if in == nil { + return nil + } + out := new(StageSummary) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StateFamilyConfig) DeepCopyInto(out *StateFamilyConfig) { + *out = *in + if in.StateFamily != nil { + in, out := &in.StateFamily, &out.StateFamily + *out = new(string) + **out = **in + } + if in.IsRead != nil { + in, out := &in.IsRead, &out.IsRead + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StateFamilyConfig. +func (in *StateFamilyConfig) DeepCopy() *StateFamilyConfig { + if in == nil { + return nil + } + out := new(StateFamilyConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Step) DeepCopyInto(out *Step) { + *out = *in + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = new(google_protobuf_Struct) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Step. +func (in *Step) DeepCopy() *Step { + if in == nil { + return nil + } + out := new(Step) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StreamLocation) DeepCopyInto(out *StreamLocation) { + *out = *in + if in.StreamingStageLocation != nil { + in, out := &in.StreamingStageLocation, &out.StreamingStageLocation + *out = new(StreamingStageLocation) + (*in).DeepCopyInto(*out) + } + if in.PubsubLocation != nil { + in, out := &in.PubsubLocation, &out.PubsubLocation + *out = new(PubsubLocation) + (*in).DeepCopyInto(*out) + } + if in.SideInputLocation != nil { + in, out := &in.SideInputLocation, &out.SideInputLocation + *out = new(StreamingSideInputLocation) + (*in).DeepCopyInto(*out) + } + if in.CustomSourceLocation != nil { + in, out := &in.CustomSourceLocation, &out.CustomSourceLocation + *out = new(CustomSourceLocation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StreamLocation. +func (in *StreamLocation) DeepCopy() *StreamLocation { + if in == nil { + return nil + } + out := new(StreamLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StreamingApplianceSnapshotConfig) DeepCopyInto(out *StreamingApplianceSnapshotConfig) { + *out = *in + if in.SnapshotID != nil { + in, out := &in.SnapshotID, &out.SnapshotID + *out = new(string) + **out = **in + } + if in.ImportStateEndpoint != nil { + in, out := &in.ImportStateEndpoint, &out.ImportStateEndpoint + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StreamingApplianceSnapshotConfig. +func (in *StreamingApplianceSnapshotConfig) DeepCopy() *StreamingApplianceSnapshotConfig { + if in == nil { + return nil + } + out := new(StreamingApplianceSnapshotConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StreamingComputationRanges) DeepCopyInto(out *StreamingComputationRanges) { + *out = *in + if in.ComputationID != nil { + in, out := &in.ComputationID, &out.ComputationID + *out = new(string) + **out = **in + } + if in.RangeAssignments != nil { + in, out := &in.RangeAssignments, &out.RangeAssignments + *out = make([]KeyRangeDataDiskAssignment, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StreamingComputationRanges. +func (in *StreamingComputationRanges) DeepCopy() *StreamingComputationRanges { + if in == nil { + return nil + } + out := new(StreamingComputationRanges) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StreamingSideInputLocation) DeepCopyInto(out *StreamingSideInputLocation) { + *out = *in + if in.Tag != nil { + in, out := &in.Tag, &out.Tag + *out = new(string) + **out = **in + } + if in.StateFamily != nil { + in, out := &in.StateFamily, &out.StateFamily + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StreamingSideInputLocation. +func (in *StreamingSideInputLocation) DeepCopy() *StreamingSideInputLocation { + if in == nil { + return nil + } + out := new(StreamingSideInputLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StreamingStageLocation) DeepCopyInto(out *StreamingStageLocation) { + *out = *in + if in.StreamID != nil { + in, out := &in.StreamID, &out.StreamID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StreamingStageLocation. +func (in *StreamingStageLocation) DeepCopy() *StreamingStageLocation { + if in == nil { + return nil + } + out := new(StreamingStageLocation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StructuredMessage) DeepCopyInto(out *StructuredMessage) { + *out = *in + if in.MessageText != nil { + in, out := &in.MessageText, &out.MessageText + *out = new(string) + **out = **in + } + if in.MessageKey != nil { + in, out := &in.MessageKey, &out.MessageKey + *out = new(string) + **out = **in + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make([]StructuredMessage_Parameter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructuredMessage. +func (in *StructuredMessage) DeepCopy() *StructuredMessage { + if in == nil { + return nil + } + out := new(StructuredMessage) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StructuredMessage_Parameter) DeepCopyInto(out *StructuredMessage_Parameter) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(google_protobuf_Value) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StructuredMessage_Parameter. +func (in *StructuredMessage_Parameter) DeepCopy() *StructuredMessage_Parameter { + if in == nil { + return nil + } + out := new(StructuredMessage_Parameter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TaskRunnerSettings) DeepCopyInto(out *TaskRunnerSettings) { + *out = *in + if in.TaskUser != nil { + in, out := &in.TaskUser, &out.TaskUser + *out = new(string) + **out = **in + } + if in.TaskGroup != nil { + in, out := &in.TaskGroup, &out.TaskGroup + *out = new(string) + **out = **in + } + if in.OauthScopes != nil { + in, out := &in.OauthScopes, &out.OauthScopes + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.BaseURL != nil { + in, out := &in.BaseURL, &out.BaseURL + *out = new(string) + **out = **in + } + if in.DataflowApiVersion != nil { + in, out := &in.DataflowApiVersion, &out.DataflowApiVersion + *out = new(string) + **out = **in + } + if in.ParallelWorkerSettings != nil { + in, out := &in.ParallelWorkerSettings, &out.ParallelWorkerSettings + *out = new(WorkerSettings) + (*in).DeepCopyInto(*out) + } + if in.BaseTaskDir != nil { + in, out := &in.BaseTaskDir, &out.BaseTaskDir + *out = new(string) + **out = **in + } + if in.ContinueOnException != nil { + in, out := &in.ContinueOnException, &out.ContinueOnException + *out = new(bool) + **out = **in + } + if in.LogToSerialconsole != nil { + in, out := &in.LogToSerialconsole, &out.LogToSerialconsole + *out = new(bool) + **out = **in + } + if in.Alsologtostderr != nil { + in, out := &in.Alsologtostderr, &out.Alsologtostderr + *out = new(bool) + **out = **in + } + if in.LogUploadLocation != nil { + in, out := &in.LogUploadLocation, &out.LogUploadLocation + *out = new(string) + **out = **in + } + if in.LogDir != nil { + in, out := &in.LogDir, &out.LogDir + *out = new(string) + **out = **in + } + if in.TempStoragePrefix != nil { + in, out := &in.TempStoragePrefix, &out.TempStoragePrefix + *out = new(string) + **out = **in + } + if in.HarnessCommand != nil { + in, out := &in.HarnessCommand, &out.HarnessCommand + *out = new(string) + **out = **in + } + if in.WorkflowFileName != nil { + in, out := &in.WorkflowFileName, &out.WorkflowFileName + *out = new(string) + **out = **in + } + if in.CommandlinesFileName != nil { + in, out := &in.CommandlinesFileName, &out.CommandlinesFileName + *out = new(string) + **out = **in + } + if in.VmID != nil { + in, out := &in.VmID, &out.VmID + *out = new(string) + **out = **in + } + if in.LanguageHint != nil { + in, out := &in.LanguageHint, &out.LanguageHint + *out = new(string) + **out = **in + } + if in.StreamingWorkerMainClass != nil { + in, out := &in.StreamingWorkerMainClass, &out.StreamingWorkerMainClass + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskRunnerSettings. +func (in *TaskRunnerSettings) DeepCopy() *TaskRunnerSettings { + if in == nil { + return nil + } + out := new(TaskRunnerSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TemplateMetadata) DeepCopyInto(out *TemplateMetadata) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplateMetadata. +func (in *TemplateMetadata) DeepCopy() *TemplateMetadata { + if in == nil { + return nil + } + out := new(TemplateMetadata) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TopologyConfig) DeepCopyInto(out *TopologyConfig) { + *out = *in + if in.Computations != nil { + in, out := &in.Computations, &out.Computations + *out = make([]ComputationTopology, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DataDiskAssignments != nil { + in, out := &in.DataDiskAssignments, &out.DataDiskAssignments + *out = make([]DataDiskAssignment, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.UserStageToComputationNameMap != nil { + in, out := &in.UserStageToComputationNameMap, &out.UserStageToComputationNameMap + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ForwardingKeyBits != nil { + in, out := &in.ForwardingKeyBits, &out.ForwardingKeyBits + *out = new(int32) + **out = **in + } + if in.PersistentStateVersion != nil { + in, out := &in.PersistentStateVersion, &out.PersistentStateVersion + *out = new(int32) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TopologyConfig. +func (in *TopologyConfig) DeepCopy() *TopologyConfig { + if in == nil { + return nil + } + out := new(TopologyConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TransformSummary) DeepCopyInto(out *TransformSummary) { + *out = *in + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.DisplayData != nil { + in, out := &in.DisplayData, &out.DisplayData + *out = make([]DisplayData, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.OutputCollectionName != nil { + in, out := &in.OutputCollectionName, &out.OutputCollectionName + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.InputCollectionName != nil { + in, out := &in.InputCollectionName, &out.InputCollectionName + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TransformSummary. +func (in *TransformSummary) DeepCopy() *TransformSummary { + if in == nil { + return nil + } + out := new(TransformSummary) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkItemDetails) DeepCopyInto(out *WorkItemDetails) { + *out = *in + if in.TaskID != nil { + in, out := &in.TaskID, &out.TaskID + *out = new(string) + **out = **in + } + if in.AttemptID != nil { + in, out := &in.AttemptID, &out.AttemptID + *out = new(string) + **out = **in + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(string) + **out = **in + } + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.Progress != nil { + in, out := &in.Progress, &out.Progress + *out = new(ProgressTimeseries) + (*in).DeepCopyInto(*out) + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]MetricUpdate, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkItemDetails. +func (in *WorkItemDetails) DeepCopy() *WorkItemDetails { + if in == nil { + return nil + } + out := new(WorkItemDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkerDetails) DeepCopyInto(out *WorkerDetails) { + *out = *in + if in.WorkerName != nil { + in, out := &in.WorkerName, &out.WorkerName + *out = new(string) + **out = **in + } + if in.WorkItems != nil { + in, out := &in.WorkItems, &out.WorkItems + *out = make([]WorkItemDetails, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerDetails. +func (in *WorkerDetails) DeepCopy() *WorkerDetails { + if in == nil { + return nil + } + out := new(WorkerDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkerPool) DeepCopyInto(out *WorkerPool) { + *out = *in + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } + if in.NumWorkers != nil { + in, out := &in.NumWorkers, &out.NumWorkers + *out = new(int32) + **out = **in + } + if in.Packages != nil { + in, out := &in.Packages, &out.Packages + *out = make([]Package, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.DefaultPackageSet != nil { + in, out := &in.DefaultPackageSet, &out.DefaultPackageSet + *out = new(string) + **out = **in + } + if in.MachineType != nil { + in, out := &in.MachineType, &out.MachineType + *out = new(string) + **out = **in + } + if in.TeardownPolicy != nil { + in, out := &in.TeardownPolicy, &out.TeardownPolicy + *out = new(string) + **out = **in + } + if in.DiskSizeGb != nil { + in, out := &in.DiskSizeGb, &out.DiskSizeGb + *out = new(int32) + **out = **in + } + if in.DiskType != nil { + in, out := &in.DiskType, &out.DiskType + *out = new(string) + **out = **in + } + if in.DiskSourceImage != nil { + in, out := &in.DiskSourceImage, &out.DiskSourceImage + *out = new(string) + **out = **in + } + if in.Zone != nil { + in, out := &in.Zone, &out.Zone + *out = new(string) + **out = **in + } + if in.TaskrunnerSettings != nil { + in, out := &in.TaskrunnerSettings, &out.TaskrunnerSettings + *out = new(TaskRunnerSettings) + (*in).DeepCopyInto(*out) + } + if in.OnHostMaintenance != nil { + in, out := &in.OnHostMaintenance, &out.OnHostMaintenance + *out = new(string) + **out = **in + } + if in.DataDisks != nil { + in, out := &in.DataDisks, &out.DataDisks + *out = make([]Disk, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.AutoscalingSettings != nil { + in, out := &in.AutoscalingSettings, &out.AutoscalingSettings + *out = new(AutoscalingSettings) + (*in).DeepCopyInto(*out) + } + if in.PoolArgs != nil { + in, out := &in.PoolArgs, &out.PoolArgs + *out = new(google_protobuf_Any) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(string) + **out = **in + } + if in.Subnetwork != nil { + in, out := &in.Subnetwork, &out.Subnetwork + *out = new(string) + **out = **in + } + if in.WorkerHarnessContainerImage != nil { + in, out := &in.WorkerHarnessContainerImage, &out.WorkerHarnessContainerImage + *out = new(string) + **out = **in + } + if in.NumThreadsPerWorker != nil { + in, out := &in.NumThreadsPerWorker, &out.NumThreadsPerWorker + *out = new(int32) + **out = **in + } + if in.IpConfiguration != nil { + in, out := &in.IpConfiguration, &out.IpConfiguration + *out = new(string) + **out = **in + } + if in.SdkHarnessContainerImages != nil { + in, out := &in.SdkHarnessContainerImages, &out.SdkHarnessContainerImages + *out = make([]SdkHarnessContainerImage, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerPool. +func (in *WorkerPool) DeepCopy() *WorkerPool { + if in == nil { + return nil + } + out := new(WorkerPool) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkerSettings) DeepCopyInto(out *WorkerSettings) { + *out = *in + if in.BaseURL != nil { + in, out := &in.BaseURL, &out.BaseURL + *out = new(string) + **out = **in + } + if in.ReportingEnabled != nil { + in, out := &in.ReportingEnabled, &out.ReportingEnabled + *out = new(bool) + **out = **in + } + if in.ServicePath != nil { + in, out := &in.ServicePath, &out.ServicePath + *out = new(string) + **out = **in + } + if in.ShuffleServicePath != nil { + in, out := &in.ShuffleServicePath, &out.ShuffleServicePath + *out = new(string) + **out = **in + } + if in.WorkerID != nil { + in, out := &in.WorkerID, &out.WorkerID + *out = new(string) + **out = **in + } + if in.TempStoragePrefix != nil { + in, out := &in.TempStoragePrefix, &out.TempStoragePrefix + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerSettings. +func (in *WorkerSettings) DeepCopy() *WorkerSettings { + if in == nil { + return nil + } + out := new(WorkerSettings) + in.DeepCopyInto(out) + return out +} diff --git a/apis/refs/v1beta1/gcpserviceaccountref.go b/apis/refs/v1beta1/gcpserviceaccountref.go index 992950b0389..c6a2aa041e0 100644 --- a/apis/refs/v1beta1/gcpserviceaccountref.go +++ b/apis/refs/v1beta1/gcpserviceaccountref.go @@ -27,7 +27,7 @@ import ( ) type IAMServiceAccountRef struct { - /* The GCP Service Account Email used for auth when secretType is gcpServiceAccount. Allowed value: The `email` field of an `IAMServiceAccount` resource. */ + /* The `email` field of an `IAMServiceAccount` resource. */ External string `json:"external,omitempty"` /* Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names */ Name string `json:"name,omitempty"` diff --git a/apis/refs/v1beta1/kmsrefs.go b/apis/refs/v1beta1/kmsrefs.go index e9f4e7e67e6..a1b2dbcaf1b 100644 --- a/apis/refs/v1beta1/kmsrefs.go +++ b/apis/refs/v1beta1/kmsrefs.go @@ -27,11 +27,13 @@ import ( ) type KMSCryptoKeyRef struct { - // If provided must be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`. + // A reference to an externally managed KMSCryptoKey. + // Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`. External string `json:"external,omitempty"` - // The `name` field of a `KMSCryptoKey` resource. + + // The `name` of a `KMSCryptoKey` resource. Name string `json:"name,omitempty"` - // The `metadata.namespace` field of a `KMSCryptoKey` resource. + // The `namespace` of a `KMSCryptoKey` resource. Namespace string `json:"namespace,omitempty"` } diff --git a/config/crds/resources/apiextensions.k8s.io_v1_customresourcedefinition_dataflowflextemplatejobs.dataflow.cnrm.cloud.google.com.yaml b/config/crds/resources/apiextensions.k8s.io_v1_customresourcedefinition_dataflowflextemplatejobs.dataflow.cnrm.cloud.google.com.yaml index 6f0539a955b..a7cdc6916b3 100644 --- a/config/crds/resources/apiextensions.k8s.io_v1_customresourcedefinition_dataflowflextemplatejobs.dataflow.cnrm.cloud.google.com.yaml +++ b/config/crds/resources/apiextensions.k8s.io_v1_customresourcedefinition_dataflowflextemplatejobs.dataflow.cnrm.cloud.google.com.yaml @@ -15,7 +15,8 @@ spec: names: categories: - gcp - kind: DataflowFlexTemplateJob + kind: DataFlowFlexTemplateJob + listKind: DataFlowFlexTemplateJobList plural: dataflowflextemplatejobs shortNames: - gcpdataflowflextemplatejob @@ -43,42 +44,45 @@ spec: name: v1beta1 schema: openAPIV3Schema: + description: DataFlowFlexTemplateJob is the Schema for the DataFlowFlexTemplateJob + API properties: apiVersion: - description: 'apiVersion defines the versioned schema of this representation + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources' + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'kind is a string value representing the REST resource this + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: DataFlowFlexTemplateJobSpec defines the desired state of + DataFlowFlexTemplateJob properties: additionalExperiments: - description: List of experiments that should be used by the job. An - example value is ["enable_stackdriver_agent_metrics"]. + description: Additional experiment flags for the job. items: type: string type: array autoscalingAlgorithm: - description: The algorithm to use for autoscaling. + description: The algorithm to use for autoscaling type: string containerSpecGcsPath: + description: Cloud Storage path to a file with json serialized ContainerSpec + as content. type: string enableStreamingEngine: - description: Immutable. Indicates if the job should use the streaming - engine feature. + description: Whether to enable Streaming Engine for the job. type: boolean ipConfiguration: - description: The configuration for VM IPs. Options are "WORKER_IP_PUBLIC" - or "WORKER_IP_PRIVATE". + description: Configuration for VM IPs. type: string kmsKeyNameRef: - description: The name for the Cloud KMS key for the job. + description: 'The Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/' oneOf: - not: required: @@ -95,14 +99,14 @@ spec: - external properties: external: - description: 'Allowed value: The `selfLink` field of a `KMSCryptoKey` - resource.' + description: A reference to an externally managed KMSCryptoKey. + Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: The `name` of a `KMSCryptoKey` resource. type: string namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + description: The `namespace` of a `KMSCryptoKey` resource. type: string type: object launcherMachineType: @@ -110,14 +114,18 @@ spec: is n1-standard-1. type: string machineType: - description: The machine type to use for the job. + description: The machine type to use for the job. Defaults to the + value from the template if not specified. type: string maxWorkers: - description: Immutable. The maximum number of Google Compute Engine - instances to be made available to your pipeline during execution, - from 1 to 1000. + description: The maximum number of Google Compute Engine instances + to be made available to your pipeline during execution, from 1 to + 1000. + format: int32 type: integer networkRef: + description: Network to which VMs will be assigned. If empty or unspecified, + the service will use the network "default". oneOf: - not: required: @@ -134,23 +142,26 @@ spec: - external properties: external: - description: 'Allowed value: The `selfLink` field of a `ComputeNetwork` - resource.' + description: The compute network selflink of form "projects//global/networks/", + when not managed by Config Connector. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: The `name` field of a `ComputeNetwork` resource. type: string namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + description: The `namespace` field of a `ComputeNetwork` resource. type: string type: object numWorkers: - description: Immutable. The initial number of Google Compute Engine - instances for the job. + description: The initial number of Google Compute Engine instances + for the job. + format: int32 type: integer parameters: + additionalProperties: + type: string + description: The parameters for FlexTemplate. Ex. {"num_workers":"5"} type: object - x-kubernetes-preserve-unknown-fields: true region: description: Immutable. The region in which the created job should run. @@ -161,6 +172,8 @@ spec: the SDK. Note this field is only valid for portable pipelines. type: string serviceAccountEmailRef: + description: The email address of the service account to run the job + as. oneOf: - not: required: @@ -177,8 +190,7 @@ spec: - external properties: external: - description: 'Allowed value: The `email` field of an `IAMServiceAccount` - resource.' + description: The `email` field of an `IAMServiceAccount` resource. type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' @@ -188,10 +200,15 @@ spec: type: string type: object stagingLocation: - description: The Cloud Storage path to use for staging files. Must - be a valid Cloud Storage URL, beginning with gs://. + description: The Cloud Storage path for staging local files. Must + be a valid Cloud Storage URL, beginning with `gs://`. type: string subnetworkRef: + description: Subnetwork to which VMs will be assigned, if desired. + You can specify a subnetwork using either a complete URL or an abbreviated + path. Expected to be of the form "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" + or "regions/REGION/subnetworks/SUBNETWORK". If the subnetwork is + located in a Shared VPC network, you must use the complete URL. oneOf: - not: required: @@ -208,34 +225,37 @@ spec: - external properties: external: - description: 'Allowed value: The `selfLink` field of a `ComputeSubnetwork` - resource.' + description: The ComputeSubnetwork selflink of form "projects/{{project}}/regions/{{region}}/subnetworks/{{name}}", + when not managed by KCC. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: The `name` field of a `ComputeSubnetwork` resource. type: string namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + description: The `namespace` field of a `ComputeSubnetwork` resource. type: string type: object tempLocation: description: The Cloud Storage path to use for temporary files. Must - be a valid Cloud Storage URL, beginning with gs://. + be a valid Cloud Storage URL, beginning with `gs://`. type: string - transformNameMapping: - description: Only applicable when updating a pipeline. Map of transform - name prefixes of the job to be replaced with the corresponding name - prefixes of the new job. + transformNameMappings: + additionalProperties: + type: string + description: Use this to pass transform_name_mappings for streaming + update jobs. Ex:{"oldTransformName":"newTransformName",...}' type: object - x-kubernetes-preserve-unknown-fields: true required: - containerSpecGcsPath + - region type: object status: + description: DataFlowFlexTemplateJobStatus defines the config connector + machine state of DataFlowFlexTemplateJob properties: conditions: - description: Conditions represent the latest available observation - of the resource's current state. + description: Conditions represent the latest available observations + of the object's current state. items: properties: lastTransitionTime: @@ -267,11 +287,24 @@ spec: If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource. + format: int64 type: integer state: + description: |- + The current state of the job. + + Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise + specified. + + A job in the `JOB_STATE_RUNNING` state may asynchronously enter a + terminal state. After a job has reached a terminal state, no + further state updates may be made. + + This field may be mutated by the Cloud Dataflow service; + callers cannot mutate it. type: string type: - description: The type of this job, selected from the JobType enum. + description: The type of Cloud Dataflow job. type: string type: object required: @@ -281,9 +314,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/dev/tools/controllerbuilder/generate.sh b/dev/tools/controllerbuilder/generate.sh index 42564054d40..3aa9f0f5412 100755 --- a/dev/tools/controllerbuilder/generate.sh +++ b/dev/tools/controllerbuilder/generate.sh @@ -24,6 +24,23 @@ cd ${REPO_ROOT}/dev/tools/controllerbuilder APIS_DIR=${REPO_ROOT}/apis/ OUTPUT_MAPPER=${REPO_ROOT}/pkg/controller/direct/ +# DataFlow +go run . generate-types \ + --proto-source-path ../proto-to-mapper/build/googleapis.pb \ + --service google.dataflow.v1beta3 \ + --api-version dataflow.cnrm.cloud.google.com/v1beta1 \ + --output-api ${APIS_DIR} \ + --kind DataFlowFlexTemplateJob \ + --proto-resource FlexTemplateRuntimeEnvironment + +go run . generate-mapper \ + --proto-source-path ../proto-to-mapper/build/googleapis.pb \ + --service google.dataflow.v1beta3 \ + --api-version dataflow.cnrm.cloud.google.com/v1alpha1 \ + --api-go-package-path github.com/GoogleCloudPlatform/k8s-config-connector/apis \ + --output-dir ${OUTPUT_MAPPER} \ + --api-dir ${APIS_DIR} + # SecureSourceManagerInstance go run . generate-types \ --proto-source-path ../proto-to-mapper/build/googleapis.pb \ diff --git a/dev/tools/proto-to-mapper/Makefile b/dev/tools/proto-to-mapper/Makefile index df64100ebe9..f1710cfb376 100644 --- a/dev/tools/proto-to-mapper/Makefile +++ b/dev/tools/proto-to-mapper/Makefile @@ -16,6 +16,7 @@ generate-pb: install-protoc-linux ./third_party/googleapis/google/bigtable/*/*/*.proto \ ./third_party/googleapis/google/cloud/*/*/*.proto \ ./third_party/googleapis/google/cloud/*/*/*/*.proto \ + ./third_party/googleapis/google/dataflow/*/*.proto \ ./third_party/googleapis/google/iam/v1/*.proto \ ./third_party/googleapis/google/logging/v2/*.proto \ ./third_party/googleapis/google/monitoring/v3/*.proto \ diff --git a/pkg/controller/direct/dataflow/mapper.generated.go b/pkg/controller/direct/dataflow/mapper.generated.go new file mode 100644 index 00000000000..eadc1b68137 --- /dev/null +++ b/pkg/controller/direct/dataflow/mapper.generated.go @@ -0,0 +1,1659 @@ +// Copyright 2024 Google LLC +// +// 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. + +package dataflow + +import ( + pb "cloud.google.com/go/dataflow/apiv1beta3/dataflowpb" + krm "github.com/GoogleCloudPlatform/k8s-config-connector/apis/dataflow/v1beta1" + "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/controller/direct" +) +func AutoscalingEvent_FromProto(mapCtx *direct.MapContext, in *pb.AutoscalingEvent) *krm.AutoscalingEvent { + if in == nil { + return nil + } + out := &krm.AutoscalingEvent{} + out.CurrentNumWorkers = direct.LazyPtr(in.GetCurrentNumWorkers()) + out.TargetNumWorkers = direct.LazyPtr(in.GetTargetNumWorkers()) + out.EventType = direct.Enum_FromProto(mapCtx, in.GetEventType()) + out.Description = StructuredMessage_FromProto(mapCtx, in.GetDescription()) + out.Time = AutoscalingEvent_Time_FromProto(mapCtx, in.GetTime()) + out.WorkerPool = direct.LazyPtr(in.GetWorkerPool()) + return out +} +func AutoscalingEvent_ToProto(mapCtx *direct.MapContext, in *krm.AutoscalingEvent) *pb.AutoscalingEvent { + if in == nil { + return nil + } + out := &pb.AutoscalingEvent{} + out.CurrentNumWorkers = direct.ValueOf(in.CurrentNumWorkers) + out.TargetNumWorkers = direct.ValueOf(in.TargetNumWorkers) + out.EventType = direct.Enum_ToProto[pb.AutoscalingEvent_AutoscalingEventType](mapCtx, in.EventType) + out.Description = StructuredMessage_ToProto(mapCtx, in.Description) + out.Time = AutoscalingEvent_Time_ToProto(mapCtx, in.Time) + out.WorkerPool = direct.ValueOf(in.WorkerPool) + return out +} +func AutoscalingSettings_FromProto(mapCtx *direct.MapContext, in *pb.AutoscalingSettings) *krm.AutoscalingSettings { + if in == nil { + return nil + } + out := &krm.AutoscalingSettings{} + out.Algorithm = direct.Enum_FromProto(mapCtx, in.GetAlgorithm()) + out.MaxNumWorkers = direct.LazyPtr(in.GetMaxNumWorkers()) + return out +} +func AutoscalingSettings_ToProto(mapCtx *direct.MapContext, in *krm.AutoscalingSettings) *pb.AutoscalingSettings { + if in == nil { + return nil + } + out := &pb.AutoscalingSettings{} + out.Algorithm = direct.Enum_ToProto[pb.AutoscalingAlgorithm](mapCtx, in.Algorithm) + out.MaxNumWorkers = direct.ValueOf(in.MaxNumWorkers) + return out +} +func BigQueryIODetails_FromProto(mapCtx *direct.MapContext, in *pb.BigQueryIODetails) *krm.BigQueryIODetails { + if in == nil { + return nil + } + out := &krm.BigQueryIODetails{} + out.Table = direct.LazyPtr(in.GetTable()) + out.Dataset = direct.LazyPtr(in.GetDataset()) + out.ProjectID = direct.LazyPtr(in.GetProjectId()) + out.Query = direct.LazyPtr(in.GetQuery()) + return out +} +func BigQueryIODetails_ToProto(mapCtx *direct.MapContext, in *krm.BigQueryIODetails) *pb.BigQueryIODetails { + if in == nil { + return nil + } + out := &pb.BigQueryIODetails{} + out.Table = direct.ValueOf(in.Table) + out.Dataset = direct.ValueOf(in.Dataset) + out.ProjectId = direct.ValueOf(in.ProjectID) + out.Query = direct.ValueOf(in.Query) + return out +} +func BigTableIODetails_FromProto(mapCtx *direct.MapContext, in *pb.BigTableIODetails) *krm.BigTableIODetails { + if in == nil { + return nil + } + out := &krm.BigTableIODetails{} + out.ProjectID = direct.LazyPtr(in.GetProjectId()) + out.InstanceID = direct.LazyPtr(in.GetInstanceId()) + out.TableID = direct.LazyPtr(in.GetTableId()) + return out +} +func BigTableIODetails_ToProto(mapCtx *direct.MapContext, in *krm.BigTableIODetails) *pb.BigTableIODetails { + if in == nil { + return nil + } + out := &pb.BigTableIODetails{} + out.ProjectId = direct.ValueOf(in.ProjectID) + out.InstanceId = direct.ValueOf(in.InstanceID) + out.TableId = direct.ValueOf(in.TableID) + return out +} +func ComputationTopology_FromProto(mapCtx *direct.MapContext, in *pb.ComputationTopology) *krm.ComputationTopology { + if in == nil { + return nil + } + out := &krm.ComputationTopology{} + out.SystemStageName = direct.LazyPtr(in.GetSystemStageName()) + out.ComputationID = direct.LazyPtr(in.GetComputationId()) + out.KeyRanges = direct.Slice_FromProto(mapCtx, in.KeyRanges, KeyRangeLocation_FromProto) + out.Inputs = direct.Slice_FromProto(mapCtx, in.Inputs, StreamLocation_FromProto) + out.Outputs = direct.Slice_FromProto(mapCtx, in.Outputs, StreamLocation_FromProto) + out.StateFamilies = direct.Slice_FromProto(mapCtx, in.StateFamilies, StateFamilyConfig_FromProto) + return out +} +func ComputationTopology_ToProto(mapCtx *direct.MapContext, in *krm.ComputationTopology) *pb.ComputationTopology { + if in == nil { + return nil + } + out := &pb.ComputationTopology{} + out.SystemStageName = direct.ValueOf(in.SystemStageName) + out.ComputationId = direct.ValueOf(in.ComputationID) + out.KeyRanges = direct.Slice_ToProto(mapCtx, in.KeyRanges, KeyRangeLocation_ToProto) + out.Inputs = direct.Slice_ToProto(mapCtx, in.Inputs, StreamLocation_ToProto) + out.Outputs = direct.Slice_ToProto(mapCtx, in.Outputs, StreamLocation_ToProto) + out.StateFamilies = direct.Slice_ToProto(mapCtx, in.StateFamilies, StateFamilyConfig_ToProto) + return out +} +func ContainerSpec_FromProto(mapCtx *direct.MapContext, in *pb.ContainerSpec) *krm.ContainerSpec { + if in == nil { + return nil + } + out := &krm.ContainerSpec{} + out.Image = direct.LazyPtr(in.GetImage()) + out.Metadata = TemplateMetadata_FromProto(mapCtx, in.GetMetadata()) + out.SdkInfo = SDKInfo_FromProto(mapCtx, in.GetSdkInfo()) + out.DefaultEnvironment = FlexTemplateRuntimeEnvironment_FromProto(mapCtx, in.GetDefaultEnvironment()) + return out +} +func ContainerSpec_ToProto(mapCtx *direct.MapContext, in *krm.ContainerSpec) *pb.ContainerSpec { + if in == nil { + return nil + } + out := &pb.ContainerSpec{} + out.Image = direct.ValueOf(in.Image) + out.Metadata = TemplateMetadata_ToProto(mapCtx, in.Metadata) + out.SdkInfo = SDKInfo_ToProto(mapCtx, in.SdkInfo) + out.DefaultEnvironment = FlexTemplateRuntimeEnvironment_ToProto(mapCtx, in.DefaultEnvironment) + return out +} +func CustomSourceLocation_FromProto(mapCtx *direct.MapContext, in *pb.CustomSourceLocation) *krm.CustomSourceLocation { + if in == nil { + return nil + } + out := &krm.CustomSourceLocation{} + out.Stateful = direct.LazyPtr(in.GetStateful()) + return out +} +func CustomSourceLocation_ToProto(mapCtx *direct.MapContext, in *krm.CustomSourceLocation) *pb.CustomSourceLocation { + if in == nil { + return nil + } + out := &pb.CustomSourceLocation{} + out.Stateful = direct.ValueOf(in.Stateful) + return out +} +func DataDiskAssignment_FromProto(mapCtx *direct.MapContext, in *pb.DataDiskAssignment) *krm.DataDiskAssignment { + if in == nil { + return nil + } + out := &krm.DataDiskAssignment{} + out.VmInstance = direct.LazyPtr(in.GetVmInstance()) + out.DataDisks = in.DataDisks + return out +} +func DataDiskAssignment_ToProto(mapCtx *direct.MapContext, in *krm.DataDiskAssignment) *pb.DataDiskAssignment { + if in == nil { + return nil + } + out := &pb.DataDiskAssignment{} + out.VmInstance = direct.ValueOf(in.VmInstance) + out.DataDisks = in.DataDisks + return out +} +func DataFlowFlexTemplateJobSpec_FromProto(mapCtx *direct.MapContext, in *pb.FlexTemplateRuntimeEnvironment) *krm.DataFlowFlexTemplateJobSpec { + if in == nil { + return nil + } + out := &krm.DataFlowFlexTemplateJobSpec{} + out.NumWorkers = direct.LazyPtr(in.GetNumWorkers()) + out.MaxWorkers = direct.LazyPtr(in.GetMaxWorkers()) + // MISSING: Zone + // MISSING: ServiceAccountEmail + out.TempLocation = direct.LazyPtr(in.GetTempLocation()) + out.MachineType = direct.LazyPtr(in.GetMachineType()) + out.AdditionalExperiments = in.AdditionalExperiments + // MISSING: Network + // MISSING: Subnetwork + // MISSING: AdditionalUserLabels + // MISSING: KmsKeyName + out.IpConfiguration = direct.Enum_FromProto(mapCtx, in.GetIpConfiguration()) + // MISSING: WorkerRegion + // MISSING: WorkerZone + out.EnableStreamingEngine = direct.LazyPtr(in.GetEnableStreamingEngine()) + // MISSING: FlexrsGoal + out.StagingLocation = direct.LazyPtr(in.GetStagingLocation()) + out.SdkContainerImage = direct.LazyPtr(in.GetSdkContainerImage()) + // MISSING: DiskSizeGb + out.AutoscalingAlgorithm = direct.Enum_FromProto(mapCtx, in.GetAutoscalingAlgorithm()) + // MISSING: DumpHeapOnOom + // MISSING: SaveHeapDumpsToGcsPath + out.LauncherMachineType = direct.LazyPtr(in.GetLauncherMachineType()) + return out +} +func DataFlowFlexTemplateJobSpec_ToProto(mapCtx *direct.MapContext, in *krm.DataFlowFlexTemplateJobSpec) *pb.FlexTemplateRuntimeEnvironment { + if in == nil { + return nil + } + out := &pb.FlexTemplateRuntimeEnvironment{} + out.NumWorkers = direct.ValueOf(in.NumWorkers) + out.MaxWorkers = direct.ValueOf(in.MaxWorkers) + // MISSING: Zone + // MISSING: ServiceAccountEmail + out.TempLocation = direct.ValueOf(in.TempLocation) + out.MachineType = direct.ValueOf(in.MachineType) + out.AdditionalExperiments = in.AdditionalExperiments + // MISSING: Network + // MISSING: Subnetwork + // MISSING: AdditionalUserLabels + // MISSING: KmsKeyName + out.IpConfiguration = direct.Enum_ToProto[pb.WorkerIPAddressConfiguration](mapCtx, in.IpConfiguration) + // MISSING: WorkerRegion + // MISSING: WorkerZone + out.EnableStreamingEngine = direct.ValueOf(in.EnableStreamingEngine) + // MISSING: FlexrsGoal + out.StagingLocation = direct.ValueOf(in.StagingLocation) + out.SdkContainerImage = direct.ValueOf(in.SdkContainerImage) + // MISSING: DiskSizeGb + out.AutoscalingAlgorithm = direct.Enum_ToProto[pb.AutoscalingAlgorithm](mapCtx, in.AutoscalingAlgorithm) + // MISSING: DumpHeapOnOom + // MISSING: SaveHeapDumpsToGcsPath + out.LauncherMachineType = direct.ValueOf(in.LauncherMachineType) + return out +} +func DatastoreIODetails_FromProto(mapCtx *direct.MapContext, in *pb.DatastoreIODetails) *krm.DatastoreIODetails { + if in == nil { + return nil + } + out := &krm.DatastoreIODetails{} + out.Namespace = direct.LazyPtr(in.GetNamespace()) + out.ProjectID = direct.LazyPtr(in.GetProjectId()) + return out +} +func DatastoreIODetails_ToProto(mapCtx *direct.MapContext, in *krm.DatastoreIODetails) *pb.DatastoreIODetails { + if in == nil { + return nil + } + out := &pb.DatastoreIODetails{} + out.Namespace = direct.ValueOf(in.Namespace) + out.ProjectId = direct.ValueOf(in.ProjectID) + return out +} +func DebugOptions_FromProto(mapCtx *direct.MapContext, in *pb.DebugOptions) *krm.DebugOptions { + if in == nil { + return nil + } + out := &krm.DebugOptions{} + out.EnableHotKeyLogging = direct.LazyPtr(in.GetEnableHotKeyLogging()) + return out +} +func DebugOptions_ToProto(mapCtx *direct.MapContext, in *krm.DebugOptions) *pb.DebugOptions { + if in == nil { + return nil + } + out := &pb.DebugOptions{} + out.EnableHotKeyLogging = direct.ValueOf(in.EnableHotKeyLogging) + return out +} +func Disk_FromProto(mapCtx *direct.MapContext, in *pb.Disk) *krm.Disk { + if in == nil { + return nil + } + out := &krm.Disk{} + out.SizeGb = direct.LazyPtr(in.GetSizeGb()) + out.DiskType = direct.LazyPtr(in.GetDiskType()) + out.MountPoint = direct.LazyPtr(in.GetMountPoint()) + return out +} +func Disk_ToProto(mapCtx *direct.MapContext, in *krm.Disk) *pb.Disk { + if in == nil { + return nil + } + out := &pb.Disk{} + out.SizeGb = direct.ValueOf(in.SizeGb) + out.DiskType = direct.ValueOf(in.DiskType) + out.MountPoint = direct.ValueOf(in.MountPoint) + return out +} +func DisplayData_FromProto(mapCtx *direct.MapContext, in *pb.DisplayData) *krm.DisplayData { + if in == nil { + return nil + } + out := &krm.DisplayData{} + out.Key = direct.LazyPtr(in.GetKey()) + out.Namespace = direct.LazyPtr(in.GetNamespace()) + out.StrValue = direct.LazyPtr(in.GetStrValue()) + out.Int64Value = direct.LazyPtr(in.GetInt64Value()) + out.FloatValue = direct.LazyPtr(in.GetFloatValue()) + out.JavaClassValue = direct.LazyPtr(in.GetJavaClassValue()) + out.TimestampValue = DisplayData_TimestampValue_FromProto(mapCtx, in.GetTimestampValue()) + out.DurationValue = DisplayData_DurationValue_FromProto(mapCtx, in.GetDurationValue()) + out.BoolValue = direct.LazyPtr(in.GetBoolValue()) + out.ShortStrValue = direct.LazyPtr(in.GetShortStrValue()) + out.URL = direct.LazyPtr(in.GetUrl()) + out.Label = direct.LazyPtr(in.GetLabel()) + return out +} +func DisplayData_ToProto(mapCtx *direct.MapContext, in *krm.DisplayData) *pb.DisplayData { + if in == nil { + return nil + } + out := &pb.DisplayData{} + out.Key = direct.ValueOf(in.Key) + out.Namespace = direct.ValueOf(in.Namespace) + if oneof := DisplayData_StrValue_ToProto(mapCtx, in.StrValue); oneof != nil { + out.Value = oneof + } + if oneof := DisplayData_Int64Value_ToProto(mapCtx, in.Int64Value); oneof != nil { + out.Value = oneof + } + if oneof := DisplayData_FloatValue_ToProto(mapCtx, in.FloatValue); oneof != nil { + out.Value = oneof + } + if oneof := DisplayData_JavaClassValue_ToProto(mapCtx, in.JavaClassValue); oneof != nil { + out.Value = oneof + } + if oneof := DisplayData_TimestampValue_ToProto(mapCtx, in.TimestampValue); oneof != nil { + out.Value = &pb.DisplayData_TimestampValue{TimestampValue: oneof} + } + if oneof := DisplayData_DurationValue_ToProto(mapCtx, in.DurationValue); oneof != nil { + out.Value = &pb.DisplayData_DurationValue{DurationValue: oneof} + } + if oneof := DisplayData_BoolValue_ToProto(mapCtx, in.BoolValue); oneof != nil { + out.Value = oneof + } + out.ShortStrValue = direct.ValueOf(in.ShortStrValue) + out.Url = direct.ValueOf(in.URL) + out.Label = direct.ValueOf(in.Label) + return out +} +func DynamicTemplateLaunchParams_FromProto(mapCtx *direct.MapContext, in *pb.DynamicTemplateLaunchParams) *krm.DynamicTemplateLaunchParams { + if in == nil { + return nil + } + out := &krm.DynamicTemplateLaunchParams{} + out.GcsPath = direct.LazyPtr(in.GetGcsPath()) + out.StagingLocation = direct.LazyPtr(in.GetStagingLocation()) + return out +} +func DynamicTemplateLaunchParams_ToProto(mapCtx *direct.MapContext, in *krm.DynamicTemplateLaunchParams) *pb.DynamicTemplateLaunchParams { + if in == nil { + return nil + } + out := &pb.DynamicTemplateLaunchParams{} + out.GcsPath = direct.ValueOf(in.GcsPath) + out.StagingLocation = direct.ValueOf(in.StagingLocation) + return out +} +func Environment_FromProto(mapCtx *direct.MapContext, in *pb.Environment) *krm.Environment { + if in == nil { + return nil + } + out := &krm.Environment{} + out.TempStoragePrefix = direct.LazyPtr(in.GetTempStoragePrefix()) + out.ClusterManagerApiService = direct.LazyPtr(in.GetClusterManagerApiService()) + out.Experiments = in.Experiments + out.ServiceOptions = in.ServiceOptions + out.ServiceKmsKeyName = direct.LazyPtr(in.GetServiceKmsKeyName()) + out.WorkerPools = direct.Slice_FromProto(mapCtx, in.WorkerPools, WorkerPool_FromProto) + out.UserAgent = google_protobuf_Struct_FromProto(mapCtx, in.GetUserAgent()) + out.Version = google_protobuf_Struct_FromProto(mapCtx, in.GetVersion()) + out.Dataset = direct.LazyPtr(in.GetDataset()) + out.SdkPipelineOptions = google_protobuf_Struct_FromProto(mapCtx, in.GetSdkPipelineOptions()) + out.InternalExperiments = google_protobuf_Any_FromProto(mapCtx, in.GetInternalExperiments()) + out.ServiceAccountEmail = direct.LazyPtr(in.GetServiceAccountEmail()) + out.FlexResourceSchedulingGoal = direct.Enum_FromProto(mapCtx, in.GetFlexResourceSchedulingGoal()) + out.WorkerRegion = direct.LazyPtr(in.GetWorkerRegion()) + out.WorkerZone = direct.LazyPtr(in.GetWorkerZone()) + out.ShuffleMode = direct.Enum_FromProto(mapCtx, in.GetShuffleMode()) + out.DebugOptions = DebugOptions_FromProto(mapCtx, in.GetDebugOptions()) + return out +} +func Environment_ToProto(mapCtx *direct.MapContext, in *krm.Environment) *pb.Environment { + if in == nil { + return nil + } + out := &pb.Environment{} + out.TempStoragePrefix = direct.ValueOf(in.TempStoragePrefix) + out.ClusterManagerApiService = direct.ValueOf(in.ClusterManagerApiService) + out.Experiments = in.Experiments + out.ServiceOptions = in.ServiceOptions + out.ServiceKmsKeyName = direct.ValueOf(in.ServiceKmsKeyName) + out.WorkerPools = direct.Slice_ToProto(mapCtx, in.WorkerPools, WorkerPool_ToProto) + out.UserAgent = google_protobuf_Struct_ToProto(mapCtx, in.UserAgent) + out.Version = google_protobuf_Struct_ToProto(mapCtx, in.Version) + out.Dataset = direct.ValueOf(in.Dataset) + out.SdkPipelineOptions = google_protobuf_Struct_ToProto(mapCtx, in.SdkPipelineOptions) + out.InternalExperiments = google_protobuf_Any_ToProto(mapCtx, in.InternalExperiments) + out.ServiceAccountEmail = direct.ValueOf(in.ServiceAccountEmail) + out.FlexResourceSchedulingGoal = direct.Enum_ToProto[pb.FlexResourceSchedulingGoal](mapCtx, in.FlexResourceSchedulingGoal) + out.WorkerRegion = direct.ValueOf(in.WorkerRegion) + out.WorkerZone = direct.ValueOf(in.WorkerZone) + out.ShuffleMode = direct.Enum_ToProto[pb.ShuffleMode](mapCtx, in.ShuffleMode) + out.DebugOptions = DebugOptions_ToProto(mapCtx, in.DebugOptions) + return out +} +func ExecutionStageState_FromProto(mapCtx *direct.MapContext, in *pb.ExecutionStageState) *krm.ExecutionStageState { + if in == nil { + return nil + } + out := &krm.ExecutionStageState{} + out.ExecutionStageName = direct.LazyPtr(in.GetExecutionStageName()) + out.ExecutionStageState = direct.Enum_FromProto(mapCtx, in.GetExecutionStageState()) + out.CurrentStateTime = ExecutionStageState_CurrentStateTime_FromProto(mapCtx, in.GetCurrentStateTime()) + return out +} +func ExecutionStageState_ToProto(mapCtx *direct.MapContext, in *krm.ExecutionStageState) *pb.ExecutionStageState { + if in == nil { + return nil + } + out := &pb.ExecutionStageState{} + out.ExecutionStageName = direct.ValueOf(in.ExecutionStageName) + out.ExecutionStageState = direct.Enum_ToProto[pb.JobState](mapCtx, in.ExecutionStageState) + out.CurrentStateTime = ExecutionStageState_CurrentStateTime_ToProto(mapCtx, in.CurrentStateTime) + return out +} +func ExecutionStageSummary_FromProto(mapCtx *direct.MapContext, in *pb.ExecutionStageSummary) *krm.ExecutionStageSummary { + if in == nil { + return nil + } + out := &krm.ExecutionStageSummary{} + out.Name = direct.LazyPtr(in.GetName()) + out.ID = direct.LazyPtr(in.GetId()) + out.Kind = direct.Enum_FromProto(mapCtx, in.GetKind()) + out.InputSource = direct.Slice_FromProto(mapCtx, in.InputSource, ExecutionStageSummary_StageSource_FromProto) + out.OutputSource = direct.Slice_FromProto(mapCtx, in.OutputSource, ExecutionStageSummary_StageSource_FromProto) + out.PrerequisiteStage = in.PrerequisiteStage + out.ComponentTransform = direct.Slice_FromProto(mapCtx, in.ComponentTransform, ExecutionStageSummary_ComponentTransform_FromProto) + out.ComponentSource = direct.Slice_FromProto(mapCtx, in.ComponentSource, ExecutionStageSummary_ComponentSource_FromProto) + return out +} +func ExecutionStageSummary_ToProto(mapCtx *direct.MapContext, in *krm.ExecutionStageSummary) *pb.ExecutionStageSummary { + if in == nil { + return nil + } + out := &pb.ExecutionStageSummary{} + out.Name = direct.ValueOf(in.Name) + out.Id = direct.ValueOf(in.ID) + out.Kind = direct.Enum_ToProto[pb.KindType](mapCtx, in.Kind) + out.InputSource = direct.Slice_ToProto(mapCtx, in.InputSource, ExecutionStageSummary_StageSource_ToProto) + out.OutputSource = direct.Slice_ToProto(mapCtx, in.OutputSource, ExecutionStageSummary_StageSource_ToProto) + out.PrerequisiteStage = in.PrerequisiteStage + out.ComponentTransform = direct.Slice_ToProto(mapCtx, in.ComponentTransform, ExecutionStageSummary_ComponentTransform_ToProto) + out.ComponentSource = direct.Slice_ToProto(mapCtx, in.ComponentSource, ExecutionStageSummary_ComponentSource_ToProto) + return out +} +func ExecutionStageSummary_ComponentSource_FromProto(mapCtx *direct.MapContext, in *pb.ExecutionStageSummary_ComponentSource) *krm.ExecutionStageSummary_ComponentSource { + if in == nil { + return nil + } + out := &krm.ExecutionStageSummary_ComponentSource{} + out.UserName = direct.LazyPtr(in.GetUserName()) + out.Name = direct.LazyPtr(in.GetName()) + out.OriginalTransformOrCollection = direct.LazyPtr(in.GetOriginalTransformOrCollection()) + return out +} +func ExecutionStageSummary_ComponentSource_ToProto(mapCtx *direct.MapContext, in *krm.ExecutionStageSummary_ComponentSource) *pb.ExecutionStageSummary_ComponentSource { + if in == nil { + return nil + } + out := &pb.ExecutionStageSummary_ComponentSource{} + out.UserName = direct.ValueOf(in.UserName) + out.Name = direct.ValueOf(in.Name) + out.OriginalTransformOrCollection = direct.ValueOf(in.OriginalTransformOrCollection) + return out +} +func ExecutionStageSummary_ComponentTransform_FromProto(mapCtx *direct.MapContext, in *pb.ExecutionStageSummary_ComponentTransform) *krm.ExecutionStageSummary_ComponentTransform { + if in == nil { + return nil + } + out := &krm.ExecutionStageSummary_ComponentTransform{} + out.UserName = direct.LazyPtr(in.GetUserName()) + out.Name = direct.LazyPtr(in.GetName()) + out.OriginalTransform = direct.LazyPtr(in.GetOriginalTransform()) + return out +} +func ExecutionStageSummary_ComponentTransform_ToProto(mapCtx *direct.MapContext, in *krm.ExecutionStageSummary_ComponentTransform) *pb.ExecutionStageSummary_ComponentTransform { + if in == nil { + return nil + } + out := &pb.ExecutionStageSummary_ComponentTransform{} + out.UserName = direct.ValueOf(in.UserName) + out.Name = direct.ValueOf(in.Name) + out.OriginalTransform = direct.ValueOf(in.OriginalTransform) + return out +} +func ExecutionStageSummary_StageSource_FromProto(mapCtx *direct.MapContext, in *pb.ExecutionStageSummary_StageSource) *krm.ExecutionStageSummary_StageSource { + if in == nil { + return nil + } + out := &krm.ExecutionStageSummary_StageSource{} + out.UserName = direct.LazyPtr(in.GetUserName()) + out.Name = direct.LazyPtr(in.GetName()) + out.OriginalTransformOrCollection = direct.LazyPtr(in.GetOriginalTransformOrCollection()) + out.SizeBytes = direct.LazyPtr(in.GetSizeBytes()) + return out +} +func ExecutionStageSummary_StageSource_ToProto(mapCtx *direct.MapContext, in *krm.ExecutionStageSummary_StageSource) *pb.ExecutionStageSummary_StageSource { + if in == nil { + return nil + } + out := &pb.ExecutionStageSummary_StageSource{} + out.UserName = direct.ValueOf(in.UserName) + out.Name = direct.ValueOf(in.Name) + out.OriginalTransformOrCollection = direct.ValueOf(in.OriginalTransformOrCollection) + out.SizeBytes = direct.ValueOf(in.SizeBytes) + return out +} +func FailedLocation_FromProto(mapCtx *direct.MapContext, in *pb.FailedLocation) *krm.FailedLocation { + if in == nil { + return nil + } + out := &krm.FailedLocation{} + out.Name = direct.LazyPtr(in.GetName()) + return out +} +func FailedLocation_ToProto(mapCtx *direct.MapContext, in *krm.FailedLocation) *pb.FailedLocation { + if in == nil { + return nil + } + out := &pb.FailedLocation{} + out.Name = direct.ValueOf(in.Name) + return out +} +func FileIODetails_FromProto(mapCtx *direct.MapContext, in *pb.FileIODetails) *krm.FileIODetails { + if in == nil { + return nil + } + out := &krm.FileIODetails{} + out.FilePattern = direct.LazyPtr(in.GetFilePattern()) + return out +} +func FileIODetails_ToProto(mapCtx *direct.MapContext, in *krm.FileIODetails) *pb.FileIODetails { + if in == nil { + return nil + } + out := &pb.FileIODetails{} + out.FilePattern = direct.ValueOf(in.FilePattern) + return out +} +func InvalidTemplateParameters_FromProto(mapCtx *direct.MapContext, in *pb.InvalidTemplateParameters) *krm.InvalidTemplateParameters { + if in == nil { + return nil + } + out := &krm.InvalidTemplateParameters{} + out.ParameterViolations = direct.Slice_FromProto(mapCtx, in.ParameterViolations, InvalidTemplateParameters_ParameterViolation_FromProto) + return out +} +func InvalidTemplateParameters_ToProto(mapCtx *direct.MapContext, in *krm.InvalidTemplateParameters) *pb.InvalidTemplateParameters { + if in == nil { + return nil + } + out := &pb.InvalidTemplateParameters{} + out.ParameterViolations = direct.Slice_ToProto(mapCtx, in.ParameterViolations, InvalidTemplateParameters_ParameterViolation_ToProto) + return out +} +func InvalidTemplateParameters_ParameterViolation_FromProto(mapCtx *direct.MapContext, in *pb.InvalidTemplateParameters_ParameterViolation) *krm.InvalidTemplateParameters_ParameterViolation { + if in == nil { + return nil + } + out := &krm.InvalidTemplateParameters_ParameterViolation{} + out.Parameter = direct.LazyPtr(in.GetParameter()) + out.Description = direct.LazyPtr(in.GetDescription()) + return out +} +func InvalidTemplateParameters_ParameterViolation_ToProto(mapCtx *direct.MapContext, in *krm.InvalidTemplateParameters_ParameterViolation) *pb.InvalidTemplateParameters_ParameterViolation { + if in == nil { + return nil + } + out := &pb.InvalidTemplateParameters_ParameterViolation{} + out.Parameter = direct.ValueOf(in.Parameter) + out.Description = direct.ValueOf(in.Description) + return out +} +func Job_FromProto(mapCtx *direct.MapContext, in *pb.Job) *krm.Job { + if in == nil { + return nil + } + out := &krm.Job{} + out.ID = direct.LazyPtr(in.GetId()) + out.ProjectID = direct.LazyPtr(in.GetProjectId()) + out.Name = direct.LazyPtr(in.GetName()) + out.Type = direct.Enum_FromProto(mapCtx, in.GetType()) + out.Environment = Environment_FromProto(mapCtx, in.GetEnvironment()) + out.Steps = direct.Slice_FromProto(mapCtx, in.Steps, Step_FromProto) + out.StepsLocation = direct.LazyPtr(in.GetStepsLocation()) + out.CurrentState = direct.Enum_FromProto(mapCtx, in.GetCurrentState()) + out.CurrentStateTime = Job_CurrentStateTime_FromProto(mapCtx, in.GetCurrentStateTime()) + out.RequestedState = direct.Enum_FromProto(mapCtx, in.GetRequestedState()) + out.ExecutionInfo = JobExecutionInfo_FromProto(mapCtx, in.GetExecutionInfo()) + out.CreateTime = Job_CreateTime_FromProto(mapCtx, in.GetCreateTime()) + out.ReplaceJobID = direct.LazyPtr(in.GetReplaceJobId()) + out.TransformNameMapping = in.TransformNameMapping + out.ClientRequestID = direct.LazyPtr(in.GetClientRequestId()) + out.ReplacedByJobID = direct.LazyPtr(in.GetReplacedByJobId()) + out.TempFiles = in.TempFiles + out.Labels = in.Labels + out.Location = direct.LazyPtr(in.GetLocation()) + out.PipelineDescription = PipelineDescription_FromProto(mapCtx, in.GetPipelineDescription()) + out.StageStates = direct.Slice_FromProto(mapCtx, in.StageStates, ExecutionStageState_FromProto) + out.JobMetadata = JobMetadata_FromProto(mapCtx, in.GetJobMetadata()) + out.StartTime = Job_StartTime_FromProto(mapCtx, in.GetStartTime()) + out.CreatedFromSnapshotID = direct.LazyPtr(in.GetCreatedFromSnapshotId()) + out.SatisfiesPzs = direct.LazyPtr(in.GetSatisfiesPzs()) + return out +} +func Job_ToProto(mapCtx *direct.MapContext, in *krm.Job) *pb.Job { + if in == nil { + return nil + } + out := &pb.Job{} + out.Id = direct.ValueOf(in.ID) + out.ProjectId = direct.ValueOf(in.ProjectID) + out.Name = direct.ValueOf(in.Name) + out.Type = direct.Enum_ToProto[pb.JobType](mapCtx, in.Type) + out.Environment = Environment_ToProto(mapCtx, in.Environment) + out.Steps = direct.Slice_ToProto(mapCtx, in.Steps, Step_ToProto) + out.StepsLocation = direct.ValueOf(in.StepsLocation) + out.CurrentState = direct.Enum_ToProto[pb.JobState](mapCtx, in.CurrentState) + out.CurrentStateTime = Job_CurrentStateTime_ToProto(mapCtx, in.CurrentStateTime) + out.RequestedState = direct.Enum_ToProto[pb.JobState](mapCtx, in.RequestedState) + out.ExecutionInfo = JobExecutionInfo_ToProto(mapCtx, in.ExecutionInfo) + out.CreateTime = Job_CreateTime_ToProto(mapCtx, in.CreateTime) + out.ReplaceJobId = direct.ValueOf(in.ReplaceJobID) + out.TransformNameMapping = in.TransformNameMapping + out.ClientRequestId = direct.ValueOf(in.ClientRequestID) + out.ReplacedByJobId = direct.ValueOf(in.ReplacedByJobID) + out.TempFiles = in.TempFiles + out.Labels = in.Labels + out.Location = direct.ValueOf(in.Location) + out.PipelineDescription = PipelineDescription_ToProto(mapCtx, in.PipelineDescription) + out.StageStates = direct.Slice_ToProto(mapCtx, in.StageStates, ExecutionStageState_ToProto) + out.JobMetadata = JobMetadata_ToProto(mapCtx, in.JobMetadata) + out.StartTime = Job_StartTime_ToProto(mapCtx, in.StartTime) + out.CreatedFromSnapshotId = direct.ValueOf(in.CreatedFromSnapshotID) + out.SatisfiesPzs = direct.ValueOf(in.SatisfiesPzs) + return out +} +func JobExecutionDetails_FromProto(mapCtx *direct.MapContext, in *pb.JobExecutionDetails) *krm.JobExecutionDetails { + if in == nil { + return nil + } + out := &krm.JobExecutionDetails{} + out.Stages = direct.Slice_FromProto(mapCtx, in.Stages, StageSummary_FromProto) + out.NextPageToken = direct.LazyPtr(in.GetNextPageToken()) + return out +} +func JobExecutionDetails_ToProto(mapCtx *direct.MapContext, in *krm.JobExecutionDetails) *pb.JobExecutionDetails { + if in == nil { + return nil + } + out := &pb.JobExecutionDetails{} + out.Stages = direct.Slice_ToProto(mapCtx, in.Stages, StageSummary_ToProto) + out.NextPageToken = direct.ValueOf(in.NextPageToken) + return out +} +func JobExecutionInfo_FromProto(mapCtx *direct.MapContext, in *pb.JobExecutionInfo) *krm.JobExecutionInfo { + if in == nil { + return nil + } + out := &krm.JobExecutionInfo{} + // MISSING: Stages + return out +} +func JobExecutionInfo_ToProto(mapCtx *direct.MapContext, in *krm.JobExecutionInfo) *pb.JobExecutionInfo { + if in == nil { + return nil + } + out := &pb.JobExecutionInfo{} + // MISSING: Stages + return out +} +func JobExecutionStageInfo_FromProto(mapCtx *direct.MapContext, in *pb.JobExecutionStageInfo) *krm.JobExecutionStageInfo { + if in == nil { + return nil + } + out := &krm.JobExecutionStageInfo{} + out.StepName = in.StepName + return out +} +func JobExecutionStageInfo_ToProto(mapCtx *direct.MapContext, in *krm.JobExecutionStageInfo) *pb.JobExecutionStageInfo { + if in == nil { + return nil + } + out := &pb.JobExecutionStageInfo{} + out.StepName = in.StepName + return out +} +func JobMessage_FromProto(mapCtx *direct.MapContext, in *pb.JobMessage) *krm.JobMessage { + if in == nil { + return nil + } + out := &krm.JobMessage{} + out.ID = direct.LazyPtr(in.GetId()) + out.Time = JobMessage_Time_FromProto(mapCtx, in.GetTime()) + out.MessageText = direct.LazyPtr(in.GetMessageText()) + out.MessageImportance = direct.Enum_FromProto(mapCtx, in.GetMessageImportance()) + return out +} +func JobMessage_ToProto(mapCtx *direct.MapContext, in *krm.JobMessage) *pb.JobMessage { + if in == nil { + return nil + } + out := &pb.JobMessage{} + out.Id = direct.ValueOf(in.ID) + out.Time = JobMessage_Time_ToProto(mapCtx, in.Time) + out.MessageText = direct.ValueOf(in.MessageText) + out.MessageImportance = direct.Enum_ToProto[pb.JobMessageImportance](mapCtx, in.MessageImportance) + return out +} +func JobMetrics_FromProto(mapCtx *direct.MapContext, in *pb.JobMetrics) *krm.JobMetrics { + if in == nil { + return nil + } + out := &krm.JobMetrics{} + out.MetricTime = JobMetrics_MetricTime_FromProto(mapCtx, in.GetMetricTime()) + out.Metrics = direct.Slice_FromProto(mapCtx, in.Metrics, MetricUpdate_FromProto) + return out +} +func JobMetrics_ToProto(mapCtx *direct.MapContext, in *krm.JobMetrics) *pb.JobMetrics { + if in == nil { + return nil + } + out := &pb.JobMetrics{} + out.MetricTime = JobMetrics_MetricTime_ToProto(mapCtx, in.MetricTime) + out.Metrics = direct.Slice_ToProto(mapCtx, in.Metrics, MetricUpdate_ToProto) + return out +} +func KeyRangeDataDiskAssignment_FromProto(mapCtx *direct.MapContext, in *pb.KeyRangeDataDiskAssignment) *krm.KeyRangeDataDiskAssignment { + if in == nil { + return nil + } + out := &krm.KeyRangeDataDiskAssignment{} + out.Start = direct.LazyPtr(in.GetStart()) + out.End = direct.LazyPtr(in.GetEnd()) + out.DataDisk = direct.LazyPtr(in.GetDataDisk()) + return out +} +func KeyRangeDataDiskAssignment_ToProto(mapCtx *direct.MapContext, in *krm.KeyRangeDataDiskAssignment) *pb.KeyRangeDataDiskAssignment { + if in == nil { + return nil + } + out := &pb.KeyRangeDataDiskAssignment{} + out.Start = direct.ValueOf(in.Start) + out.End = direct.ValueOf(in.End) + out.DataDisk = direct.ValueOf(in.DataDisk) + return out +} +func KeyRangeLocation_FromProto(mapCtx *direct.MapContext, in *pb.KeyRangeLocation) *krm.KeyRangeLocation { + if in == nil { + return nil + } + out := &krm.KeyRangeLocation{} + out.Start = direct.LazyPtr(in.GetStart()) + out.End = direct.LazyPtr(in.GetEnd()) + out.DeliveryEndpoint = direct.LazyPtr(in.GetDeliveryEndpoint()) + out.DataDisk = direct.LazyPtr(in.GetDataDisk()) + out.DeprecatedPersistentDirectory = direct.LazyPtr(in.GetDeprecatedPersistentDirectory()) + return out +} +func KeyRangeLocation_ToProto(mapCtx *direct.MapContext, in *krm.KeyRangeLocation) *pb.KeyRangeLocation { + if in == nil { + return nil + } + out := &pb.KeyRangeLocation{} + out.Start = direct.ValueOf(in.Start) + out.End = direct.ValueOf(in.End) + out.DeliveryEndpoint = direct.ValueOf(in.DeliveryEndpoint) + out.DataDisk = direct.ValueOf(in.DataDisk) + out.DeprecatedPersistentDirectory = direct.ValueOf(in.DeprecatedPersistentDirectory) + return out +} +func LaunchFlexTemplateParameter_FromProto(mapCtx *direct.MapContext, in *pb.LaunchFlexTemplateParameter) *krm.LaunchFlexTemplateParameter { + if in == nil { + return nil + } + out := &krm.LaunchFlexTemplateParameter{} + out.JobName = direct.LazyPtr(in.GetJobName()) + out.ContainerSpec = ContainerSpec_FromProto(mapCtx, in.GetContainerSpec()) + out.ContainerSpecGcsPath = direct.LazyPtr(in.GetContainerSpecGcsPath()) + out.Parameters = in.Parameters + out.LaunchOptions = in.LaunchOptions + out.Environment = FlexTemplateRuntimeEnvironment_FromProto(mapCtx, in.GetEnvironment()) + out.Update = direct.LazyPtr(in.GetUpdate()) + out.TransformNameMappings = in.TransformNameMappings + return out +} +func LaunchFlexTemplateParameter_ToProto(mapCtx *direct.MapContext, in *krm.LaunchFlexTemplateParameter) *pb.LaunchFlexTemplateParameter { + if in == nil { + return nil + } + out := &pb.LaunchFlexTemplateParameter{} + out.JobName = direct.ValueOf(in.JobName) + if oneof := ContainerSpec_ToProto(mapCtx, in.ContainerSpec); oneof != nil { + out.Template = &pb.LaunchFlexTemplateParameter_ContainerSpec{ContainerSpec: oneof} + } + if oneof := LaunchFlexTemplateParameter_ContainerSpecGcsPath_ToProto(mapCtx, in.ContainerSpecGcsPath); oneof != nil { + out.Template = oneof + } + out.Parameters = in.Parameters + out.LaunchOptions = in.LaunchOptions + out.Environment = FlexTemplateRuntimeEnvironment_ToProto(mapCtx, in.Environment) + out.Update = direct.ValueOf(in.Update) + out.TransformNameMappings = in.TransformNameMappings + return out +} +func LaunchTemplateParameters_FromProto(mapCtx *direct.MapContext, in *pb.LaunchTemplateParameters) *krm.LaunchTemplateParameters { + if in == nil { + return nil + } + out := &krm.LaunchTemplateParameters{} + out.JobName = direct.LazyPtr(in.GetJobName()) + out.Parameters = in.Parameters + out.Environment = RuntimeEnvironment_FromProto(mapCtx, in.GetEnvironment()) + out.Update = direct.LazyPtr(in.GetUpdate()) + out.TransformNameMapping = in.TransformNameMapping + return out +} +func LaunchTemplateParameters_ToProto(mapCtx *direct.MapContext, in *krm.LaunchTemplateParameters) *pb.LaunchTemplateParameters { + if in == nil { + return nil + } + out := &pb.LaunchTemplateParameters{} + out.JobName = direct.ValueOf(in.JobName) + out.Parameters = in.Parameters + out.Environment = RuntimeEnvironment_ToProto(mapCtx, in.Environment) + out.Update = direct.ValueOf(in.Update) + out.TransformNameMapping = in.TransformNameMapping + return out +} +func MetricStructuredName_FromProto(mapCtx *direct.MapContext, in *pb.MetricStructuredName) *krm.MetricStructuredName { + if in == nil { + return nil + } + out := &krm.MetricStructuredName{} + out.Origin = direct.LazyPtr(in.GetOrigin()) + out.Name = direct.LazyPtr(in.GetName()) + out.Context = in.Context + return out +} +func MetricStructuredName_ToProto(mapCtx *direct.MapContext, in *krm.MetricStructuredName) *pb.MetricStructuredName { + if in == nil { + return nil + } + out := &pb.MetricStructuredName{} + out.Origin = direct.ValueOf(in.Origin) + out.Name = direct.ValueOf(in.Name) + out.Context = in.Context + return out +} +func MetricUpdate_FromProto(mapCtx *direct.MapContext, in *pb.MetricUpdate) *krm.MetricUpdate { + if in == nil { + return nil + } + out := &krm.MetricUpdate{} + out.Name = MetricStructuredName_FromProto(mapCtx, in.GetName()) + out.Kind = direct.LazyPtr(in.GetKind()) + out.Cumulative = direct.LazyPtr(in.GetCumulative()) + out.Scalar = google_protobuf_Value_FromProto(mapCtx, in.GetScalar()) + out.MeanSum = google_protobuf_Value_FromProto(mapCtx, in.GetMeanSum()) + out.MeanCount = google_protobuf_Value_FromProto(mapCtx, in.GetMeanCount()) + out.Set = google_protobuf_Value_FromProto(mapCtx, in.GetSet()) + out.Distribution = google_protobuf_Value_FromProto(mapCtx, in.GetDistribution()) + out.Gauge = google_protobuf_Value_FromProto(mapCtx, in.GetGauge()) + out.Internal = google_protobuf_Value_FromProto(mapCtx, in.GetInternal()) + out.UpdateTime = MetricUpdate_UpdateTime_FromProto(mapCtx, in.GetUpdateTime()) + return out +} +func MetricUpdate_ToProto(mapCtx *direct.MapContext, in *krm.MetricUpdate) *pb.MetricUpdate { + if in == nil { + return nil + } + out := &pb.MetricUpdate{} + out.Name = MetricStructuredName_ToProto(mapCtx, in.Name) + out.Kind = direct.ValueOf(in.Kind) + out.Cumulative = direct.ValueOf(in.Cumulative) + out.Scalar = google_protobuf_Value_ToProto(mapCtx, in.Scalar) + out.MeanSum = google_protobuf_Value_ToProto(mapCtx, in.MeanSum) + out.MeanCount = google_protobuf_Value_ToProto(mapCtx, in.MeanCount) + out.Set = google_protobuf_Value_ToProto(mapCtx, in.Set) + out.Distribution = google_protobuf_Value_ToProto(mapCtx, in.Distribution) + out.Gauge = google_protobuf_Value_ToProto(mapCtx, in.Gauge) + out.Internal = google_protobuf_Value_ToProto(mapCtx, in.Internal) + out.UpdateTime = MetricUpdate_UpdateTime_ToProto(mapCtx, in.UpdateTime) + return out +} +func MountedDataDisk_FromProto(mapCtx *direct.MapContext, in *pb.MountedDataDisk) *krm.MountedDataDisk { + if in == nil { + return nil + } + out := &krm.MountedDataDisk{} + out.DataDisk = direct.LazyPtr(in.GetDataDisk()) + return out +} +func MountedDataDisk_ToProto(mapCtx *direct.MapContext, in *krm.MountedDataDisk) *pb.MountedDataDisk { + if in == nil { + return nil + } + out := &pb.MountedDataDisk{} + out.DataDisk = direct.ValueOf(in.DataDisk) + return out +} +func Package_FromProto(mapCtx *direct.MapContext, in *pb.Package) *krm.Package { + if in == nil { + return nil + } + out := &krm.Package{} + out.Name = direct.LazyPtr(in.GetName()) + out.Location = direct.LazyPtr(in.GetLocation()) + return out +} +func Package_ToProto(mapCtx *direct.MapContext, in *krm.Package) *pb.Package { + if in == nil { + return nil + } + out := &pb.Package{} + out.Name = direct.ValueOf(in.Name) + out.Location = direct.ValueOf(in.Location) + return out +} +func PipelineDescription_FromProto(mapCtx *direct.MapContext, in *pb.PipelineDescription) *krm.PipelineDescription { + if in == nil { + return nil + } + out := &krm.PipelineDescription{} + out.OriginalPipelineTransform = direct.Slice_FromProto(mapCtx, in.OriginalPipelineTransform, TransformSummary_FromProto) + out.ExecutionPipelineStage = direct.Slice_FromProto(mapCtx, in.ExecutionPipelineStage, ExecutionStageSummary_FromProto) + out.DisplayData = direct.Slice_FromProto(mapCtx, in.DisplayData, DisplayData_FromProto) + return out +} +func PipelineDescription_ToProto(mapCtx *direct.MapContext, in *krm.PipelineDescription) *pb.PipelineDescription { + if in == nil { + return nil + } + out := &pb.PipelineDescription{} + out.OriginalPipelineTransform = direct.Slice_ToProto(mapCtx, in.OriginalPipelineTransform, TransformSummary_ToProto) + out.ExecutionPipelineStage = direct.Slice_ToProto(mapCtx, in.ExecutionPipelineStage, ExecutionStageSummary_ToProto) + out.DisplayData = direct.Slice_ToProto(mapCtx, in.DisplayData, DisplayData_ToProto) + return out +} +func ProgressTimeseries_FromProto(mapCtx *direct.MapContext, in *pb.ProgressTimeseries) *krm.ProgressTimeseries { + if in == nil { + return nil + } + out := &krm.ProgressTimeseries{} + out.CurrentProgress = direct.LazyPtr(in.GetCurrentProgress()) + out.DataPoints = direct.Slice_FromProto(mapCtx, in.DataPoints, ProgressTimeseries_Point_FromProto) + return out +} +func ProgressTimeseries_ToProto(mapCtx *direct.MapContext, in *krm.ProgressTimeseries) *pb.ProgressTimeseries { + if in == nil { + return nil + } + out := &pb.ProgressTimeseries{} + out.CurrentProgress = direct.ValueOf(in.CurrentProgress) + out.DataPoints = direct.Slice_ToProto(mapCtx, in.DataPoints, ProgressTimeseries_Point_ToProto) + return out +} +func ProgressTimeseries_Point_FromProto(mapCtx *direct.MapContext, in *pb.ProgressTimeseries_Point) *krm.ProgressTimeseries_Point { + if in == nil { + return nil + } + out := &krm.ProgressTimeseries_Point{} + out.Time = Point_Time_FromProto(mapCtx, in.GetTime()) + out.Value = direct.LazyPtr(in.GetValue()) + return out +} +func ProgressTimeseries_Point_ToProto(mapCtx *direct.MapContext, in *krm.ProgressTimeseries_Point) *pb.ProgressTimeseries_Point { + if in == nil { + return nil + } + out := &pb.ProgressTimeseries_Point{} + out.Time = Point_Time_ToProto(mapCtx, in.Time) + out.Value = direct.ValueOf(in.Value) + return out +} +func PubSubIODetails_FromProto(mapCtx *direct.MapContext, in *pb.PubSubIODetails) *krm.PubSubIODetails { + if in == nil { + return nil + } + out := &krm.PubSubIODetails{} + out.Topic = direct.LazyPtr(in.GetTopic()) + out.Subscription = direct.LazyPtr(in.GetSubscription()) + return out +} +func PubSubIODetails_ToProto(mapCtx *direct.MapContext, in *krm.PubSubIODetails) *pb.PubSubIODetails { + if in == nil { + return nil + } + out := &pb.PubSubIODetails{} + out.Topic = direct.ValueOf(in.Topic) + out.Subscription = direct.ValueOf(in.Subscription) + return out +} +func PubsubLocation_FromProto(mapCtx *direct.MapContext, in *pb.PubsubLocation) *krm.PubsubLocation { + if in == nil { + return nil + } + out := &krm.PubsubLocation{} + out.Topic = direct.LazyPtr(in.GetTopic()) + out.Subscription = direct.LazyPtr(in.GetSubscription()) + out.TimestampLabel = direct.LazyPtr(in.GetTimestampLabel()) + out.IDLabel = direct.LazyPtr(in.GetIdLabel()) + out.DropLateData = direct.LazyPtr(in.GetDropLateData()) + out.TrackingSubscription = direct.LazyPtr(in.GetTrackingSubscription()) + out.WithAttributes = direct.LazyPtr(in.GetWithAttributes()) + return out +} +func PubsubLocation_ToProto(mapCtx *direct.MapContext, in *krm.PubsubLocation) *pb.PubsubLocation { + if in == nil { + return nil + } + out := &pb.PubsubLocation{} + out.Topic = direct.ValueOf(in.Topic) + out.Subscription = direct.ValueOf(in.Subscription) + out.TimestampLabel = direct.ValueOf(in.TimestampLabel) + out.IdLabel = direct.ValueOf(in.IDLabel) + out.DropLateData = direct.ValueOf(in.DropLateData) + out.TrackingSubscription = direct.ValueOf(in.TrackingSubscription) + out.WithAttributes = direct.ValueOf(in.WithAttributes) + return out +} +func RuntimeEnvironment_FromProto(mapCtx *direct.MapContext, in *pb.RuntimeEnvironment) *krm.RuntimeEnvironment { + if in == nil { + return nil + } + out := &krm.RuntimeEnvironment{} + out.NumWorkers = direct.LazyPtr(in.GetNumWorkers()) + out.MaxWorkers = direct.LazyPtr(in.GetMaxWorkers()) + out.Zone = direct.LazyPtr(in.GetZone()) + out.ServiceAccountEmail = direct.LazyPtr(in.GetServiceAccountEmail()) + out.TempLocation = direct.LazyPtr(in.GetTempLocation()) + out.BypassTempDirValidation = direct.LazyPtr(in.GetBypassTempDirValidation()) + out.MachineType = direct.LazyPtr(in.GetMachineType()) + out.AdditionalExperiments = in.AdditionalExperiments + out.Network = direct.LazyPtr(in.GetNetwork()) + out.Subnetwork = direct.LazyPtr(in.GetSubnetwork()) + out.AdditionalUserLabels = in.AdditionalUserLabels + out.KmsKeyName = direct.LazyPtr(in.GetKmsKeyName()) + out.IpConfiguration = direct.Enum_FromProto(mapCtx, in.GetIpConfiguration()) + out.WorkerRegion = direct.LazyPtr(in.GetWorkerRegion()) + out.WorkerZone = direct.LazyPtr(in.GetWorkerZone()) + out.EnableStreamingEngine = direct.LazyPtr(in.GetEnableStreamingEngine()) + return out +} +func RuntimeEnvironment_ToProto(mapCtx *direct.MapContext, in *krm.RuntimeEnvironment) *pb.RuntimeEnvironment { + if in == nil { + return nil + } + out := &pb.RuntimeEnvironment{} + out.NumWorkers = direct.ValueOf(in.NumWorkers) + out.MaxWorkers = direct.ValueOf(in.MaxWorkers) + out.Zone = direct.ValueOf(in.Zone) + out.ServiceAccountEmail = direct.ValueOf(in.ServiceAccountEmail) + out.TempLocation = direct.ValueOf(in.TempLocation) + out.BypassTempDirValidation = direct.ValueOf(in.BypassTempDirValidation) + out.MachineType = direct.ValueOf(in.MachineType) + out.AdditionalExperiments = in.AdditionalExperiments + out.Network = direct.ValueOf(in.Network) + out.Subnetwork = direct.ValueOf(in.Subnetwork) + out.AdditionalUserLabels = in.AdditionalUserLabels + out.KmsKeyName = direct.ValueOf(in.KmsKeyName) + out.IpConfiguration = direct.Enum_ToProto[pb.WorkerIPAddressConfiguration](mapCtx, in.IpConfiguration) + out.WorkerRegion = direct.ValueOf(in.WorkerRegion) + out.WorkerZone = direct.ValueOf(in.WorkerZone) + out.EnableStreamingEngine = direct.ValueOf(in.EnableStreamingEngine) + return out +} +func SDKInfo_FromProto(mapCtx *direct.MapContext, in *pb.SDKInfo) *krm.SDKInfo { + if in == nil { + return nil + } + out := &krm.SDKInfo{} + out.Language = direct.Enum_FromProto(mapCtx, in.GetLanguage()) + out.Version = direct.LazyPtr(in.GetVersion()) + return out +} +func SDKInfo_ToProto(mapCtx *direct.MapContext, in *krm.SDKInfo) *pb.SDKInfo { + if in == nil { + return nil + } + out := &pb.SDKInfo{} + out.Language = direct.Enum_ToProto[pb.SDKInfo_Language](mapCtx, in.Language) + out.Version = direct.ValueOf(in.Version) + return out +} +func SdkHarnessContainerImage_FromProto(mapCtx *direct.MapContext, in *pb.SdkHarnessContainerImage) *krm.SdkHarnessContainerImage { + if in == nil { + return nil + } + out := &krm.SdkHarnessContainerImage{} + out.ContainerImage = direct.LazyPtr(in.GetContainerImage()) + out.UseSingleCorePerContainer = direct.LazyPtr(in.GetUseSingleCorePerContainer()) + out.EnvironmentID = direct.LazyPtr(in.GetEnvironmentId()) + out.Capabilities = in.Capabilities + return out +} +func SdkHarnessContainerImage_ToProto(mapCtx *direct.MapContext, in *krm.SdkHarnessContainerImage) *pb.SdkHarnessContainerImage { + if in == nil { + return nil + } + out := &pb.SdkHarnessContainerImage{} + out.ContainerImage = direct.ValueOf(in.ContainerImage) + out.UseSingleCorePerContainer = direct.ValueOf(in.UseSingleCorePerContainer) + out.EnvironmentId = direct.ValueOf(in.EnvironmentID) + out.Capabilities = in.Capabilities + return out +} +func SdkVersion_FromProto(mapCtx *direct.MapContext, in *pb.SdkVersion) *krm.SdkVersion { + if in == nil { + return nil + } + out := &krm.SdkVersion{} + out.Version = direct.LazyPtr(in.GetVersion()) + out.VersionDisplayName = direct.LazyPtr(in.GetVersionDisplayName()) + out.SdkSupportStatus = direct.Enum_FromProto(mapCtx, in.GetSdkSupportStatus()) + return out +} +func SdkVersion_ToProto(mapCtx *direct.MapContext, in *krm.SdkVersion) *pb.SdkVersion { + if in == nil { + return nil + } + out := &pb.SdkVersion{} + out.Version = direct.ValueOf(in.Version) + out.VersionDisplayName = direct.ValueOf(in.VersionDisplayName) + out.SdkSupportStatus = direct.Enum_ToProto[pb.SdkVersion_SdkSupportStatus](mapCtx, in.SdkSupportStatus) + return out +} +func Snapshot_FromProto(mapCtx *direct.MapContext, in *pb.Snapshot) *krm.Snapshot { + if in == nil { + return nil + } + out := &krm.Snapshot{} + out.ID = direct.LazyPtr(in.GetId()) + out.ProjectID = direct.LazyPtr(in.GetProjectId()) + out.SourceJobID = direct.LazyPtr(in.GetSourceJobId()) + out.CreationTime = Snapshot_CreationTime_FromProto(mapCtx, in.GetCreationTime()) + out.Ttl = Snapshot_Ttl_FromProto(mapCtx, in.GetTtl()) + out.State = direct.Enum_FromProto(mapCtx, in.GetState()) + out.PubsubMetadata = direct.Slice_FromProto(mapCtx, in.PubsubMetadata, PubsubSnapshotMetadata_FromProto) + out.Description = direct.LazyPtr(in.GetDescription()) + out.DiskSizeBytes = direct.LazyPtr(in.GetDiskSizeBytes()) + out.Region = direct.LazyPtr(in.GetRegion()) + return out +} +func Snapshot_ToProto(mapCtx *direct.MapContext, in *krm.Snapshot) *pb.Snapshot { + if in == nil { + return nil + } + out := &pb.Snapshot{} + out.Id = direct.ValueOf(in.ID) + out.ProjectId = direct.ValueOf(in.ProjectID) + out.SourceJobId = direct.ValueOf(in.SourceJobID) + out.CreationTime = Snapshot_CreationTime_ToProto(mapCtx, in.CreationTime) + out.Ttl = Snapshot_Ttl_ToProto(mapCtx, in.Ttl) + out.State = direct.Enum_ToProto[pb.SnapshotState](mapCtx, in.State) + out.PubsubMetadata = direct.Slice_ToProto(mapCtx, in.PubsubMetadata, PubsubSnapshotMetadata_ToProto) + out.Description = direct.ValueOf(in.Description) + out.DiskSizeBytes = direct.ValueOf(in.DiskSizeBytes) + out.Region = direct.ValueOf(in.Region) + return out +} +func SpannerIODetails_FromProto(mapCtx *direct.MapContext, in *pb.SpannerIODetails) *krm.SpannerIODetails { + if in == nil { + return nil + } + out := &krm.SpannerIODetails{} + out.ProjectID = direct.LazyPtr(in.GetProjectId()) + out.InstanceID = direct.LazyPtr(in.GetInstanceId()) + out.DatabaseID = direct.LazyPtr(in.GetDatabaseId()) + return out +} +func SpannerIODetails_ToProto(mapCtx *direct.MapContext, in *krm.SpannerIODetails) *pb.SpannerIODetails { + if in == nil { + return nil + } + out := &pb.SpannerIODetails{} + out.ProjectId = direct.ValueOf(in.ProjectID) + out.InstanceId = direct.ValueOf(in.InstanceID) + out.DatabaseId = direct.ValueOf(in.DatabaseID) + return out +} +func StageExecutionDetails_FromProto(mapCtx *direct.MapContext, in *pb.StageExecutionDetails) *krm.StageExecutionDetails { + if in == nil { + return nil + } + out := &krm.StageExecutionDetails{} + out.Workers = direct.Slice_FromProto(mapCtx, in.Workers, WorkerDetails_FromProto) + out.NextPageToken = direct.LazyPtr(in.GetNextPageToken()) + return out +} +func StageExecutionDetails_ToProto(mapCtx *direct.MapContext, in *krm.StageExecutionDetails) *pb.StageExecutionDetails { + if in == nil { + return nil + } + out := &pb.StageExecutionDetails{} + out.Workers = direct.Slice_ToProto(mapCtx, in.Workers, WorkerDetails_ToProto) + out.NextPageToken = direct.ValueOf(in.NextPageToken) + return out +} +func StageSummary_FromProto(mapCtx *direct.MapContext, in *pb.StageSummary) *krm.StageSummary { + if in == nil { + return nil + } + out := &krm.StageSummary{} + out.StageID = direct.LazyPtr(in.GetStageId()) + out.State = direct.Enum_FromProto(mapCtx, in.GetState()) + out.StartTime = StageSummary_StartTime_FromProto(mapCtx, in.GetStartTime()) + out.EndTime = StageSummary_EndTime_FromProto(mapCtx, in.GetEndTime()) + out.Progress = ProgressTimeseries_FromProto(mapCtx, in.GetProgress()) + out.Metrics = direct.Slice_FromProto(mapCtx, in.Metrics, MetricUpdate_FromProto) + return out +} +func StageSummary_ToProto(mapCtx *direct.MapContext, in *krm.StageSummary) *pb.StageSummary { + if in == nil { + return nil + } + out := &pb.StageSummary{} + out.StageId = direct.ValueOf(in.StageID) + out.State = direct.Enum_ToProto[pb.ExecutionState](mapCtx, in.State) + out.StartTime = StageSummary_StartTime_ToProto(mapCtx, in.StartTime) + out.EndTime = StageSummary_EndTime_ToProto(mapCtx, in.EndTime) + out.Progress = ProgressTimeseries_ToProto(mapCtx, in.Progress) + out.Metrics = direct.Slice_ToProto(mapCtx, in.Metrics, MetricUpdate_ToProto) + return out +} +func StateFamilyConfig_FromProto(mapCtx *direct.MapContext, in *pb.StateFamilyConfig) *krm.StateFamilyConfig { + if in == nil { + return nil + } + out := &krm.StateFamilyConfig{} + out.StateFamily = direct.LazyPtr(in.GetStateFamily()) + out.IsRead = direct.LazyPtr(in.GetIsRead()) + return out +} +func StateFamilyConfig_ToProto(mapCtx *direct.MapContext, in *krm.StateFamilyConfig) *pb.StateFamilyConfig { + if in == nil { + return nil + } + out := &pb.StateFamilyConfig{} + out.StateFamily = direct.ValueOf(in.StateFamily) + out.IsRead = direct.ValueOf(in.IsRead) + return out +} +func Step_FromProto(mapCtx *direct.MapContext, in *pb.Step) *krm.Step { + if in == nil { + return nil + } + out := &krm.Step{} + out.Kind = direct.LazyPtr(in.GetKind()) + out.Name = direct.LazyPtr(in.GetName()) + out.Properties = google_protobuf_Struct_FromProto(mapCtx, in.GetProperties()) + return out +} +func Step_ToProto(mapCtx *direct.MapContext, in *krm.Step) *pb.Step { + if in == nil { + return nil + } + out := &pb.Step{} + out.Kind = direct.ValueOf(in.Kind) + out.Name = direct.ValueOf(in.Name) + out.Properties = google_protobuf_Struct_ToProto(mapCtx, in.Properties) + return out +} +func StreamLocation_FromProto(mapCtx *direct.MapContext, in *pb.StreamLocation) *krm.StreamLocation { + if in == nil { + return nil + } + out := &krm.StreamLocation{} + out.StreamingStageLocation = StreamingStageLocation_FromProto(mapCtx, in.GetStreamingStageLocation()) + out.PubsubLocation = PubsubLocation_FromProto(mapCtx, in.GetPubsubLocation()) + out.SideInputLocation = StreamingSideInputLocation_FromProto(mapCtx, in.GetSideInputLocation()) + out.CustomSourceLocation = CustomSourceLocation_FromProto(mapCtx, in.GetCustomSourceLocation()) + return out +} +func StreamLocation_ToProto(mapCtx *direct.MapContext, in *krm.StreamLocation) *pb.StreamLocation { + if in == nil { + return nil + } + out := &pb.StreamLocation{} + if oneof := StreamingStageLocation_ToProto(mapCtx, in.StreamingStageLocation); oneof != nil { + out.Location = &pb.StreamLocation_StreamingStageLocation{StreamingStageLocation: oneof} + } + if oneof := PubsubLocation_ToProto(mapCtx, in.PubsubLocation); oneof != nil { + out.Location = &pb.StreamLocation_PubsubLocation{PubsubLocation: oneof} + } + if oneof := StreamingSideInputLocation_ToProto(mapCtx, in.SideInputLocation); oneof != nil { + out.Location = &pb.StreamLocation_SideInputLocation{SideInputLocation: oneof} + } + if oneof := CustomSourceLocation_ToProto(mapCtx, in.CustomSourceLocation); oneof != nil { + out.Location = &pb.StreamLocation_CustomSourceLocation{CustomSourceLocation: oneof} + } + return out +} +func StreamingApplianceSnapshotConfig_FromProto(mapCtx *direct.MapContext, in *pb.StreamingApplianceSnapshotConfig) *krm.StreamingApplianceSnapshotConfig { + if in == nil { + return nil + } + out := &krm.StreamingApplianceSnapshotConfig{} + out.SnapshotID = direct.LazyPtr(in.GetSnapshotId()) + out.ImportStateEndpoint = direct.LazyPtr(in.GetImportStateEndpoint()) + return out +} +func StreamingApplianceSnapshotConfig_ToProto(mapCtx *direct.MapContext, in *krm.StreamingApplianceSnapshotConfig) *pb.StreamingApplianceSnapshotConfig { + if in == nil { + return nil + } + out := &pb.StreamingApplianceSnapshotConfig{} + out.SnapshotId = direct.ValueOf(in.SnapshotID) + out.ImportStateEndpoint = direct.ValueOf(in.ImportStateEndpoint) + return out +} +func StreamingComputationRanges_FromProto(mapCtx *direct.MapContext, in *pb.StreamingComputationRanges) *krm.StreamingComputationRanges { + if in == nil { + return nil + } + out := &krm.StreamingComputationRanges{} + out.ComputationID = direct.LazyPtr(in.GetComputationId()) + out.RangeAssignments = direct.Slice_FromProto(mapCtx, in.RangeAssignments, KeyRangeDataDiskAssignment_FromProto) + return out +} +func StreamingComputationRanges_ToProto(mapCtx *direct.MapContext, in *krm.StreamingComputationRanges) *pb.StreamingComputationRanges { + if in == nil { + return nil + } + out := &pb.StreamingComputationRanges{} + out.ComputationId = direct.ValueOf(in.ComputationID) + out.RangeAssignments = direct.Slice_ToProto(mapCtx, in.RangeAssignments, KeyRangeDataDiskAssignment_ToProto) + return out +} +func StreamingSideInputLocation_FromProto(mapCtx *direct.MapContext, in *pb.StreamingSideInputLocation) *krm.StreamingSideInputLocation { + if in == nil { + return nil + } + out := &krm.StreamingSideInputLocation{} + out.Tag = direct.LazyPtr(in.GetTag()) + out.StateFamily = direct.LazyPtr(in.GetStateFamily()) + return out +} +func StreamingSideInputLocation_ToProto(mapCtx *direct.MapContext, in *krm.StreamingSideInputLocation) *pb.StreamingSideInputLocation { + if in == nil { + return nil + } + out := &pb.StreamingSideInputLocation{} + out.Tag = direct.ValueOf(in.Tag) + out.StateFamily = direct.ValueOf(in.StateFamily) + return out +} +func StreamingStageLocation_FromProto(mapCtx *direct.MapContext, in *pb.StreamingStageLocation) *krm.StreamingStageLocation { + if in == nil { + return nil + } + out := &krm.StreamingStageLocation{} + out.StreamID = direct.LazyPtr(in.GetStreamId()) + return out +} +func StreamingStageLocation_ToProto(mapCtx *direct.MapContext, in *krm.StreamingStageLocation) *pb.StreamingStageLocation { + if in == nil { + return nil + } + out := &pb.StreamingStageLocation{} + out.StreamId = direct.ValueOf(in.StreamID) + return out +} +func StructuredMessage_FromProto(mapCtx *direct.MapContext, in *pb.StructuredMessage) *krm.StructuredMessage { + if in == nil { + return nil + } + out := &krm.StructuredMessage{} + out.MessageText = direct.LazyPtr(in.GetMessageText()) + out.MessageKey = direct.LazyPtr(in.GetMessageKey()) + out.Parameters = direct.Slice_FromProto(mapCtx, in.Parameters, StructuredMessage_Parameter_FromProto) + return out +} +func StructuredMessage_ToProto(mapCtx *direct.MapContext, in *krm.StructuredMessage) *pb.StructuredMessage { + if in == nil { + return nil + } + out := &pb.StructuredMessage{} + out.MessageText = direct.ValueOf(in.MessageText) + out.MessageKey = direct.ValueOf(in.MessageKey) + out.Parameters = direct.Slice_ToProto(mapCtx, in.Parameters, StructuredMessage_Parameter_ToProto) + return out +} +func StructuredMessage_Parameter_FromProto(mapCtx *direct.MapContext, in *pb.StructuredMessage_Parameter) *krm.StructuredMessage_Parameter { + if in == nil { + return nil + } + out := &krm.StructuredMessage_Parameter{} + out.Key = direct.LazyPtr(in.GetKey()) + out.Value = google_protobuf_Value_FromProto(mapCtx, in.GetValue()) + return out +} +func StructuredMessage_Parameter_ToProto(mapCtx *direct.MapContext, in *krm.StructuredMessage_Parameter) *pb.StructuredMessage_Parameter { + if in == nil { + return nil + } + out := &pb.StructuredMessage_Parameter{} + out.Key = direct.ValueOf(in.Key) + out.Value = google_protobuf_Value_ToProto(mapCtx, in.Value) + return out +} +func TaskRunnerSettings_FromProto(mapCtx *direct.MapContext, in *pb.TaskRunnerSettings) *krm.TaskRunnerSettings { + if in == nil { + return nil + } + out := &krm.TaskRunnerSettings{} + out.TaskUser = direct.LazyPtr(in.GetTaskUser()) + out.TaskGroup = direct.LazyPtr(in.GetTaskGroup()) + out.OauthScopes = in.OauthScopes + out.BaseURL = direct.LazyPtr(in.GetBaseUrl()) + out.DataflowApiVersion = direct.LazyPtr(in.GetDataflowApiVersion()) + out.ParallelWorkerSettings = WorkerSettings_FromProto(mapCtx, in.GetParallelWorkerSettings()) + out.BaseTaskDir = direct.LazyPtr(in.GetBaseTaskDir()) + out.ContinueOnException = direct.LazyPtr(in.GetContinueOnException()) + out.LogToSerialconsole = direct.LazyPtr(in.GetLogToSerialconsole()) + out.Alsologtostderr = direct.LazyPtr(in.GetAlsologtostderr()) + out.LogUploadLocation = direct.LazyPtr(in.GetLogUploadLocation()) + out.LogDir = direct.LazyPtr(in.GetLogDir()) + out.TempStoragePrefix = direct.LazyPtr(in.GetTempStoragePrefix()) + out.HarnessCommand = direct.LazyPtr(in.GetHarnessCommand()) + out.WorkflowFileName = direct.LazyPtr(in.GetWorkflowFileName()) + out.CommandlinesFileName = direct.LazyPtr(in.GetCommandlinesFileName()) + out.VmID = direct.LazyPtr(in.GetVmId()) + out.LanguageHint = direct.LazyPtr(in.GetLanguageHint()) + out.StreamingWorkerMainClass = direct.LazyPtr(in.GetStreamingWorkerMainClass()) + return out +} +func TaskRunnerSettings_ToProto(mapCtx *direct.MapContext, in *krm.TaskRunnerSettings) *pb.TaskRunnerSettings { + if in == nil { + return nil + } + out := &pb.TaskRunnerSettings{} + out.TaskUser = direct.ValueOf(in.TaskUser) + out.TaskGroup = direct.ValueOf(in.TaskGroup) + out.OauthScopes = in.OauthScopes + out.BaseUrl = direct.ValueOf(in.BaseURL) + out.DataflowApiVersion = direct.ValueOf(in.DataflowApiVersion) + out.ParallelWorkerSettings = WorkerSettings_ToProto(mapCtx, in.ParallelWorkerSettings) + out.BaseTaskDir = direct.ValueOf(in.BaseTaskDir) + out.ContinueOnException = direct.ValueOf(in.ContinueOnException) + out.LogToSerialconsole = direct.ValueOf(in.LogToSerialconsole) + out.Alsologtostderr = direct.ValueOf(in.Alsologtostderr) + out.LogUploadLocation = direct.ValueOf(in.LogUploadLocation) + out.LogDir = direct.ValueOf(in.LogDir) + out.TempStoragePrefix = direct.ValueOf(in.TempStoragePrefix) + out.HarnessCommand = direct.ValueOf(in.HarnessCommand) + out.WorkflowFileName = direct.ValueOf(in.WorkflowFileName) + out.CommandlinesFileName = direct.ValueOf(in.CommandlinesFileName) + out.VmId = direct.ValueOf(in.VmID) + out.LanguageHint = direct.ValueOf(in.LanguageHint) + out.StreamingWorkerMainClass = direct.ValueOf(in.StreamingWorkerMainClass) + return out +} +func TopologyConfig_FromProto(mapCtx *direct.MapContext, in *pb.TopologyConfig) *krm.TopologyConfig { + if in == nil { + return nil + } + out := &krm.TopologyConfig{} + out.Computations = direct.Slice_FromProto(mapCtx, in.Computations, ComputationTopology_FromProto) + out.DataDiskAssignments = direct.Slice_FromProto(mapCtx, in.DataDiskAssignments, DataDiskAssignment_FromProto) + out.UserStageToComputationNameMap = in.UserStageToComputationNameMap + out.ForwardingKeyBits = direct.LazyPtr(in.GetForwardingKeyBits()) + out.PersistentStateVersion = direct.LazyPtr(in.GetPersistentStateVersion()) + return out +} +func TopologyConfig_ToProto(mapCtx *direct.MapContext, in *krm.TopologyConfig) *pb.TopologyConfig { + if in == nil { + return nil + } + out := &pb.TopologyConfig{} + out.Computations = direct.Slice_ToProto(mapCtx, in.Computations, ComputationTopology_ToProto) + out.DataDiskAssignments = direct.Slice_ToProto(mapCtx, in.DataDiskAssignments, DataDiskAssignment_ToProto) + out.UserStageToComputationNameMap = in.UserStageToComputationNameMap + out.ForwardingKeyBits = direct.ValueOf(in.ForwardingKeyBits) + out.PersistentStateVersion = direct.ValueOf(in.PersistentStateVersion) + return out +} +func TransformSummary_FromProto(mapCtx *direct.MapContext, in *pb.TransformSummary) *krm.TransformSummary { + if in == nil { + return nil + } + out := &krm.TransformSummary{} + out.Kind = direct.Enum_FromProto(mapCtx, in.GetKind()) + out.ID = direct.LazyPtr(in.GetId()) + out.Name = direct.LazyPtr(in.GetName()) + out.DisplayData = direct.Slice_FromProto(mapCtx, in.DisplayData, DisplayData_FromProto) + out.OutputCollectionName = in.OutputCollectionName + out.InputCollectionName = in.InputCollectionName + return out +} +func TransformSummary_ToProto(mapCtx *direct.MapContext, in *krm.TransformSummary) *pb.TransformSummary { + if in == nil { + return nil + } + out := &pb.TransformSummary{} + out.Kind = direct.Enum_ToProto[pb.KindType](mapCtx, in.Kind) + out.Id = direct.ValueOf(in.ID) + out.Name = direct.ValueOf(in.Name) + out.DisplayData = direct.Slice_ToProto(mapCtx, in.DisplayData, DisplayData_ToProto) + out.OutputCollectionName = in.OutputCollectionName + out.InputCollectionName = in.InputCollectionName + return out +} +func WorkItemDetails_FromProto(mapCtx *direct.MapContext, in *pb.WorkItemDetails) *krm.WorkItemDetails { + if in == nil { + return nil + } + out := &krm.WorkItemDetails{} + out.TaskID = direct.LazyPtr(in.GetTaskId()) + out.AttemptID = direct.LazyPtr(in.GetAttemptId()) + out.StartTime = WorkItemDetails_StartTime_FromProto(mapCtx, in.GetStartTime()) + out.EndTime = WorkItemDetails_EndTime_FromProto(mapCtx, in.GetEndTime()) + out.State = direct.Enum_FromProto(mapCtx, in.GetState()) + out.Progress = ProgressTimeseries_FromProto(mapCtx, in.GetProgress()) + out.Metrics = direct.Slice_FromProto(mapCtx, in.Metrics, MetricUpdate_FromProto) + return out +} +func WorkItemDetails_ToProto(mapCtx *direct.MapContext, in *krm.WorkItemDetails) *pb.WorkItemDetails { + if in == nil { + return nil + } + out := &pb.WorkItemDetails{} + out.TaskId = direct.ValueOf(in.TaskID) + out.AttemptId = direct.ValueOf(in.AttemptID) + out.StartTime = WorkItemDetails_StartTime_ToProto(mapCtx, in.StartTime) + out.EndTime = WorkItemDetails_EndTime_ToProto(mapCtx, in.EndTime) + out.State = direct.Enum_ToProto[pb.ExecutionState](mapCtx, in.State) + out.Progress = ProgressTimeseries_ToProto(mapCtx, in.Progress) + out.Metrics = direct.Slice_ToProto(mapCtx, in.Metrics, MetricUpdate_ToProto) + return out +} +func WorkerDetails_FromProto(mapCtx *direct.MapContext, in *pb.WorkerDetails) *krm.WorkerDetails { + if in == nil { + return nil + } + out := &krm.WorkerDetails{} + out.WorkerName = direct.LazyPtr(in.GetWorkerName()) + out.WorkItems = direct.Slice_FromProto(mapCtx, in.WorkItems, WorkItemDetails_FromProto) + return out +} +func WorkerDetails_ToProto(mapCtx *direct.MapContext, in *krm.WorkerDetails) *pb.WorkerDetails { + if in == nil { + return nil + } + out := &pb.WorkerDetails{} + out.WorkerName = direct.ValueOf(in.WorkerName) + out.WorkItems = direct.Slice_ToProto(mapCtx, in.WorkItems, WorkItemDetails_ToProto) + return out +} +func WorkerPool_FromProto(mapCtx *direct.MapContext, in *pb.WorkerPool) *krm.WorkerPool { + if in == nil { + return nil + } + out := &krm.WorkerPool{} + out.Kind = direct.LazyPtr(in.GetKind()) + out.NumWorkers = direct.LazyPtr(in.GetNumWorkers()) + out.Packages = direct.Slice_FromProto(mapCtx, in.Packages, Package_FromProto) + out.DefaultPackageSet = direct.Enum_FromProto(mapCtx, in.GetDefaultPackageSet()) + out.MachineType = direct.LazyPtr(in.GetMachineType()) + out.TeardownPolicy = direct.Enum_FromProto(mapCtx, in.GetTeardownPolicy()) + out.DiskSizeGb = direct.LazyPtr(in.GetDiskSizeGb()) + out.DiskType = direct.LazyPtr(in.GetDiskType()) + out.DiskSourceImage = direct.LazyPtr(in.GetDiskSourceImage()) + out.Zone = direct.LazyPtr(in.GetZone()) + out.TaskrunnerSettings = TaskRunnerSettings_FromProto(mapCtx, in.GetTaskrunnerSettings()) + out.OnHostMaintenance = direct.LazyPtr(in.GetOnHostMaintenance()) + out.DataDisks = direct.Slice_FromProto(mapCtx, in.DataDisks, Disk_FromProto) + out.Metadata = in.Metadata + out.AutoscalingSettings = AutoscalingSettings_FromProto(mapCtx, in.GetAutoscalingSettings()) + out.PoolArgs = google_protobuf_Any_FromProto(mapCtx, in.GetPoolArgs()) + out.Network = direct.LazyPtr(in.GetNetwork()) + out.Subnetwork = direct.LazyPtr(in.GetSubnetwork()) + out.WorkerHarnessContainerImage = direct.LazyPtr(in.GetWorkerHarnessContainerImage()) + out.NumThreadsPerWorker = direct.LazyPtr(in.GetNumThreadsPerWorker()) + out.IpConfiguration = direct.Enum_FromProto(mapCtx, in.GetIpConfiguration()) + out.SdkHarnessContainerImages = direct.Slice_FromProto(mapCtx, in.SdkHarnessContainerImages, SdkHarnessContainerImage_FromProto) + return out +} +func WorkerPool_ToProto(mapCtx *direct.MapContext, in *krm.WorkerPool) *pb.WorkerPool { + if in == nil { + return nil + } + out := &pb.WorkerPool{} + out.Kind = direct.ValueOf(in.Kind) + out.NumWorkers = direct.ValueOf(in.NumWorkers) + out.Packages = direct.Slice_ToProto(mapCtx, in.Packages, Package_ToProto) + out.DefaultPackageSet = direct.Enum_ToProto[pb.DefaultPackageSet](mapCtx, in.DefaultPackageSet) + out.MachineType = direct.ValueOf(in.MachineType) + out.TeardownPolicy = direct.Enum_ToProto[pb.TeardownPolicy](mapCtx, in.TeardownPolicy) + out.DiskSizeGb = direct.ValueOf(in.DiskSizeGb) + out.DiskType = direct.ValueOf(in.DiskType) + out.DiskSourceImage = direct.ValueOf(in.DiskSourceImage) + out.Zone = direct.ValueOf(in.Zone) + out.TaskrunnerSettings = TaskRunnerSettings_ToProto(mapCtx, in.TaskrunnerSettings) + out.OnHostMaintenance = direct.ValueOf(in.OnHostMaintenance) + out.DataDisks = direct.Slice_ToProto(mapCtx, in.DataDisks, Disk_ToProto) + out.Metadata = in.Metadata + out.AutoscalingSettings = AutoscalingSettings_ToProto(mapCtx, in.AutoscalingSettings) + out.PoolArgs = google_protobuf_Any_ToProto(mapCtx, in.PoolArgs) + out.Network = direct.ValueOf(in.Network) + out.Subnetwork = direct.ValueOf(in.Subnetwork) + out.WorkerHarnessContainerImage = direct.ValueOf(in.WorkerHarnessContainerImage) + out.NumThreadsPerWorker = direct.ValueOf(in.NumThreadsPerWorker) + out.IpConfiguration = direct.Enum_ToProto[pb.WorkerIPAddressConfiguration](mapCtx, in.IpConfiguration) + out.SdkHarnessContainerImages = direct.Slice_ToProto(mapCtx, in.SdkHarnessContainerImages, SdkHarnessContainerImage_ToProto) + return out +} +func WorkerSettings_FromProto(mapCtx *direct.MapContext, in *pb.WorkerSettings) *krm.WorkerSettings { + if in == nil { + return nil + } + out := &krm.WorkerSettings{} + out.BaseURL = direct.LazyPtr(in.GetBaseUrl()) + out.ReportingEnabled = direct.LazyPtr(in.GetReportingEnabled()) + out.ServicePath = direct.LazyPtr(in.GetServicePath()) + out.ShuffleServicePath = direct.LazyPtr(in.GetShuffleServicePath()) + out.WorkerID = direct.LazyPtr(in.GetWorkerId()) + out.TempStoragePrefix = direct.LazyPtr(in.GetTempStoragePrefix()) + return out +} +func WorkerSettings_ToProto(mapCtx *direct.MapContext, in *krm.WorkerSettings) *pb.WorkerSettings { + if in == nil { + return nil + } + out := &pb.WorkerSettings{} + out.BaseUrl = direct.ValueOf(in.BaseURL) + out.ReportingEnabled = direct.ValueOf(in.ReportingEnabled) + out.ServicePath = direct.ValueOf(in.ServicePath) + out.ShuffleServicePath = direct.ValueOf(in.ShuffleServicePath) + out.WorkerId = direct.ValueOf(in.WorkerID) + out.TempStoragePrefix = direct.ValueOf(in.TempStoragePrefix) + return out +}