# Copyright 2024 Google Inc.
# 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.

---
name: 'ConnectionProfile'
description: 'A connection profile definition.'
references:
  guides:
    'Database Migration': 'https://cloud.google.com/database-migration/docs/'
  api: 'https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles/create'
docs:
base_url: 'projects/{{project}}/locations/{{location}}/connectionProfiles'
self_link: 'projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}'
create_url: 'projects/{{project}}/locations/{{location}}/connectionProfiles?connectionProfileId={{connection_profile_id}}'
update_verb: 'PATCH'
update_mask: true
import_format:
  - 'projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}'
timeouts:
  insert_minutes: 60
  update_minutes: 60
  delete_minutes: 60
autogen_async: true
async:
  actions: ['create', 'delete', 'update']
  type: 'OpAsync'
  operation:
    base_url: '{{op_id}}'
    timeouts:
      insert_minutes: 60
      update_minutes: 60
      delete_minutes: 60
  result:
    resource_inside_response: false
custom_code:
examples:
  - name: 'database_migration_service_connection_profile_cloudsql'
    primary_resource_id: 'cloudsqlprofile'
    vars:
      sqldb: 'my-database'
      sqldb_cert: 'my-cert'
      sqldb_user: 'my-username'
      sqldb_pass: 'my-password'
      from_profile: 'my-fromprofileid'
      to_profile: 'my-toprofileid'
    ignore_read_extra:
      - 'mysql.0.password'
      - 'mysql.0.ssl.0.ca_certificate'
      - 'mysql.0.ssl.0.client_certificate'
      - 'mysql.0.ssl.0.client_key'
  - name: 'database_migration_service_connection_profile_postgres'
    primary_resource_id: 'postgresprofile'
    vars:
      sqldb: 'my-database'
      sqldb_cert: 'my-cert'
      sqldb_user: 'my-username'
      sqldb_pass: 'my-password'
      profile: 'my-profileid'
    ignore_read_extra:
      - 'postgresql.0.password'
      - 'postgresql.0.ssl.0.ca_certificate'
      - 'postgresql.0.ssl.0.client_certificate'
      - 'postgresql.0.ssl.0.client_key'
  - name: 'database_migration_service_connection_profile_postgres_no_ssl'
    primary_resource_id: 'postgresprofile'
    vars:
      sqldb: 'my-database'
      sqldb_cert: 'my-cert'
      sqldb_user: 'my-username'
      sqldb_pass: 'my-password'
      profile: 'my-profileid'
    ignore_read_extra:
      - 'postgresql.0.password'
      - 'postgresql.0.ssl.0.ca_certificate'
      - 'postgresql.0.ssl.0.client_certificate'
      - 'postgresql.0.ssl.0.client_key'
  - name: 'database_migration_service_connection_profile_postgres_required_ssl'
    primary_resource_id: 'postgresprofile'
    vars:
      sqldb: 'my-database'
      sqldb_cert: 'my-cert'
      sqldb_user: 'my-username'
      sqldb_pass: 'my-password'
      profile: 'my-profileid'
    ignore_read_extra:
      - 'postgresql.0.password'
      - 'postgresql.0.ssl.0.ca_certificate'
      - 'postgresql.0.ssl.0.client_certificate'
      - 'postgresql.0.ssl.0.client_key'
  - name: 'database_migration_service_connection_profile_oracle'
    primary_resource_id: 'oracleprofile'
    vars:
      profile: 'my-profileid'
    ignore_read_extra:
      - 'oracle.0.password'
    exclude_test: true
  - name: 'database_migration_service_connection_profile_alloydb'
    primary_resource_id: 'alloydbprofile'
    vars:
      profile: 'my-profileid'
      global_address_name: 'private-ip-alloc'
      network_name: 'vpc-network'
    ignore_read_extra:
      - 'alloydb.0.settings.0.initial_user.0.password'
    exclude_test: true
  - name: 'database_migration_service_connection_profile_existing_mysql'
    primary_resource_id: 'existing-mysql'
    vars:
      destination_csql: 'destination-csql'
      destination_cp: 'destination-cp'
  - name: 'database_migration_service_connection_profile_existing_postgres'
    primary_resource_id: 'existing-psql'
    vars:
      destination_csql: 'destination-csql'
      destination_cp: 'destination-cp'
  - name: 'database_migration_service_connection_profile_existing_alloydb'
    primary_resource_id: 'existing-alloydb'
    vars:
      destination_alloydb: 'destination-alloydb'
      destination_cp: 'destination-cp'
