From 8f32301be8298d3b4e70fd1b7b075f17ffa99aa7 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Date: Tue, 28 Jan 2025 01:35:36 +0000 Subject: [PATCH] feat(clouddeploy): update the API #### clouddeploy:v1 The following keys were added: - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.description - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.flatPath - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.httpMethod - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.id - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameterOrder - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.options.requestedPolicyVersion.description - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.options.requestedPolicyVersion.format - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.options.requestedPolicyVersion.location - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.options.requestedPolicyVersion.type - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.resource.description - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.resource.location - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.resource.pattern - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.resource.required - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.parameters.resource.type - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.path - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.response.$ref - resources.projects.resources.locations.resources.deployPolicies.methods.getIamPolicy.scopes - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.description - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.flatPath - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.httpMethod - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.id - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.parameterOrder - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.parameters.resource.description - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.parameters.resource.location - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.parameters.resource.pattern - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.parameters.resource.required - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.parameters.resource.type - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.path - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.request.$ref - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.response.$ref - resources.projects.resources.locations.resources.deployPolicies.methods.setIamPolicy.scopes - schemas.AssociatedEntities.description - schemas.AssociatedEntities.id - schemas.AssociatedEntities.properties.anthosClusters.description - schemas.AssociatedEntities.properties.anthosClusters.items.$ref - schemas.AssociatedEntities.properties.anthosClusters.type - schemas.AssociatedEntities.properties.gkeClusters.description - schemas.AssociatedEntities.properties.gkeClusters.items.$ref - schemas.AssociatedEntities.properties.gkeClusters.type - schemas.AssociatedEntities.type - schemas.AutomationRule.properties.timedPromoteReleaseRule.$ref - schemas.AutomationRule.properties.timedPromoteReleaseRule.description - schemas.AutomationRuleCondition.properties.timedPromoteReleaseCondition.$ref - schemas.AutomationRuleCondition.properties.timedPromoteReleaseCondition.description - schemas.AutomationRun.properties.timedPromoteReleaseOperation.$ref - schemas.AutomationRun.properties.timedPromoteReleaseOperation.description - schemas.AutomationRun.properties.timedPromoteReleaseOperation.readOnly - schemas.GatewayServiceMesh.properties.routeDestinations.$ref - schemas.GatewayServiceMesh.properties.routeDestinations.description - schemas.GkeCluster.properties.dnsEndpoint.description - schemas.GkeCluster.properties.dnsEndpoint.type - schemas.RouteDestinations.description - schemas.RouteDestinations.id - schemas.RouteDestinations.properties.destinationIds.description - schemas.RouteDestinations.properties.destinationIds.items.type - schemas.RouteDestinations.properties.destinationIds.type - schemas.RouteDestinations.properties.propagateService.description - schemas.RouteDestinations.properties.propagateService.type - schemas.RouteDestinations.type - schemas.Target.properties.associatedEntities.additionalProperties.$ref - schemas.Target.properties.associatedEntities.description - schemas.Target.properties.associatedEntities.type - schemas.Targets.description - schemas.Targets.id - schemas.Targets.properties.destinationTargetId.description - schemas.Targets.properties.destinationTargetId.type - schemas.Targets.properties.sourceTargetId.description - schemas.Targets.properties.sourceTargetId.type - schemas.Targets.type - schemas.TimedPromoteReleaseCondition.description - schemas.TimedPromoteReleaseCondition.id - schemas.TimedPromoteReleaseCondition.properties.nextPromotionTime.description - schemas.TimedPromoteReleaseCondition.properties.nextPromotionTime.format - schemas.TimedPromoteReleaseCondition.properties.nextPromotionTime.readOnly - schemas.TimedPromoteReleaseCondition.properties.nextPromotionTime.type - schemas.TimedPromoteReleaseCondition.properties.targetsList.description - schemas.TimedPromoteReleaseCondition.properties.targetsList.items.$ref - schemas.TimedPromoteReleaseCondition.properties.targetsList.readOnly - schemas.TimedPromoteReleaseCondition.properties.targetsList.type - schemas.TimedPromoteReleaseCondition.type - schemas.TimedPromoteReleaseOperation.description - schemas.TimedPromoteReleaseOperation.id - schemas.TimedPromoteReleaseOperation.properties.phase.description - schemas.TimedPromoteReleaseOperation.properties.phase.readOnly - schemas.TimedPromoteReleaseOperation.properties.phase.type - schemas.TimedPromoteReleaseOperation.properties.release.description - schemas.TimedPromoteReleaseOperation.properties.release.readOnly - schemas.TimedPromoteReleaseOperation.properties.release.type - schemas.TimedPromoteReleaseOperation.properties.targetId.description - schemas.TimedPromoteReleaseOperation.properties.targetId.readOnly - schemas.TimedPromoteReleaseOperation.properties.targetId.type - schemas.TimedPromoteReleaseOperation.type - schemas.TimedPromoteReleaseRule.description - schemas.TimedPromoteReleaseRule.id - schemas.TimedPromoteReleaseRule.properties.condition.$ref - schemas.TimedPromoteReleaseRule.properties.condition.description - schemas.TimedPromoteReleaseRule.properties.condition.readOnly - schemas.TimedPromoteReleaseRule.properties.destinationPhase.description - schemas.TimedPromoteReleaseRule.properties.destinationPhase.type - schemas.TimedPromoteReleaseRule.properties.destinationTargetId.description - schemas.TimedPromoteReleaseRule.properties.destinationTargetId.type - schemas.TimedPromoteReleaseRule.properties.id.description - schemas.TimedPromoteReleaseRule.properties.id.type - schemas.TimedPromoteReleaseRule.properties.schedule.description - schemas.TimedPromoteReleaseRule.properties.schedule.type - schemas.TimedPromoteReleaseRule.properties.timeZone.description - schemas.TimedPromoteReleaseRule.properties.timeZone.type - schemas.TimedPromoteReleaseRule.type The following keys were changed: - resources.projects.resources.locations.resources.customTargetTypes.methods.patch.parameters.name.description - resources.projects.resources.locations.resources.deliveryPipelines.methods.patch.parameters.name.description - resources.projects.resources.locations.resources.operations.methods.cancel.description - resources.projects.resources.locations.resources.targets.methods.patch.parameters.name.description - schemas.AutomationResourceSelector.properties.targets.description - schemas.AutomationRun.properties.targetId.description - schemas.BuildArtifact.properties.image.description - schemas.BuildArtifact.properties.tag.description - schemas.Canary.properties.canaryDeployment.description - schemas.Canary.properties.customCanaryDeployment.description - schemas.CanaryDeployment.properties.verify.description - schemas.CloudRunConfig.properties.automaticTrafficControl.description - schemas.CustomTargetType.properties.customActions.description - schemas.CustomTargetType.properties.name.description - schemas.DeliveryPipeline.properties.annotations.description - schemas.DeliveryPipeline.properties.description.description - schemas.DeliveryPipeline.properties.name.description - schemas.DeliveryPipeline.properties.serialPipeline.description - schemas.DeliveryPipeline.properties.suspended.description - schemas.DeliveryPipelineAttribute.properties.id.description - schemas.DeployPolicy.properties.annotations.description - schemas.DeployPolicy.properties.description.description - schemas.DeployPolicy.properties.suspended.description - schemas.GkeCluster.properties.internalIp.description - schemas.JobRun.properties.name.description - schemas.KubernetesConfig.properties.gatewayServiceMesh.description - schemas.KubernetesConfig.properties.serviceNetworking.description - schemas.OperationMetadata.properties.requestedCancellation.description - schemas.PhaseConfig.properties.profiles.description - schemas.PhaseConfig.properties.verify.description - schemas.PolicyRule.properties.rolloutRestriction.description - schemas.Release.properties.annotations.description - schemas.Release.properties.buildArtifacts.description - schemas.Release.properties.description.description - schemas.Release.properties.name.description - schemas.Release.properties.skaffoldConfigPath.description - schemas.Release.properties.skaffoldConfigUri.description - schemas.Release.properties.skaffoldVersion.description - schemas.Rollout.properties.annotations.description - schemas.Rollout.properties.description.description - schemas.Rollout.properties.name.description - schemas.RuntimeConfig.properties.cloudRun.description - schemas.RuntimeConfig.properties.kubernetes.description - schemas.SerialPipeline.properties.stages.description - schemas.SkaffoldModules.properties.git.description - schemas.SkaffoldModules.properties.googleCloudBuildRepo.description - schemas.SkaffoldModules.properties.googleCloudStorage.description - schemas.Stage.properties.profiles.description - schemas.Stage.properties.targetId.description - schemas.Standard.properties.verify.description - schemas.Strategy.properties.canary.description - schemas.Strategy.properties.standard.description - schemas.Target.properties.executionConfigs.description - schemas.Target.properties.name.description - schemas.TargetAttribute.properties.id.description - schemas.TimeOfDay.properties.hours.description - schemas.TimeOfDay.properties.minutes.description - schemas.TimeOfDay.properties.nanos.description - schemas.TimeOfDay.properties.seconds.description --- discovery/clouddeploy-v1.json | 336 +++++++++++++++++++++----- src/apis/clouddeploy/v1.ts | 441 +++++++++++++++++++++++++++++----- 2 files changed, 658 insertions(+), 119 deletions(-) diff --git a/discovery/clouddeploy-v1.json b/discovery/clouddeploy-v1.json index ada8a0ad99..a87acb33f3 100644 --- a/discovery/clouddeploy-v1.json +++ b/discovery/clouddeploy-v1.json @@ -409,7 +409,7 @@ "type": "boolean" }, "name": { - "description": "Optional. Name of the `CustomTargetType`. Format is `projects/{project}/locations/{location}/customTargetTypes/{customTargetType}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `CustomTargetType`. Format is `projects/{project}/locations/{location}/customTargetTypes/{customTargetType}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "location": "path", "pattern": "^projects/[^/]+/locations/[^/]+/customTargetTypes/[^/]+$", "required": true, @@ -685,7 +685,7 @@ "type": "boolean" }, "name": { - "description": "Optional. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "location": "path", "pattern": "^projects/[^/]+/locations/[^/]+/deliveryPipelines/[^/]+$", "required": true, @@ -1765,6 +1765,37 @@ "https://www.googleapis.com/auth/cloud-platform" ] }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/deployPolicies/{deployPoliciesId}:getIamPolicy", + "httpMethod": "GET", + "id": "clouddeploy.projects.locations.deployPolicies.getIamPolicy", + "parameterOrder": [ + "resource" + ], + "parameters": { + "options.requestedPolicyVersion": { + "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).", + "format": "int32", + "location": "query", + "type": "integer" + }, + "resource": { + "description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/deployPolicies/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+resource}:getIamPolicy", + "response": { + "$ref": "Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, "list": { "description": "Lists DeployPolicies in a given project and location.", "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/deployPolicies", @@ -1859,13 +1890,41 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ] + }, + "setIamPolicy": { + "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/deployPolicies/{deployPoliciesId}:setIamPolicy", + "httpMethod": "POST", + "id": "clouddeploy.projects.locations.deployPolicies.setIamPolicy", + "parameterOrder": [ + "resource" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/deployPolicies/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+resource}:setIamPolicy", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "response": { + "$ref": "Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] } } }, "operations": { "methods": { "cancel": { - "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.", + "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.", "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel", "httpMethod": "POST", "id": "clouddeploy.projects.locations.operations.cancel", @@ -2192,7 +2251,7 @@ "type": "boolean" }, "name": { - "description": "Optional. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/{target}`. The `target` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/{target}`. The `target` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "location": "path", "pattern": "^projects/[^/]+/locations/[^/]+/targets/[^/]+$", "required": true, @@ -2289,7 +2348,7 @@ } } }, - "revision": "20240929", + "revision": "20250101", "rootUrl": "https://clouddeploy.googleapis.com/", "schemas": { "AbandonReleaseRequest": { @@ -2442,6 +2501,27 @@ "properties": {}, "type": "object" }, + "AssociatedEntities": { + "description": "Information about entities associated with a `Target`.", + "id": "AssociatedEntities", + "properties": { + "anthosClusters": { + "description": "Optional. Information specifying Anthos clusters as associated entities.", + "items": { + "$ref": "AnthosCluster" + }, + "type": "array" + }, + "gkeClusters": { + "description": "Optional. Information specifying GKE clusters as associated entities.", + "items": { + "$ref": "GkeCluster" + }, + "type": "array" + } + }, + "type": "object" + }, "AuditConfig": { "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.", "id": "AuditConfig", @@ -2621,7 +2701,7 @@ "id": "AutomationResourceSelector", "properties": { "targets": { - "description": "Contains attributes about a target.", + "description": "Optional. Contains attributes about a target.", "items": { "$ref": "TargetAttribute" }, @@ -2673,6 +2753,10 @@ "repairRolloutRule": { "$ref": "RepairRolloutRule", "description": "Optional. The `RepairRolloutRule` will automatically repair a failed rollout." + }, + "timedPromoteReleaseRule": { + "$ref": "TimedPromoteReleaseRule", + "description": "Optional. The `TimedPromoteReleaseRule` will automatically promote a release from the current target(s) to the specified target(s) on a configured schedule." } }, "type": "object" @@ -2684,6 +2768,10 @@ "targetsPresentCondition": { "$ref": "TargetsPresentCondition", "description": "Optional. Details around targets enumerated in the rule." + }, + "timedPromoteReleaseCondition": { + "$ref": "TimedPromoteReleaseCondition", + "description": "Optional. TimedPromoteReleaseCondition contains rule conditions specific to a an Automation with a timed promote release rule defined." } }, "type": "object" @@ -2783,10 +2871,15 @@ "type": "string" }, "targetId": { - "description": "Output only. The ID of the target that represents the promotion stage that initiates the `AutomationRun`. The value of this field is the last segment of a target name.", + "description": "Output only. The ID of the source target that initiates the `AutomationRun`. The value of this field is the last segment of a target name.", "readOnly": true, "type": "string" }, + "timedPromoteReleaseOperation": { + "$ref": "TimedPromoteReleaseOperation", + "description": "Output only. Promotes a release to a specified 'Target' as defined in a Timed Promote Release rule.", + "readOnly": true + }, "updateTime": { "description": "Output only. Time at which the automationRun was updated.", "format": "google-datetime", @@ -2897,11 +2990,11 @@ "id": "BuildArtifact", "properties": { "image": { - "description": "Image name in Skaffold configuration.", + "description": "Optional. Image name in Skaffold configuration.", "type": "string" }, "tag": { - "description": "Image tag to use. This will generally be the full path to an image, such as \"gcr.io/my-project/busybox:1.2.3\" or \"gcr.io/my-project/busybox@sha256:abc123\".", + "description": "Optional. Image tag to use. This will generally be the full path to an image, such as \"gcr.io/my-project/busybox:1.2.3\" or \"gcr.io/my-project/busybox@sha256:abc123\".", "type": "string" } }, @@ -2913,11 +3006,11 @@ "properties": { "canaryDeployment": { "$ref": "CanaryDeployment", - "description": "Configures the progressive based deployment for a Target." + "description": "Optional. Configures the progressive based deployment for a Target." }, "customCanaryDeployment": { "$ref": "CustomCanaryDeployment", - "description": "Configures the progressive based deployment for a Target, but allows customizing at the phase level where a phase represents each of the percentage deployments." + "description": "Optional. Configures the progressive based deployment for a Target, but allows customizing at the phase level where a phase represents each of the percentage deployments." }, "runtimeConfig": { "$ref": "RuntimeConfig", @@ -2947,7 +3040,7 @@ "description": "Optional. Configuration for the predeploy job of the first phase. If this is not configured, there will be no predeploy job for this phase." }, "verify": { - "description": "Whether to run verify tests after each percentage deployment.", + "description": "Optional. Whether to run verify tests after each percentage deployment.", "type": "boolean" } }, @@ -3019,7 +3112,7 @@ "id": "CloudRunConfig", "properties": { "automaticTrafficControl": { - "description": "Whether Cloud Deploy should update the traffic stanza in a Cloud Run Service on the user's behalf to facilitate traffic splitting. This is required to be true for CanaryDeployments, but optional for CustomCanaryDeployments.", + "description": "Optional. Whether Cloud Deploy should update the traffic stanza in a Cloud Run Service on the user's behalf to facilitate traffic splitting. This is required to be true for CanaryDeployments, but optional for CustomCanaryDeployments.", "type": "boolean" }, "canaryRevisionTags": { @@ -3237,7 +3330,7 @@ }, "customActions": { "$ref": "CustomTargetSkaffoldActions", - "description": "Configures render and deploy for the `CustomTargetType` using Skaffold custom actions." + "description": "Optional. Configures render and deploy for the `CustomTargetType` using Skaffold custom actions." }, "customTargetTypeId": { "description": "Output only. Resource id of the `CustomTargetType`.", @@ -3260,7 +3353,7 @@ "type": "object" }, "name": { - "description": "Optional. Name of the `CustomTargetType`. Format is `projects/{project}/locations/{location}/customTargetTypes/{customTargetType}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `CustomTargetType`. Format is `projects/{project}/locations/{location}/customTargetTypes/{customTargetType}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "type": "string" }, "uid": { @@ -3378,7 +3471,7 @@ "additionalProperties": { "type": "string" }, - "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy.", + "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy.", "type": "object" }, "condition": { @@ -3393,7 +3486,7 @@ "type": "string" }, "description": { - "description": "Description of the `DeliveryPipeline`. Max length is 255 characters.", + "description": "Optional. Description of the `DeliveryPipeline`. Max length is 255 characters.", "type": "string" }, "etag": { @@ -3408,15 +3501,15 @@ "type": "object" }, "name": { - "description": "Optional. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "type": "string" }, "serialPipeline": { "$ref": "SerialPipeline", - "description": "SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`." + "description": "Optional. SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`." }, "suspended": { - "description": "When suspended, no new releases or rollouts can be created, but in-progress ones will complete.", + "description": "Optional. When suspended, no new releases or rollouts can be created, but in-progress ones will complete.", "type": "boolean" }, "uid": { @@ -3438,7 +3531,7 @@ "id": "DeliveryPipelineAttribute", "properties": { "id": { - "description": "ID of the `DeliveryPipeline`. The value of this field could be one of the following: * The last segment of a pipeline name * \"*\", all delivery pipelines in a location", + "description": "Optional. ID of the `DeliveryPipeline`. The value of this field could be one of the following: * The last segment of a pipeline name * \"*\", all delivery pipelines in a location", "type": "string" }, "labels": { @@ -3634,7 +3727,7 @@ "additionalProperties": { "type": "string" }, - "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. Annotations must meet the following constraints: * Annotations are key/value pairs. * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (`/`). * The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. * The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots(`.`), not longer than 253 characters in total, followed by a slash (`/`). See https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set for more details.", + "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. Annotations must meet the following constraints: * Annotations are key/value pairs. * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (`/`). * The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. * The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots(`.`), not longer than 253 characters in total, followed by a slash (`/`). See https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set for more details.", "type": "object" }, "createTime": { @@ -3644,7 +3737,7 @@ "type": "string" }, "description": { - "description": "Description of the `DeployPolicy`. Max length is 255 characters.", + "description": "Optional. Description of the `DeployPolicy`. Max length is 255 characters.", "type": "string" }, "etag": { @@ -3678,7 +3771,7 @@ "type": "array" }, "suspended": { - "description": "When suspended, the policy will not prevent actions from occurring, even if the action violates the policy.", + "description": "Optional. When suspended, the policy will not prevent actions from occurring, even if the action violates the policy.", "type": "boolean" }, "uid": { @@ -3989,6 +4082,10 @@ "description": "Optional. The label to use when selecting Pods for the Deployment and Service resources. This label must already be present in both resources.", "type": "string" }, + "routeDestinations": { + "$ref": "RouteDestinations", + "description": "Optional. Route destinations allow configuring the Gateway API HTTPRoute to be deployed to additional clusters. This option is available for multi-cluster service mesh set ups that require the route to exist in the clusters that call the service. If unspecified, the HTTPRoute will only be deployed to the Target cluster." + }, "routeUpdateWaitTime": { "description": "Optional. The time to wait for route updates to propagate. The maximum configurable time is 3 hours, in seconds format. If unspecified, there is no wait time.", "format": "google-duration", @@ -4014,8 +4111,12 @@ "description": "Optional. Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`.", "type": "string" }, + "dnsEndpoint": { + "description": "Optional. If set, the cluster will be accessed using the DNS endpoint. Note that both `dns_endpoint` and `internal_ip` cannot be set to true.", + "type": "boolean" + }, "internalIp": { - "description": "Optional. If true, `cluster` is accessed using the private IP address of the control plane endpoint. Otherwise, the default IP address of the control plane endpoint is used. The default IP address is the private IP address for clusters with private control-plane endpoints and the public IP address otherwise. Only specify this option when `cluster` is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept).", + "description": "Optional. If true, `cluster` is accessed using the private IP address of the control plane endpoint. Otherwise, the default IP address of the control plane endpoint is used. The default IP address is the private IP address for clusters with private control-plane endpoints and the public IP address otherwise. Only specify this option when `cluster` is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept). Note that `internal_ip` and `dns_endpoint` cannot both be set to true.", "type": "boolean" }, "proxyUrl": { @@ -4174,7 +4275,7 @@ "type": "string" }, "name": { - "description": "Optional. Name of the `JobRun`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{releases}/rollouts/{rollouts}/jobRuns/{uuid}`.", + "description": "Identifier. Name of the `JobRun`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{releases}/rollouts/{rollouts}/jobRuns/{uuid}`.", "type": "string" }, "phaseId": { @@ -4314,11 +4415,11 @@ "properties": { "gatewayServiceMesh": { "$ref": "GatewayServiceMesh", - "description": "Kubernetes Gateway API service mesh configuration." + "description": "Optional. Kubernetes Gateway API service mesh configuration." }, "serviceNetworking": { "$ref": "ServiceNetworking", - "description": "Kubernetes Service networking configuration." + "description": "Optional. Kubernetes Service networking configuration." } }, "type": "object" @@ -4734,7 +4835,7 @@ "type": "string" }, "requestedCancellation": { - "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.", + "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.", "readOnly": true, "type": "boolean" }, @@ -4850,14 +4951,14 @@ "description": "Optional. Configuration for the predeploy job of this phase. If this is not configured, there will be no predeploy job for this phase." }, "profiles": { - "description": "Skaffold profiles to use when rendering the manifest for this phase. These are in addition to the profiles list specified in the `DeliveryPipeline` stage.", + "description": "Optional. Skaffold profiles to use when rendering the manifest for this phase. These are in addition to the profiles list specified in the `DeliveryPipeline` stage.", "items": { "type": "string" }, "type": "array" }, "verify": { - "description": "Whether to run verify tests after the deployment.", + "description": "Optional. Whether to run verify tests after the deployment.", "type": "boolean" } }, @@ -4935,7 +5036,7 @@ "properties": { "rolloutRestriction": { "$ref": "RolloutRestriction", - "description": "Rollout restrictions." + "description": "Optional. Rollout restrictions." } }, "type": "object" @@ -5192,11 +5293,11 @@ "additionalProperties": { "type": "string" }, - "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.", + "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.", "type": "object" }, "buildArtifacts": { - "description": "List of artifacts to pass through to Skaffold command.", + "description": "Optional. List of artifacts to pass through to Skaffold command.", "items": { "$ref": "BuildArtifact" }, @@ -5234,7 +5335,7 @@ "type": "object" }, "description": { - "description": "Description of the `Release`. Max length is 255 characters.", + "description": "Optional. Description of the `Release`. Max length is 255 characters.", "type": "string" }, "etag": { @@ -5249,7 +5350,7 @@ "type": "object" }, "name": { - "description": "Optional. Name of the `Release`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}`. The `release` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `Release`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}`. The `release` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "type": "string" }, "renderEndTime": { @@ -5282,15 +5383,15 @@ "type": "string" }, "skaffoldConfigPath": { - "description": "Filepath of the Skaffold config inside of the config URI.", + "description": "Optional. Filepath of the Skaffold config inside of the config URI.", "type": "string" }, "skaffoldConfigUri": { - "description": "Cloud Storage URI of tar.gz archive containing Skaffold configuration.", + "description": "Optional. Cloud Storage URI of tar.gz archive containing Skaffold configuration.", "type": "string" }, "skaffoldVersion": { - "description": "The Skaffold version to use when operating on this release, such as \"1.20.0\". Not all versions are valid; Cloud Deploy supports a specific set of versions. If unset, the most recent supported Skaffold version will be used.", + "description": "Optional. The Skaffold version to use when operating on this release, such as \"1.20.0\". Not all versions are valid; Cloud Deploy supports a specific set of versions. If unset, the most recent supported Skaffold version will be used.", "type": "string" }, "targetArtifacts": { @@ -5889,7 +5990,7 @@ "additionalProperties": { "type": "string" }, - "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.", + "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.", "type": "object" }, "approvalState": { @@ -5973,7 +6074,7 @@ "type": "string" }, "description": { - "description": "Description of the `Rollout` for user purposes. Max length is 255 characters.", + "description": "Optional. Description of the `Rollout` for user purposes. Max length is 255 characters.", "type": "string" }, "enqueueTime": { @@ -6004,7 +6105,7 @@ "readOnly": true }, "name": { - "description": "Optional. Name of the `Rollout`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/{rollout}`. The `rollout` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `Rollout`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/{rollout}`. The `rollout` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "type": "string" }, "phases": { @@ -6308,17 +6409,35 @@ }, "type": "object" }, + "RouteDestinations": { + "description": "Information about route destinations for the Gateway API service mesh.", + "id": "RouteDestinations", + "properties": { + "destinationIds": { + "description": "Required. The clusters where the Gateway API HTTPRoute resource will be deployed to. Valid entries include the associated entities IDs configured in the Target resource and \"@self\" to include the Target cluster.", + "items": { + "type": "string" + }, + "type": "array" + }, + "propagateService": { + "description": "Optional. Whether to propagate the Kubernetes Service to the route destination clusters. The Service will always be deployed to the Target cluster even if the HTTPRoute is not. This option may be used to facilitiate successful DNS lookup in the route destination clusters. Can only be set to true if destinations are specified.", + "type": "boolean" + } + }, + "type": "object" + }, "RuntimeConfig": { "description": "RuntimeConfig contains the runtime specific configurations for a deployment strategy.", "id": "RuntimeConfig", "properties": { "cloudRun": { "$ref": "CloudRunConfig", - "description": "Cloud Run runtime configuration." + "description": "Optional. Cloud Run runtime configuration." }, "kubernetes": { "$ref": "KubernetesConfig", - "description": "Kubernetes runtime configuration." + "description": "Optional. Kubernetes runtime configuration." } }, "type": "object" @@ -6328,7 +6447,7 @@ "id": "SerialPipeline", "properties": { "stages": { - "description": "Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow.", + "description": "Optional. Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow.", "items": { "$ref": "Stage" }, @@ -6442,15 +6561,15 @@ }, "git": { "$ref": "SkaffoldGitSource", - "description": "Remote git repository containing the Skaffold Config modules." + "description": "Optional. Remote git repository containing the Skaffold Config modules." }, "googleCloudBuildRepo": { "$ref": "SkaffoldGCBRepoSource", - "description": "Cloud Build V2 repository containing the Skaffold Config modules." + "description": "Optional. Cloud Build V2 repository containing the Skaffold Config modules." }, "googleCloudStorage": { "$ref": "SkaffoldGCSSource", - "description": "Cloud Storage bucket containing the Skaffold Config modules." + "description": "Optional. Cloud Storage bucket containing the Skaffold Config modules." } }, "type": "object" @@ -6529,7 +6648,7 @@ "type": "array" }, "profiles": { - "description": "Skaffold profiles to use when rendering the manifest for this stage's `Target`.", + "description": "Optional. Skaffold profiles to use when rendering the manifest for this stage's `Target`.", "items": { "type": "string" }, @@ -6540,7 +6659,7 @@ "description": "Optional. The strategy to use for a `Rollout` to this stage." }, "targetId": { - "description": "The target_id to which this stage points. This field refers exclusively to the last segment of a target name. For example, this field would just be `my-target` (rather than `projects/project/locations/location/targets/my-target`). The location of the `Target` is inferred to be the same as the location of the `DeliveryPipeline` that contains this `Stage`.", + "description": "Optional. The target_id to which this stage points. This field refers exclusively to the last segment of a target name. For example, this field would just be `my-target` (rather than `projects/project/locations/location/targets/my-target`). The location of the `Target` is inferred to be the same as the location of the `DeliveryPipeline` that contains this `Stage`.", "type": "string" } }, @@ -6559,7 +6678,7 @@ "description": "Optional. Configuration for the predeploy job. If this is not configured, predeploy job will not be present." }, "verify": { - "description": "Whether to verify a deployment.", + "description": "Optional. Whether to verify a deployment.", "type": "boolean" } }, @@ -6598,11 +6717,11 @@ "properties": { "canary": { "$ref": "Canary", - "description": "Canary deployment strategy provides progressive percentage based deployments to a Target." + "description": "Optional. Canary deployment strategy provides progressive percentage based deployments to a Target." }, "standard": { "$ref": "Standard", - "description": "Standard deployment strategy executes a single deploy and allows verifying the deployment." + "description": "Optional. Standard deployment strategy executes a single deploy and allows verifying the deployment." } }, "type": "object" @@ -6622,6 +6741,13 @@ "$ref": "AnthosCluster", "description": "Optional. Information specifying an Anthos Cluster." }, + "associatedEntities": { + "additionalProperties": { + "$ref": "AssociatedEntities" + }, + "description": "Optional. Map of entity IDs to their associated entities. Associated entities allows specifying places other than the deployment target for specific features. For example, the Gateway API canary can be configured to deploy the HTTPRoute to a different cluster(s) than the deployment cluster using associated entities. An entity ID must consist of lower-case letters, numbers, and hyphens, start with a letter and end with a letter or a number, and have a max length of 63 characters. In other words, it must match the following regex: `^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`.", + "type": "object" + }, "createTime": { "description": "Output only. Time at which the `Target` was created.", "format": "google-datetime", @@ -6648,7 +6774,7 @@ "type": "string" }, "executionConfigs": { - "description": "Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`.", + "description": "Optional. Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`.", "items": { "$ref": "ExecutionConfig" }, @@ -6670,7 +6796,7 @@ "description": "Optional. Information specifying a multiTarget." }, "name": { - "description": "Optional. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/{target}`. The `target` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", + "description": "Identifier. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/{target}`. The `target` component must match `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`", "type": "string" }, "requireApproval": { @@ -6735,7 +6861,7 @@ "id": "TargetAttribute", "properties": { "id": { - "description": "ID of the `Target`. The value of this field could be one of the following: * The last segment of a target name * \"*\", all targets in a location", + "description": "Optional. ID of the `Target`. The value of this field could be one of the following: * The last segment of a target name * \"*\", all targets in a location", "type": "string" }, "labels": { @@ -6864,6 +6990,21 @@ }, "type": "object" }, + "Targets": { + "description": "The targets involved in a single timed promotion.", + "id": "Targets", + "properties": { + "destinationTargetId": { + "description": "Optional. The destination target ID.", + "type": "string" + }, + "sourceTargetId": { + "description": "Optional. The source target ID.", + "type": "string" + } + }, + "type": "object" + }, "TargetsPresentCondition": { "description": "`TargetsPresentCondition` contains information on any Targets referenced in the Delivery Pipeline that do not actually exist.", "id": "TargetsPresentCondition", @@ -6955,22 +7096,22 @@ "id": "TimeOfDay", "properties": { "hours": { - "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.", + "description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.", "format": "int32", "type": "integer" }, "minutes": { - "description": "Minutes of hour of day. Must be from 0 to 59.", + "description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.", "format": "int32", "type": "integer" }, "nanos": { - "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.", + "description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.", "format": "int32", "type": "integer" }, "seconds": { - "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.", + "description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.", "format": "int32", "type": "integer" } @@ -7002,6 +7143,81 @@ }, "type": "object" }, + "TimedPromoteReleaseCondition": { + "description": "`TimedPromoteReleaseCondition` contains conditions specific to an Automation with a Timed Promote Release rule defined.", + "id": "TimedPromoteReleaseCondition", + "properties": { + "nextPromotionTime": { + "description": "Output only. When the next scheduled promotion(s) will occur.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "targetsList": { + "description": "Output only. A list of targets involved in the upcoming timed promotion(s).", + "items": { + "$ref": "Targets" + }, + "readOnly": true, + "type": "array" + } + }, + "type": "object" + }, + "TimedPromoteReleaseOperation": { + "description": "Contains the information of an automated timed promote-release operation.", + "id": "TimedPromoteReleaseOperation", + "properties": { + "phase": { + "description": "Output only. The starting phase of the rollout created by this operation.", + "readOnly": true, + "type": "string" + }, + "release": { + "description": "Output only. The name of the release to be promoted.", + "readOnly": true, + "type": "string" + }, + "targetId": { + "description": "Output only. The ID of the target that represents the promotion stage to which the release will be promoted. The value of this field is the last segment of a target name.", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "TimedPromoteReleaseRule": { + "description": "The `TimedPromoteReleaseRule` will automatically promote a release from the current target(s) to the specified target(s) on a configured schedule.", + "id": "TimedPromoteReleaseRule", + "properties": { + "condition": { + "$ref": "AutomationRuleCondition", + "description": "Output only. Information around the state of the Automation rule.", + "readOnly": true + }, + "destinationPhase": { + "description": "Optional. The starting phase of the rollout created by this rule. Default to the first phase.", + "type": "string" + }, + "destinationTargetId": { + "description": "Optional. The ID of the stage in the pipeline to which this `Release` is deploying. If unspecified, default it to the next stage in the promotion flow. The value of this field could be one of the following: * The last segment of a target name * \"@next\", the next target in the promotion sequence", + "type": "string" + }, + "id": { + "description": "Required. ID of the rule. This ID must be unique in the `Automation` resource to which this rule belongs. The format is `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.", + "type": "string" + }, + "schedule": { + "description": "Required. Schedule in crontab format. e.g. \"0 9 * * 1\" for every Monday at 9am.", + "type": "string" + }, + "timeZone": { + "description": "Required. The time zone in IANA format [IANA Time Zone Database](https://www.iana.org/time-zones) (e.g. America/New_York).", + "type": "string" + } + }, + "type": "object" + }, "VerifyJob": { "description": "A verify Job.", "id": "VerifyJob", diff --git a/src/apis/clouddeploy/v1.ts b/src/apis/clouddeploy/v1.ts index 3c4496fae3..618374dab9 100644 --- a/src/apis/clouddeploy/v1.ts +++ b/src/apis/clouddeploy/v1.ts @@ -234,6 +234,19 @@ export namespace clouddeploy_v1 { * The response object from `ApproveRollout`. */ export interface Schema$ApproveRolloutResponse {} + /** + * Information about entities associated with a `Target`. + */ + export interface Schema$AssociatedEntities { + /** + * Optional. Information specifying Anthos clusters as associated entities. + */ + anthosClusters?: Schema$AnthosCluster[]; + /** + * Optional. Information specifying GKE clusters as associated entities. + */ + gkeClusters?: Schema$GkeCluster[]; + } /** * Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { "audit_configs": [ { "service": "allServices", "audit_log_configs": [ { "log_type": "DATA_READ", "exempted_members": [ "user:jose@example.com" ] \}, { "log_type": "DATA_WRITE" \}, { "log_type": "ADMIN_READ" \} ] \}, { "service": "sampleservice.googleapis.com", "audit_log_configs": [ { "log_type": "DATA_READ" \}, { "log_type": "DATA_WRITE", "exempted_members": [ "user:aliya@example.com" ] \} ] \} ] \} For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging. */ @@ -339,7 +352,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$AutomationResourceSelector { /** - * Contains attributes about a target. + * Optional. Contains attributes about a target. */ targets?: Schema$TargetAttribute[]; } @@ -376,6 +389,10 @@ export namespace clouddeploy_v1 { * Optional. The `RepairRolloutRule` will automatically repair a failed rollout. */ repairRolloutRule?: Schema$RepairRolloutRule; + /** + * Optional. The `TimedPromoteReleaseRule` will automatically promote a release from the current target(s) to the specified target(s) on a configured schedule. + */ + timedPromoteReleaseRule?: Schema$TimedPromoteReleaseRule; } /** * `AutomationRuleCondition` contains conditions relevant to an `Automation` rule. @@ -385,6 +402,10 @@ export namespace clouddeploy_v1 { * Optional. Details around targets enumerated in the rule. */ targetsPresentCondition?: Schema$TargetsPresentCondition; + /** + * Optional. TimedPromoteReleaseCondition contains rule conditions specific to a an Automation with a timed promote release rule defined. + */ + timedPromoteReleaseCondition?: Schema$TimedPromoteReleaseCondition; } /** * An `AutomationRun` resource in the Cloud Deploy API. An `AutomationRun` represents an execution instance of an automation rule. @@ -447,9 +468,13 @@ export namespace clouddeploy_v1 { */ stateDescription?: string | null; /** - * Output only. The ID of the target that represents the promotion stage that initiates the `AutomationRun`. The value of this field is the last segment of a target name. + * Output only. The ID of the source target that initiates the `AutomationRun`. The value of this field is the last segment of a target name. */ targetId?: string | null; + /** + * Output only. Promotes a release to a specified 'Target' as defined in a Timed Promote Release rule. + */ + timedPromoteReleaseOperation?: Schema$TimedPromoteReleaseOperation; /** * Output only. Time at which the automationRun was updated. */ @@ -514,11 +539,11 @@ export namespace clouddeploy_v1 { */ export interface Schema$BuildArtifact { /** - * Image name in Skaffold configuration. + * Optional. Image name in Skaffold configuration. */ image?: string | null; /** - * Image tag to use. This will generally be the full path to an image, such as "gcr.io/my-project/busybox:1.2.3" or "gcr.io/my-project/busybox@sha256:abc123". + * Optional. Image tag to use. This will generally be the full path to an image, such as "gcr.io/my-project/busybox:1.2.3" or "gcr.io/my-project/busybox@sha256:abc123". */ tag?: string | null; } @@ -527,11 +552,11 @@ export namespace clouddeploy_v1 { */ export interface Schema$Canary { /** - * Configures the progressive based deployment for a Target. + * Optional. Configures the progressive based deployment for a Target. */ canaryDeployment?: Schema$CanaryDeployment; /** - * Configures the progressive based deployment for a Target, but allows customizing at the phase level where a phase represents each of the percentage deployments. + * Optional. Configures the progressive based deployment for a Target, but allows customizing at the phase level where a phase represents each of the percentage deployments. */ customCanaryDeployment?: Schema$CustomCanaryDeployment; /** @@ -556,7 +581,7 @@ export namespace clouddeploy_v1 { */ predeploy?: Schema$Predeploy; /** - * Whether to run verify tests after each percentage deployment. + * Optional. Whether to run verify tests after each percentage deployment. */ verify?: boolean | null; } @@ -603,7 +628,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$CloudRunConfig { /** - * Whether Cloud Deploy should update the traffic stanza in a Cloud Run Service on the user's behalf to facilitate traffic splitting. This is required to be true for CanaryDeployments, but optional for CustomCanaryDeployments. + * Optional. Whether Cloud Deploy should update the traffic stanza in a Cloud Run Service on the user's behalf to facilitate traffic splitting. This is required to be true for CanaryDeployments, but optional for CustomCanaryDeployments. */ automaticTrafficControl?: boolean | null; /** @@ -758,7 +783,7 @@ export namespace clouddeploy_v1 { */ createTime?: string | null; /** - * Configures render and deploy for the `CustomTargetType` using Skaffold custom actions. + * Optional. Configures render and deploy for the `CustomTargetType` using Skaffold custom actions. */ customActions?: Schema$CustomTargetSkaffoldActions; /** @@ -778,7 +803,7 @@ export namespace clouddeploy_v1 { */ labels?: {[key: string]: string} | null; /** - * Optional. Name of the `CustomTargetType`. Format is `projects/{project\}/locations/{location\}/customTargetTypes/{customTargetType\}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `CustomTargetType`. Format is `projects/{project\}/locations/{location\}/customTargetTypes/{customTargetType\}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string | null; /** @@ -846,7 +871,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$DeliveryPipeline { /** - * User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. + * Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. */ annotations?: {[key: string]: string} | null; /** @@ -858,7 +883,7 @@ export namespace clouddeploy_v1 { */ createTime?: string | null; /** - * Description of the `DeliveryPipeline`. Max length is 255 characters. + * Optional. Description of the `DeliveryPipeline`. Max length is 255 characters. */ description?: string | null; /** @@ -870,15 +895,15 @@ export namespace clouddeploy_v1 { */ labels?: {[key: string]: string} | null; /** - * Optional. Name of the `DeliveryPipeline`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `DeliveryPipeline`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string | null; /** - * SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`. + * Optional. SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`. */ serialPipeline?: Schema$SerialPipeline; /** - * When suspended, no new releases or rollouts can be created, but in-progress ones will complete. + * Optional. When suspended, no new releases or rollouts can be created, but in-progress ones will complete. */ suspended?: boolean | null; /** @@ -895,7 +920,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$DeliveryPipelineAttribute { /** - * ID of the `DeliveryPipeline`. The value of this field could be one of the following: * The last segment of a pipeline name * "*", all delivery pipelines in a location + * Optional. ID of the `DeliveryPipeline`. The value of this field could be one of the following: * The last segment of a pipeline name * "*", all delivery pipelines in a location */ id?: string | null; /** @@ -1022,7 +1047,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$DeployPolicy { /** - * User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. Annotations must meet the following constraints: * Annotations are key/value pairs. * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (`/`). * The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. * The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots(`.`), not longer than 253 characters in total, followed by a slash (`/`). See https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set for more details. + * Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. Annotations must meet the following constraints: * Annotations are key/value pairs. * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (`/`). * The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. * The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots(`.`), not longer than 253 characters in total, followed by a slash (`/`). See https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set for more details. */ annotations?: {[key: string]: string} | null; /** @@ -1030,7 +1055,7 @@ export namespace clouddeploy_v1 { */ createTime?: string | null; /** - * Description of the `DeployPolicy`. Max length is 255 characters. + * Optional. Description of the `DeployPolicy`. Max length is 255 characters. */ description?: string | null; /** @@ -1054,7 +1079,7 @@ export namespace clouddeploy_v1 { */ selectors?: Schema$DeployPolicyResourceSelector[]; /** - * When suspended, the policy will not prevent actions from occurring, even if the action violates the policy. + * Optional. When suspended, the policy will not prevent actions from occurring, even if the action violates the policy. */ suspended?: boolean | null; /** @@ -1235,6 +1260,10 @@ export namespace clouddeploy_v1 { * Optional. The label to use when selecting Pods for the Deployment and Service resources. This label must already be present in both resources. */ podSelectorLabel?: string | null; + /** + * Optional. Route destinations allow configuring the Gateway API HTTPRoute to be deployed to additional clusters. This option is available for multi-cluster service mesh set ups that require the route to exist in the clusters that call the service. If unspecified, the HTTPRoute will only be deployed to the Target cluster. + */ + routeDestinations?: Schema$RouteDestinations; /** * Optional. The time to wait for route updates to propagate. The maximum configurable time is 3 hours, in seconds format. If unspecified, there is no wait time. */ @@ -1257,7 +1286,11 @@ export namespace clouddeploy_v1 { */ cluster?: string | null; /** - * Optional. If true, `cluster` is accessed using the private IP address of the control plane endpoint. Otherwise, the default IP address of the control plane endpoint is used. The default IP address is the private IP address for clusters with private control-plane endpoints and the public IP address otherwise. Only specify this option when `cluster` is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept). + * Optional. If set, the cluster will be accessed using the DNS endpoint. Note that both `dns_endpoint` and `internal_ip` cannot be set to true. + */ + dnsEndpoint?: boolean | null; + /** + * Optional. If true, `cluster` is accessed using the private IP address of the control plane endpoint. Otherwise, the default IP address of the control plane endpoint is used. The default IP address is the private IP address for clusters with private control-plane endpoints and the public IP address otherwise. Only specify this option when `cluster` is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept). Note that `internal_ip` and `dns_endpoint` cannot both be set to true. */ internalIp?: boolean | null; /** @@ -1364,7 +1397,7 @@ export namespace clouddeploy_v1 { */ jobId?: string | null; /** - * Optional. Name of the `JobRun`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}/releases/{releases\}/rollouts/{rollouts\}/jobRuns/{uuid\}`. + * Identifier. Name of the `JobRun`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}/releases/{releases\}/rollouts/{rollouts\}/jobRuns/{uuid\}`. */ name?: string | null; /** @@ -1442,11 +1475,11 @@ export namespace clouddeploy_v1 { */ export interface Schema$KubernetesConfig { /** - * Kubernetes Gateway API service mesh configuration. + * Optional. Kubernetes Gateway API service mesh configuration. */ gatewayServiceMesh?: Schema$GatewayServiceMesh; /** - * Kubernetes Service networking configuration. + * Optional. Kubernetes Service networking configuration. */ serviceNetworking?: Schema$ServiceNetworking; } @@ -1743,7 +1776,7 @@ export namespace clouddeploy_v1 { */ endTime?: string | null; /** - * Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`. + * Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`. */ requestedCancellation?: boolean | null; /** @@ -1822,11 +1855,11 @@ export namespace clouddeploy_v1 { */ predeploy?: Schema$Predeploy; /** - * Skaffold profiles to use when rendering the manifest for this phase. These are in addition to the profiles list specified in the `DeliveryPipeline` stage. + * Optional. Skaffold profiles to use when rendering the manifest for this phase. These are in addition to the profiles list specified in the `DeliveryPipeline` stage. */ profiles?: string[] | null; /** - * Whether to run verify tests after the deployment. + * Optional. Whether to run verify tests after the deployment. */ verify?: boolean | null; } @@ -1886,7 +1919,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$PolicyRule { /** - * Rollout restrictions. + * Optional. Rollout restrictions. */ rolloutRestriction?: Schema$RolloutRestriction; } @@ -2058,11 +2091,11 @@ export namespace clouddeploy_v1 { */ abandoned?: boolean | null; /** - * User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations. + * Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations. */ annotations?: {[key: string]: string} | null; /** - * List of artifacts to pass through to Skaffold command. + * Optional. List of artifacts to pass through to Skaffold command. */ buildArtifacts?: Schema$BuildArtifact[]; /** @@ -2086,7 +2119,7 @@ export namespace clouddeploy_v1 { */ deployParameters?: {[key: string]: string} | null; /** - * Description of the `Release`. Max length is 255 characters. + * Optional. Description of the `Release`. Max length is 255 characters. */ description?: string | null; /** @@ -2098,7 +2131,7 @@ export namespace clouddeploy_v1 { */ labels?: {[key: string]: string} | null; /** - * Optional. Name of the `Release`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}/releases/{release\}`. The `release` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `Release`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}/releases/{release\}`. The `release` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string | null; /** @@ -2114,15 +2147,15 @@ export namespace clouddeploy_v1 { */ renderState?: string | null; /** - * Filepath of the Skaffold config inside of the config URI. + * Optional. Filepath of the Skaffold config inside of the config URI. */ skaffoldConfigPath?: string | null; /** - * Cloud Storage URI of tar.gz archive containing Skaffold configuration. + * Optional. Cloud Storage URI of tar.gz archive containing Skaffold configuration. */ skaffoldConfigUri?: string | null; /** - * The Skaffold version to use when operating on this release, such as "1.20.0". Not all versions are valid; Cloud Deploy supports a specific set of versions. If unset, the most recent supported Skaffold version will be used. + * Optional. The Skaffold version to use when operating on this release, such as "1.20.0". Not all versions are valid; Cloud Deploy supports a specific set of versions. If unset, the most recent supported Skaffold version will be used. */ skaffoldVersion?: string | null; /** @@ -2481,7 +2514,7 @@ export namespace clouddeploy_v1 { */ activeRepairAutomationRun?: string | null; /** - * User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations. + * Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations. */ annotations?: {[key: string]: string} | null; /** @@ -2517,7 +2550,7 @@ export namespace clouddeploy_v1 { */ deployStartTime?: string | null; /** - * Description of the `Rollout` for user purposes. Max length is 255 characters. + * Optional. Description of the `Rollout` for user purposes. Max length is 255 characters. */ description?: string | null; /** @@ -2541,7 +2574,7 @@ export namespace clouddeploy_v1 { */ metadata?: Schema$Metadata; /** - * Optional. Name of the `Rollout`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}/releases/{release\}/rollouts/{rollout\}`. The `rollout` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `Rollout`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}/releases/{release\}/rollouts/{rollout\}`. The `rollout` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string | null; /** @@ -2664,16 +2697,29 @@ export namespace clouddeploy_v1 { */ type?: string | null; } + /** + * Information about route destinations for the Gateway API service mesh. + */ + export interface Schema$RouteDestinations { + /** + * Required. The clusters where the Gateway API HTTPRoute resource will be deployed to. Valid entries include the associated entities IDs configured in the Target resource and "@self" to include the Target cluster. + */ + destinationIds?: string[] | null; + /** + * Optional. Whether to propagate the Kubernetes Service to the route destination clusters. The Service will always be deployed to the Target cluster even if the HTTPRoute is not. This option may be used to facilitiate successful DNS lookup in the route destination clusters. Can only be set to true if destinations are specified. + */ + propagateService?: boolean | null; + } /** * RuntimeConfig contains the runtime specific configurations for a deployment strategy. */ export interface Schema$RuntimeConfig { /** - * Cloud Run runtime configuration. + * Optional. Cloud Run runtime configuration. */ cloudRun?: Schema$CloudRunConfig; /** - * Kubernetes runtime configuration. + * Optional. Kubernetes runtime configuration. */ kubernetes?: Schema$KubernetesConfig; } @@ -2682,7 +2728,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$SerialPipeline { /** - * Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow. + * Optional. Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow. */ stages?: Schema$Stage[]; } @@ -2776,15 +2822,15 @@ export namespace clouddeploy_v1 { */ configs?: string[] | null; /** - * Remote git repository containing the Skaffold Config modules. + * Optional. Remote git repository containing the Skaffold Config modules. */ git?: Schema$SkaffoldGitSource; /** - * Cloud Build V2 repository containing the Skaffold Config modules. + * Optional. Cloud Build V2 repository containing the Skaffold Config modules. */ googleCloudBuildRepo?: Schema$SkaffoldGCBRepoSource; /** - * Cloud Storage bucket containing the Skaffold Config modules. + * Optional. Cloud Storage bucket containing the Skaffold Config modules. */ googleCloudStorage?: Schema$SkaffoldGCSSource; } @@ -2839,7 +2885,7 @@ export namespace clouddeploy_v1 { */ deployParameters?: Schema$DeployParameters[]; /** - * Skaffold profiles to use when rendering the manifest for this stage's `Target`. + * Optional. Skaffold profiles to use when rendering the manifest for this stage's `Target`. */ profiles?: string[] | null; /** @@ -2847,7 +2893,7 @@ export namespace clouddeploy_v1 { */ strategy?: Schema$Strategy; /** - * The target_id to which this stage points. This field refers exclusively to the last segment of a target name. For example, this field would just be `my-target` (rather than `projects/project/locations/location/targets/my-target`). The location of the `Target` is inferred to be the same as the location of the `DeliveryPipeline` that contains this `Stage`. + * Optional. The target_id to which this stage points. This field refers exclusively to the last segment of a target name. For example, this field would just be `my-target` (rather than `projects/project/locations/location/targets/my-target`). The location of the `Target` is inferred to be the same as the location of the `DeliveryPipeline` that contains this `Stage`. */ targetId?: string | null; } @@ -2864,7 +2910,7 @@ export namespace clouddeploy_v1 { */ predeploy?: Schema$Predeploy; /** - * Whether to verify a deployment. + * Optional. Whether to verify a deployment. */ verify?: boolean | null; } @@ -2890,11 +2936,11 @@ export namespace clouddeploy_v1 { */ export interface Schema$Strategy { /** - * Canary deployment strategy provides progressive percentage based deployments to a Target. + * Optional. Canary deployment strategy provides progressive percentage based deployments to a Target. */ canary?: Schema$Canary; /** - * Standard deployment strategy executes a single deploy and allows verifying the deployment. + * Optional. Standard deployment strategy executes a single deploy and allows verifying the deployment. */ standard?: Schema$Standard; } @@ -2910,6 +2956,10 @@ export namespace clouddeploy_v1 { * Optional. Information specifying an Anthos Cluster. */ anthosCluster?: Schema$AnthosCluster; + /** + * Optional. Map of entity IDs to their associated entities. Associated entities allows specifying places other than the deployment target for specific features. For example, the Gateway API canary can be configured to deploy the HTTPRoute to a different cluster(s) than the deployment cluster using associated entities. An entity ID must consist of lower-case letters, numbers, and hyphens, start with a letter and end with a letter or a number, and have a max length of 63 characters. In other words, it must match the following regex: `^[a-z]([a-z0-9-]{0,61\}[a-z0-9])?$`. + */ + associatedEntities?: {[key: string]: Schema$AssociatedEntities} | null; /** * Output only. Time at which the `Target` was created. */ @@ -2931,7 +2981,7 @@ export namespace clouddeploy_v1 { */ etag?: string | null; /** - * Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`. + * Optional. Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`. */ executionConfigs?: Schema$ExecutionConfig[]; /** @@ -2947,7 +2997,7 @@ export namespace clouddeploy_v1 { */ multiTarget?: Schema$MultiTarget; /** - * Optional. Name of the `Target`. Format is `projects/{project\}/locations/{location\}/targets/{target\}`. The `target` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `Target`. Format is `projects/{project\}/locations/{location\}/targets/{target\}`. The `target` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string | null; /** @@ -2997,7 +3047,7 @@ export namespace clouddeploy_v1 { */ export interface Schema$TargetAttribute { /** - * ID of the `Target`. The value of this field could be one of the following: * The last segment of a target name * "*", all targets in a location + * Optional. ID of the `Target`. The value of this field could be one of the following: * The last segment of a target name * "*", all targets in a location */ id?: string | null; /** @@ -3047,6 +3097,19 @@ export namespace clouddeploy_v1 { */ renderingState?: string | null; } + /** + * The targets involved in a single timed promotion. + */ + export interface Schema$Targets { + /** + * Optional. The destination target ID. + */ + destinationTargetId?: string | null; + /** + * Optional. The source target ID. + */ + sourceTargetId?: string | null; + } /** * `TargetsPresentCondition` contains information on any Targets referenced in the Delivery Pipeline that do not actually exist. */ @@ -3108,24 +3171,83 @@ export namespace clouddeploy_v1 { */ permissions?: string[] | null; } + /** + * `TimedPromoteReleaseCondition` contains conditions specific to an Automation with a Timed Promote Release rule defined. + */ + export interface Schema$TimedPromoteReleaseCondition { + /** + * Output only. When the next scheduled promotion(s) will occur. + */ + nextPromotionTime?: string | null; + /** + * Output only. A list of targets involved in the upcoming timed promotion(s). + */ + targetsList?: Schema$Targets[]; + } + /** + * Contains the information of an automated timed promote-release operation. + */ + export interface Schema$TimedPromoteReleaseOperation { + /** + * Output only. The starting phase of the rollout created by this operation. + */ + phase?: string | null; + /** + * Output only. The name of the release to be promoted. + */ + release?: string | null; + /** + * Output only. The ID of the target that represents the promotion stage to which the release will be promoted. The value of this field is the last segment of a target name. + */ + targetId?: string | null; + } + /** + * The `TimedPromoteReleaseRule` will automatically promote a release from the current target(s) to the specified target(s) on a configured schedule. + */ + export interface Schema$TimedPromoteReleaseRule { + /** + * Output only. Information around the state of the Automation rule. + */ + condition?: Schema$AutomationRuleCondition; + /** + * Optional. The starting phase of the rollout created by this rule. Default to the first phase. + */ + destinationPhase?: string | null; + /** + * Optional. The ID of the stage in the pipeline to which this `Release` is deploying. If unspecified, default it to the next stage in the promotion flow. The value of this field could be one of the following: * The last segment of a target name * "@next", the next target in the promotion sequence + */ + destinationTargetId?: string | null; + /** + * Required. ID of the rule. This ID must be unique in the `Automation` resource to which this rule belongs. The format is `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?`. + */ + id?: string | null; + /** + * Required. Schedule in crontab format. e.g. "0 9 * * 1" for every Monday at 9am. + */ + schedule?: string | null; + /** + * Required. The time zone in IANA format [IANA Time Zone Database](https://www.iana.org/time-zones) (e.g. America/New_York). + */ + timeZone?: string | null; + } /** * Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. */ export interface Schema$TimeOfDay { /** - * Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time. + * Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time. */ hours?: number | null; /** - * Minutes of hour of day. Must be from 0 to 59. + * Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59. */ minutes?: number | null; /** - * Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. + * Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999. */ nanos?: number | null; /** - * Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds. + * Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds. */ seconds?: number | null; } @@ -4246,7 +4368,7 @@ export namespace clouddeploy_v1 { */ allowMissing?: boolean; /** - * Optional. Name of the `CustomTargetType`. Format is `projects/{project\}/locations/{location\}/customTargetTypes/{customTargetType\}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `CustomTargetType`. Format is `projects/{project\}/locations/{location\}/customTargetTypes/{customTargetType\}`. The `customTargetType` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string; /** @@ -5215,7 +5337,7 @@ export namespace clouddeploy_v1 { */ allowMissing?: boolean; /** - * Optional. Name of the `DeliveryPipeline`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `DeliveryPipeline`. Format is `projects/{project\}/locations/{location\}/deliveryPipelines/{deliveryPipeline\}`. The `deliveryPipeline` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string; /** @@ -8056,6 +8178,95 @@ export namespace clouddeploy_v1 { } } + /** + * Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set. + * + * @param params - Parameters for request + * @param options - Optionally override request options, such as `url`, `method`, and `encoding`. + * @param callback - Optional callback that handles the response. + * @returns A promise if used with async/await, or void if used with a callback. + */ + getIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy, + options: StreamMethodOptions + ): GaxiosPromise; + getIamPolicy( + params?: Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy, + options?: MethodOptions + ): GaxiosPromise; + getIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy, + options: StreamMethodOptions | BodyResponseCallback, + callback: BodyResponseCallback + ): void; + getIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy, + options: MethodOptions | BodyResponseCallback, + callback: BodyResponseCallback + ): void; + getIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy, + callback: BodyResponseCallback + ): void; + getIamPolicy(callback: BodyResponseCallback): void; + getIamPolicy( + paramsOrCallback?: + | Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy + | BodyResponseCallback + | BodyResponseCallback, + optionsOrCallback?: + | MethodOptions + | StreamMethodOptions + | BodyResponseCallback + | BodyResponseCallback, + callback?: + | BodyResponseCallback + | BodyResponseCallback + ): void | GaxiosPromise | GaxiosPromise { + let params = (paramsOrCallback || + {}) as Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy; + let options = (optionsOrCallback || {}) as MethodOptions; + + if (typeof paramsOrCallback === 'function') { + callback = paramsOrCallback; + params = + {} as Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy; + options = {}; + } + + if (typeof optionsOrCallback === 'function') { + callback = optionsOrCallback; + options = {}; + } + + const rootUrl = options.rootUrl || 'https://clouddeploy.googleapis.com/'; + const parameters = { + options: Object.assign( + { + url: (rootUrl + '/v1/{+resource}:getIamPolicy').replace( + /([^:]\/)\/+/g, + '$1' + ), + method: 'GET', + apiVersion: '', + }, + options + ), + params, + requiredParams: ['resource'], + pathParams: ['resource'], + context: this.context, + }; + if (callback) { + createAPIRequest( + parameters, + callback as BodyResponseCallback + ); + } else { + return createAPIRequest(parameters); + } + } + /** * Lists DeployPolicies in a given project and location. * @@ -8235,6 +8446,95 @@ export namespace clouddeploy_v1 { return createAPIRequest(parameters); } } + + /** + * Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors. + * + * @param params - Parameters for request + * @param options - Optionally override request options, such as `url`, `method`, and `encoding`. + * @param callback - Optional callback that handles the response. + * @returns A promise if used with async/await, or void if used with a callback. + */ + setIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy, + options: StreamMethodOptions + ): GaxiosPromise; + setIamPolicy( + params?: Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy, + options?: MethodOptions + ): GaxiosPromise; + setIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy, + options: StreamMethodOptions | BodyResponseCallback, + callback: BodyResponseCallback + ): void; + setIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy, + options: MethodOptions | BodyResponseCallback, + callback: BodyResponseCallback + ): void; + setIamPolicy( + params: Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy, + callback: BodyResponseCallback + ): void; + setIamPolicy(callback: BodyResponseCallback): void; + setIamPolicy( + paramsOrCallback?: + | Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy + | BodyResponseCallback + | BodyResponseCallback, + optionsOrCallback?: + | MethodOptions + | StreamMethodOptions + | BodyResponseCallback + | BodyResponseCallback, + callback?: + | BodyResponseCallback + | BodyResponseCallback + ): void | GaxiosPromise | GaxiosPromise { + let params = (paramsOrCallback || + {}) as Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy; + let options = (optionsOrCallback || {}) as MethodOptions; + + if (typeof paramsOrCallback === 'function') { + callback = paramsOrCallback; + params = + {} as Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy; + options = {}; + } + + if (typeof optionsOrCallback === 'function') { + callback = optionsOrCallback; + options = {}; + } + + const rootUrl = options.rootUrl || 'https://clouddeploy.googleapis.com/'; + const parameters = { + options: Object.assign( + { + url: (rootUrl + '/v1/{+resource}:setIamPolicy').replace( + /([^:]\/)\/+/g, + '$1' + ), + method: 'POST', + apiVersion: '', + }, + options + ), + params, + requiredParams: ['resource'], + pathParams: ['resource'], + context: this.context, + }; + if (callback) { + createAPIRequest( + parameters, + callback as BodyResponseCallback + ); + } else { + return createAPIRequest(parameters); + } + } } export interface Params$Resource$Projects$Locations$Deploypolicies$Create @@ -8291,6 +8591,17 @@ export namespace clouddeploy_v1 { */ name?: string; } + export interface Params$Resource$Projects$Locations$Deploypolicies$Getiampolicy + extends StandardParameters { + /** + * Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). + */ + 'options.requestedPolicyVersion'?: number; + /** + * REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. + */ + resource?: string; + } export interface Params$Resource$Projects$Locations$Deploypolicies$List extends StandardParameters { /** @@ -8342,6 +8653,18 @@ export namespace clouddeploy_v1 { */ requestBody?: Schema$DeployPolicy; } + export interface Params$Resource$Projects$Locations$Deploypolicies$Setiampolicy + extends StandardParameters { + /** + * REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. + */ + resource?: string; + + /** + * Request body metadata + */ + requestBody?: Schema$SetIamPolicyRequest; + } export class Resource$Projects$Locations$Operations { context: APIRequestContext; @@ -8350,7 +8673,7 @@ export namespace clouddeploy_v1 { } /** - * Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`. + * Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`. * * @param params - Parameters for request * @param options - Optionally override request options, such as `url`, `method`, and `encoding`. @@ -9552,7 +9875,7 @@ export namespace clouddeploy_v1 { */ allowMissing?: boolean; /** - * Optional. Name of the `Target`. Format is `projects/{project\}/locations/{location\}/targets/{target\}`. The `target` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` + * Identifier. Name of the `Target`. Format is `projects/{project\}/locations/{location\}/targets/{target\}`. The `target` component must match `[a-z]([a-z0-9-]{0,61\}[a-z0-9])?` */ name?: string; /**