# -*- coding: utf-8 -*- #
# Copyright 2025 Google LLC. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# NOTE: This file is autogenerated and should not be edited by hand.
# AUTOGEN_CLI_VERSION: HEAD
- release_tracks:
  - ALPHA
  auto_generated: true
  hidden: true
  help_text:
    brief: Create a validation
    description: |
      Create a new validation.
    examples: |-
      To create a validation `test-validation-id` in location `asia-east1` using Cloud SQL failover instance `test-cloud-sql-instance` in project `test-project` run:

      $ {command} test-validation-id  --location=asia-east1 --cloud-sql-failover-instance="projects/test-project/instances/test-cloud-sql-instance"
  arguments:
    params:
    - help_text: |-
        Identifier. The resource name of the Validation, of the form:
        projects/{project_id}/locations/{location}/validations/{validation}.
      is_positional: true
      is_primary_resource: true
      request_id_field: validationId
      resource_spec: !REF googlecloudsdk.command_lib.fault_testing.v1alpha_resources:projects_locations_validations
      required: true
    - arg_name: display-name
      api_field: validation.displayName
      required: false
      repeated: false
      help_text: |-
        Human-readable name of the Validation.
    - arg_name: description
      api_field: validation.description
      required: false
      repeated: false
      help_text: |-
        Optional user-provided description or notes. Min length 0, max length 2000.
    - group:
        api_field: validation.action
        required: true
        help_text: |-
          The action to be performed by the experiment.
        params:
        - group:
            mutex: true
            help_text: |-
              Arguments for the action.
            params:
            - group:
                api_field: validation.action.cloudSqlFailover
                required: false
                help_text: |-
                  CloudSQLFailover causes a Cloud SQL primary instance to fail over to another
                  instance.
                params:
                - arg_name: cloud-sql-failover-instance
                  api_field: validation.action.cloudSqlFailover.instance
                  required: true
                  repeated: false
                  help_text: |-
                    The identifying name of the Cloud SQL instance to fail over.
                    Formatted like projects/{project_id}/instances/{instance_id}
            - group:
                api_field: validation.action.l7LbHttpFault
                required: false
                help_text: |-
                  Injection of HTTP faults into a layer 7 load balancer.
                params:
                - group:
                    mutex: true
                    help_text: |-
                      Arguments for the fault.
                    params:
                    - group:
                        api_field: validation.action.l7LbHttpFault.abort
                        required: false
                        help_text: |-
                          Artificially return a specific HTTP status code for a percentage of requests.
                        params:
                        - arg_name: l7-lb-http-fault-abort-status-code
                          api_field: validation.action.l7LbHttpFault.abort.statusCode
                          required: true
                          repeated: false
                          type: int
                          help_text: |-
                            HTTP status code to return. In the range 500 to 599, inclusive.
                        - arg_name: l7-lb-http-fault-abort-percentage
                          api_field: validation.action.l7LbHttpFault.abort.percentage
                          required: true
                          repeated: false
                          type: int
                          help_text: |-
                            Percentage of requests to abort, in the range 0 to 100, inclusive.
                    - group:
                        api_field: validation.action.l7LbHttpFault.delay
                        required: false
                        help_text: |-
                          Artificially delay HTTP responses for a percentage of requests.
                        params:
                        - arg_name: l7-lb-http-fault-delay-percentage
                          api_field: validation.action.l7LbHttpFault.delay.percentage
                          required: true
                          repeated: false
                          type: int
                          help_text: |-
                            Percentage of requests to delay, in the range 0 to 100, inclusive.
                        - arg_name: l7-lb-http-fault-delay
                          api_field: validation.action.l7LbHttpFault.delay.delay
                          required: true
                          repeated: false
                          type: googlecloudsdk.core.util.times:ParseDuration
                          processor: googlecloudsdk.core.util.times:FormatDurationForJson
                          help_text: |-
                            Delay duration.
                - arg_name: l7-lb-http-fault-forwarding-rule
                  api_field: validation.action.l7LbHttpFault.forwardingRule
                  required: true
                  repeated: false
                  help_text: |-
                    The identifying name of the forwarding rule resource where the faults will
                    be injected.
                    Formatted like
                    projects/{project}/regions/{region}/forwardingRules/{forwardingRule} or
                    projects/{project}/global/forwardingRules/{forwardingRule}
                - arg_name: l7-lb-http-fault-backend-service
                  api_field: validation.action.l7LbHttpFault.backendService
                  required: false
                  repeated: false
                  help_text: |-
                    Optional identifying name of the backend service to inject faults into.
                    Formatted like
                    projects/{project}/regions/{region}/backendServices/{backendService} or
                    projects/{project}/global/backendServices/{backendService}
                    If not specified, all backend services connected to the forwarding_rule
                    will be affected.
            - group:
                api_field: validation.action.gceFailCompute
                required: false
                help_text: |-
                  GCEFailCompute specifies which instances to fail.
                params:
                - group:
                    mutex: true
                    help_text: |-
                      Arguments for the specifier.
                    params:
                    - arg_name: gce-fail-compute-instance
                      api_field: validation.action.gceFailCompute.instance
                      required: false
                      repeated: false
                      help_text: |-
                        Specify a single instance by name. Format:
                        "projects/*/zones/*/instances/*".
                    - arg_name: gce-fail-compute-secure-tag-value
                      api_field: validation.action.gceFailCompute.secureTagValue
                      required: false
                      repeated: false
                      help_text: |-
                        Specify a group of non-MIG (Managed Instance Group) instances by secure
                        tag. See https://cloud.google.com/firewall/docs/tags-firewalls-overview
                        for more details on tags. Format: "tagValues/[0-9]+"
                    - group:
                        api_field: validation.action.gceFailCompute.mig
                        required: false
                        help_text: |-
                          Details specifying a Managed Instance Group (MIG) and optionally a zone
                          within it.
                        params:
                        - arg_name: gce-fail-compute-mig-instance-group
                          api_field: validation.action.gceFailCompute.mig.instanceGroup
                          required: true
                          repeated: false
                          help_text: |-
                            The managed instance group. Can be zonal or regional.
                        - arg_name: gce-fail-compute-mig-location
                          api_field: validation.action.gceFailCompute.mig.location
                          required: false
                          repeated: false
                          help_text: |-
                            Optionally specify a zone location to further restrict a regional MIG.
                    - arg_name: gce-fail-compute-location
                      api_field: validation.action.gceFailCompute.location
                      required: false
                      repeated: false
                      help_text: |-
                        Specify that an entire zone or region should be affected.
  request:
    api_version: v1alpha
    collection:
    - faulttesting.projects.locations.validations
