mmv1/products/compute/InstantSnapshot.yaml (109 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: 'InstantSnapshot'
api_variant_patterns:
- 'projects/{project}/zones/{zone}/instantSnapshots/{instantSnapshot}'
kind: 'compute#instantSnapshot'
description: |
Represents an instant snapshot resource.
An instant snapshot is an in-place backup of a disk that can be used to rapidly create a new disk in minutes.
Instant snapshots capture data at a specific point in time. They are optimized for rapidly restoring captured
data to a new disk. Use instant snapshots to quickly recover data in cases where the zone and disk are still intact
but the data on the disk has been lost or corrupted
references:
guides:
'Official Documentation': 'https://cloud.google.com/compute/docs/disks/instant-snapshots'
api: 'https://cloud.google.com/compute/docs/reference/rest/v1/instantSnapshots'
docs:
base_url: 'projects/{{project}}/zones/{{zone}}/instantSnapshots'
has_self_link: true
immutable: true
timeouts:
insert_minutes: 20
update_minutes: 20
delete_minutes: 20
async:
actions: ['create', 'delete', 'update']
type: 'OpAsync'
operation:
full_url: 'selfLink'
result:
resource_inside_response: false
collection_url_key: 'items'
iam_policy:
parent_resource_attribute: 'name'
example_config_body: 'templates/terraform/iam/iam_attributes.go.tmpl'
iam_conditions_request_type: 'QUERY_PARAM'
allowed_iam_role: 'roles/compute.storageAdmin'
import_format:
- 'projects/{{project}}/zones/{{zone}}/instantSnapshots/{{name}}'
sweeper:
url_substitutions:
- zone: "us-central1-a"
examples:
- name: 'instant_snapshot_basic'
primary_resource_id: 'default'
primary_resource_name: 'fmt.Sprintf("tf-test-instant-snapshot%s", context["random_suffix"])'
vars:
instance_name: 'instant-snapshot'
disk_name: 'example-disk'
parameters:
- name: 'sourceDisk'
type: ResourceRef
description: 'A reference to the disk used to create this instant snapshot.'
required: true
immutable: true
diff_suppress_func: 'tpgresource.CompareSelfLinkOrResourceName'
custom_expand: 'templates/terraform/custom_expand/resourceref_with_validation.go.tmpl'
resource: 'Disk'
imports: 'name'
- name: 'zone'
type: ResourceRef
description: 'A reference to the zone where the disk is located.'
default_from_api: true
required: false
custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.tmpl'
custom_expand: 'templates/terraform/custom_expand/resourceref_with_validation.go.tmpl'
resource: 'Zone'
imports: 'name'
properties:
- name: 'creationTimestamp'
type: Time
description: 'Creation timestamp in RFC3339 text format.'
output: true
- name: 'name'
type: String
description: |
Name of the resource; provided by the client when the resource is
created. The name must be 1-63 characters long, and comply with
RFC1035. Specifically, the name must be 1-63 characters long and match
the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the
first character must be a lowercase letter, and all following
characters must be a dash, lowercase letter, or digit, except the last
character, which cannot be a dash.
required: true
immutable: true
- name: 'description'
type: String
description: 'An optional description of this resource.'
required: false
- name: 'sourceDiskId'
type: String
description: 'The ID value of the disk used to create this InstantSnapshot.'
output: true
- name: 'diskSizeGb'
type: Integer
description: 'Size of the snapshot, specified in GB.'
output: true
- name: 'labels'
type: KeyValueLabels
description: Labels to apply to this InstantSnapshot.
update_url: 'projects/{{project}}/zones/{{zone}}/instantSnapshots/{{name}}/setLabels'
update_verb: 'POST'
- name: 'labelFingerprint'
type: Fingerprint
description: |
The fingerprint used for optimistic locking of this resource. Used
internally during updates.
output: true
update_url: 'projects/{{project}}/zones/{{zone}}/instantSnapshots/{{name}}/setLabels'
update_verb: 'POST'