mmv1/products/datastream/ConnectionProfile.yaml (501 lines of code) (raw):
# 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 set of reusable connection configurations to be used as a source or destination for a stream.
references:
guides:
'Official Documentation': 'https://cloud.google.com/datastream/docs/create-connection-profiles'
api: 'https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.connectionProfiles'
docs:
id_format: 'projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}'
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}}&force={{create_without_validation}}'
update_verb: 'PATCH'
update_mask: true
import_format:
- 'projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}'
timeouts:
insert_minutes: 20
update_minutes: 20
delete_minutes: 20
async:
actions: ['create', 'delete', 'update']
type: 'OpAsync'
operation:
base_url: '{{op_id}}'
result:
resource_inside_response: true
custom_code:
examples:
- name: 'datastream_connection_profile_basic'
primary_resource_id: 'default'
vars:
connection_profile_id: 'my-profile'
- name: 'datastream_connection_profile_postgresql_private_connection'
primary_resource_id: 'default'
vars:
private_connection_id: 'my-connection'
connection_profile_id: 'my-profile'
network_name: 'my-network'
subnetwork_name: 'my-subnetwork'
database_instance_name: 'my-instance'
deletion_protection: 'true'
nat_vm_name: 'nat-vm'
nat_vm_ip_name: 'nat-vm-ip'
ingress_firewall_name: 'ingress-rule'
test_vars_overrides:
'deletion_protection': 'false'
oics_vars_overrides:
'deletion_protection': 'false'
external_providers: ["random", "time"]
# Random provider
skip_vcr: true
ignore_read_extra:
- 'postgresql_profile.0.password'
- name: 'datastream_connection_profile_full'
primary_resource_id: 'default'
vars:
connection_profile_id: 'my-profile'
# Workaround for https://github.com/hashicorp/terraform-provider-google/issues/12410
ignore_read_extra:
- 'forward_ssh_connectivity.0.password'
- name: 'datastream_connection_profile_postgres'
primary_resource_id: 'default'
vars:
connection_profile_id: 'my-profile'
database_instance_name: 'my-instance'
deletion_protection: 'true'
test_vars_overrides:
'deletion_protection': 'false'
oics_vars_overrides:
'deletion_protection': 'false'
exclude_test: true
- name: 'datastream_connection_profile_sql_server'
primary_resource_id: 'default'
vars:
database_name: 'db'
database_password: 'password'
database_user: 'user'
deletion_protection: 'true'
source_connection_profile_id: 'source-profile'
sql_server_name: 'sql-server'
sql_server_root_password: 'root-password'
test_vars_overrides:
'deletion_protection': 'false'
exclude_test: true
- name: 'datastream_connection_profile_salesforce'
primary_resource_id: 'default'
vars:
source_connection_profile_id: 'source-profile'
exclude_test: true
- name: 'datastream_connection_profile_postgres_secret_manager'
primary_resource_id: 'default'
vars:
source_connection_profile_id: 'source-profile'
parameters:
- name: 'connectionProfileId'
type: String
description: |-
The connection profile identifier.
url_param_only: true
required: true
immutable: true
- name: 'create_without_validation'
type: Boolean
description: |-
Create the connection profile without validating it.
url_param_only: true
required: false
immutable: true
default_value: false
- name: 'location'
type: String
description: |
The name of the location this connection profile is located in.
url_param_only: true
required: true
immutable: true
properties:
- name: 'name'
type: String
description: The resource's name.
output: true
- name: 'labels'
type: KeyValueLabels
description: Labels.
- name: 'displayName'
type: String
description: Display name.
required: true
- name: 'oracleProfile'
type: NestedObject
description: |
Oracle database profile.
exactly_one_of:
- 'oracle_profile'
- 'gcs_profile'
- 'mysql_profile'
- 'bigquery_profile'
- 'postgresql_profile'
- 'sql_server_profile'
- 'salesforce_profile'
properties:
- name: 'hostname'
type: String
description: |
Hostname for the Oracle connection.
required: true
- name: 'port'
type: Integer
description: |
Port for the Oracle connection.
default_value: 1521
- name: 'username'
type: String
description: |
Username for the Oracle connection.
required: true
- name: 'password'
type: String
description: |
Password for the Oracle connection.
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_oracle_profile_password.go.tmpl'
- name: 'secretManagerStoredPassword'
type: String
description: |
A reference to a Secret Manager resource name storing the user's password.
- name: 'databaseService'
type: String
description: |
Database for the Oracle connection.
required: true
- name: 'connectionAttributes'
type: KeyValuePairs
description: Connection string attributes
- name: 'gcsProfile'
type: NestedObject
description: |
Cloud Storage bucket profile.
exactly_one_of:
- 'oracle_profile'
- 'gcs_profile'
- 'mysql_profile'
- 'bigquery_profile'
- 'postgresql_profile'
- 'sql_server_profile'
- 'salesforce_profile'
properties:
- name: 'bucket'
type: String
description: |
The Cloud Storage bucket name.
required: true
- name: 'rootPath'
type: String
description: |
The root path inside the Cloud Storage bucket.
- name: 'mysqlProfile'
type: NestedObject
description: |
MySQL database profile.
exactly_one_of:
- 'oracle_profile'
- 'gcs_profile'
- 'mysql_profile'
- 'bigquery_profile'
- 'postgresql_profile'
- 'sql_server_profile'
- 'salesforce_profile'
properties:
- name: 'hostname'
type: String
description: |
Hostname for the MySQL connection.
required: true
- name: 'port'
type: Integer
description: |
Port for the MySQL connection.
default_value: 3306
- name: 'username'
type: String
description: |
Username for the MySQL connection.
required: true
- name: 'password'
type: String
description: |
Password for the MySQL connection.
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_mysql_profile_password.go.tmpl'
- name: 'secretManagerStoredPassword'
type: String
description: |
A reference to a Secret Manager resource name storing the user's password.
- name: 'sslConfig'
type: NestedObject
description: |
SSL configuration for the MySQL connection.
properties:
- name: 'clientKey'
type: String
description: |
PEM-encoded private key associated with the Client Certificate.
If this field is used then the 'client_certificate' and the
'ca_certificate' fields are mandatory.
immutable: true
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_mysql_profile_ssl_config_client_key.go.tmpl'
- name: 'clientKeySet'
type: Boolean
description: |
Indicates whether the clientKey field is set.
output: true
- name: 'clientCertificate'
type: String
description: |
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' and the 'caCertificate' fields are
mandatory.
immutable: true
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_mysql_profile_ssl_config_client_certificate.go.tmpl'
- name: 'clientCertificateSet'
type: Boolean
description: |
Indicates whether the clientCertificate field is set.
output: true
- name: 'caCertificate'
type: String
description: |
PEM-encoded certificate of the CA that signed the source database
server's certificate.
immutable: true
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_mysql_profile_ssl_config_ca_certificate.go.tmpl'
- name: 'caCertificateSet'
type: Boolean
description: |
Indicates whether the clientKey field is set.
output: true
- name: 'bigqueryProfile'
type: NestedObject
description: |
BigQuery warehouse profile.
send_empty_value: true
allow_empty_object: true
exactly_one_of:
- 'oracle_profile'
- 'gcs_profile'
- 'mysql_profile'
- 'bigquery_profile'
- 'postgresql_profile'
- 'sql_server_profile'
- 'salesforce_profile'
properties:
[]
- name: 'postgresqlProfile'
type: NestedObject
description: |
PostgreSQL database profile.
exactly_one_of:
- 'oracle_profile'
- 'gcs_profile'
- 'mysql_profile'
- 'bigquery_profile'
- 'postgresql_profile'
- 'sql_server_profile'
- 'salesforce_profile'
properties:
- name: 'hostname'
type: String
description: |
Hostname for the PostgreSQL connection.
required: true
- name: 'port'
type: Integer
description: |
Port for the PostgreSQL connection.
default_value: 5432
- name: 'username'
type: String
description: |
Username for the PostgreSQL connection.
required: true
- name: 'password'
type: String
description: |
Password for the PostgreSQL connection.
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_postgresql_profile_password.go.tmpl'
- name: 'secretManagerStoredPassword'
type: String
description: |
A reference to a Secret Manager resource name storing the user's password.
- name: 'database'
type: String
description: |
Database for the PostgreSQL connection.
required: true
- name: 'salesforceProfile'
min_version: beta
type: NestedObject
description: |
Salesforce profile.
exactly_one_of:
- 'oracle_profile'
- 'gcs_profile'
- 'mysql_profile'
- 'bigquery_profile'
- 'postgresql_profile'
- 'sql_server_profile'
- 'salesforce_profile'
properties:
- name: 'domain'
type: String
description: |
Domain for the Salesforce Org.
required: true
- name: 'userCredentials'
type: NestedObject
description: |
User credentials to use for Salesforce authentication.
exactly_one_of:
- 'user_credentials'
- 'oauth2_client_credentials'
properties:
- name: 'username'
type: String
description: |
Username to use for authentication.
- name: 'password'
type: String
description: |
Password of the user.
- name: 'securityToken'
type: String
description: |
Security token of the user.
- name: 'secretManagerStoredPassword'
type: String
description: |
A reference to a Secret Manager resource name storing the user's password.
- name: 'secretManagerStoredSecurityToken'
type: String
description: |
A reference to a Secret Manager resource name storing the user's security token.
- name: 'oauth2ClientCredentials'
type: NestedObject
description: |
OAuth credentials to use for Salesforce authentication.
exactly_one_of:
- 'user_credentials'
- 'oauth2_client_credentials'
properties:
- name: 'client_id'
type: String
description: |
Client ID to use for authentication.
- name: 'clientSecret'
type: String
description: |
Client secret to use for authentication.
- name: 'secretManagerStoredClientSecret'
type: String
description: |
A reference to a Secret Manager resource name storing the client secret.
- name: 'sqlServerProfile'
type: NestedObject
description: |
SQL Server database profile.
exactly_one_of:
- 'oracle_profile'
- 'gcs_profile'
- 'mysql_profile'
- 'bigquery_profile'
- 'postgresql_profile'
- 'sql_server_profile'
- 'salesforce_profile'
properties:
- name: 'hostname'
type: String
description: |
Hostname for the SQL Server connection.
required: true
- name: 'port'
type: Integer
description: |
Port for the SQL Server connection.
default_value: 1433
- name: 'username'
type: String
description: |
Username for the SQL Server connection.
required: true
- name: 'password'
type: String
description: |
Password for the SQL Server connection.
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_sql_server_profile_password.go.tmpl'
- name: 'secretManagerStoredPassword'
type: String
description: |
A reference to a Secret Manager resource name storing the user's password.
- name: 'database'
type: String
description: |
Database for the SQL Server connection.
required: true
- name: 'forwardSshConnectivity'
type: NestedObject
description: |
Forward SSH tunnel connectivity.
conflicts:
- private_connectivity
properties:
- name: 'hostname'
type: String
description: |
Hostname for the SSH tunnel.
required: true
- name: 'username'
type: String
description: |
Username for the SSH tunnel.
required: true
- name: 'port'
type: Integer
description: |
Port for the SSH tunnel.
default_value: 22
- name: 'password'
type: String
description: |
SSH password.
immutable: true
sensitive: true
conflicts:
- forward_ssh_connectivity.0.private_key
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_forward_ssh_connectivity_password.go.tmpl'
- name: 'privateKey'
type: String
description: |
SSH private key.
sensitive: true
conflicts:
- forward_ssh_connectivity.0.password
custom_flatten: 'templates/terraform/custom_flatten/datastream_connection_profile_forward_ssh_connectivity_private_key.go.tmpl'
- name: 'privateConnectivity'
type: NestedObject
description: |
Private connectivity.
conflicts:
- forward_ssh_connectivity
properties:
- name: 'privateConnection'
type: String
description: |
A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`
required: true