mmv1/products/integrationconnectors/Connection.yaml (933 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: 'Connection'
description: |
An Integration connectors Connection.
references:
guides:
'Official Documentation': 'https://cloud.google.com/integration-connectors/docs/createconnection'
api: 'https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.connections'
docs:
base_url: 'projects/{{project}}/locations/{{location}}/connections'
self_link: 'projects/{{project}}/locations/{{location}}/connections/{{name}}'
create_url: 'projects/{{project}}/locations/{{location}}/connections?connectionId={{name}}'
update_verb: 'PATCH'
update_mask: true
timeouts:
insert_minutes: 30
update_minutes: 30
delete_minutes: 30
autogen_async: true
async:
actions: ['create', 'delete', 'update']
type: 'OpAsync'
operation:
base_url: '{{op_id}}'
timeouts:
insert_minutes: 50
update_minutes: 30
delete_minutes: 30
result:
resource_inside_response: true
custom_code:
constants: 'templates/terraform/constants/integration_connectors_connection.go.tmpl'
post_create: 'templates/terraform/post_create/integration_connectors_connection.go.tmpl'
post_update: 'templates/terraform/post_update/integration_connectors_connection.go.tmpl'
post_import: 'templates/terraform/post_import/integration_connectors_connection.go.tmpl'
examples:
- name: 'integration_connectors_connection_basic'
primary_resource_id: 'pubsubconnection'
vars:
connection_name: 'test-pubsub'
ignore_read_extra:
- 'status.0.description'
exclude_test: true
- name: 'integration_connectors_connection_advanced'
primary_resource_id: 'zendeskconnection'
vars:
connection_name: 'test-zendesk'
secret_id: 'test-secret'
ignore_read_extra:
- 'status.0.description'
exclude_test: true
- name: 'integration_connectors_connection_sa'
primary_resource_id: 'zendeskconnection'
vars:
connection_name: 'test-zendesk'
secret_id: 'test-secret'
ignore_read_extra:
- 'status.0.description'
exclude_test: true
exclude_docs: true
- name: 'integration_connectors_connection_oauth'
primary_resource_id: 'boxconnection'
vars:
connection_name: 'test-box'
secret_id: 'test-secret'
ignore_read_extra:
- 'status.0.description'
exclude_test: true
exclude_docs: true
- name: 'integration_connectors_connection_oauth_ssh'
primary_resource_id: 'boxconnection'
vars:
connection_name: 'test-box'
secret_id: 'test-secret'
ignore_read_extra:
- 'status.0.description'
exclude_test: true
exclude_docs: true
- name: 'integration_connectors_connection_oauth_cc'
primary_resource_id: 'boxconnection'
vars:
connection_name: 'test-box'
secret_id: 'test-secret'
ignore_read_extra:
- 'status.0.description'
exclude_test: true
exclude_docs: true
- name: 'integration_connectors_connection_oauth_jwt'
primary_resource_id: 'boxconnection'
vars:
connection_name: 'test-box'
secret_id: 'test-secret'
ignore_read_extra:
- 'status.0.description'
exclude_test: true
exclude_docs: true
parameters:
- name: 'location'
type: String
description: |
Location in which Connection needs to be created.
url_param_only: true
required: true
immutable: true
- name: 'name'
type: String
description: |
Name of Connection needs to be created.
url_param_only: true
required: true
immutable: true
properties:
- name: 'createTime'
type: Time
description: |
Time the Namespace was created in UTC.
output: true
- name: 'updateTime'
type: Time
description: |
Time the Namespace was updated in UTC.
output: true
- name: 'description'
type: String
description: |
An arbitrary description for the Connection.
- name: 'labels'
type: KeyValueLabels
description: |
Resource labels to represent user provided metadata.
- name: 'connectorVersion'
type: String
description: |
connectorVersion of the Connector.
required: true
- name: 'status'
type: NestedObject
description: |
Status of the Integration Connector.
output: true
properties:
- name: 'state'
type: String
description: |
State of the Integration Connector
output: true
- name: 'description'
type: String
description: |
Description of Status of Connection.
output: true
- name: 'status'
type: String
description: |
Status of the Connection.
output: true
- name: 'configVariable'
type: Array
description: |
Config Variables for the connection.
api_name: configVariables
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
Key for the configVariable
required: true
- name: 'integerValue'
type: Integer
description: |
Integer Value of configVariable
api_name: intValue
- name: 'stringValue'
type: String
description: |
String Value of configVariabley
- name: 'booleanValue'
type: Boolean
description: |
Boolean Value of configVariable
api_name: boolValue
- name: 'secretValue'
type: NestedObject
description: |
Secret value of configVariable.
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'encryptionKeyValue'
type: NestedObject
description: |
Encryption key value of configVariable.
properties:
- name: 'type'
type: Enum
description: |
Type of Encryption Key
required: true
enum_values:
- 'GOOGLE_MANAGED'
- 'CUSTOMER_MANAGED'
- name: 'kmsKeyName'
type: String
description: |
The [KMS key name] with which the content of the Operation is encrypted. The
expected format: projects/*/locations/*/keyRings/*/cryptoKeys/*.
Will be empty string if google managed.
- name: 'authConfig'
type: NestedObject
description: |
authConfig for the connection.
properties:
- name: 'authType'
type: Enum
description: |
authType of the Connection
required: true
enum_values:
- 'AUTH_TYPE_UNSPECIFIED'
- 'USER_PASSWORD'
- 'OAUTH2_JWT_BEARER'
- 'OAUTH2_CLIENT_CREDENTIALS'
- 'SSH_PUBLIC_KEY'
- 'OAUTH2_AUTH_CODE_FLOW'
- name: 'additionalVariable'
type: Array
description: |
List containing additional auth configs.
api_name: additionalVariables
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
Key for the configVariable
required: true
- name: 'integerValue'
type: Integer
description: |
Integer Value of configVariable.
api_name: intValue
- name: 'stringValue'
type: String
description: |
String Value of configVariabley.
- name: 'booleanValue'
type: Boolean
description: |
Boolean Value of configVariable.
api_name: boolValue
- name: 'secretValue'
type: NestedObject
description: |
Secret value of configVariable.
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'encryptionKeyValue'
type: NestedObject
description: |
Encryption key value of configVariable.
properties:
- name: 'type'
type: Enum
description: |
Type of Encryption Key
required: true
enum_values:
- 'GOOGLE_MANAGED'
- 'CUSTOMER_MANAGED'
- name: 'kmsKeyName'
type: String
description: |
The [KMS key name] with which the content of the Operation is encrypted. The
expected format: projects/*/locations/*/keyRings/*/cryptoKeys/*.
Will be empty string if google managed.
- name: 'authKey'
type: String
description: |
The type of authentication configured.
- name: 'userPassword'
type: NestedObject
description: |
User password for Authentication.
exactly_one_of:
- 'auth_config.0.user_password'
- 'auth_config.0.oauth2_jwt_bearer'
- 'auth_config.0.oauth2_client_credentials'
- 'auth_config.0.ssh_public_key'
- 'auth_config.0.oauth2_auth_code_flow'
properties:
- name: 'username'
type: String
description: |
Username for Authentication.
required: true
- name: 'password'
type: NestedObject
description: |
Password for Authentication.
properties:
- name: 'secretVersion'
type: String
description: |
The resource name of the secret version in the format,
format as: projects/*/secrets/*/versions/*.
required: true
- name: 'oauth2JwtBearer'
type: NestedObject
description: |
OAuth2 JWT Bearer for Authentication.
exactly_one_of:
- 'auth_config.0.user_password'
- 'auth_config.0.oauth2_jwt_bearer'
- 'auth_config.0.oauth2_client_credentials'
- 'auth_config.0.ssh_public_key'
- 'auth_config.0.oauth2_auth_code_flow'
properties:
- name: 'clientKey'
type: NestedObject
description: |
Secret version reference containing a PKCS#8 PEM-encoded private key associated with the Client Certificate.
This private key will be used to sign JWTs used for the jwt-bearer authorization grant.
Specified in the form as: projects/*/secrets/*/versions/*.
properties:
- name: 'secretVersion'
type: String
description: |
The resource name of the secret version in the format,
format as: projects/*/secrets/*/versions/*.
required: true
- name: 'jwtClaims'
type: NestedObject
description: |
JwtClaims providers fields to generate the token.
properties:
- name: 'issuer'
type: String
description: |
Value for the "iss" claim.
- name: 'subject'
type: String
description: |
Value for the "sub" claim.
- name: 'audience'
type: String
description: |
Value for the "aud" claim.
- name: 'oauth2ClientCredentials'
type: NestedObject
description: |
OAuth3 Client Credentials for Authentication.
exactly_one_of:
- 'auth_config.0.user_password'
- 'auth_config.0.oauth2_jwt_bearer'
- 'auth_config.0.oauth2_client_credentials'
- 'auth_config.0.ssh_public_key'
- 'auth_config.0.oauth2_auth_code_flow'
properties:
- name: 'clientId'
type: String
description: |
Secret version of Password for Authentication.
required: true
- name: 'clientSecret'
type: NestedObject
description: |
Secret version reference containing the client secret.
properties:
- name: 'secretVersion'
type: String
description: |
The resource name of the secret version in the format,
format as: projects/*/secrets/*/versions/*.
required: true
- name: 'sshPublicKey'
type: NestedObject
description: |
SSH Public Key for Authentication.
exactly_one_of:
- 'auth_config.0.user_password'
- 'auth_config.0.oauth2_jwt_bearer'
- 'auth_config.0.oauth2_client_credentials'
- 'auth_config.0.ssh_public_key'
- 'auth_config.0.oauth2_auth_code_flow'
properties:
- name: 'username'
type: String
description: |
The user account used to authenticate.
required: true
- name: 'sshClientCert'
type: NestedObject
description: |
SSH Client Cert. It should contain both public and private key.
properties:
- name: 'secretVersion'
type: String
description: |
The resource name of the secret version in the format,
format as: projects/*/secrets/*/versions/*.
required: true
- name: 'certType'
type: String
description: |
Format of SSH Client cert.
- name: 'sshClientCertPass'
type: NestedObject
description: |
Password (passphrase) for ssh client certificate if it has one.
properties:
- name: 'secretVersion'
type: String
description: |
The resource name of the secret version in the format,
format as: projects/*/secrets/*/versions/*.
required: true
- name: 'oauth2AuthCodeFlow'
type: NestedObject
description: |
Parameters to support Oauth 2.0 Auth Code Grant Authentication.
exactly_one_of:
- 'auth_config.0.user_password'
- 'auth_config.0.oauth2_jwt_bearer'
- 'auth_config.0.oauth2_client_credentials'
- 'auth_config.0.ssh_public_key'
- 'auth_config.0.oauth2_auth_code_flow'
properties:
- name: 'clientId'
type: String
description: |
Client ID for user-provided OAuth app.
- name: 'clientSecret'
type: NestedObject
description: |
Client secret for user-provided OAuth app.
properties:
- name: 'secretVersion'
type: String
description: |
The resource name of the secret version in the format,
format as: projects/*/secrets/*/versions/*.
required: true
- name: 'scopes'
type: Array
description: |
Scopes the connection will request when the user performs the auth code flow.
item_type:
type: String
- name: 'enablePkce'
type: Boolean
description: |
Whether to enable PKCE when the user performs the auth code flow.
- name: 'authUri'
type: String
description: |
Auth URL for Authorization Code Flow.
- name: 'lockConfig'
type: NestedObject
description: |
Determines whether or no a connection is locked. If locked, a reason must be specified.
properties:
- name: 'locked'
type: Boolean
description: |
Indicates whether or not the connection is locked.
required: true
- name: 'reason'
type: String
description: |
Describes why a connection is locked.
- name: 'destinationConfig'
type: Array
description: |
Define the Connectors target endpoint.
api_name: destinationConfigs
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
The key is the destination identifier that is supported by the Connector.
required: true
- name: 'destination'
type: Array
description: |
The destinations for the key.
api_name: destinations
item_type:
type: NestedObject
properties:
- name: 'port'
type: Integer
description: |
The port is the target port number that is accepted by the destination.
- name: 'serviceAttachment'
type: String
description: |
PSC service attachments. Format: projects/*/regions/*/serviceAttachments/*
- name: 'host'
type: String
description: |
For publicly routable host.
- name: 'serviceAccount'
type: String
description: |
Service account needed for runtime plane to access Google Cloud resources.
default_from_api: true
- name: 'serviceDirectory'
type: String
description: |
The name of the Service Directory service name. Used for Private Harpoon to resolve the ILB address.
e.g. "projects/cloud-connectors-e2e-testing/locations/us-central1/namespaces/istio-system/services/istio-ingressgateway-connectors"
output: true
- name: 'suspended'
type: Boolean
description: |
Suspended indicates if a user has suspended a connection or not.
- name: 'nodeConfig'
type: NestedObject
description: |
Node configuration for the connection.
default_from_api: true
properties:
- name: 'minNodeCount'
type: Integer
description: |
Minimum number of nodes in the runtime nodes.
required: true
default_from_api: true
- name: 'maxNodeCount'
type: Integer
description: |
Minimum number of nodes in the runtime nodes.
required: true
default_from_api: true
- name: 'logConfig'
type: NestedObject
description: |
Log configuration for the connection.
properties:
- name: 'enabled'
type: Boolean
description: |
Enabled represents whether logging is enabled or not for a connection.
required: true
- name: 'sslConfig'
type: NestedObject
description: |
SSL Configuration of a connection
properties:
- name: 'type'
type: Enum
description: |
Enum for controlling the SSL Type (TLS/MTLS)
required: true
enum_values:
- 'TLS'
- 'MTLS'
- name: 'trustModel'
type: Enum
description: |
Enum for Trust Model
enum_values:
- 'PUBLIC'
- 'PRIVATE'
- 'INSECURE'
- name: 'privateServerCertificate'
type: NestedObject
description: |
Private Server Certificate. Needs to be specified if trust model is PRIVATE.
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'clientCertificate'
type: NestedObject
description: |
Client Certificate
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'clientPrivateKey'
type: NestedObject
description: |
Client Private Key
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'clientPrivateKeyPass'
type: NestedObject
description: |
Secret containing the passphrase protecting the Client Private Key
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'serverCertType'
type: Enum
description: |
Type of Server Cert (PEM/JKS/.. etc.)
enum_values:
- 'PEM'
- name: 'clientCertType'
type: Enum
description: |
Type of Client Cert (PEM/JKS/.. etc.)
enum_values:
- 'PEM'
- name: 'useSsl'
type: Boolean
description: |
Bool for enabling SSL
- name: 'additionalVariable'
type: Array
description: |
Additional SSL related field values.
api_name: additionalVariables
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
Key for the configVariable
required: true
- name: 'integerValue'
type: Integer
description: |
Integer Value of configVariable.
api_name: intValue
- name: 'stringValue'
type: String
description: |
String Value of configVariabley.
- name: 'booleanValue'
type: Boolean
description: |
Boolean Value of configVariable.
api_name: boolValue
- name: 'secretValue'
type: NestedObject
description: |
Secret value of configVariable
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'encryptionKeyValue'
type: NestedObject
description: |
Encryption key value of configVariable
properties:
- name: 'type'
type: Enum
description: |
Type of Encryption Key
enum_values:
- 'GOOGLE_MANAGED'
- 'CUSTOMER_MANAGED'
- name: 'kmsKeyName'
type: String
description: |
The [KMS key name] with which the content of the Operation is encrypted. The
expected format: projects/*/locations/*/keyRings/*/cryptoKeys/*.
Will be empty string if google managed.
- name: 'subscriptionType'
type: String
description: |
This subscription type enum states the subscription type of the project.
output: true
- name: 'connectionRevision'
type: String
description: |
Connection revision. This field is only updated when the connection is created or updated by User.
output: true
- name: 'eventingEnablementType'
type: Enum
description: |
Eventing enablement type. Will be nil if eventing is not enabled.
enum_values:
- 'EVENTING_AND_CONNECTION'
- 'ONLY_EVENTING'
- name: 'eventingConfig'
type: NestedObject
description: |
Eventing Configuration of a connection
properties:
- name: 'registrationDestinationConfig'
type: NestedObject
description: |
registrationDestinationConfig
required: true
properties:
- name: 'key'
type: String
description: |
Key for the connection
- name: 'destination'
type: Array
description: |
destinations for the connection
api_name: destinations
item_type:
type: NestedObject
properties:
- name: 'port'
type: Integer
description: |
port number
- name: 'serviceAttachment'
type: String
description: |
Service Attachment
- name: 'host'
type: String
description: |
Host
- name: 'authConfig'
type: NestedObject
description: |
authConfig for Eventing Configuration.
properties:
- name: 'authType'
type: Enum
description: |
authType of the Connection
required: true
enum_values:
- 'USER_PASSWORD'
- name: 'additionalVariable'
type: Array
description: |
List containing additional auth configs.
api_name: additionalVariables
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
Key for the configVariable
required: true
- name: 'integerValue'
type: Integer
description: |
Integer Value of configVariable.
api_name: intValue
- name: 'stringValue'
type: String
description: |
String Value of configVariabley.
- name: 'booleanValue'
type: Boolean
description: |
Boolean Value of configVariable.
api_name: boolValue
- name: 'secretValue'
type: NestedObject
description: |
Secret value of configVariable
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'encryptionKeyValue'
type: NestedObject
description: |
Encryption key value of configVariable
properties:
- name: 'type'
type: Enum
description: |
Type of Encryption Key
enum_values:
- 'GOOGLE_MANAGED'
- 'CUSTOMER_MANAGED'
- name: 'kmsKeyName'
type: String
description: |
The [KMS key name] with which the content of the Operation is encrypted. The
expected format: projects/*/locations/*/keyRings/*/cryptoKeys/*.
Will be empty string if google managed.
- name: 'authKey'
type: String
description: |
The type of authentication configured.
- name: 'userPassword'
type: NestedObject
description: |
User password for Authentication.
required: true
properties:
- name: 'username'
type: String
description: |
Username for Authentication.
- name: 'password'
type: NestedObject
description: |
Password for Authentication.
properties:
- name: 'secretVersion'
type: String
description: |
The resource name of the secret version in the format,
format as: projects/*/secrets/*/versions/*.
required: true
- name: 'additionalVariable'
type: Array
description: |
List containing additional auth configs.
api_name: additionalVariables
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
Key for the configVariable
required: true
- name: 'integerValue'
type: Integer
description: |
Integer Value of configVariable.
api_name: intValue
- name: 'stringValue'
type: String
description: |
String Value of configVariabley.
- name: 'booleanValue'
type: Boolean
description: |
Boolean Value of configVariable.
api_name: boolValue
- name: 'secretValue'
type: NestedObject
description: |
Secret value of configVariable
properties:
- name: 'secretVersion'
type: String
description: |
Secret version of Secret Value for Config variable.
required: true
- name: 'encryptionKeyValue'
type: NestedObject
description: |
Encryption key value of configVariable.
properties:
- name: 'type'
type: Enum
description: |
Type of Encryption Key
enum_values:
- 'GOOGLE_MANAGED'
- 'CUSTOMER_MANAGED'
- name: 'kmsKeyName'
type: String
description: |
The [KMS key name] with which the content of the Operation is encrypted. The
expected format: projects/*/locations/*/keyRings/*/cryptoKeys/*.
Will be empty string if google managed.
- name: 'enrichmentEnabled'
type: Boolean
description: |
Enrichment Enabled.
- name: 'connectorVersionLaunchStage'
type: String
description: |
Flag to mark the version indicating the launch stage.
output: true
- name: 'eventingRuntimeData'
type: NestedObject
description: |
Eventing Runtime Data.
output: true
properties:
- name: 'status'
type: NestedObject
description: |
Current status of eventing.
output: true
properties:
- name: 'state'
type: String
description: |
State of the Eventing
output: true
- name: 'description'
type: String
description: |
Description of error if State is set to "ERROR".
output: true
- name: 'eventsListenerEndpoint'
type: String
description: |
Events listener endpoint. The value will populated after provisioning the events listener.
- name: 'connectorVersionInfraConfig'
type: NestedObject
description: |
This configuration provides infra configs like rate limit threshold which need to be configurable for every connector version.
output: true
properties:
- name: 'ratelimitThreshold'
type: String
description: |
Max QPS supported by the connector version before throttling of requests.
output: true