Skip to content

Commit 4c3178e

Browse files
feat: [netapp] Update NetApp v1 API with Host Groups, Block Volumes, Cache Volumes, and Backup Restore (#6994)
* feat: Update NetApp v1 API with Host Groups, Block Volumes, Cache Volumes, and Backup Restore This CL introduces several new features and enhancements to the NetApp API: - **Host Groups:** Added a new `HostGroup` resource to manage collections of hosts for Block Volume access. Includes full CRUD operations. - **Block Volumes:** Enhanced the `Volume` resource to support `ISCSI` protocol and `BlockDevice` configurations. - **Cache Volumes:** Added `CacheParameters` to the `Volume` resource to support FlexCache volumes. - **Backup Restore:** Introduced a new `RestoreBackupFiles` RPC to restore individual files from a backup. - **CMEK for Backup Vaults:** Added fields to `BackupVault` to support Customer Managed Encryption Keys (CMEK). - **Storage Pool Type:** Added a `type` field to `StoragePool` to specify support for FILE, UNIFIED, or UNIFIED_LARGE_CAPACITY volumes. - **Location Metadata:** Added `has_ontap_proxy` flag. - Updated copyright year to 2026. docs: A comment for field `backup_retention_policy` in message `.google.cloud.netapp.v1.BackupVault` is changed docs: A comment for message `KmsConfig` is changed docs: A comment for field `name` in message `.google.cloud.netapp.v1.KmsConfig` is changed docs: A comment for field `crypto_key_name` in message `.google.cloud.netapp.v1.KmsConfig` is changed docs: A comment for enum `SquashMode` is changed docs: A comment for enum value `SQUASH_MODE_UNSPECIFIED` in enum `SquashMode` is changed docs: A comment for field `anon_uid` in message `.google.cloud.netapp.v1.SimpleExportPolicyRule` is changed PiperOrigin-RevId: 856056649 Source-Link: googleapis/googleapis@94aa4f5 Source-Link: googleapis/googleapis-gen@d3ff194 Copy-Tag: eyJwIjoicGFja2FnZXMvZ29vZ2xlLWNsb3VkLW5ldGFwcC8uT3dsQm90LnlhbWwiLCJoIjoiZDNmZjE5NDIzYzZlMTMyZmJhOTEyMGE0ZjIyNjkxOWUyZDYzYTUwMiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent bc588be commit 4c3178e

29 files changed

Lines changed: 23218 additions & 12952 deletions

packages/google-cloud-netapp/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
6262
| create backup | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.create_backup.js) |
6363
| create backup policy | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.create_backup_policy.js) |
6464
| create backup vault | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.create_backup_vault.js) |
65+
| create host group | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.create_host_group.js) |
6566
| create kms config | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.create_kms_config.js) |
6667
| create quota rule | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.create_quota_rule.js) |
6768
| create replication | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.create_replication.js) |
@@ -72,6 +73,7 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
7273
| delete backup | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.delete_backup.js) |
7374
| delete backup policy | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.delete_backup_policy.js) |
7475
| delete backup vault | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.delete_backup_vault.js) |
76+
| delete host group | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.delete_host_group.js) |
7577
| delete kms config | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.delete_kms_config.js) |
7678
| delete quota rule | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.delete_quota_rule.js) |
7779
| delete replication | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.delete_replication.js) |
@@ -84,6 +86,7 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
8486
| get backup | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.get_backup.js) |
8587
| get backup policy | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.get_backup_policy.js) |
8688
| get backup vault | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.get_backup_vault.js) |
89+
| get host group | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.get_host_group.js) |
8790
| get kms config | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.get_kms_config.js) |
8891
| get quota rule | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.get_quota_rule.js) |
8992
| get replication | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.get_replication.js) |
@@ -94,12 +97,14 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
9497
| list backup policies | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_backup_policies.js) |
9598
| list backup vaults | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_backup_vaults.js) |
9699
| list backups | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_backups.js) |
100+
| list host groups | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_host_groups.js) |
97101
| list kms configs | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_kms_configs.js) |
98102
| list quota rules | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_quota_rules.js) |
99103
| list replications | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_replications.js) |
100104
| list snapshots | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_snapshots.js) |
101105
| list storage pools | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_storage_pools.js) |
102106
| list volumes | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.list_volumes.js) |
107+
| restore backup files | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.restore_backup_files.js) |
103108
| resume replication | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.resume_replication.js) |
104109
| reverse replication direction | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.reverse_replication_direction.js) |
105110
| revert volume | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.revert_volume.js) |
@@ -110,6 +115,7 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
110115
| update backup | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.update_backup.js) |
111116
| update backup policy | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.update_backup_policy.js) |
112117
| update backup vault | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.update_backup_vault.js) |
118+
| update host group | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.update_host_group.js) |
113119
| update kms config | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.update_kms_config.js) |
114120
| update quota rule | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.update_quota_rule.js) |
115121
| update replication | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-netapp/samples/generated/v1/net_app.update_replication.js) |

