Skip to content

Commit 94aa4f5

Browse files
Google APIscopybara-github
authored andcommitted
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
1 parent e006e1c commit 94aa4f5

14 files changed

+576
-21
lines changed

google/cloud/netapp/v1/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ proto_library(
3030
"backup_vault.proto",
3131
"cloud_netapp_service.proto",
3232
"common.proto",
33+
"host_group.proto",
3334
"kms.proto",
3435
"quota_rule.proto",
3536
"replication.proto",

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.

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.

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.

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.

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.

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)