# -*- 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:
  - GA
  auto_generated: true
  help_text:
    brief: Create exadbVmClusters
    description: Create an exadbVmCluster
    examples: |-
      To create the exadbVmCluster, run:

          $ {command}
  arguments:
    params:
    - help_text: |-
        Identifier. The name of the ExadbVmCluster resource in the following format:
        projects/{project}/locations/{region}/exadbVmClusters/{exadb_vm_cluster}
      is_positional: true
      is_primary_resource: true
      request_id_field: exadbVmClusterId
      resource_spec: !REF googlecloudsdk.command_lib.oracle_database.v1_resources:projects_locations_exadb_vm_clusters
      required: true
    - group:
        api_field: exadbVmCluster.properties
        required: true
        help_text: |-
          The properties of an ExadbVmCluster.
        params:
        - arg_name: properties-cluster-name
          api_field: exadbVmCluster.properties.clusterName
          required: false
          repeated: false
          help_text: |-
            The cluster name for Exascale vm cluster. The cluster name must begin with
            an alphabetic character and may contain hyphens(-) but can not contain
            underscores(_). It should be not more than 11 characters and is not case
            sensitive.
            OCI Cluster name.
        - arg_name: properties-grid-image-id
          api_field: exadbVmCluster.properties.gridImageId
          required: true
          repeated: false
          help_text: |-
            Grid Infrastructure Version.
        - arg_name: properties-node-count
          api_field: exadbVmCluster.properties.nodeCount
          required: true
          repeated: false
          type: int
          help_text: |-
            The number of nodes/VMs in the ExadbVmCluster.
        - arg_name: properties-enabled-ecpu-count-per-node
          api_field: exadbVmCluster.properties.enabledEcpuCountPerNode
          required: true
          repeated: false
          type: int
          help_text: |-
            The number of ECPUs enabled per node for an exadata vm cluster on
            exascale infrastructure.
        - arg_name: properties-additional-ecpu-count-per-node
          api_field: exadbVmCluster.properties.additionalEcpuCountPerNode
          required: false
          repeated: false
          type: int
          help_text: |-
            The number of additional ECPUs per node for an Exadata VM cluster on
            exascale infrastructure.
        - group:
            api_field: exadbVmCluster.properties.vmFileSystemStorage
            required: true
            help_text: |-
              The storage allocation for the exadbvmcluster, in gigabytes (GB).
            params:
            - arg_name: vm-file-system-storage-size-in-gbs-per-node
              api_field: exadbVmCluster.properties.vmFileSystemStorage.sizeInGbsPerNode
              required: true
              repeated: false
              type: int
              help_text: |-
                The storage allocation for the exadbvmcluster per node, in gigabytes (GB).
                This field is used to calculate the total storage allocation for the
                exadbvmcluster.
        - arg_name: properties-license-model
          api_field: exadbVmCluster.properties.licenseModel
          required: false
          help_text: |-
            The license type of the ExadbVmCluster.
          choices:
          - arg_value: license-included
            enum_value: LICENSE_INCLUDED
            help_text: |-
              Default is license included.
          - arg_value: bring-your-own-license
            enum_value: BRING_YOUR_OWN_LICENSE
            help_text: |-
              Bring your own license.
        - arg_name: properties-exascale-db-storage-vault
          help_text: |-
            The name of ExascaleDbStorageVault associated with the ExadbVmCluster.
            It can refer to an existing ExascaleDbStorageVault. Or a new one can be
            created during the ExadbVmCluster creation (requires
            storage_vault_properties to be set).
            Format:
            projects/{project}/locations/{location}/exascaleDbStorageVaults/{exascale_db_storage_vault}
          is_positional: false
          is_primary_resource: false
          resource_spec: !REF googlecloudsdk.command_lib.oracle_database.v1_resources:projects_locations_exascale_db_storage_vaults
          resource_method_params:
            exadbVmCluster.properties.exascaleDbStorageVault: '{__relative_name__}'
          required: true
        - arg_name: properties-hostname-prefix
          api_field: exadbVmCluster.properties.hostnamePrefix
          required: true
          repeated: false
          help_text: |-
            Prefix for VM cluster host names.
        - arg_name: properties-ssh-public-keys
          api_field: exadbVmCluster.properties.sshPublicKeys
          required: true
          repeated: true
          help_text: |-
            The SSH public keys for the ExadbVmCluster.
        - group:
            api_field: exadbVmCluster.properties.dataCollectionOptions
            required: false
            help_text: |-
              Data collection options for diagnostics.
              https://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/datatypes/DataCollectionOptions
            params:
            - arg_name: data-collection-options-is-diagnostics-events-enabled
              api_field: exadbVmCluster.properties.dataCollectionOptions.isDiagnosticsEventsEnabled
              action: store_true
              required: false
              type: bool
              help_text: |-
                Indicates whether to enable data collection for diagnostics.
              default: null
            - arg_name: data-collection-options-is-health-monitoring-enabled
              api_field: exadbVmCluster.properties.dataCollectionOptions.isHealthMonitoringEnabled
              action: store_true
              required: false
              type: bool
              help_text: |-
                Indicates whether to enable health monitoring.
              default: null
            - arg_name: data-collection-options-is-incident-logs-enabled
              api_field: exadbVmCluster.properties.dataCollectionOptions.isIncidentLogsEnabled
              action: store_true
              required: false
              type: bool
              help_text: |-
                Indicates whether to enable incident logs and trace collection.
              default: null
        - group:
            api_field: exadbVmCluster.properties.timeZone
            required: false
            help_text: |-
              Represents a time zone from the
              [IANA Time Zone Database](https://www.iana.org/time-zones).
            params:
            - arg_name: time-zone-id
              api_field: exadbVmCluster.properties.timeZone.id
              required: false
              repeated: false
              help_text: |-
                IANA Time Zone Database time zone. For example "America/New_York".
            - arg_name: time-zone-version
              api_field: exadbVmCluster.properties.timeZone.version
              required: false
              repeated: false
              help_text: |-
                IANA Time Zone Database version number. For example "2019a".
        - arg_name: properties-shape-attribute
          api_field: exadbVmCluster.properties.shapeAttribute
          required: true
          help_text: |-
            The shape attribute of the VM cluster. The type of Exascale storage used
            for Exadata VM cluster. The default is SMART_STORAGE which supports Oracle
            Database 23ai and later
          choices:
          - arg_value: smart-storage
            enum_value: SMART_STORAGE
            help_text: |-
              Indicates that the resource is in smart storage.
          - arg_value: block-storage
            enum_value: BLOCK_STORAGE
            help_text: |-
              Indicates that the resource is in block storage.
        - arg_name: properties-scan-listener-port-tcp
          api_field: exadbVmCluster.properties.scanListenerPortTcp
          required: false
          repeated: false
          type: int
          help_text: |-
            SCAN listener port - TCP
    - arg_name: labels
      api_field: exadbVmCluster.labels
      required: false
      repeated: true
      help_text: |-
        The labels or tags associated with the ExadbVmCluster.
      spec:
      - api_field: key
      - api_field: value
    - arg_name: odb-network
      help_text: |-
        The name of the OdbNetwork associated with the ExadbVmCluster.
        Format: projects/{project}/locations/{location}/odbNetworks/{odb_network}
        It is optional but if specified, this should match the parent ODBNetwork of
        the OdbSubnet.
      is_positional: false
      is_primary_resource: false
      resource_spec: !REF googlecloudsdk.command_lib.oracle_database.v1_resources:projects_locations_odb_networks
      resource_method_params:
        exadbVmCluster.odbNetwork: '{__relative_name__}'
      required: false
    - arg_name: odb-subnet
      help_text: |-
        The name of the OdbSubnet associated with the ExadbVmCluster for IP
        allocation. Format:
        projects/{project}/locations/{location}/odbNetworks/{odb_network}/odbSubnets/{odb_subnet}
      is_positional: false
      is_primary_resource: false
      resource_spec: !REF googlecloudsdk.command_lib.oracle_database.v1_resources:projects_locations_odb_networks_odb_subnets
      resource_method_params:
        exadbVmCluster.odbSubnet: '{__relative_name__}'
      required: true
    - arg_name: backup-odb-subnet
      help_text: |-
        The name of the backup OdbSubnet associated with the ExadbVmCluster.
        Format:
        projects/{project}/locations/{location}/odbNetworks/{odb_network}/odbSubnets/{odb_subnet}
      is_positional: false
      is_primary_resource: false
      resource_spec: !REF googlecloudsdk.command_lib.oracle_database.v1_resources:projects_locations_odb_networks_odb_subnets
      resource_method_params:
        exadbVmCluster.backupOdbSubnet: '{__relative_name__}'
      required: true
    - arg_name: display-name
      api_field: exadbVmCluster.displayName
      required: true
      repeated: false
      help_text: |-
        The display name for the ExadbVmCluster. The name does not have to
        be unique within your project. The name must be 1-255 characters long and
        can only contain alphanumeric characters.
    - arg_name: request-id
      api_field: requestId
      required: false
      repeated: false
      help_text: |-
        An optional request ID to identify requests. Specify a unique request ID
        so that if you must retry your request, the server will know to ignore
        the request if it has already been completed. The server will guarantee
        that for at least 60 minutes since the first request.

        For example, consider a situation where you make an initial request and the
        request times out. If you make the request again with the same request
        ID, the server can check if original operation with the same request ID
        was received, and if so, will ignore the second request. This prevents
        clients from accidentally creating duplicate commitments.

        The request ID must be a valid UUID with the exception that zero UUID is
        not supported (00000000-0000-0000-0000-000000000000).
  request:
    api_version: v1
    collection:
    - oracledatabase.projects.locations.exadbVmClusters
  async:
    collection:
    - oracledatabase.projects.locations.operations
