diff --git a/Deploy/metadata/V1/CloudDeploy.php b/Deploy/metadata/V1/CloudDeploy.php index c9a2be1637a2..a0e8102a4107 100644 Binary files a/Deploy/metadata/V1/CloudDeploy.php and b/Deploy/metadata/V1/CloudDeploy.php differ diff --git a/Deploy/metadata/V1/LogEnums.php b/Deploy/metadata/V1/LogEnums.php index eb87553c34e1..27693e1cb5e5 100644 Binary files a/Deploy/metadata/V1/LogEnums.php and b/Deploy/metadata/V1/LogEnums.php differ diff --git a/Deploy/src/V1/AdvanceRolloutRequest.php b/Deploy/src/V1/AdvanceRolloutRequest.php index f8c39a9f3dba..dd584135c39b 100644 --- a/Deploy/src/V1/AdvanceRolloutRequest.php +++ b/Deploy/src/V1/AdvanceRolloutRequest.php @@ -28,6 +28,13 @@ class AdvanceRolloutRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field string phase_id = 2 [(.google.api.field_behavior) = REQUIRED]; */ protected $phase_id = ''; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $name Required. Name of the Rollout. Format is @@ -57,6 +64,9 @@ public static function build(string $name, string $phaseId): self * `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/{rollout}`. * @type string $phase_id * Required. The phase ID to advance the `Rollout` to. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * } */ public function __construct($data = NULL) { @@ -118,5 +128,33 @@ public function setPhaseId($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/ApproveRolloutRequest.php b/Deploy/src/V1/ApproveRolloutRequest.php index 4f881df0b1c2..c0e44d90c61f 100644 --- a/Deploy/src/V1/ApproveRolloutRequest.php +++ b/Deploy/src/V1/ApproveRolloutRequest.php @@ -28,6 +28,13 @@ class ApproveRolloutRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field bool approved = 2 [(.google.api.field_behavior) = REQUIRED]; */ protected $approved = false; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $name Required. Name of the Rollout. Format is @@ -55,6 +62,9 @@ public static function build(string $name): self * `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/{rollout}`. * @type bool $approved * Required. True = approve; false = reject + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * } */ public function __construct($data = NULL) { @@ -116,5 +126,33 @@ public function setApproved($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/AutomationRun.php b/Deploy/src/V1/AutomationRun.php index 3db70ad3d274..8e58a483df78 100644 --- a/Deploy/src/V1/AutomationRun.php +++ b/Deploy/src/V1/AutomationRun.php @@ -80,6 +80,13 @@ class AutomationRun extends \Google\Protobuf\Internal\Message * Generated from protobuf field string state_description = 9 [(.google.api.field_behavior) = OUTPUT_ONLY]; */ protected $state_description = ''; + /** + * Output only. Contains information about what policies prevented the + * `AutomationRun` from proceeding. + * + * Generated from protobuf field .google.cloud.deploy.v1.PolicyViolation policy_violation = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + protected $policy_violation = null; /** * Output only. Time the `AutomationRun` expires. An `AutomationRun` expires * after 14 days from its creation date. @@ -141,6 +148,9 @@ class AutomationRun extends \Google\Protobuf\Internal\Message * @type string $state_description * Output only. Explains the current state of the `AutomationRun`. Present * only when an explanation is needed. + * @type \Google\Cloud\Deploy\V1\PolicyViolation $policy_violation + * Output only. Contains information about what policies prevented the + * `AutomationRun` from proceeding. * @type \Google\Protobuf\Timestamp $expire_time * Output only. Time the `AutomationRun` expires. An `AutomationRun` expires * after 14 days from its creation date. @@ -446,6 +456,44 @@ public function setStateDescription($var) return $this; } + /** + * Output only. Contains information about what policies prevented the + * `AutomationRun` from proceeding. + * + * Generated from protobuf field .google.cloud.deploy.v1.PolicyViolation policy_violation = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Cloud\Deploy\V1\PolicyViolation|null + */ + public function getPolicyViolation() + { + return $this->policy_violation; + } + + public function hasPolicyViolation() + { + return isset($this->policy_violation); + } + + public function clearPolicyViolation() + { + unset($this->policy_violation); + } + + /** + * Output only. Contains information about what policies prevented the + * `AutomationRun` from proceeding. + * + * Generated from protobuf field .google.cloud.deploy.v1.PolicyViolation policy_violation = 10 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Cloud\Deploy\V1\PolicyViolation $var + * @return $this + */ + public function setPolicyViolation($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\Deploy\V1\PolicyViolation::class); + $this->policy_violation = $var; + + return $this; + } + /** * Output only. Time the `AutomationRun` expires. An `AutomationRun` expires * after 14 days from its creation date. diff --git a/Deploy/src/V1/CancelRolloutRequest.php b/Deploy/src/V1/CancelRolloutRequest.php index 3ae1d6f52a6f..540f9ddb48dd 100644 --- a/Deploy/src/V1/CancelRolloutRequest.php +++ b/Deploy/src/V1/CancelRolloutRequest.php @@ -22,6 +22,13 @@ class CancelRolloutRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { */ protected $name = ''; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $name Required. Name of the Rollout. Format is @@ -47,6 +54,9 @@ public static function build(string $name): self * @type string $name * Required. Name of the Rollout. Format is * `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/{rollout}`. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * } */ public function __construct($data = NULL) { @@ -82,5 +92,33 @@ public function setName($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/Client/CloudDeployClient.php b/Deploy/src/V1/Client/CloudDeployClient.php index 6bb7d99f935d..48adb7913db0 100644 --- a/Deploy/src/V1/Client/CloudDeployClient.php +++ b/Deploy/src/V1/Client/CloudDeployClient.php @@ -50,6 +50,7 @@ use Google\Cloud\Deploy\V1\CreateAutomationRequest; use Google\Cloud\Deploy\V1\CreateCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\CreateDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\CreateDeployPolicyRequest; use Google\Cloud\Deploy\V1\CreateReleaseRequest; use Google\Cloud\Deploy\V1\CreateRolloutRequest; use Google\Cloud\Deploy\V1\CreateTargetRequest; @@ -57,13 +58,16 @@ use Google\Cloud\Deploy\V1\DeleteAutomationRequest; use Google\Cloud\Deploy\V1\DeleteCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\DeleteDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\DeleteDeployPolicyRequest; use Google\Cloud\Deploy\V1\DeleteTargetRequest; use Google\Cloud\Deploy\V1\DeliveryPipeline; +use Google\Cloud\Deploy\V1\DeployPolicy; use Google\Cloud\Deploy\V1\GetAutomationRequest; use Google\Cloud\Deploy\V1\GetAutomationRunRequest; use Google\Cloud\Deploy\V1\GetConfigRequest; use Google\Cloud\Deploy\V1\GetCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\GetDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\GetDeployPolicyRequest; use Google\Cloud\Deploy\V1\GetJobRunRequest; use Google\Cloud\Deploy\V1\GetReleaseRequest; use Google\Cloud\Deploy\V1\GetRolloutRequest; @@ -75,6 +79,7 @@ use Google\Cloud\Deploy\V1\ListAutomationsRequest; use Google\Cloud\Deploy\V1\ListCustomTargetTypesRequest; use Google\Cloud\Deploy\V1\ListDeliveryPipelinesRequest; +use Google\Cloud\Deploy\V1\ListDeployPoliciesRequest; use Google\Cloud\Deploy\V1\ListJobRunsRequest; use Google\Cloud\Deploy\V1\ListReleasesRequest; use Google\Cloud\Deploy\V1\ListRolloutsRequest; @@ -91,6 +96,7 @@ use Google\Cloud\Deploy\V1\UpdateAutomationRequest; use Google\Cloud\Deploy\V1\UpdateCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\UpdateDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\UpdateDeployPolicyRequest; use Google\Cloud\Deploy\V1\UpdateTargetRequest; use Google\Cloud\Iam\V1\GetIamPolicyRequest; use Google\Cloud\Iam\V1\Policy; @@ -124,18 +130,21 @@ * @method PromiseInterface createAutomationAsync(CreateAutomationRequest $request, array $optionalArgs = []) * @method PromiseInterface createCustomTargetTypeAsync(CreateCustomTargetTypeRequest $request, array $optionalArgs = []) * @method PromiseInterface createDeliveryPipelineAsync(CreateDeliveryPipelineRequest $request, array $optionalArgs = []) + * @method PromiseInterface createDeployPolicyAsync(CreateDeployPolicyRequest $request, array $optionalArgs = []) * @method PromiseInterface createReleaseAsync(CreateReleaseRequest $request, array $optionalArgs = []) * @method PromiseInterface createRolloutAsync(CreateRolloutRequest $request, array $optionalArgs = []) * @method PromiseInterface createTargetAsync(CreateTargetRequest $request, array $optionalArgs = []) * @method PromiseInterface deleteAutomationAsync(DeleteAutomationRequest $request, array $optionalArgs = []) * @method PromiseInterface deleteCustomTargetTypeAsync(DeleteCustomTargetTypeRequest $request, array $optionalArgs = []) * @method PromiseInterface deleteDeliveryPipelineAsync(DeleteDeliveryPipelineRequest $request, array $optionalArgs = []) + * @method PromiseInterface deleteDeployPolicyAsync(DeleteDeployPolicyRequest $request, array $optionalArgs = []) * @method PromiseInterface deleteTargetAsync(DeleteTargetRequest $request, array $optionalArgs = []) * @method PromiseInterface getAutomationAsync(GetAutomationRequest $request, array $optionalArgs = []) * @method PromiseInterface getAutomationRunAsync(GetAutomationRunRequest $request, array $optionalArgs = []) * @method PromiseInterface getConfigAsync(GetConfigRequest $request, array $optionalArgs = []) * @method PromiseInterface getCustomTargetTypeAsync(GetCustomTargetTypeRequest $request, array $optionalArgs = []) * @method PromiseInterface getDeliveryPipelineAsync(GetDeliveryPipelineRequest $request, array $optionalArgs = []) + * @method PromiseInterface getDeployPolicyAsync(GetDeployPolicyRequest $request, array $optionalArgs = []) * @method PromiseInterface getJobRunAsync(GetJobRunRequest $request, array $optionalArgs = []) * @method PromiseInterface getReleaseAsync(GetReleaseRequest $request, array $optionalArgs = []) * @method PromiseInterface getRolloutAsync(GetRolloutRequest $request, array $optionalArgs = []) @@ -145,6 +154,7 @@ * @method PromiseInterface listAutomationsAsync(ListAutomationsRequest $request, array $optionalArgs = []) * @method PromiseInterface listCustomTargetTypesAsync(ListCustomTargetTypesRequest $request, array $optionalArgs = []) * @method PromiseInterface listDeliveryPipelinesAsync(ListDeliveryPipelinesRequest $request, array $optionalArgs = []) + * @method PromiseInterface listDeployPoliciesAsync(ListDeployPoliciesRequest $request, array $optionalArgs = []) * @method PromiseInterface listJobRunsAsync(ListJobRunsRequest $request, array $optionalArgs = []) * @method PromiseInterface listReleasesAsync(ListReleasesRequest $request, array $optionalArgs = []) * @method PromiseInterface listRolloutsAsync(ListRolloutsRequest $request, array $optionalArgs = []) @@ -155,6 +165,7 @@ * @method PromiseInterface updateAutomationAsync(UpdateAutomationRequest $request, array $optionalArgs = []) * @method PromiseInterface updateCustomTargetTypeAsync(UpdateCustomTargetTypeRequest $request, array $optionalArgs = []) * @method PromiseInterface updateDeliveryPipelineAsync(UpdateDeliveryPipelineRequest $request, array $optionalArgs = []) + * @method PromiseInterface updateDeployPolicyAsync(UpdateDeployPolicyRequest $request, array $optionalArgs = []) * @method PromiseInterface updateTargetAsync(UpdateTargetRequest $request, array $optionalArgs = []) * @method PromiseInterface getLocationAsync(GetLocationRequest $request, array $optionalArgs = []) * @method PromiseInterface listLocationsAsync(ListLocationsRequest $request, array $optionalArgs = []) @@ -403,6 +414,25 @@ public static function deliveryPipelineName(string $project, string $location, s ]); } + /** + * Formats a string containing the fully-qualified path to represent a + * deploy_policy resource. + * + * @param string $project + * @param string $location + * @param string $deployPolicy + * + * @return string The formatted deploy_policy resource. + */ + public static function deployPolicyName(string $project, string $location, string $deployPolicy): string + { + return self::getPathTemplate('deployPolicy')->render([ + 'project' => $project, + 'location' => $location, + 'deploy_policy' => $deployPolicy, + ]); + } + /** * Formats a string containing the fully-qualified path to represent a job * resource. @@ -635,6 +665,7 @@ public static function workerPoolName(string $project, string $location, string * - config: projects/{project}/locations/{location}/config * - customTargetType: projects/{project}/locations/{location}/customTargetTypes/{custom_target_type} * - deliveryPipeline: projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline} + * - deployPolicy: projects/{project}/locations/{location}/deployPolicies/{deploy_policy} * - job: projects/{project}/locations/{location}/jobs/{job} * - jobRun: projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}/releases/{release}/rollouts/{rollout}/jobRuns/{job_run} * - location: projects/{project}/locations/{location} @@ -953,6 +984,32 @@ public function createDeliveryPipeline( return $this->startApiCall('CreateDeliveryPipeline', $request, $callOptions)->wait(); } + /** + * Creates a new DeployPolicy in a given project and location. + * + * The async variant is {@see CloudDeployClient::createDeployPolicyAsync()} . + * + * @example samples/V1/CloudDeployClient/create_deploy_policy.php + * + * @param CreateDeployPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function createDeployPolicy(CreateDeployPolicyRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('CreateDeployPolicy', $request, $callOptions)->wait(); + } + /** * Creates a new Release in a given project and location. * @@ -1113,6 +1170,32 @@ public function deleteDeliveryPipeline( return $this->startApiCall('DeleteDeliveryPipeline', $request, $callOptions)->wait(); } + /** + * Deletes a single DeployPolicy. + * + * The async variant is {@see CloudDeployClient::deleteDeployPolicyAsync()} . + * + * @example samples/V1/CloudDeployClient/delete_deploy_policy.php + * + * @param DeleteDeployPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function deleteDeployPolicy(DeleteDeployPolicyRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('DeleteDeployPolicy', $request, $callOptions)->wait(); + } + /** * Deletes a single Target. * @@ -1269,6 +1352,32 @@ public function getDeliveryPipeline(GetDeliveryPipelineRequest $request, array $ return $this->startApiCall('GetDeliveryPipeline', $request, $callOptions)->wait(); } + /** + * Gets details of a single DeployPolicy. + * + * The async variant is {@see CloudDeployClient::getDeployPolicyAsync()} . + * + * @example samples/V1/CloudDeployClient/get_deploy_policy.php + * + * @param GetDeployPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return DeployPolicy + * + * @throws ApiException Thrown if the API call fails. + */ + public function getDeployPolicy(GetDeployPolicyRequest $request, array $callOptions = []): DeployPolicy + { + return $this->startApiCall('GetDeployPolicy', $request, $callOptions)->wait(); + } + /** * Gets details of a single JobRun. * @@ -1507,6 +1616,32 @@ public function listDeliveryPipelines( return $this->startApiCall('ListDeliveryPipelines', $request, $callOptions); } + /** + * Lists DeployPolicies in a given project and location. + * + * The async variant is {@see CloudDeployClient::listDeployPoliciesAsync()} . + * + * @example samples/V1/CloudDeployClient/list_deploy_policies.php + * + * @param ListDeployPoliciesRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listDeployPolicies(ListDeployPoliciesRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListDeployPolicies', $request, $callOptions); + } + /** * Lists JobRuns in a given project and location. * @@ -1771,6 +1906,32 @@ public function updateDeliveryPipeline( return $this->startApiCall('UpdateDeliveryPipeline', $request, $callOptions)->wait(); } + /** + * Updates the parameters of a single DeployPolicy. + * + * The async variant is {@see CloudDeployClient::updateDeployPolicyAsync()} . + * + * @example samples/V1/CloudDeployClient/update_deploy_policy.php + * + * @param UpdateDeployPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function updateDeployPolicy(UpdateDeployPolicyRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('UpdateDeployPolicy', $request, $callOptions)->wait(); + } + /** * Updates the parameters of a single Target. * diff --git a/Deploy/src/V1/CreateReleaseRequest.php b/Deploy/src/V1/CreateReleaseRequest.php index 27e81a1e44db..06f287273d32 100644 --- a/Deploy/src/V1/CreateReleaseRequest.php +++ b/Deploy/src/V1/CreateReleaseRequest.php @@ -58,6 +58,13 @@ class CreateReleaseRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field bool validate_only = 5 [(.google.api.field_behavior) = OPTIONAL]; */ protected $validate_only = false; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 6 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $parent Required. The parent collection in which the `Release` is created. @@ -108,6 +115,9 @@ public static function build(string $parent, \Google\Cloud\Deploy\V1\Release $re * @type bool $validate_only * Optional. If set to true, the request is validated and the user is provided * with an expected result, but no actual change is made. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * } */ public function __construct($data = NULL) { @@ -281,5 +291,33 @@ public function setValidateOnly($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 6 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 6 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/CreateRolloutRequest.php b/Deploy/src/V1/CreateRolloutRequest.php index 30f1bc25d5d7..f8ce1968ee03 100644 --- a/Deploy/src/V1/CreateRolloutRequest.php +++ b/Deploy/src/V1/CreateRolloutRequest.php @@ -58,6 +58,13 @@ class CreateRolloutRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field bool validate_only = 5 [(.google.api.field_behavior) = OPTIONAL]; */ protected $validate_only = false; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 6 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * Optional. The starting phase ID for the `Rollout`. If empty the `Rollout` * will start at the first phase. @@ -115,6 +122,9 @@ public static function build(string $parent, \Google\Cloud\Deploy\V1\Rollout $ro * @type bool $validate_only * Optional. If set to true, the request is validated and the user is provided * with an expected result, but no actual change is made. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * @type string $starting_phase_id * Optional. The starting phase ID for the `Rollout`. If empty the `Rollout` * will start at the first phase. @@ -291,6 +301,34 @@ public function setValidateOnly($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 6 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 6 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + /** * Optional. The starting phase ID for the `Rollout`. If empty the `Rollout` * will start at the first phase. diff --git a/Deploy/src/V1/DeliveryPipelineAttribute.php b/Deploy/src/V1/DeliveryPipelineAttribute.php index bf43a26e2ea7..ef1ee797ee72 100644 --- a/Deploy/src/V1/DeliveryPipelineAttribute.php +++ b/Deploy/src/V1/DeliveryPipelineAttribute.php @@ -18,9 +18,8 @@ class DeliveryPipelineAttribute extends \Google\Protobuf\Internal\Message /** * ID of the `DeliveryPipeline`. The value of this field could be one of the * following: - * * The last segment of a pipeline name. It only needs the ID to determine - * which pipeline is being referred to - * * "*", all delivery pipelines in a location. + * * The last segment of a pipeline name + * * "*", all delivery pipelines in a location * * Generated from protobuf field string id = 1; */ @@ -41,9 +40,8 @@ class DeliveryPipelineAttribute extends \Google\Protobuf\Internal\Message * @type string $id * ID of the `DeliveryPipeline`. The value of this field could be one of the * following: - * * The last segment of a pipeline name. It only needs the ID to determine - * which pipeline is being referred to - * * "*", all delivery pipelines in a location. + * * The last segment of a pipeline name + * * "*", all delivery pipelines in a location * @type array|\Google\Protobuf\Internal\MapField $labels * DeliveryPipeline labels. * } @@ -56,9 +54,8 @@ public function __construct($data = NULL) { /** * ID of the `DeliveryPipeline`. The value of this field could be one of the * following: - * * The last segment of a pipeline name. It only needs the ID to determine - * which pipeline is being referred to - * * "*", all delivery pipelines in a location. + * * The last segment of a pipeline name + * * "*", all delivery pipelines in a location * * Generated from protobuf field string id = 1; * @return string @@ -71,9 +68,8 @@ public function getId() /** * ID of the `DeliveryPipeline`. The value of this field could be one of the * following: - * * The last segment of a pipeline name. It only needs the ID to determine - * which pipeline is being referred to - * * "*", all delivery pipelines in a location. + * * The last segment of a pipeline name + * * "*", all delivery pipelines in a location * * Generated from protobuf field string id = 1; * @param string $var diff --git a/Deploy/src/V1/DeployPolicy.php b/Deploy/src/V1/DeployPolicy.php index 3dd108745826..0076a6bc9779 100644 --- a/Deploy/src/V1/DeployPolicy.php +++ b/Deploy/src/V1/DeployPolicy.php @@ -10,7 +10,7 @@ /** * A `DeployPolicy` resource in the Cloud Deploy API. - * A `DeployPolicy` inhibits manual or automation driven actions within a + * A `DeployPolicy` inhibits manual or automation-driven actions within a * Delivery Pipeline or Target. * * Generated from protobuf message google.cloud.deploy.v1.DeployPolicy diff --git a/Deploy/src/V1/IgnoreJobRequest.php b/Deploy/src/V1/IgnoreJobRequest.php index 094701d85774..d191c4db127a 100644 --- a/Deploy/src/V1/IgnoreJobRequest.php +++ b/Deploy/src/V1/IgnoreJobRequest.php @@ -34,6 +34,13 @@ class IgnoreJobRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field string job_id = 3 [(.google.api.field_behavior) = REQUIRED]; */ protected $job_id = ''; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $rollout Required. Name of the Rollout. Format is @@ -67,6 +74,9 @@ public static function build(string $rollout, string $phaseId, string $jobId): s * Required. The phase ID the Job to ignore belongs to. * @type string $job_id * Required. The job ID for the Job to ignore. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * } */ public function __construct($data = NULL) { @@ -154,5 +164,33 @@ public function setJobId($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/OneTimeWindow.php b/Deploy/src/V1/OneTimeWindow.php new file mode 100644 index 000000000000..46893dbebc01 --- /dev/null +++ b/Deploy/src/V1/OneTimeWindow.php @@ -0,0 +1,210 @@ +google.cloud.deploy.v1.OneTimeWindow + */ +class OneTimeWindow extends \Google\Protobuf\Internal\Message +{ + /** + * Required. Start date. + * + * Generated from protobuf field .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + protected $start_date = null; + /** + * Required. Start time (inclusive). Use 00:00 for the beginning of the day. + * + * Generated from protobuf field .google.type.TimeOfDay start_time = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + protected $start_time = null; + /** + * Required. End date. + * + * Generated from protobuf field .google.type.Date end_date = 3 [(.google.api.field_behavior) = REQUIRED]; + */ + protected $end_date = null; + /** + * Required. End time (exclusive). You may use 24:00 for the end of the day. + * + * Generated from protobuf field .google.type.TimeOfDay end_time = 4 [(.google.api.field_behavior) = REQUIRED]; + */ + protected $end_time = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Type\Date $start_date + * Required. Start date. + * @type \Google\Type\TimeOfDay $start_time + * Required. Start time (inclusive). Use 00:00 for the beginning of the day. + * @type \Google\Type\Date $end_date + * Required. End date. + * @type \Google\Type\TimeOfDay $end_time + * Required. End time (exclusive). You may use 24:00 for the end of the day. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Deploy\V1\CloudDeploy::initOnce(); + parent::__construct($data); + } + + /** + * Required. Start date. + * + * Generated from protobuf field .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Type\Date|null + */ + public function getStartDate() + { + return $this->start_date; + } + + public function hasStartDate() + { + return isset($this->start_date); + } + + public function clearStartDate() + { + unset($this->start_date); + } + + /** + * Required. Start date. + * + * Generated from protobuf field .google.type.Date start_date = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Type\Date $var + * @return $this + */ + public function setStartDate($var) + { + GPBUtil::checkMessage($var, \Google\Type\Date::class); + $this->start_date = $var; + + return $this; + } + + /** + * Required. Start time (inclusive). Use 00:00 for the beginning of the day. + * + * Generated from protobuf field .google.type.TimeOfDay start_time = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Type\TimeOfDay|null + */ + public function getStartTime() + { + return $this->start_time; + } + + public function hasStartTime() + { + return isset($this->start_time); + } + + public function clearStartTime() + { + unset($this->start_time); + } + + /** + * Required. Start time (inclusive). Use 00:00 for the beginning of the day. + * + * Generated from protobuf field .google.type.TimeOfDay start_time = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Type\TimeOfDay $var + * @return $this + */ + public function setStartTime($var) + { + GPBUtil::checkMessage($var, \Google\Type\TimeOfDay::class); + $this->start_time = $var; + + return $this; + } + + /** + * Required. End date. + * + * Generated from protobuf field .google.type.Date end_date = 3 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Type\Date|null + */ + public function getEndDate() + { + return $this->end_date; + } + + public function hasEndDate() + { + return isset($this->end_date); + } + + public function clearEndDate() + { + unset($this->end_date); + } + + /** + * Required. End date. + * + * Generated from protobuf field .google.type.Date end_date = 3 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Type\Date $var + * @return $this + */ + public function setEndDate($var) + { + GPBUtil::checkMessage($var, \Google\Type\Date::class); + $this->end_date = $var; + + return $this; + } + + /** + * Required. End time (exclusive). You may use 24:00 for the end of the day. + * + * Generated from protobuf field .google.type.TimeOfDay end_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Type\TimeOfDay|null + */ + public function getEndTime() + { + return $this->end_time; + } + + public function hasEndTime() + { + return isset($this->end_time); + } + + public function clearEndTime() + { + unset($this->end_time); + } + + /** + * Required. End time (exclusive). You may use 24:00 for the end of the day. + * + * Generated from protobuf field .google.type.TimeOfDay end_time = 4 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Type\TimeOfDay $var + * @return $this + */ + public function setEndTime($var) + { + GPBUtil::checkMessage($var, \Google\Type\TimeOfDay::class); + $this->end_time = $var; + + return $this; + } + +} + diff --git a/Deploy/src/V1/PolicyRule.php b/Deploy/src/V1/PolicyRule.php index eec727aeefe3..24b46dc234e1 100644 --- a/Deploy/src/V1/PolicyRule.php +++ b/Deploy/src/V1/PolicyRule.php @@ -9,7 +9,7 @@ use Google\Protobuf\Internal\GPBUtil; /** - * Rule to apply. + * Deploy Policy rule. * * Generated from protobuf message google.cloud.deploy.v1.PolicyRule */ @@ -23,7 +23,7 @@ class PolicyRule extends \Google\Protobuf\Internal\Message * @param array $data { * Optional. Data for populating the Message object. * - * @type \Google\Cloud\Deploy\V1\RestrictRollout $restrict_rollouts + * @type \Google\Cloud\Deploy\V1\RolloutRestriction $rollout_restriction * Rollout restrictions. * } */ @@ -35,30 +35,30 @@ public function __construct($data = NULL) { /** * Rollout restrictions. * - * Generated from protobuf field .google.cloud.deploy.v1.RestrictRollout restrict_rollouts = 1; - * @return \Google\Cloud\Deploy\V1\RestrictRollout|null + * Generated from protobuf field .google.cloud.deploy.v1.RolloutRestriction rollout_restriction = 2; + * @return \Google\Cloud\Deploy\V1\RolloutRestriction|null */ - public function getRestrictRollouts() + public function getRolloutRestriction() { - return $this->readOneof(1); + return $this->readOneof(2); } - public function hasRestrictRollouts() + public function hasRolloutRestriction() { - return $this->hasOneof(1); + return $this->hasOneof(2); } /** * Rollout restrictions. * - * Generated from protobuf field .google.cloud.deploy.v1.RestrictRollout restrict_rollouts = 1; - * @param \Google\Cloud\Deploy\V1\RestrictRollout $var + * Generated from protobuf field .google.cloud.deploy.v1.RolloutRestriction rollout_restriction = 2; + * @param \Google\Cloud\Deploy\V1\RolloutRestriction $var * @return $this */ - public function setRestrictRollouts($var) + public function setRolloutRestriction($var) { - GPBUtil::checkMessage($var, \Google\Cloud\Deploy\V1\RestrictRollout::class); - $this->writeOneof(1, $var); + GPBUtil::checkMessage($var, \Google\Cloud\Deploy\V1\RolloutRestriction::class); + $this->writeOneof(2, $var); return $this; } diff --git a/Deploy/src/V1/RetryJobRequest.php b/Deploy/src/V1/RetryJobRequest.php index eb2ecc465174..398162c57ca6 100644 --- a/Deploy/src/V1/RetryJobRequest.php +++ b/Deploy/src/V1/RetryJobRequest.php @@ -34,6 +34,13 @@ class RetryJobRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field string job_id = 3 [(.google.api.field_behavior) = REQUIRED]; */ protected $job_id = ''; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $rollout Required. Name of the Rollout. Format is @@ -67,6 +74,9 @@ public static function build(string $rollout, string $phaseId, string $jobId): s * Required. The phase ID the Job to retry belongs to. * @type string $job_id * Required. The job ID for the Job to retry. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * } */ public function __construct($data = NULL) { @@ -154,5 +164,33 @@ public function setJobId($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/RollbackTargetRequest.php b/Deploy/src/V1/RollbackTargetRequest.php index d4ec8143210e..f7208f661a50 100644 --- a/Deploy/src/V1/RollbackTargetRequest.php +++ b/Deploy/src/V1/RollbackTargetRequest.php @@ -63,6 +63,13 @@ class RollbackTargetRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field bool validate_only = 7 [(.google.api.field_behavior) = OPTIONAL]; */ protected $validate_only = false; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deploy_policy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 9 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $name Required. The `DeliveryPipeline` for which the rollback `Rollout` must be @@ -110,6 +117,9 @@ public static function build(string $name, string $targetId, string $rolloutId): * @type bool $validate_only * Optional. If set to true, the request is validated and the user is provided * with a `RollbackTargetResponse`. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deploy_policy}`. * } */ public function __construct($data = NULL) { @@ -321,5 +331,33 @@ public function setValidateOnly($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deploy_policy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 9 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deploy_policy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 9 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/RolloutRestriction.php b/Deploy/src/V1/RolloutRestriction.php new file mode 100644 index 000000000000..77c06e34fd09 --- /dev/null +++ b/Deploy/src/V1/RolloutRestriction.php @@ -0,0 +1,191 @@ +google.cloud.deploy.v1.RolloutRestriction + */ +class RolloutRestriction extends \Google\Protobuf\Internal\Message +{ + /** + * Required. Restriction rule ID. Required and must be unique within a + * DeployPolicy. The format is `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`. + * + * Generated from protobuf field string id = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + protected $id = ''; + /** + * Optional. What invoked the action. If left empty, all invoker types will be + * restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.DeployPolicy.Invoker invokers = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $invokers; + /** + * Optional. Rollout actions to be restricted as part of the policy. If left + * empty, all actions will be restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.RolloutRestriction.RolloutActions actions = 3 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $actions; + /** + * Required. Time window within which actions are restricted. + * + * Generated from protobuf field .google.cloud.deploy.v1.TimeWindows time_windows = 4 [(.google.api.field_behavior) = REQUIRED]; + */ + protected $time_windows = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $id + * Required. Restriction rule ID. Required and must be unique within a + * DeployPolicy. The format is `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`. + * @type array|\Google\Protobuf\Internal\RepeatedField $invokers + * Optional. What invoked the action. If left empty, all invoker types will be + * restricted. + * @type array|\Google\Protobuf\Internal\RepeatedField $actions + * Optional. Rollout actions to be restricted as part of the policy. If left + * empty, all actions will be restricted. + * @type \Google\Cloud\Deploy\V1\TimeWindows $time_windows + * Required. Time window within which actions are restricted. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Deploy\V1\CloudDeploy::initOnce(); + parent::__construct($data); + } + + /** + * Required. Restriction rule ID. Required and must be unique within a + * DeployPolicy. The format is `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`. + * + * Generated from protobuf field string id = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return string + */ + public function getId() + { + return $this->id; + } + + /** + * Required. Restriction rule ID. Required and must be unique within a + * DeployPolicy. The format is `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`. + * + * Generated from protobuf field string id = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param string $var + * @return $this + */ + public function setId($var) + { + GPBUtil::checkString($var, True); + $this->id = $var; + + return $this; + } + + /** + * Optional. What invoked the action. If left empty, all invoker types will be + * restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.DeployPolicy.Invoker invokers = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getInvokers() + { + return $this->invokers; + } + + /** + * Optional. What invoked the action. If left empty, all invoker types will be + * restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.DeployPolicy.Invoker invokers = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setInvokers($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Google\Cloud\Deploy\V1\DeployPolicy\Invoker::class); + $this->invokers = $arr; + + return $this; + } + + /** + * Optional. Rollout actions to be restricted as part of the policy. If left + * empty, all actions will be restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.RolloutRestriction.RolloutActions actions = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getActions() + { + return $this->actions; + } + + /** + * Optional. Rollout actions to be restricted as part of the policy. If left + * empty, all actions will be restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.RolloutRestriction.RolloutActions actions = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setActions($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Google\Cloud\Deploy\V1\RolloutRestriction\RolloutActions::class); + $this->actions = $arr; + + return $this; + } + + /** + * Required. Time window within which actions are restricted. + * + * Generated from protobuf field .google.cloud.deploy.v1.TimeWindows time_windows = 4 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\Deploy\V1\TimeWindows|null + */ + public function getTimeWindows() + { + return $this->time_windows; + } + + public function hasTimeWindows() + { + return isset($this->time_windows); + } + + public function clearTimeWindows() + { + unset($this->time_windows); + } + + /** + * Required. Time window within which actions are restricted. + * + * Generated from protobuf field .google.cloud.deploy.v1.TimeWindows time_windows = 4 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\Deploy\V1\TimeWindows $var + * @return $this + */ + public function setTimeWindows($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\Deploy\V1\TimeWindows::class); + $this->time_windows = $var; + + return $this; + } + +} + diff --git a/Deploy/src/V1/RolloutRestriction/RolloutActions.php b/Deploy/src/V1/RolloutRestriction/RolloutActions.php new file mode 100644 index 000000000000..4922462922e9 --- /dev/null +++ b/Deploy/src/V1/RolloutRestriction/RolloutActions.php @@ -0,0 +1,104 @@ +google.cloud.deploy.v1.RolloutRestriction.RolloutActions + */ +class RolloutActions +{ + /** + * Unspecified. + * + * Generated from protobuf enum ROLLOUT_ACTIONS_UNSPECIFIED = 0; + */ + const ROLLOUT_ACTIONS_UNSPECIFIED = 0; + /** + * Advance the rollout to the next phase. + * + * Generated from protobuf enum ADVANCE = 1; + */ + const ADVANCE = 1; + /** + * Approve the rollout. + * + * Generated from protobuf enum APPROVE = 2; + */ + const APPROVE = 2; + /** + * Cancel the rollout. + * + * Generated from protobuf enum CANCEL = 3; + */ + const CANCEL = 3; + /** + * Create a rollout. + * + * Generated from protobuf enum CREATE = 4; + */ + const CREATE = 4; + /** + * Ignore a job result on the rollout. + * + * Generated from protobuf enum IGNORE_JOB = 5; + */ + const IGNORE_JOB = 5; + /** + * Retry a job for a rollout. + * + * Generated from protobuf enum RETRY_JOB = 6; + */ + const RETRY_JOB = 6; + /** + * Rollback a rollout. + * + * Generated from protobuf enum ROLLBACK = 7; + */ + const ROLLBACK = 7; + /** + * Terminate a jobrun. + * + * Generated from protobuf enum TERMINATE_JOBRUN = 8; + */ + const TERMINATE_JOBRUN = 8; + + private static $valueToName = [ + self::ROLLOUT_ACTIONS_UNSPECIFIED => 'ROLLOUT_ACTIONS_UNSPECIFIED', + self::ADVANCE => 'ADVANCE', + self::APPROVE => 'APPROVE', + self::CANCEL => 'CANCEL', + self::CREATE => 'CREATE', + self::IGNORE_JOB => 'IGNORE_JOB', + self::RETRY_JOB => 'RETRY_JOB', + self::ROLLBACK => 'ROLLBACK', + self::TERMINATE_JOBRUN => 'TERMINATE_JOBRUN', + ]; + + public static function name($value) + { + if (!isset(self::$valueToName[$value])) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no name defined for value %s', __CLASS__, $value)); + } + return self::$valueToName[$value]; + } + + + public static function value($name) + { + $const = __CLASS__ . '::' . strtoupper($name); + if (!defined($const)) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no value defined for name %s', __CLASS__, $name)); + } + return constant($const); + } +} + + diff --git a/Deploy/src/V1/TargetAttribute.php b/Deploy/src/V1/TargetAttribute.php index ac8ea2cd1b8d..21ab6a0e6ce3 100644 --- a/Deploy/src/V1/TargetAttribute.php +++ b/Deploy/src/V1/TargetAttribute.php @@ -9,7 +9,8 @@ use Google\Protobuf\Internal\GPBUtil; /** - * Contains criteria for selecting Targets. + * Contains criteria for selecting Targets. This could be used to select targets + * for a Deploy Policy or for an Automation. * * Generated from protobuf message google.cloud.deploy.v1.TargetAttribute */ diff --git a/Deploy/src/V1/TerminateJobRunRequest.php b/Deploy/src/V1/TerminateJobRunRequest.php index 4264a7361286..ce381fdbb945 100644 --- a/Deploy/src/V1/TerminateJobRunRequest.php +++ b/Deploy/src/V1/TerminateJobRunRequest.php @@ -22,6 +22,13 @@ class TerminateJobRunRequest extends \Google\Protobuf\Internal\Message * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { */ protected $name = ''; + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + */ + private $override_deploy_policy; /** * @param string $name Required. Name of the `JobRun`. Format must be @@ -47,6 +54,9 @@ public static function build(string $name): self * @type string $name * Required. Name of the `JobRun`. Format must be * `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/{rollout}/jobRuns/{jobRun}`. + * @type array|\Google\Protobuf\Internal\RepeatedField $override_deploy_policy + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. * } */ public function __construct($data = NULL) { @@ -82,5 +92,33 @@ public function setName($var) return $this; } + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOverrideDeployPolicy() + { + return $this->override_deploy_policy; + } + + /** + * Optional. Deploy policies to override. Format is + * `projects/{project}/locations/{location}/deployPolicies/{deployPolicy}`. + * + * Generated from protobuf field repeated string override_deploy_policy = 2 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = { + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOverrideDeployPolicy($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->override_deploy_policy = $arr; + + return $this; + } + } diff --git a/Deploy/src/V1/TimeWindows.php b/Deploy/src/V1/TimeWindows.php new file mode 100644 index 000000000000..ba6e360cdb88 --- /dev/null +++ b/Deploy/src/V1/TimeWindows.php @@ -0,0 +1,141 @@ +google.cloud.deploy.v1.TimeWindows + */ +class TimeWindows extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The time zone in IANA format [IANA Time Zone + * Database](https://www.iana.org/time-zones) (e.g. America/New_York). + * + * Generated from protobuf field string time_zone = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + protected $time_zone = ''; + /** + * Optional. One-time windows within which actions are restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.OneTimeWindow one_time_windows = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $one_time_windows; + /** + * Optional. Recurring weekly windows within which actions are restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.WeeklyWindow weekly_windows = 3 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $weekly_windows; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $time_zone + * Required. The time zone in IANA format [IANA Time Zone + * Database](https://www.iana.org/time-zones) (e.g. America/New_York). + * @type array<\Google\Cloud\Deploy\V1\OneTimeWindow>|\Google\Protobuf\Internal\RepeatedField $one_time_windows + * Optional. One-time windows within which actions are restricted. + * @type array<\Google\Cloud\Deploy\V1\WeeklyWindow>|\Google\Protobuf\Internal\RepeatedField $weekly_windows + * Optional. Recurring weekly windows within which actions are restricted. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Deploy\V1\CloudDeploy::initOnce(); + parent::__construct($data); + } + + /** + * Required. The time zone in IANA format [IANA Time Zone + * Database](https://www.iana.org/time-zones) (e.g. America/New_York). + * + * Generated from protobuf field string time_zone = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return string + */ + public function getTimeZone() + { + return $this->time_zone; + } + + /** + * Required. The time zone in IANA format [IANA Time Zone + * Database](https://www.iana.org/time-zones) (e.g. America/New_York). + * + * Generated from protobuf field string time_zone = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param string $var + * @return $this + */ + public function setTimeZone($var) + { + GPBUtil::checkString($var, True); + $this->time_zone = $var; + + return $this; + } + + /** + * Optional. One-time windows within which actions are restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.OneTimeWindow one_time_windows = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getOneTimeWindows() + { + return $this->one_time_windows; + } + + /** + * Optional. One-time windows within which actions are restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.OneTimeWindow one_time_windows = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @param array<\Google\Cloud\Deploy\V1\OneTimeWindow>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setOneTimeWindows($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Deploy\V1\OneTimeWindow::class); + $this->one_time_windows = $arr; + + return $this; + } + + /** + * Optional. Recurring weekly windows within which actions are restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.WeeklyWindow weekly_windows = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getWeeklyWindows() + { + return $this->weekly_windows; + } + + /** + * Optional. Recurring weekly windows within which actions are restricted. + * + * Generated from protobuf field repeated .google.cloud.deploy.v1.WeeklyWindow weekly_windows = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @param array<\Google\Cloud\Deploy\V1\WeeklyWindow>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setWeeklyWindows($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Deploy\V1\WeeklyWindow::class); + $this->weekly_windows = $arr; + + return $this; + } + +} + diff --git a/Deploy/src/V1/Type.php b/Deploy/src/V1/Type.php index 1835a51f34aa..613d3aa26e49 100644 --- a/Deploy/src/V1/Type.php +++ b/Deploy/src/V1/Type.php @@ -55,6 +55,12 @@ class Type * Generated from protobuf enum TYPE_ROLLOUT_UPDATE = 7; */ const TYPE_ROLLOUT_UPDATE = 7; + /** + * Deploy Policy evaluation. + * + * Generated from protobuf enum TYPE_DEPLOY_POLICY_EVALUATION = 8; + */ + const TYPE_DEPLOY_POLICY_EVALUATION = 8; /** * Deprecated: This field is never used. Use release_render log type instead. * @@ -70,6 +76,7 @@ class Type self::TYPE_RESTRICTION_VIOLATED => 'TYPE_RESTRICTION_VIOLATED', self::TYPE_RESOURCE_DELETED => 'TYPE_RESOURCE_DELETED', self::TYPE_ROLLOUT_UPDATE => 'TYPE_ROLLOUT_UPDATE', + self::TYPE_DEPLOY_POLICY_EVALUATION => 'TYPE_DEPLOY_POLICY_EVALUATION', self::TYPE_RENDER_STATUES_CHANGE => 'TYPE_RENDER_STATUES_CHANGE', ]; diff --git a/Deploy/src/V1/WeeklyWindow.php b/Deploy/src/V1/WeeklyWindow.php new file mode 100644 index 000000000000..a0212780dd12 --- /dev/null +++ b/Deploy/src/V1/WeeklyWindow.php @@ -0,0 +1,176 @@ +google.cloud.deploy.v1.WeeklyWindow + */ +class WeeklyWindow extends \Google\Protobuf\Internal\Message +{ + /** + * Optional. Days of week. If left empty, all days of the week will be + * included. + * + * Generated from protobuf field repeated .google.type.DayOfWeek days_of_week = 1 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $days_of_week; + /** + * Optional. Start time (inclusive). Use 00:00 for the beginning of the day. + * If you specify start_time you must also specify end_time. If left empty, + * this will block for the entire day for the days specified in days_of_week. + * + * Generated from protobuf field .google.type.TimeOfDay start_time = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + protected $start_time = null; + /** + * Optional. End time (exclusive). Use 24:00 to indicate midnight. If you + * specify end_time you must also specify start_time. If left empty, this will + * block for the entire day for the days specified in days_of_week. + * + * Generated from protobuf field .google.type.TimeOfDay end_time = 3 [(.google.api.field_behavior) = OPTIONAL]; + */ + protected $end_time = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type array|\Google\Protobuf\Internal\RepeatedField $days_of_week + * Optional. Days of week. If left empty, all days of the week will be + * included. + * @type \Google\Type\TimeOfDay $start_time + * Optional. Start time (inclusive). Use 00:00 for the beginning of the day. + * If you specify start_time you must also specify end_time. If left empty, + * this will block for the entire day for the days specified in days_of_week. + * @type \Google\Type\TimeOfDay $end_time + * Optional. End time (exclusive). Use 24:00 to indicate midnight. If you + * specify end_time you must also specify start_time. If left empty, this will + * block for the entire day for the days specified in days_of_week. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Deploy\V1\CloudDeploy::initOnce(); + parent::__construct($data); + } + + /** + * Optional. Days of week. If left empty, all days of the week will be + * included. + * + * Generated from protobuf field repeated .google.type.DayOfWeek days_of_week = 1 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getDaysOfWeek() + { + return $this->days_of_week; + } + + /** + * Optional. Days of week. If left empty, all days of the week will be + * included. + * + * Generated from protobuf field repeated .google.type.DayOfWeek days_of_week = 1 [(.google.api.field_behavior) = OPTIONAL]; + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setDaysOfWeek($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Google\Type\DayOfWeek::class); + $this->days_of_week = $arr; + + return $this; + } + + /** + * Optional. Start time (inclusive). Use 00:00 for the beginning of the day. + * If you specify start_time you must also specify end_time. If left empty, + * this will block for the entire day for the days specified in days_of_week. + * + * Generated from protobuf field .google.type.TimeOfDay start_time = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Type\TimeOfDay|null + */ + public function getStartTime() + { + return $this->start_time; + } + + public function hasStartTime() + { + return isset($this->start_time); + } + + public function clearStartTime() + { + unset($this->start_time); + } + + /** + * Optional. Start time (inclusive). Use 00:00 for the beginning of the day. + * If you specify start_time you must also specify end_time. If left empty, + * this will block for the entire day for the days specified in days_of_week. + * + * Generated from protobuf field .google.type.TimeOfDay start_time = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @param \Google\Type\TimeOfDay $var + * @return $this + */ + public function setStartTime($var) + { + GPBUtil::checkMessage($var, \Google\Type\TimeOfDay::class); + $this->start_time = $var; + + return $this; + } + + /** + * Optional. End time (exclusive). Use 24:00 to indicate midnight. If you + * specify end_time you must also specify start_time. If left empty, this will + * block for the entire day for the days specified in days_of_week. + * + * Generated from protobuf field .google.type.TimeOfDay end_time = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Type\TimeOfDay|null + */ + public function getEndTime() + { + return $this->end_time; + } + + public function hasEndTime() + { + return isset($this->end_time); + } + + public function clearEndTime() + { + unset($this->end_time); + } + + /** + * Optional. End time (exclusive). Use 24:00 to indicate midnight. If you + * specify end_time you must also specify start_time. If left empty, this will + * block for the entire day for the days specified in days_of_week. + * + * Generated from protobuf field .google.type.TimeOfDay end_time = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @param \Google\Type\TimeOfDay $var + * @return $this + */ + public function setEndTime($var) + { + GPBUtil::checkMessage($var, \Google\Type\TimeOfDay::class); + $this->end_time = $var; + + return $this; + } + +} + diff --git a/Deploy/src/V1/gapic_metadata.json b/Deploy/src/V1/gapic_metadata.json index 4fb04e21a05b..cc25967ba57d 100644 --- a/Deploy/src/V1/gapic_metadata.json +++ b/Deploy/src/V1/gapic_metadata.json @@ -50,6 +50,11 @@ "createDeliveryPipeline" ] }, + "CreateDeployPolicy": { + "methods": [ + "createDeployPolicy" + ] + }, "CreateRelease": { "methods": [ "createRelease" @@ -80,6 +85,11 @@ "deleteDeliveryPipeline" ] }, + "DeleteDeployPolicy": { + "methods": [ + "deleteDeployPolicy" + ] + }, "DeleteTarget": { "methods": [ "deleteTarget" @@ -110,6 +120,11 @@ "getDeliveryPipeline" ] }, + "GetDeployPolicy": { + "methods": [ + "getDeployPolicy" + ] + }, "GetJobRun": { "methods": [ "getJobRun" @@ -155,6 +170,11 @@ "listDeliveryPipelines" ] }, + "ListDeployPolicies": { + "methods": [ + "listDeployPolicies" + ] + }, "ListJobRuns": { "methods": [ "listJobRuns" @@ -205,6 +225,11 @@ "updateDeliveryPipeline" ] }, + "UpdateDeployPolicy": { + "methods": [ + "updateDeployPolicy" + ] + }, "UpdateTarget": { "methods": [ "updateTarget" diff --git a/Deploy/src/V1/resources/cloud_deploy_client_config.json b/Deploy/src/V1/resources/cloud_deploy_client_config.json index 344ed8b2d90a..89a03316253f 100644 --- a/Deploy/src/V1/resources/cloud_deploy_client_config.json +++ b/Deploy/src/V1/resources/cloud_deploy_client_config.json @@ -78,6 +78,11 @@ "retry_codes_name": "no_retry_1_codes", "retry_params_name": "no_retry_1_params" }, + "CreateDeployPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_1_codes", + "retry_params_name": "no_retry_1_params" + }, "CreateRelease": { "timeout_millis": 60000, "retry_codes_name": "no_retry_1_codes", @@ -108,6 +113,11 @@ "retry_codes_name": "no_retry_1_codes", "retry_params_name": "no_retry_1_params" }, + "DeleteDeployPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_1_codes", + "retry_params_name": "no_retry_1_params" + }, "DeleteTarget": { "timeout_millis": 60000, "retry_codes_name": "no_retry_1_codes", @@ -138,6 +148,11 @@ "retry_codes_name": "retry_policy_1_codes", "retry_params_name": "retry_policy_1_params" }, + "GetDeployPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "retry_policy_1_codes", + "retry_params_name": "retry_policy_1_params" + }, "GetJobRun": { "timeout_millis": 60000, "retry_codes_name": "retry_policy_1_codes", @@ -183,6 +198,11 @@ "retry_codes_name": "retry_policy_1_codes", "retry_params_name": "retry_policy_1_params" }, + "ListDeployPolicies": { + "timeout_millis": 60000, + "retry_codes_name": "retry_policy_1_codes", + "retry_params_name": "retry_policy_1_params" + }, "ListJobRuns": { "timeout_millis": 60000, "retry_codes_name": "retry_policy_1_codes", @@ -233,6 +253,11 @@ "retry_codes_name": "no_retry_1_codes", "retry_params_name": "no_retry_1_params" }, + "UpdateDeployPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_1_codes", + "retry_params_name": "no_retry_1_params" + }, "UpdateTarget": { "timeout_millis": 60000, "retry_codes_name": "no_retry_1_codes", diff --git a/Deploy/src/V1/resources/cloud_deploy_descriptor_config.php b/Deploy/src/V1/resources/cloud_deploy_descriptor_config.php index 1b7b7bbc3ac4..9842887d33c3 100644 --- a/Deploy/src/V1/resources/cloud_deploy_descriptor_config.php +++ b/Deploy/src/V1/resources/cloud_deploy_descriptor_config.php @@ -80,6 +80,25 @@ ], ], ], + 'CreateDeployPolicy' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\Deploy\V1\DeployPolicy', + 'metadataReturnType' => '\Google\Cloud\Deploy\V1\OperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], 'CreateRelease' => [ 'longRunning' => [ 'operationReturnType' => '\Google\Cloud\Deploy\V1\Release', @@ -194,6 +213,25 @@ ], ], ], + 'DeleteDeployPolicy' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Protobuf\GPBEmpty', + 'metadataReturnType' => '\Google\Cloud\Deploy\V1\OperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], 'DeleteTarget' => [ 'longRunning' => [ 'operationReturnType' => '\Google\Protobuf\GPBEmpty', @@ -273,6 +311,26 @@ ], ], ], + 'UpdateDeployPolicy' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\Deploy\V1\DeployPolicy', + 'metadataReturnType' => '\Google\Cloud\Deploy\V1\OperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'deploy_policy.name', + 'fieldAccessors' => [ + 'getDeployPolicy', + 'getName', + ], + ], + ], + ], 'UpdateTarget' => [ 'longRunning' => [ 'operationReturnType' => '\Google\Cloud\Deploy\V1\Target', @@ -413,6 +471,18 @@ ], ], ], + 'GetDeployPolicy' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Deploy\V1\DeployPolicy', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], 'GetJobRun' => [ 'callType' => \Google\ApiCore\Call::UNARY_CALL, 'responseType' => 'Google\Cloud\Deploy\V1\JobRun', @@ -553,6 +623,26 @@ ], ], ], + 'ListDeployPolicies' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getDeployPolicies', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\Deploy\V1\ListDeployPoliciesResponse', + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], 'ListJobRuns' => [ 'pageStreaming' => [ 'requestPageTokenGetMethod' => 'getPageToken', @@ -750,6 +840,7 @@ 'config' => 'projects/{project}/locations/{location}/config', 'customTargetType' => 'projects/{project}/locations/{location}/customTargetTypes/{custom_target_type}', 'deliveryPipeline' => 'projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}', + 'deployPolicy' => 'projects/{project}/locations/{location}/deployPolicies/{deploy_policy}', 'job' => 'projects/{project}/locations/{location}/jobs/{job}', 'jobRun' => 'projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}/releases/{release}/rollouts/{rollout}/jobRuns/{job_run}', 'location' => 'projects/{project}/locations/{location}', diff --git a/Deploy/src/V1/resources/cloud_deploy_rest_client_config.php b/Deploy/src/V1/resources/cloud_deploy_rest_client_config.php index febaff6b324f..0391c32a6344 100644 --- a/Deploy/src/V1/resources/cloud_deploy_rest_client_config.php +++ b/Deploy/src/V1/resources/cloud_deploy_rest_client_config.php @@ -128,6 +128,21 @@ 'delivery_pipeline_id', ], ], + 'CreateDeployPolicy' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/deployPolicies', + 'body' => 'deploy_policy', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + 'queryParams' => [ + 'deploy_policy_id', + ], + ], 'CreateRelease' => [ 'method' => 'post', 'uriTemplate' => '/v1/{parent=projects/*/locations/*/deliveryPipelines/*}/releases', @@ -206,6 +221,17 @@ ], ], ], + 'DeleteDeployPolicy' => [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deployPolicies/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], 'DeleteTarget' => [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/targets/*}', @@ -272,6 +298,17 @@ ], ], ], + 'GetDeployPolicy' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deployPolicies/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], 'GetJobRun' => [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/deliveryPipelines/*/releases/*/rollouts/*/jobRuns/*}', @@ -372,6 +409,17 @@ ], ], ], + 'ListDeployPolicies' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/deployPolicies', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + ], 'ListJobRuns' => [ 'method' => 'get', 'uriTemplate' => '/v1/{parent=projects/*/locations/*/deliveryPipelines/*/releases/*/rollouts/*}/jobRuns', @@ -500,6 +548,22 @@ 'update_mask', ], ], + 'UpdateDeployPolicy' => [ + 'method' => 'patch', + 'uriTemplate' => '/v1/{deploy_policy.name=projects/*/locations/*/deployPolicies/*}', + 'body' => 'deploy_policy', + 'placeholders' => [ + 'deploy_policy.name' => [ + 'getters' => [ + 'getDeployPolicy', + 'getName', + ], + ], + ], + 'queryParams' => [ + 'update_mask', + ], + ], 'UpdateTarget' => [ 'method' => 'patch', 'uriTemplate' => '/v1/{target.name=projects/*/locations/*/targets/*}', diff --git a/Deploy/tests/Unit/V1/Client/CloudDeployClientTest.php b/Deploy/tests/Unit/V1/Client/CloudDeployClientTest.php index f0572c7f722d..afb8c134eed8 100644 --- a/Deploy/tests/Unit/V1/Client/CloudDeployClientTest.php +++ b/Deploy/tests/Unit/V1/Client/CloudDeployClientTest.php @@ -44,6 +44,7 @@ use Google\Cloud\Deploy\V1\CreateAutomationRequest; use Google\Cloud\Deploy\V1\CreateCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\CreateDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\CreateDeployPolicyRequest; use Google\Cloud\Deploy\V1\CreateReleaseRequest; use Google\Cloud\Deploy\V1\CreateRolloutRequest; use Google\Cloud\Deploy\V1\CreateTargetRequest; @@ -51,13 +52,16 @@ use Google\Cloud\Deploy\V1\DeleteAutomationRequest; use Google\Cloud\Deploy\V1\DeleteCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\DeleteDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\DeleteDeployPolicyRequest; use Google\Cloud\Deploy\V1\DeleteTargetRequest; use Google\Cloud\Deploy\V1\DeliveryPipeline; +use Google\Cloud\Deploy\V1\DeployPolicy; use Google\Cloud\Deploy\V1\GetAutomationRequest; use Google\Cloud\Deploy\V1\GetAutomationRunRequest; use Google\Cloud\Deploy\V1\GetConfigRequest; use Google\Cloud\Deploy\V1\GetCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\GetDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\GetDeployPolicyRequest; use Google\Cloud\Deploy\V1\GetJobRunRequest; use Google\Cloud\Deploy\V1\GetReleaseRequest; use Google\Cloud\Deploy\V1\GetRolloutRequest; @@ -73,6 +77,8 @@ use Google\Cloud\Deploy\V1\ListCustomTargetTypesResponse; use Google\Cloud\Deploy\V1\ListDeliveryPipelinesRequest; use Google\Cloud\Deploy\V1\ListDeliveryPipelinesResponse; +use Google\Cloud\Deploy\V1\ListDeployPoliciesRequest; +use Google\Cloud\Deploy\V1\ListDeployPoliciesResponse; use Google\Cloud\Deploy\V1\ListJobRunsRequest; use Google\Cloud\Deploy\V1\ListJobRunsResponse; use Google\Cloud\Deploy\V1\ListReleasesRequest; @@ -93,6 +99,7 @@ use Google\Cloud\Deploy\V1\UpdateAutomationRequest; use Google\Cloud\Deploy\V1\UpdateCustomTargetTypeRequest; use Google\Cloud\Deploy\V1\UpdateDeliveryPipelineRequest; +use Google\Cloud\Deploy\V1\UpdateDeployPolicyRequest; use Google\Cloud\Deploy\V1\UpdateTargetRequest; use Google\Cloud\Iam\V1\GetIamPolicyRequest; use Google\Cloud\Iam\V1\Policy; @@ -963,6 +970,160 @@ public function createDeliveryPipelineExceptionTest() $this->assertTrue($operationsTransport->isExhausted()); } + /** @test */ + public function createDeployPolicyTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createDeployPolicyTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $uid = 'uid115792'; + $description = 'description-1724546052'; + $suspended = false; + $etag = 'etag3123477'; + $expectedResponse = new DeployPolicy(); + $expectedResponse->setName($name); + $expectedResponse->setUid($uid); + $expectedResponse->setDescription($description); + $expectedResponse->setSuspended($suspended); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createDeployPolicyTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $deployPolicyId = 'deployPolicyId1355226608'; + $deployPolicy = new DeployPolicy(); + $deployPolicySelectors = []; + $deployPolicy->setSelectors($deployPolicySelectors); + $deployPolicyRules = []; + $deployPolicy->setRules($deployPolicyRules); + $request = (new CreateDeployPolicyRequest()) + ->setParent($formattedParent) + ->setDeployPolicyId($deployPolicyId) + ->setDeployPolicy($deployPolicy); + $response = $gapicClient->createDeployPolicy($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.deploy.v1.CloudDeploy/CreateDeployPolicy', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getDeployPolicyId(); + $this->assertProtobufEquals($deployPolicyId, $actualValue); + $actualValue = $actualApiRequestObject->getDeployPolicy(); + $this->assertProtobufEquals($deployPolicy, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createDeployPolicyTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createDeployPolicyExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createDeployPolicyTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode( + [ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], + JSON_PRETTY_PRINT + ); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $deployPolicyId = 'deployPolicyId1355226608'; + $deployPolicy = new DeployPolicy(); + $deployPolicySelectors = []; + $deployPolicy->setSelectors($deployPolicySelectors); + $deployPolicyRules = []; + $deployPolicy->setRules($deployPolicyRules); + $request = (new CreateDeployPolicyRequest()) + ->setParent($formattedParent) + ->setDeployPolicyId($deployPolicyId) + ->setDeployPolicy($deployPolicy); + $response = $gapicClient->createDeployPolicy($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createDeployPolicyTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + /** @test */ public function createReleaseTest() { @@ -1787,6 +1948,128 @@ public function deleteDeliveryPipelineExceptionTest() $this->assertTrue($operationsTransport->isExhausted()); } + /** @test */ + public function deleteDeployPolicyTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteDeployPolicyTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteDeployPolicyTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->deployPolicyName('[PROJECT]', '[LOCATION]', '[DEPLOY_POLICY]'); + $request = (new DeleteDeployPolicyRequest())->setName($formattedName); + $response = $gapicClient->deleteDeployPolicy($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.deploy.v1.CloudDeploy/DeleteDeployPolicy', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteDeployPolicyTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteDeployPolicyExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteDeployPolicyTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode( + [ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], + JSON_PRETTY_PRINT + ); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->deployPolicyName('[PROJECT]', '[LOCATION]', '[DEPLOY_POLICY]'); + $request = (new DeleteDeployPolicyRequest())->setName($formattedName); + $response = $gapicClient->deleteDeployPolicy($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteDeployPolicyTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + /** @test */ public function deleteTargetTest() { @@ -2284,6 +2567,79 @@ public function getDeliveryPipelineExceptionTest() $this->assertTrue($transport->isExhausted()); } + /** @test */ + public function getDeployPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $uid = 'uid115792'; + $description = 'description-1724546052'; + $suspended = false; + $etag = 'etag3123477'; + $expectedResponse = new DeployPolicy(); + $expectedResponse->setName($name2); + $expectedResponse->setUid($uid); + $expectedResponse->setDescription($description); + $expectedResponse->setSuspended($suspended); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->deployPolicyName('[PROJECT]', '[LOCATION]', '[DEPLOY_POLICY]'); + $request = (new GetDeployPolicyRequest())->setName($formattedName); + $response = $gapicClient->getDeployPolicy($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.deploy.v1.CloudDeploy/GetDeployPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getDeployPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode( + [ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], + JSON_PRETTY_PRINT + ); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->deployPolicyName('[PROJECT]', '[LOCATION]', '[DEPLOY_POLICY]'); + $request = (new GetDeployPolicyRequest())->setName($formattedName); + try { + $gapicClient->getDeployPolicy($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + /** @test */ public function getJobRunTest() { @@ -2991,6 +3347,77 @@ public function listDeliveryPipelinesExceptionTest() $this->assertTrue($transport->isExhausted()); } + /** @test */ + public function listDeployPoliciesTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $deployPoliciesElement = new DeployPolicy(); + $deployPolicies = [$deployPoliciesElement]; + $expectedResponse = new ListDeployPoliciesResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setDeployPolicies($deployPolicies); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $request = (new ListDeployPoliciesRequest())->setParent($formattedParent); + $response = $gapicClient->listDeployPolicies($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getDeployPolicies()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.deploy.v1.CloudDeploy/ListDeployPolicies', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listDeployPoliciesExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode( + [ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], + JSON_PRETTY_PRINT + ); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $request = (new ListDeployPoliciesRequest())->setParent($formattedParent); + try { + $gapicClient->listDeployPolicies($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + /** @test */ public function listJobRunsTest() { @@ -3960,6 +4387,150 @@ public function updateDeliveryPipelineExceptionTest() $this->assertTrue($operationsTransport->isExhausted()); } + /** @test */ + public function updateDeployPolicyTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateDeployPolicyTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $uid = 'uid115792'; + $description = 'description-1724546052'; + $suspended = false; + $etag = 'etag3123477'; + $expectedResponse = new DeployPolicy(); + $expectedResponse->setName($name); + $expectedResponse->setUid($uid); + $expectedResponse->setDescription($description); + $expectedResponse->setSuspended($suspended); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateDeployPolicyTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $updateMask = new FieldMask(); + $deployPolicy = new DeployPolicy(); + $deployPolicySelectors = []; + $deployPolicy->setSelectors($deployPolicySelectors); + $deployPolicyRules = []; + $deployPolicy->setRules($deployPolicyRules); + $request = (new UpdateDeployPolicyRequest())->setUpdateMask($updateMask)->setDeployPolicy($deployPolicy); + $response = $gapicClient->updateDeployPolicy($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.deploy.v1.CloudDeploy/UpdateDeployPolicy', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getUpdateMask(); + $this->assertProtobufEquals($updateMask, $actualValue); + $actualValue = $actualApiRequestObject->getDeployPolicy(); + $this->assertProtobufEquals($deployPolicy, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateDeployPolicyTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateDeployPolicyExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateDeployPolicyTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode( + [ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], + JSON_PRETTY_PRINT + ); + $operationsTransport->addResponse(null, $status); + // Mock request + $updateMask = new FieldMask(); + $deployPolicy = new DeployPolicy(); + $deployPolicySelectors = []; + $deployPolicy->setSelectors($deployPolicySelectors); + $deployPolicyRules = []; + $deployPolicy->setRules($deployPolicyRules); + $request = (new UpdateDeployPolicyRequest())->setUpdateMask($updateMask)->setDeployPolicy($deployPolicy); + $response = $gapicClient->updateDeployPolicy($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateDeployPolicyTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + /** @test */ public function updateTargetTest() {