mmv1/products/certificatemanager/Certificate.yaml (278 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: 'Certificate' description: | Certificate represents a HTTP-reachable backend for a Certificate. docs: id_format: 'projects/{{project}}/locations/{{location}}/certificates/{{name}}' base_url: 'projects/{{project}}/locations/{{location}}/certificates' self_link: 'projects/{{project}}/locations/{{location}}/certificates/{{name}}' create_url: 'projects/{{project}}/locations/{{location}}/certificates?certificateId={{name}}' update_verb: 'PATCH' update_mask: true import_format: - 'projects/{{project}}/locations/{{location}}/certificates/{{name}}' timeouts: insert_minutes: 20 update_minutes: 20 delete_minutes: 20 autogen_async: true async: actions: ['create', 'delete', 'update'] type: 'OpAsync' operation: base_url: '{{op_id}}' result: resource_inside_response: false custom_code: constants: 'templates/terraform/constants/cert_manager.tmpl' schema_version: 1 state_upgraders: true sweeper: url_substitutions: - region: "us-central1" - region: "us-east1" - region: "global" - region: "us-west2" - region: "us-south1" - region: "us-west1" dependencies: - "google_compute_region_target_https_proxy" # - "google_network_security_backend_authentication_config" (beta only) - "google_network_services_gateway" - "google_compute_target_https_proxy" - "google_compute_network" examples: - name: 'certificate_manager_google_managed_certificate_dns' primary_resource_id: 'default' vars: dns_auth_name: 'dns-auth' dns_auth_subdomain: 'subdomain' dns_auth_name2: 'dns-auth2' dns_auth_subdomain2: 'subdomain2' cert_name: 'dns-cert' - name: 'certificate_manager_google_managed_certificate_issuance_config' primary_resource_id: 'default' vars: cert_name: 'issuance-config-cert' ca_name: 'ca-authority' pool_name: 'ca-pool' issuance_config_name: 'issuance-config' - name: 'certificate_manager_self_managed_certificate' primary_resource_id: 'default' vars: cert_name: 'self-managed-cert' - name: 'certificate_manager_self_managed_certificate_regional' primary_resource_id: 'default' vars: cert_name: 'self-managed-cert' - name: 'certificate_manager_google_managed_certificate_issuance_config_all_regions' primary_resource_id: 'default' vars: cert_name: 'issuance-config-cert' ca_name: 'ca-authority' pool_name: 'ca-pool' issuance_config_name: 'issuance-config' - name: 'certificate_manager_google_managed_certificate_dns_all_regions' primary_resource_id: 'default' vars: dns_auth_name: 'dns-auth' dns_auth_subdomain: 'subdomain' dns_auth_name2: 'dns-auth2' dns_auth_subdomain2: 'subdomain2' cert_name: 'dns-cert' - name: 'certificate_manager_google_managed_regional_certificate_dns_auth' primary_resource_id: 'default' vars: dns_auth_name: 'dns-auth' dns_auth_subdomain: 'subdomain' cert_name: 'dns-cert' - name: 'certificate_manager_client_auth_certificate' primary_resource_id: 'default' vars: cert_name: 'client-auth-cert' parameters: - name: 'name' type: String description: | A user-defined name of the certificate. Certificate names must be unique The name must be 1-64 characters long, and match the regular expression [a-zA-Z][a-zA-Z0-9_-]* which means the first character must be a letter, and all following characters must be a dash, underscore, letter or digit. url_param_only: true required: true immutable: true - name: 'location' type: String description: | The Certificate Manager location. If not specified, "global" is used. url_param_only: true immutable: true default_value: "global" properties: - name: 'description' type: String description: | A human-readable description of the resource. - name: 'labels' type: KeyValueLabels description: 'Set of label tags associated with the Certificate resource.' - name: 'scope' type: String description: | The scope of the certificate. DEFAULT: Certificates with default scope are served from core Google data centers. If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from Edge Points of Presence. See https://cloud.google.com/vpc/docs/edge-locations. ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). See https://cloud.google.com/compute/docs/regions-zones. CLIENT_AUTH: Certificates with CLIENT_AUTH scope are used by a load balancer (TLS client) to be presented to the backend (TLS server) when backend mTLS is configured. See https://cloud.google.com/load-balancing/docs/backend-authenticated-tls-backend-mtls#client-certificate. immutable: true diff_suppress_func: 'certManagerDefaultScopeDiffSuppress' default_value: "DEFAULT" - name: 'sanDnsnames' type: Array description: | The list of Subject Alternative Names of dnsName type defined in the certificate (see RFC 5280 4.2.1.6) output: true item_type: type: String - name: 'selfManaged' type: NestedObject description: | Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility. immutable: true ignore_read: true exactly_one_of: - 'self_managed' - 'managed' properties: - name: 'certificatePem' type: String description: | The certificate chain in PEM-encoded form. Leaf certificate comes first, followed by intermediate ones if any. immutable: true sensitive: true exactly_one_of: - 'self_managed.0.certificate_pem' - 'self_managed.0.pem_certificate' deprecation_message: '`certificate_pem` is deprecated and will be removed in a future major release. Use `pem_certificate` instead.' - name: 'privateKeyPem' type: String description: | The private key of the leaf certificate in PEM-encoded form. immutable: true sensitive: true exactly_one_of: - 'self_managed.0.private_key_pem' - 'self_managed.0.pem_private_key' deprecation_message: '`private_key_pem` is deprecated and will be removed in a future major release. Use `pem_private_key` instead.' - name: 'pemCertificate' type: String description: | The certificate chain in PEM-encoded form. Leaf certificate comes first, followed by intermediate ones if any. immutable: true exactly_one_of: - 'self_managed.0.certificate_pem' - 'self_managed.0.pem_certificate' - name: 'pemPrivateKey' type: String description: | The private key of the leaf certificate in PEM-encoded form. immutable: true sensitive: true exactly_one_of: - 'self_managed.0.private_key_pem' - 'self_managed.0.pem_private_key' - name: 'managed' type: NestedObject description: | Configuration and state of a Managed Certificate. Certificate Manager provisions and renews Managed Certificates automatically, for as long as it's authorized to do so. immutable: true exactly_one_of: - 'self_managed' - 'managed' properties: - name: 'domains' type: Array description: | The domains for which a managed SSL certificate will be generated. Wildcard domains are only supported with DNS challenge resolution immutable: true item_type: type: String - name: 'dnsAuthorizations' type: Array description: | Authorizations that will be used for performing domain authorization. Either issuanceConfig or dnsAuthorizations should be specificed, but not both. immutable: true diff_suppress_func: 'tpgresource.ProjectNumberDiffSuppress' item_type: type: String - name: 'issuanceConfig' type: String description: | The resource name for a CertificateIssuanceConfig used to configure private PKI certificates in the format projects/*/locations/*/certificateIssuanceConfigs/*. If this field is not set, the certificates will instead be publicly signed as documented at https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs#caa. Either issuanceConfig or dnsAuthorizations should be specificed, but not both. immutable: true # when the certificate is created with issuanceConfig in the format "projects/{{project_id}}/locations/global/certificateIssuanceConfigs/{{CICName}}", the # format changes in the response message to "projects/{{project_number}}/locations/global/certificateIssuanceConfigs/{{CICName}}". That causes the tests to fail # that's why "tpgresource.CompareResourceNames" is needed. diff_suppress_func: 'tpgresource.CompareResourceNames' - name: 'state' type: String description: | A state of this Managed Certificate. output: true - name: 'provisioningIssue' type: NestedObject description: | Information about issues with provisioning this Managed Certificate. output: true properties: - name: 'reason' type: String description: | Reason for provisioning failures. output: true - name: 'details' type: String description: | Human readable explanation about the issue. Provided to help address the configuration issues. Not guaranteed to be stable. For programmatic access use `reason` field. output: true - name: 'authorizationAttemptInfo' type: Array description: | Detailed state of the latest authorization attempt for each domain specified for this Managed Certificate. output: true item_type: type: NestedObject properties: - name: 'domain' type: String description: | Domain name of the authorization attempt. output: true - name: 'state' type: String description: | State of the domain for managed certificate issuance. output: true - name: 'failureReason' type: String description: | Reason for failure of the authorization attempt for the domain. output: true - name: 'details' type: String description: | Human readable explanation for reaching the state. Provided to help address the configuration issues. Not guaranteed to be stable. For programmatic access use `failure_reason` field. output: true