parameters:
  - name: 'connectionProfileId'
    type: String
    description: |
      The ID of the connection profile.
    url_param_only: true
    required: true
    immutable: true
  - name: 'location'
    type: String
    description: |
      The location where the connection profile should reside.
    url_param_only: true
    immutable: true
properties:
  - name: 'name'
    type: String
    description: |
      The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}.
    output: true
  - name: 'displayName'
    type: String
    description: |
      The connection profile display name.
  - name: 'createTime'
    type: Time
    description: |
      Output only. The timestamp when the resource was created. A timestamp in RFC3339 UTC 'Zulu' format, accurate to nanoseconds. Example: '2014-10-02T15:01:23.045123456Z'.
    output: true
  - name: 'labels'
    type: KeyValueLabels
    description: |
      The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs.
  - name: 'state'
    type: Enum
    description: |
      The current connection profile state.
    output: true
    enum_values:
      - 'DRAFT'
      - 'READY'
      - 'FAILED'
  - name: 'error'
    type: NestedObject
    description: |
      Output only. The error details in case of state FAILED.
    output: true
    properties:
      - name: 'code'
        type: Integer
        description: |
          The status code, which should be an enum value of google.rpc.Code.
        output: true
      - name: 'message'
        type: String
        description: |
          Human readable message indicating details about the current status.
        output: true
      - name: 'details'
        type: Array
        description: |
          A list of messages that carry the error details.
        output: true
        item_type:
          type: KeyValuePairs
  - name: 'dbprovider'
    type: Enum
    description: |
      The database provider.
    api_name: provider
    output: true
    enum_values:
      - 'CLOUDSQL'
      - 'RDS'
      - 'AURORA'
      - 'ALLOYDB'
  - name: 'mysql'
    type: NestedObject
    description: |
      Specifies connection parameters required specifically for MySQL databases.
    exactly_one_of:
      - 'mysql'
      - 'postgresql'
      - 'oracle'
      - 'cloudsql'
      - 'alloydb'
    properties:
      - name: 'host'
        type: String
        description: |
          The IP or hostname of the source MySQL database.
        required_with:
          - 'mysql.0.port'
          - 'mysql.0.username'
      - name: 'port'
        type: Integer
        description: |
          The network port of the source MySQL database.
        required_with:
          - 'mysql.0.host'
          - 'mysql.0.username'
      - name: 'username'
        type: String
        description: |
          The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
        required_with:
          - 'mysql.0.host'
          - 'mysql.0.port'
      - name: 'password'
        type: String
        description: |
          Input only. The password for the user that Database Migration Service will be using to connect to the database.
          This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
        immutable: true
        sensitive: true
        custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_mysql_password.go.tmpl'
      - name: 'passwordSet'
        type: Boolean
        description: |
          Output only. Indicates If this connection profile password is stored.
        output: true
      - name: 'ssl'
        type: NestedObject
        description: |
          SSL configuration for the destination to connect to the source database.
        properties:
          - name: 'type'
            type: Enum
            description: |
              The current connection profile state.
            enum_values:
              - 'SERVER_ONLY'
              - 'SERVER_CLIENT'
              - 'REQUIRED'
              - 'NONE'
          - name: 'clientKey'
            type: String
            description: |
              Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate.
              If this field is used then the 'clientCertificate' field is mandatory.
            immutable: true
            sensitive: true
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_mysql_ssl_client_key.go.tmpl'
          - name: 'clientCertificate'
            type: String
            description: |
              Input only. The x509 PEM-encoded certificate that will be used by the replica to authenticate against the source database server.
              If this field is used then the 'clientKey' field is mandatory
            immutable: true
            sensitive: true
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_mysql_ssl_client_certificate.go.tmpl'
          - name: 'caCertificate'
            type: String
            description: |
              Input only. The x509 PEM-encoded certificate of the CA that signed the source database server's certificate.
              The replica will use this certificate to verify it's connecting to the right host.
            immutable: true
            sensitive: true
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_mysql_ssl_ca_certificate.go.tmpl'
      - name: 'cloudSqlId'
        type: String
        description: |
          If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
  - name: 'postgresql'
    type: NestedObject
    description: |
      Specifies connection parameters required specifically for PostgreSQL databases.
    exactly_one_of:
      - 'mysql'
      - 'postgresql'
      - 'oracle'
      - 'cloudsql'
      - 'alloydb'
    properties:
      - name: 'host'
        type: String
        description: |
          The IP or hostname of the source MySQL database.
        required_with:
          - 'postgresql.0.port'
          - 'postgresql.0.username'
          - 'postgresql.0.password'
      - name: 'port'
        type: Integer
        description: |
          The network port of the source MySQL database.
        required_with:
          - 'postgresql.0.host'
          - 'postgresql.0.username'
          - 'postgresql.0.password'
      - name: 'username'
        type: String
        description: |
          The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
        required_with:
          - 'postgresql.0.host'
          - 'postgresql.0.port'
          - 'postgresql.0.password'
      - name: 'password'
        type: String
        description: |
          Input only. The password for the user that Database Migration Service will be using to connect to the database.
          This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
        immutable: true
        sensitive: true
        required_with:
          - 'postgresql.0.host'
          - 'postgresql.0.port'
          - 'postgresql.0.username'
        custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_postgresql_password.go.tmpl'
      - name: 'passwordSet'
        type: Boolean
        description: |
          Output only. Indicates If this connection profile password is stored.
        output: true
      - name: 'ssl'
        type: NestedObject
        description: |
          SSL configuration for the destination to connect to the source database.
        properties:
          - name: 'type'
            type: Enum
            description: |
              The current connection profile state.
            enum_values:
              - 'SERVER_ONLY'
              - 'SERVER_CLIENT'
              - 'REQUIRED'
              - 'NONE'
          - name: 'clientKey'
            type: String
            description: |
              Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate.
              If this field is used then the 'clientCertificate' field is mandatory.
            immutable: true
            sensitive: true
            required_with:
              - 'client_certificate'
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_postgresql_ssl_client_key.go.tmpl'
          - name: 'clientCertificate'
            type: String
            description: |
              Input only. The x509 PEM-encoded certificate that will be used by the replica to authenticate against the source database server.
              If this field is used then the 'clientKey' field is mandatory
            immutable: true
            sensitive: true
            required_with:
              - 'client_key'
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_postgresql_ssl_client_certificate.go.tmpl'
          - name: 'caCertificate'
            type: String
            description: |
              Input only. The x509 PEM-encoded certificate of the CA that signed the source database server's certificate.
              The replica will use this certificate to verify it's connecting to the right host.
            immutable: true
            sensitive: true
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_postgresql_ssl_ca_certificate.go.tmpl'
      - name: 'cloudSqlId'
        type: String
        description: |
          If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source.
      - name: 'alloydbClusterId'
        type: String
        description: |
          If the connected database is an AlloyDB instance, use this field to provide the AlloyDB cluster ID.
      - name: 'networkArchitecture'
        type: Enum
        description: |
          Output only. If the source is a Cloud SQL database, this field indicates the network architecture it's associated with.
        output: true
        enum_values:
          - 'NETWORK_ARCHITECTURE_OLD_CSQL_PRODUCER'
          - 'NETWORK_ARCHITECTURE_NEW_CSQL_PRODUCER'
  - name: 'oracle'
    type: NestedObject
    description: |
      Specifies connection parameters required specifically for Oracle databases.
    exactly_one_of:
      - 'mysql'
      - 'postgresql'
      - 'oracle'
      - 'cloudsql'
      - 'alloydb'
    properties:
      - name: 'host'
        type: String
        description: |
          Required. The IP or hostname of the source Oracle database.
        required: true
      - name: 'port'
        type: Integer
        description: |
          Required. The network port of the source Oracle database.
        required: true
      - name: 'username'
        type: String
        description: |
          Required. The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service.
        required: true
      - name: 'password'
        type: String
        description: |
          Required. Input only. The password for the user that Database Migration Service will be using to connect to the database.
          This field is not returned on request, and the value is encrypted when stored in Database Migration Service.
        required: true
        immutable: true
        sensitive: true
        custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_oracle_password.go.tmpl'
      - name: 'passwordSet'
        type: Boolean
        description: |
          Output only. Indicates If this connection profile password is stored.
        output: true
      - name: 'databaseService'
        type: String
        description: |
          Required. Database service for the Oracle connection.
        required: true
      - name: 'ssl'
        type: NestedObject
        description: |
          SSL configuration for the destination to connect to the source database.
        properties:
          - name: 'type'
            type: Enum
            description: |
              The current connection profile state.
            output: true
            enum_values:
              - 'SERVER_ONLY'
              - 'SERVER_CLIENT'
          - name: 'clientKey'
            type: String
            description: |
              Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate.
              If this field is used then the 'clientCertificate' field is mandatory.
            immutable: true
            sensitive: true
            required_with:
              - 'client_certificate'
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_oracle_ssl_client_key.go.tmpl'
          - name: 'clientCertificate'
            type: String
            description: |
              Input only. The x509 PEM-encoded certificate that will be used by the replica to authenticate against the source database server.
              If this field is used then the 'clientKey' field is mandatory
            immutable: true
            sensitive: true
            required_with:
              - 'client_key'
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_oracle_ssl_client_certificate.go.tmpl'
          - name: 'caCertificate'
            type: String
            description: |
              Input only. The x509 PEM-encoded certificate of the CA that signed the source database server's certificate.
              The replica will use this certificate to verify it's connecting to the right host.
            immutable: true
            sensitive: true
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_oracle_ssl_ca_certificate.go.tmpl'
      - name: 'staticServiceIpConnectivity'
        type: NestedObject
        description: |
          This object has no nested fields.

          Static IP address connectivity configured on service project.
        send_empty_value: true
        allow_empty_object: true
        exactly_one_of:
          - 'static_service_ip_connectivity'
          - 'forward_ssh_connectivity'
          - 'private_connectivity'
        properties:
          []
      - name: 'forwardSshConnectivity'
        type: NestedObject
        description: |
          SSL configuration for the destination to connect to the source database.
        exactly_one_of:
          - 'static_service_ip_connectivity'
          - 'forward_ssh_connectivity'
          - 'private_connectivity'
        properties:
          - name: 'hostname'
            type: String
            description: |
              Required. Hostname for the SSH tunnel.
            required: true
          - name: 'username'
            type: String
            description: |
              Required. Username for the SSH tunnel.
            required: true
          - name: 'port'
            type: Integer
            description: |
              Port for the SSH tunnel, default value is 22.
            required: true
          - name: 'password'
            type: String
            description: |
              Input only. SSH password. Only one of `password` and `private_key` can be configured.
            immutable: true
            sensitive: true
            exactly_one_of:
              - 'forward_ssh_connectivity.0.password'
              - 'forward_ssh_connectivity.0.private_key'
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_oracle_forward_ssh_password.go.tmpl'
          - name: 'privateKey'
            type: String
            description: |
              Input only. SSH private key. Only one of `password` and `private_key` can be configured.
            immutable: true
            sensitive: true
            exactly_one_of:
              - 'oracle.0.forward_ssh_connectivity.0.password'
              - 'oracle.0.forward_ssh_connectivity.0.private_key'
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_oracle_forward_ssh_private_key.go.tmpl'
      - name: 'privateConnectivity'
        type: NestedObject
        description: |
          Configuration for using a private network to communicate with the source database
        exactly_one_of:
          - 'oracle.0.static_service_ip_connectivity'
          - 'oracle.0.forward_ssh_connectivity'
          - 'oracle.0.private_connectivity'
        properties:
          - name: 'privateConnection'
            type: String
            description: |
              Required. The resource name (URI) of the private connection.
            required: true
  - name: 'cloudsql'
    type: NestedObject
    description: |
      Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance.
    exactly_one_of:
      - 'mysql'
      - 'postgresql'
      - 'oracle'
      - 'cloudsql'
      - 'alloydb'
    properties:
      - name: 'cloudSqlId'
        type: String
        description: |
          Output only. The Cloud SQL instance ID that this connection profile is associated with.
        output: true
      - name: 'settings'
        type: NestedObject
        description: |
          Immutable. Metadata used to create the destination Cloud SQL database.
        immutable: true
        properties:
          - name: 'databaseVersion'
            type: String
            description: |
              The database engine type and version.
              Currently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion
          - name: 'userLabels'
            type: KeyValuePairs
            description: |
              The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs.
          - name: 'tier'
            type: String
            description: |
              The tier (or machine type) for this instance, for example: db-n1-standard-1 (MySQL instances) or db-custom-1-3840 (PostgreSQL instances).
              For more information, see https://cloud.google.com/sql/docs/mysql/instance-settings
          - name: 'storageAutoResizeLimit'
            type: String
            description: |
              The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
          - name: 'activationPolicy'
            type: Enum
            description: |
              The activation policy specifies when the instance is activated; it is applicable only when the instance state is 'RUNNABLE'.
            enum_values:
              - 'ALWAYS'
              - 'NEVER'
          - name: 'ipConfig'
            type: NestedObject
            description: |
              The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
            properties:
              - name: 'enableIpv4'
                type: Boolean
                description: |
                  Whether the instance should be assigned an IPv4 address or not.
              - name: 'privateNetwork'
                type: String
                description: |
                  The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, projects/myProject/global/networks/default.
                  This setting can be updated, but it cannot be removed after it is set.
              - name: 'requireSsl'
                type: Boolean
                description: |
                  Whether SSL connections over IP should be enforced or not.
              - name: 'authorizedNetworks'
                type: Array
                description: |
                  The list of external networks that are allowed to connect to the instance using the IP.
                item_type:
                  type: NestedObject
                  properties:
                    - name: 'value'
                      type: String
                      description: |
                        The allowlisted value for the access control list.
                      required: true
                    - name: 'label'
                      type: String
                      description: |
                        A label to identify this entry.
                    - name: 'expireTime'
                      type: Time
                      description: |
                        The time when this access control entry expires in RFC 3339 format.
                      exactly_one_of:
                        - 'expire_time'
                        - 'ttl'
                    - name: 'ttl'
                      type: Time
                      description: |
                        Input only. The time-to-leave of this access control entry.
                      immutable: true
          - name: 'autoStorageIncrease'
            type: Boolean
            description: |
              If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity.
              If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB.
          - name: 'databaseFlags'
            type: KeyValuePairs
            description: |
              The database flags passed to the Cloud SQL instance at startup.
          - name: 'dataDiskType'
            type: Enum
            description: |
              The type of storage.
            enum_values:
              - 'PD_SSD'
              - 'PD_HDD'
          - name: 'dataDiskSizeGb'
            type: String
            description: |
              The storage capacity available to the database, in GB. The minimum (and default) size is 10GB.
          - name: 'zone'
            type: String
            description: |
              The Google Cloud Platform zone where your Cloud SQL datdabse instance is located.
          - name: 'sourceId'
            type: String
            description: |
              The Database Migration Service source connection profile ID, in the format: projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID
            required: true
          - name: 'rootPassword'
            type: String
            description: |
              Input only. Initial root password.
            immutable: true
            sensitive: true
            custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_cloudsql_settings_root_password.go.tmpl'
          - name: 'rootPasswordSet'
            type: Boolean
            description: |
              Output only. Indicates If this connection profile root password is stored.
            output: true
          - name: 'collation'
            type: String
            description: |
              The Cloud SQL default instance level collation.
          - name: 'cmekKeyName'
            type: String
            description: |
              The KMS key name used for the csql instance.
          - name: 'edition'
            type: Enum
            description: |
              The edition of the given Cloud SQL instance.
            enum_values:
              - 'ENTERPRISE'
              - 'ENTERPRISE_PLUS'
      - name: 'privateIp'
        type: String
        description: |
          Output only. The Cloud SQL database instance's private IP.
        output: true
      - name: 'publicIp'
        type: String
        description: |
          Output only. The Cloud SQL database instance's public IP.
        output: true
  - name: 'alloydb'
    type: NestedObject
    description: |
      Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster.
    exactly_one_of:
      - 'mysql'
      - 'postgresql'
      - 'oracle'
      - 'cloudsql'
      - 'alloydb'
    properties:
      - name: 'clusterId'
        type: String
        description: |
          Required. The AlloyDB cluster ID that this connection profile is associated with.
        required: true
      - name: 'settings'
        type: NestedObject
        description: |
          Immutable. Metadata used to create the destination AlloyDB cluster.
        immutable: true
        properties:
          - name: 'initialUser'
            type: NestedObject
            description: |
              Required. Input only. Initial user to setup during cluster creation.
            required: true
            immutable: true
            properties:
              - name: 'user'
                type: String
                description: |
                  The database username.
                required: true
              - name: 'password'
                type: String
                description: |
                  The initial password for the user.
                required: true
                sensitive: true
                custom_flatten: 'templates/terraform/custom_flatten/database_migration_service_connection_profile_alloydb_settings_initial_user_password.go.tmpl'
              - name: 'passwordSet'
                type: Boolean
                description: |
                  Output only. Indicates if the initialUser.password field has been set.
                output: true
          - name: 'vpcNetwork'
            type: String
            description: |
              Required. The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster.
              It is specified in the form: 'projects/{project_number}/global/networks/{network_id}'. This is required to create a cluster.
            required: true
          - name: 'labels'
            type: KeyValuePairs
            description: |
              Labels for the AlloyDB cluster created by DMS.
          - name: 'primaryInstanceSettings'
            type: NestedObject
            description: |
              Settings for the cluster's primary instance
            properties:
              - name: 'id'
                type: String
                description: |
                  The database username.
                required: true
              - name: 'machineConfig'
                type: NestedObject
                description: |
                  Configuration for the machines that host the underlying database engine.
                required: true
                immutable: true
                properties:
                  - name: 'cpuCount'
                    type: Integer
                    description: |
                      The number of CPU's in the VM instance.
                    required: true
              - name: 'databaseFlags'
                type: KeyValuePairs
                description: |
                  Database flags to pass to AlloyDB when DMS is creating the AlloyDB cluster and instances. See the AlloyDB documentation for how these can be used.
              - name: 'labels'
                type: KeyValuePairs
                description: |
                  Labels for the AlloyDB primary instance created by DMS.
              - name: 'privateIp'
                type: String
                description: |
                  Output only. The private IP address for the Instance. This is the connection endpoint for an end-user application.
                output: true