packages/google-cloud-netapp/protos/google/cloud/netapp/v1/active_directory.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2025 Google LLC
1+
// Copyright 2026 Google LLC
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.

packages/google-cloud-netapp/protos/google/cloud/netapp/v1/backup.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2025 Google LLC
1+
// Copyright 2026 Google LLC
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.

packages/google-cloud-netapp/protos/google/cloud/netapp/v1/backup_policy.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2025 Google LLC
1+
// Copyright 2026 Google LLC
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.

packages/google-cloud-netapp/protos/google/cloud/netapp/v1/backup_vault.proto

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2025 Google LLC
1+
// Copyright 2026 Google LLC
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -99,6 +99,24 @@ message BackupVault {
9999
CROSS_REGION = 2;
100100
}
101101

102+
// Encryption state of customer-managed encryption keys (CMEK) backups.
103+
enum EncryptionState {
104+
// Encryption state not set.
105+
ENCRYPTION_STATE_UNSPECIFIED = 0;
106+
107+
// Encryption state is pending.
108+
ENCRYPTION_STATE_PENDING = 1;
109+
110+
// Encryption is complete.
111+
ENCRYPTION_STATE_COMPLETED = 2;
112+
113+
// Encryption is in progress.
114+
ENCRYPTION_STATE_IN_PROGRESS = 3;
115+
116+
// Encryption has failed.
117+
ENCRYPTION_STATE_FAILED = 4;
118+
}
119+
102120
// Identifier. The resource name of the backup vault.
103121
// Format:
104122
// `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}`.
@@ -160,9 +178,29 @@ message BackupVault {
160178
}
161179
];
162180

163-
// Optional. Backup retention policy defining the retenton of backups.
181+
// Optional. Backup retention policy defining the retention of backups.
164182
BackupRetentionPolicy backup_retention_policy = 11
165183
[(google.api.field_behavior) = OPTIONAL];
184+
185+
// Optional. Specifies the Key Management System (KMS) configuration to be
186+
// used for backup encryption. Format:
187+
// `projects/{project}/locations/{location}/kmsConfigs/{kms_config}`
188+
string kms_config = 12 [
189+
(google.api.field_behavior) = OPTIONAL,
190+
(google.api.resource_reference) = {
191+
type: "netapp.googleapis.com/KmsConfig"
192+
}
193+
];
194+
195+
// Output only. Field indicating encryption state of CMEK backups.
196+
EncryptionState encryption_state = 13
197+
[(google.api.field_behavior) = OUTPUT_ONLY];
198+
199+
// Output only. The crypto key version used to encrypt the backup vault.
200+
// Format:
201+
// `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`
202+
string backups_crypto_key_version = 14
203+
[(google.api.field_behavior) = OUTPUT_ONLY];
166204
}
167205

168206
// GetBackupVaultRequest gets the state of a backupVault.

