mmv1/products/gkebackup/BackupChannel.yaml (96 lines of code) (raw):
# Copyright 2025 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: 'BackupChannel'
description: |
A BackupChannel imposes constraints on where clusters can be backed up.
The BackupChannel should be in the same project and region
as the cluster being backed up.
The backup can be created only in destination_project.
references:
guides:
'Official Documentation': 'https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke'
api: 'https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/reference/rest/v1/projects.locations.backupChannels'
docs:
base_url: 'projects/{{project}}/locations/{{location}}/backupChannels'
create_url: 'projects/{{project}}/locations/{{location}}/backupChannels?backupChannelId={{name}}'
update_verb: 'PATCH'
update_mask: true
timeouts:
insert_minutes: 5
update_minutes: 5
delete_minutes: 5
autogen_async: true
async:
actions: ['create', 'delete', 'update']
type: 'OpAsync'
operation:
base_url: '{{op_id}}'
result:
resource_inside_response: true
custom_code:
examples:
- name: 'gkebackup_backupchannel_basic'
primary_resource_id: 'basic'
primary_resource_name: 'fmt.Sprintf("tf-test-basic-channel%s", context["random_suffix"])'
vars:
name: 'basic-channel'
destination_project: 'projects/24240755850'
test_vars_overrides:
'destination_project': '"projects/24240755850"'
test_env_vars:
project: 'PROJECT_NAME'
parameters:
- name: 'location'
type: String
description: |
The region of the Backup Channel.
url_param_only: true
required: true
immutable: true
properties:
- name: 'name'
type: String
description: |
The full name of the BackupChannel Resource.
required: true
immutable: true
custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl'
custom_expand: 'templates/terraform/custom_expand/shortname_to_url.go.tmpl'
- name: 'uid'
type: String
description: |
Server generated, unique identifier of UUID format.
output: true
- name: 'destinationProject'
type: String
description: |
The project where Backups are allowed to be stored.
The format is `projects/{project}`.
{project} can only be a project number.
required: true
immutable: true
- name: 'description'
type: String
description: |
User specified descriptive string for this BackupChannel.
- name: 'labels'
type: KeyValueLabels
description: |
Description: A set of custom labels supplied by the user.
A list of key->value pairs.
Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
- name: 'etag'
type: String
description: |
etag is used for optimistic concurrency control as a way to help prevent simultaneous
updates of a backup channel from overwriting each other. It is strongly suggested that
systems make use of the 'etag' in the read-modify-write cycle to perform BackupChannel updates
in order to avoid race conditions: An etag is returned in the response to backupChannels.get,
and systems are expected to put that etag in the request to backupChannels.patch or
backupChannels.delete to ensure that their change will be applied to the same version of the resource.
output: true
- name: 'destinationProjectId'
type: String
description: |
The project_id where Backups are allowed to be stored.
Example Project ID: "my-project-id".
output: true