packages/google-cloud-netapp/protos/google/cloud/netapp/v1/cloud_netapp_service.proto

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2025 Google LLC
1+
// Copyright 2026 Google LLC
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -24,6 +24,7 @@ import "google/cloud/netapp/v1/active_directory.proto";
2424
import "google/cloud/netapp/v1/backup.proto";
2525
import "google/cloud/netapp/v1/backup_policy.proto";
2626
import "google/cloud/netapp/v1/backup_vault.proto";
27+
import "google/cloud/netapp/v1/host_group.proto";
2728
import "google/cloud/netapp/v1/kms.proto";
2829
import "google/cloud/netapp/v1/quota_rule.proto";
2930
import "google/cloud/netapp/v1/replication.proto";
@@ -760,6 +761,77 @@ service NetApp {
760761
metadata_type: "OperationMetadata"
761762
};
762763
}
764+
765+
// Restore files from a backup to a volume.
766+
rpc RestoreBackupFiles(RestoreBackupFilesRequest)
767+
returns (google.longrunning.Operation) {
768+
option (google.api.http) = {
769+
post: "/v1/{name=projects/*/locations/*/volumes/*}:restore"
770+
body: "*"
771+
};
772+
option (google.longrunning.operation_info) = {
773+
response_type: "RestoreBackupFilesResponse"
774+
metadata_type: "OperationMetadata"
775+
};
776+
}
777+
778+
// Returns a list of host groups in a `location`. Use `-` as location to list
779+
// host groups across all locations.
780+
rpc ListHostGroups(ListHostGroupsRequest) returns (ListHostGroupsResponse) {
781+
option (google.api.http) = {
782+
get: "/v1/{parent=projects/*/locations/*}/hostGroups"
783+
};
784+
option (google.api.method_signature) = "parent";
785+
}
786+
787+
// Returns details of the specified host group.
788+
rpc GetHostGroup(GetHostGroupRequest) returns (HostGroup) {
789+
option (google.api.http) = {
790+
get: "/v1/{name=projects/*/locations/*/hostGroups/*}"
791+
};
792+
option (google.api.method_signature) = "name";
793+
}
794+
795+
// Creates a new host group.
796+
rpc CreateHostGroup(CreateHostGroupRequest)
797+
returns (google.longrunning.Operation) {
798+
option (google.api.http) = {
799+
post: "/v1/{parent=projects/*/locations/*}/hostGroups"
800+
body: "host_group"
801+
};
802+
option (google.api.method_signature) = "parent,host_group,host_group_id";
803+
option (google.longrunning.operation_info) = {
804+
response_type: "HostGroup"
805+
metadata_type: "OperationMetadata"
806+
};
807+
}
808+
809+
// Updates an existing host group.
810+
rpc UpdateHostGroup(UpdateHostGroupRequest)
811+
returns (google.longrunning.Operation) {
812+
option (google.api.http) = {
813+
patch: "/v1/{host_group.name=projects/*/locations/*/hostGroups/*}"
814+
body: "host_group"
815+
};
816+
option (google.api.method_signature) = "host_group,update_mask";
817+
option (google.longrunning.operation_info) = {
818+
response_type: "HostGroup"
819+
metadata_type: "OperationMetadata"
820+
};
821+
}
822+
823+
// Deletes a host group.
824+
rpc DeleteHostGroup(DeleteHostGroupRequest)
825+
returns (google.longrunning.Operation) {
826+
option (google.api.http) = {
827+
delete: "/v1/{name=projects/*/locations/*/hostGroups/*}"
828+
};
829+
option (google.api.method_signature) = "name";
830+
option (google.longrunning.operation_info) = {
831+
response_type: "google.protobuf.Empty"
832+
metadata_type: "OperationMetadata"
833+
};
834+
}
763835
}
764836

765837
// Represents the metadata of the long-running operation.

packages/google-cloud-netapp/protos/google/cloud/netapp/v1/common.proto

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2025 Google LLC
1+
// Copyright 2026 Google LLC
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -77,6 +77,21 @@ enum DirectoryServiceType {
7777
ACTIVE_DIRECTORY = 1;
7878
}
7979

80+
// Type of storage pool
81+
enum StoragePoolType {
82+
// Storage pool type is not specified.
83+
STORAGE_POOL_TYPE_UNSPECIFIED = 0;
84+
85+
// Storage pool type is file.
86+
FILE = 1;
87+
88+
// Storage pool type is unified.
89+
UNIFIED = 2;
90+
91+
// Storage pool type is unified large capacity.
92+
UNIFIED_LARGE_CAPACITY = 3;
93+
}
94+
8095
// Schedule for Hybrid Replication.
8196
// New enum values may be added in future to support different frequency of
8297
// replication.
@@ -106,6 +121,21 @@ enum QosType {
106121
MANUAL = 2;
107122
}
108123

124+
// OS types for the host group
125+
enum OsType {
126+
// Unspecified OS Type
127+
OS_TYPE_UNSPECIFIED = 0;
128+
129+
// OS Type is Linux
130+
LINUX = 1;
131+
132+
// OS Type is Windows
133+
WINDOWS = 2;
134+
135+
// OS Type is VMware ESXi
136+
ESXI = 3;
137+
}
138+
109139
// Metadata for a given
110140
// [google.cloud.location.Location][google.cloud.location.Location].
111141
message LocationMetadata {
@@ -119,6 +149,9 @@ message LocationMetadata {
119149

120150
// Output only. Indicates if the location has VCP support.
121151
bool has_vcp = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
152+
153+
// Output only. Indicates if the location has ONTAP Proxy support.
154+
bool has_ontap_proxy = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
122155
}
123156

124157
// UserCommands contains the commands to be executed by the customer.

0 commit comments

Comments
 (0)