-
Notifications
You must be signed in to change notification settings - Fork 69
/
zz_volume_types.go
executable file
·578 lines (428 loc) · 37.3 KB
/
zz_volume_types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
// SPDX-FileCopyrightText: 2024 The Crossplane Authors <https://crossplane.io>
//
// SPDX-License-Identifier: Apache-2.0
// Code generated by upjet. DO NOT EDIT.
package v1beta1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
v1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
)
type DataProtectionReplicationInitParameters struct {
// The endpoint type, default value is dst for destination.
EndpointType *string `json:"endpointType,omitempty" tf:"endpoint_type,omitempty"`
// Location of the primary volume. Changing this forces a new resource to be created.
RemoteVolumeLocation *string `json:"remoteVolumeLocation,omitempty" tf:"remote_volume_location,omitempty"`
// Resource ID of the primary volume.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.Volume
// +crossplane:generate:reference:extractor=github.com/upbound/provider-azure/apis/rconfig.ExtractResourceID()
RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty" tf:"remote_volume_resource_id,omitempty"`
// Reference to a Volume in netapp to populate remoteVolumeResourceId.
// +kubebuilder:validation:Optional
RemoteVolumeResourceIDRef *v1.Reference `json:"remoteVolumeResourceIdRef,omitempty" tf:"-"`
// Selector for a Volume in netapp to populate remoteVolumeResourceId.
// +kubebuilder:validation:Optional
RemoteVolumeResourceIDSelector *v1.Selector `json:"remoteVolumeResourceIdSelector,omitempty" tf:"-"`
// Replication frequency, supported values are '10minutes', 'hourly', 'daily', values are case sensitive.
ReplicationFrequency *string `json:"replicationFrequency,omitempty" tf:"replication_frequency,omitempty"`
}
type DataProtectionReplicationObservation struct {
// The endpoint type, default value is dst for destination.
EndpointType *string `json:"endpointType,omitempty" tf:"endpoint_type,omitempty"`
// Location of the primary volume. Changing this forces a new resource to be created.
RemoteVolumeLocation *string `json:"remoteVolumeLocation,omitempty" tf:"remote_volume_location,omitempty"`
// Resource ID of the primary volume.
RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty" tf:"remote_volume_resource_id,omitempty"`
// Replication frequency, supported values are '10minutes', 'hourly', 'daily', values are case sensitive.
ReplicationFrequency *string `json:"replicationFrequency,omitempty" tf:"replication_frequency,omitempty"`
}
type DataProtectionReplicationParameters struct {
// The endpoint type, default value is dst for destination.
// +kubebuilder:validation:Optional
EndpointType *string `json:"endpointType,omitempty" tf:"endpoint_type,omitempty"`
// Location of the primary volume. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
RemoteVolumeLocation *string `json:"remoteVolumeLocation" tf:"remote_volume_location,omitempty"`
// Resource ID of the primary volume.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.Volume
// +crossplane:generate:reference:extractor=github.com/upbound/provider-azure/apis/rconfig.ExtractResourceID()
// +kubebuilder:validation:Optional
RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty" tf:"remote_volume_resource_id,omitempty"`
// Reference to a Volume in netapp to populate remoteVolumeResourceId.
// +kubebuilder:validation:Optional
RemoteVolumeResourceIDRef *v1.Reference `json:"remoteVolumeResourceIdRef,omitempty" tf:"-"`
// Selector for a Volume in netapp to populate remoteVolumeResourceId.
// +kubebuilder:validation:Optional
RemoteVolumeResourceIDSelector *v1.Selector `json:"remoteVolumeResourceIdSelector,omitempty" tf:"-"`
// Replication frequency, supported values are '10minutes', 'hourly', 'daily', values are case sensitive.
// +kubebuilder:validation:Optional
ReplicationFrequency *string `json:"replicationFrequency" tf:"replication_frequency,omitempty"`
}
type DataProtectionSnapshotPolicyInitParameters struct {
// Resource ID of the snapshot policy to apply to the volume.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.SnapshotPolicy
// +crossplane:generate:reference:extractor=github.com/upbound/provider-azure/apis/rconfig.ExtractResourceID()
SnapshotPolicyID *string `json:"snapshotPolicyId,omitempty" tf:"snapshot_policy_id,omitempty"`
// Reference to a SnapshotPolicy in netapp to populate snapshotPolicyId.
// +kubebuilder:validation:Optional
SnapshotPolicyIDRef *v1.Reference `json:"snapshotPolicyIdRef,omitempty" tf:"-"`
// Selector for a SnapshotPolicy in netapp to populate snapshotPolicyId.
// +kubebuilder:validation:Optional
SnapshotPolicyIDSelector *v1.Selector `json:"snapshotPolicyIdSelector,omitempty" tf:"-"`
}
type DataProtectionSnapshotPolicyObservation struct {
// Resource ID of the snapshot policy to apply to the volume.
SnapshotPolicyID *string `json:"snapshotPolicyId,omitempty" tf:"snapshot_policy_id,omitempty"`
}
type DataProtectionSnapshotPolicyParameters struct {
// Resource ID of the snapshot policy to apply to the volume.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.SnapshotPolicy
// +crossplane:generate:reference:extractor=github.com/upbound/provider-azure/apis/rconfig.ExtractResourceID()
// +kubebuilder:validation:Optional
SnapshotPolicyID *string `json:"snapshotPolicyId,omitempty" tf:"snapshot_policy_id,omitempty"`
// Reference to a SnapshotPolicy in netapp to populate snapshotPolicyId.
// +kubebuilder:validation:Optional
SnapshotPolicyIDRef *v1.Reference `json:"snapshotPolicyIdRef,omitempty" tf:"-"`
// Selector for a SnapshotPolicy in netapp to populate snapshotPolicyId.
// +kubebuilder:validation:Optional
SnapshotPolicyIDSelector *v1.Selector `json:"snapshotPolicyIdSelector,omitempty" tf:"-"`
}
type ExportPolicyRuleInitParameters struct {
// A list of allowed clients IPv4 addresses.
// +listType=set
AllowedClients []*string `json:"allowedClients,omitempty" tf:"allowed_clients,omitempty"`
// A list of allowed protocols. Valid values include CIFS, NFSv3, or NFSv4.1. Only one value is supported at this time. This replaces the previous arguments: cifs_enabled, nfsv3_enabled and nfsv4_enabled.
ProtocolsEnabled []*string `json:"protocolsEnabled,omitempty" tf:"protocols_enabled,omitempty"`
// Is root access permitted to this volume?
RootAccessEnabled *bool `json:"rootAccessEnabled,omitempty" tf:"root_access_enabled,omitempty"`
// The index number of the rule.
RuleIndex *float64 `json:"ruleIndex,omitempty" tf:"rule_index,omitempty"`
// Is the file system on unix read only?
UnixReadOnly *bool `json:"unixReadOnly,omitempty" tf:"unix_read_only,omitempty"`
// Is the file system on unix read and write?
UnixReadWrite *bool `json:"unixReadWrite,omitempty" tf:"unix_read_write,omitempty"`
}
type ExportPolicyRuleObservation struct {
// A list of allowed clients IPv4 addresses.
// +listType=set
AllowedClients []*string `json:"allowedClients,omitempty" tf:"allowed_clients,omitempty"`
// A list of allowed protocols. Valid values include CIFS, NFSv3, or NFSv4.1. Only one value is supported at this time. This replaces the previous arguments: cifs_enabled, nfsv3_enabled and nfsv4_enabled.
ProtocolsEnabled []*string `json:"protocolsEnabled,omitempty" tf:"protocols_enabled,omitempty"`
// Is root access permitted to this volume?
RootAccessEnabled *bool `json:"rootAccessEnabled,omitempty" tf:"root_access_enabled,omitempty"`
// The index number of the rule.
RuleIndex *float64 `json:"ruleIndex,omitempty" tf:"rule_index,omitempty"`
// Is the file system on unix read only?
UnixReadOnly *bool `json:"unixReadOnly,omitempty" tf:"unix_read_only,omitempty"`
// Is the file system on unix read and write?
UnixReadWrite *bool `json:"unixReadWrite,omitempty" tf:"unix_read_write,omitempty"`
}
type ExportPolicyRuleParameters struct {
// A list of allowed clients IPv4 addresses.
// +kubebuilder:validation:Optional
// +listType=set
AllowedClients []*string `json:"allowedClients" tf:"allowed_clients,omitempty"`
// A list of allowed protocols. Valid values include CIFS, NFSv3, or NFSv4.1. Only one value is supported at this time. This replaces the previous arguments: cifs_enabled, nfsv3_enabled and nfsv4_enabled.
// +kubebuilder:validation:Optional
ProtocolsEnabled []*string `json:"protocolsEnabled,omitempty" tf:"protocols_enabled,omitempty"`
// Is root access permitted to this volume?
// +kubebuilder:validation:Optional
RootAccessEnabled *bool `json:"rootAccessEnabled,omitempty" tf:"root_access_enabled,omitempty"`
// The index number of the rule.
// +kubebuilder:validation:Optional
RuleIndex *float64 `json:"ruleIndex" tf:"rule_index,omitempty"`
// Is the file system on unix read only?
// +kubebuilder:validation:Optional
UnixReadOnly *bool `json:"unixReadOnly,omitempty" tf:"unix_read_only,omitempty"`
// Is the file system on unix read and write?
// +kubebuilder:validation:Optional
UnixReadWrite *bool `json:"unixReadWrite,omitempty" tf:"unix_read_write,omitempty"`
}
type VolumeInitParameters struct {
// Is the NetApp Volume enabled for Azure VMware Solution (AVS) datastore purpose. Defaults to false. Changing this forces a new resource to be created.
AzureVMwareDataStoreEnabled *bool `json:"azureVmwareDataStoreEnabled,omitempty" tf:"azure_vmware_data_store_enabled,omitempty"`
// Creates volume from snapshot. Following properties must be the same as the original volume where the snapshot was taken from: protocols, subnet_id, location, service_level, resource_group_name, account_name and pool_name. Changing this forces a new resource to be created.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.Snapshot
// +crossplane:generate:reference:extractor=github.com/upbound/provider-azure/apis/rconfig.ExtractResourceID()
CreateFromSnapshotResourceID *string `json:"createFromSnapshotResourceId,omitempty" tf:"create_from_snapshot_resource_id,omitempty"`
// Reference to a Snapshot in netapp to populate createFromSnapshotResourceId.
// +kubebuilder:validation:Optional
CreateFromSnapshotResourceIDRef *v1.Reference `json:"createFromSnapshotResourceIdRef,omitempty" tf:"-"`
// Selector for a Snapshot in netapp to populate createFromSnapshotResourceId.
// +kubebuilder:validation:Optional
CreateFromSnapshotResourceIDSelector *v1.Selector `json:"createFromSnapshotResourceIdSelector,omitempty" tf:"-"`
// A data_protection_replication block as defined below. Changing this forces a new resource to be created.
DataProtectionReplication []DataProtectionReplicationInitParameters `json:"dataProtectionReplication,omitempty" tf:"data_protection_replication,omitempty"`
// A data_protection_snapshot_policy block as defined below.
DataProtectionSnapshotPolicy []DataProtectionSnapshotPolicyInitParameters `json:"dataProtectionSnapshotPolicy,omitempty" tf:"data_protection_snapshot_policy,omitempty"`
// The encryption key source, it can be Microsoft.NetApp for platform managed keys or Microsoft.KeyVault for customer-managed keys. This is required with key_vault_private_endpoint_id. Changing this forces a new resource to be created.
EncryptionKeySource *string `json:"encryptionKeySource,omitempty" tf:"encryption_key_source,omitempty"`
// One or more export_policy_rule block defined below.
ExportPolicyRule []ExportPolicyRuleInitParameters `json:"exportPolicyRule,omitempty" tf:"export_policy_rule,omitempty"`
// The Private Endpoint ID for Key Vault, which is required when using customer-managed keys. This is required with encryption_key_source. Changing this forces a new resource to be created.
KeyVaultPrivateEndpointID *string `json:"keyVaultPrivateEndpointId,omitempty" tf:"key_vault_private_endpoint_id,omitempty"`
// Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
Location *string `json:"location,omitempty" tf:"location,omitempty"`
// Indicates which network feature to use, accepted values are Basic or Standard, it defaults to Basic if not defined. This is a feature in public preview and for more information about it and how to register, please refer to Configure network features for an Azure NetApp Files volume.
NetworkFeatures *string `json:"networkFeatures,omitempty" tf:"network_features,omitempty"`
// The target volume protocol expressed as a list. Supported single value include CIFS, NFSv3, or NFSv4.1. If argument is not defined it will default to NFSv3. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to Create a dual-protocol volume for Azure NetApp Files document.
// +listType=set
Protocols []*string `json:"protocols,omitempty" tf:"protocols,omitempty"`
// Limits enumeration of files and folders (that is, listing the contents) in SMB only to users with allowed access on the share. For instance, if a user doesn't have access to read a file or folder in a share with access-based enumeration enabled, then the file or folder doesn't show up in directory listings. Defaults to false. For more information, please refer to Understand NAS share permissions in Azure NetApp Files
SMBAccessBasedEnumerationEnabled *bool `json:"smbAccessBasedEnumerationEnabled,omitempty" tf:"smb_access_based_enumeration_enabled,omitempty"`
// Limits clients from browsing for an SMB share by hiding the share from view in Windows Explorer or when listing shares in "net view." Only end users that know the absolute paths to the share are able to find the share. Defaults to false. For more information, please refer to Understand NAS share permissions in Azure NetApp Files
SMBNonBrowsableEnabled *bool `json:"smbNonBrowsableEnabled,omitempty" tf:"smb_non_browsable_enabled,omitempty"`
// Volume security style, accepted values are unix or ntfs. If not provided, single-protocol volume is created defaulting to unix if it is NFSv3 or NFSv4.1 volume, if CIFS, it will default to ntfs. In a dual-protocol volume, if not provided, its value will be ntfs. Changing this forces a new resource to be created.
SecurityStyle *string `json:"securityStyle,omitempty" tf:"security_style,omitempty"`
// The target performance of the file system. Valid values include Premium, Standard, or Ultra. Changing this forces a new resource to be created.
ServiceLevel *string `json:"serviceLevel,omitempty" tf:"service_level,omitempty"`
// Specifies whether the .snapshot (NFS clients) or ~snapshot (SMB clients) path of a volume is visible, default value is true.
SnapshotDirectoryVisible *bool `json:"snapshotDirectoryVisible,omitempty" tf:"snapshot_directory_visible,omitempty"`
// The maximum Storage Quota allowed for a file system in Gigabytes.
StorageQuotaInGb *float64 `json:"storageQuotaInGb,omitempty" tf:"storage_quota_in_gb,omitempty"`
// The ID of the Subnet the NetApp Volume resides in, which must have the Microsoft.NetApp/volumes delegation. Changing this forces a new resource to be created.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/network/v1beta1.Subnet
// +crossplane:generate:reference:extractor=github.com/crossplane/upjet/pkg/resource.ExtractResourceID()
SubnetID *string `json:"subnetId,omitempty" tf:"subnet_id,omitempty"`
// Reference to a Subnet in network to populate subnetId.
// +kubebuilder:validation:Optional
SubnetIDRef *v1.Reference `json:"subnetIdRef,omitempty" tf:"-"`
// Selector for a Subnet in network to populate subnetId.
// +kubebuilder:validation:Optional
SubnetIDSelector *v1.Selector `json:"subnetIdSelector,omitempty" tf:"-"`
// A mapping of tags to assign to the resource.
// +mapType=granular
Tags map[string]*string `json:"tags,omitempty" tf:"tags,omitempty"`
// Throughput of this volume in Mibps.
ThroughputInMibps *float64 `json:"throughputInMibps,omitempty" tf:"throughput_in_mibps,omitempty"`
// A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created.
VolumePath *string `json:"volumePath,omitempty" tf:"volume_path,omitempty"`
// Specifies the Availability Zone in which the Volume should be located. Possible values are 1, 2 and 3. Changing this forces a new resource to be created. This feature is currently in preview, for more information on how to enable it, please refer to Manage availability zone volume placement for Azure NetApp Files.
Zone *string `json:"zone,omitempty" tf:"zone,omitempty"`
}
type VolumeObservation struct {
// The name of the NetApp account in which the NetApp Pool should be created. Changing this forces a new resource to be created.
AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"`
// Is the NetApp Volume enabled for Azure VMware Solution (AVS) datastore purpose. Defaults to false. Changing this forces a new resource to be created.
AzureVMwareDataStoreEnabled *bool `json:"azureVmwareDataStoreEnabled,omitempty" tf:"azure_vmware_data_store_enabled,omitempty"`
// Creates volume from snapshot. Following properties must be the same as the original volume where the snapshot was taken from: protocols, subnet_id, location, service_level, resource_group_name, account_name and pool_name. Changing this forces a new resource to be created.
CreateFromSnapshotResourceID *string `json:"createFromSnapshotResourceId,omitempty" tf:"create_from_snapshot_resource_id,omitempty"`
// A data_protection_replication block as defined below. Changing this forces a new resource to be created.
DataProtectionReplication []DataProtectionReplicationObservation `json:"dataProtectionReplication,omitempty" tf:"data_protection_replication,omitempty"`
// A data_protection_snapshot_policy block as defined below.
DataProtectionSnapshotPolicy []DataProtectionSnapshotPolicyObservation `json:"dataProtectionSnapshotPolicy,omitempty" tf:"data_protection_snapshot_policy,omitempty"`
// The encryption key source, it can be Microsoft.NetApp for platform managed keys or Microsoft.KeyVault for customer-managed keys. This is required with key_vault_private_endpoint_id. Changing this forces a new resource to be created.
EncryptionKeySource *string `json:"encryptionKeySource,omitempty" tf:"encryption_key_source,omitempty"`
// One or more export_policy_rule block defined below.
ExportPolicyRule []ExportPolicyRuleObservation `json:"exportPolicyRule,omitempty" tf:"export_policy_rule,omitempty"`
// The ID of the NetApp Volume.
ID *string `json:"id,omitempty" tf:"id,omitempty"`
// The Private Endpoint ID for Key Vault, which is required when using customer-managed keys. This is required with encryption_key_source. Changing this forces a new resource to be created.
KeyVaultPrivateEndpointID *string `json:"keyVaultPrivateEndpointId,omitempty" tf:"key_vault_private_endpoint_id,omitempty"`
// Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
Location *string `json:"location,omitempty" tf:"location,omitempty"`
// A list of IPv4 Addresses which should be used to mount the volume.
MountIPAddresses []*string `json:"mountIpAddresses,omitempty" tf:"mount_ip_addresses,omitempty"`
// Indicates which network feature to use, accepted values are Basic or Standard, it defaults to Basic if not defined. This is a feature in public preview and for more information about it and how to register, please refer to Configure network features for an Azure NetApp Files volume.
NetworkFeatures *string `json:"networkFeatures,omitempty" tf:"network_features,omitempty"`
// The name of the NetApp pool in which the NetApp Volume should be created. Changing this forces a new resource to be created.
PoolName *string `json:"poolName,omitempty" tf:"pool_name,omitempty"`
// The target volume protocol expressed as a list. Supported single value include CIFS, NFSv3, or NFSv4.1. If argument is not defined it will default to NFSv3. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to Create a dual-protocol volume for Azure NetApp Files document.
// +listType=set
Protocols []*string `json:"protocols,omitempty" tf:"protocols,omitempty"`
// The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created.
ResourceGroupName *string `json:"resourceGroupName,omitempty" tf:"resource_group_name,omitempty"`
// Limits enumeration of files and folders (that is, listing the contents) in SMB only to users with allowed access on the share. For instance, if a user doesn't have access to read a file or folder in a share with access-based enumeration enabled, then the file or folder doesn't show up in directory listings. Defaults to false. For more information, please refer to Understand NAS share permissions in Azure NetApp Files
SMBAccessBasedEnumerationEnabled *bool `json:"smbAccessBasedEnumerationEnabled,omitempty" tf:"smb_access_based_enumeration_enabled,omitempty"`
// Limits clients from browsing for an SMB share by hiding the share from view in Windows Explorer or when listing shares in "net view." Only end users that know the absolute paths to the share are able to find the share. Defaults to false. For more information, please refer to Understand NAS share permissions in Azure NetApp Files
SMBNonBrowsableEnabled *bool `json:"smbNonBrowsableEnabled,omitempty" tf:"smb_non_browsable_enabled,omitempty"`
// Volume security style, accepted values are unix or ntfs. If not provided, single-protocol volume is created defaulting to unix if it is NFSv3 or NFSv4.1 volume, if CIFS, it will default to ntfs. In a dual-protocol volume, if not provided, its value will be ntfs. Changing this forces a new resource to be created.
SecurityStyle *string `json:"securityStyle,omitempty" tf:"security_style,omitempty"`
// The target performance of the file system. Valid values include Premium, Standard, or Ultra. Changing this forces a new resource to be created.
ServiceLevel *string `json:"serviceLevel,omitempty" tf:"service_level,omitempty"`
// Specifies whether the .snapshot (NFS clients) or ~snapshot (SMB clients) path of a volume is visible, default value is true.
SnapshotDirectoryVisible *bool `json:"snapshotDirectoryVisible,omitempty" tf:"snapshot_directory_visible,omitempty"`
// The maximum Storage Quota allowed for a file system in Gigabytes.
StorageQuotaInGb *float64 `json:"storageQuotaInGb,omitempty" tf:"storage_quota_in_gb,omitempty"`
// The ID of the Subnet the NetApp Volume resides in, which must have the Microsoft.NetApp/volumes delegation. Changing this forces a new resource to be created.
SubnetID *string `json:"subnetId,omitempty" tf:"subnet_id,omitempty"`
// A mapping of tags to assign to the resource.
// +mapType=granular
Tags map[string]*string `json:"tags,omitempty" tf:"tags,omitempty"`
// Throughput of this volume in Mibps.
ThroughputInMibps *float64 `json:"throughputInMibps,omitempty" tf:"throughput_in_mibps,omitempty"`
// A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created.
VolumePath *string `json:"volumePath,omitempty" tf:"volume_path,omitempty"`
// Specifies the Availability Zone in which the Volume should be located. Possible values are 1, 2 and 3. Changing this forces a new resource to be created. This feature is currently in preview, for more information on how to enable it, please refer to Manage availability zone volume placement for Azure NetApp Files.
Zone *string `json:"zone,omitempty" tf:"zone,omitempty"`
}
type VolumeParameters struct {
// The name of the NetApp account in which the NetApp Pool should be created. Changing this forces a new resource to be created.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.Account
// +kubebuilder:validation:Optional
AccountName *string `json:"accountName,omitempty" tf:"account_name,omitempty"`
// Reference to a Account in netapp to populate accountName.
// +kubebuilder:validation:Optional
AccountNameRef *v1.Reference `json:"accountNameRef,omitempty" tf:"-"`
// Selector for a Account in netapp to populate accountName.
// +kubebuilder:validation:Optional
AccountNameSelector *v1.Selector `json:"accountNameSelector,omitempty" tf:"-"`
// Is the NetApp Volume enabled for Azure VMware Solution (AVS) datastore purpose. Defaults to false. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
AzureVMwareDataStoreEnabled *bool `json:"azureVmwareDataStoreEnabled,omitempty" tf:"azure_vmware_data_store_enabled,omitempty"`
// Creates volume from snapshot. Following properties must be the same as the original volume where the snapshot was taken from: protocols, subnet_id, location, service_level, resource_group_name, account_name and pool_name. Changing this forces a new resource to be created.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.Snapshot
// +crossplane:generate:reference:extractor=github.com/upbound/provider-azure/apis/rconfig.ExtractResourceID()
// +kubebuilder:validation:Optional
CreateFromSnapshotResourceID *string `json:"createFromSnapshotResourceId,omitempty" tf:"create_from_snapshot_resource_id,omitempty"`
// Reference to a Snapshot in netapp to populate createFromSnapshotResourceId.
// +kubebuilder:validation:Optional
CreateFromSnapshotResourceIDRef *v1.Reference `json:"createFromSnapshotResourceIdRef,omitempty" tf:"-"`
// Selector for a Snapshot in netapp to populate createFromSnapshotResourceId.
// +kubebuilder:validation:Optional
CreateFromSnapshotResourceIDSelector *v1.Selector `json:"createFromSnapshotResourceIdSelector,omitempty" tf:"-"`
// A data_protection_replication block as defined below. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
DataProtectionReplication []DataProtectionReplicationParameters `json:"dataProtectionReplication,omitempty" tf:"data_protection_replication,omitempty"`
// A data_protection_snapshot_policy block as defined below.
// +kubebuilder:validation:Optional
DataProtectionSnapshotPolicy []DataProtectionSnapshotPolicyParameters `json:"dataProtectionSnapshotPolicy,omitempty" tf:"data_protection_snapshot_policy,omitempty"`
// The encryption key source, it can be Microsoft.NetApp for platform managed keys or Microsoft.KeyVault for customer-managed keys. This is required with key_vault_private_endpoint_id. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
EncryptionKeySource *string `json:"encryptionKeySource,omitempty" tf:"encryption_key_source,omitempty"`
// One or more export_policy_rule block defined below.
// +kubebuilder:validation:Optional
ExportPolicyRule []ExportPolicyRuleParameters `json:"exportPolicyRule,omitempty" tf:"export_policy_rule,omitempty"`
// The Private Endpoint ID for Key Vault, which is required when using customer-managed keys. This is required with encryption_key_source. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
KeyVaultPrivateEndpointID *string `json:"keyVaultPrivateEndpointId,omitempty" tf:"key_vault_private_endpoint_id,omitempty"`
// Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
Location *string `json:"location,omitempty" tf:"location,omitempty"`
// Indicates which network feature to use, accepted values are Basic or Standard, it defaults to Basic if not defined. This is a feature in public preview and for more information about it and how to register, please refer to Configure network features for an Azure NetApp Files volume.
// +kubebuilder:validation:Optional
NetworkFeatures *string `json:"networkFeatures,omitempty" tf:"network_features,omitempty"`
// The name of the NetApp pool in which the NetApp Volume should be created. Changing this forces a new resource to be created.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/netapp/v1beta1.Pool
// +kubebuilder:validation:Optional
PoolName *string `json:"poolName,omitempty" tf:"pool_name,omitempty"`
// Reference to a Pool in netapp to populate poolName.
// +kubebuilder:validation:Optional
PoolNameRef *v1.Reference `json:"poolNameRef,omitempty" tf:"-"`
// Selector for a Pool in netapp to populate poolName.
// +kubebuilder:validation:Optional
PoolNameSelector *v1.Selector `json:"poolNameSelector,omitempty" tf:"-"`
// The target volume protocol expressed as a list. Supported single value include CIFS, NFSv3, or NFSv4.1. If argument is not defined it will default to NFSv3. Changing this forces a new resource to be created and data will be lost. Dual protocol scenario is supported for CIFS and NFSv3, for more information, please refer to Create a dual-protocol volume for Azure NetApp Files document.
// +kubebuilder:validation:Optional
// +listType=set
Protocols []*string `json:"protocols,omitempty" tf:"protocols,omitempty"`
// The name of the resource group where the NetApp Volume should be created. Changing this forces a new resource to be created.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/azure/v1beta1.ResourceGroup
// +kubebuilder:validation:Optional
ResourceGroupName *string `json:"resourceGroupName,omitempty" tf:"resource_group_name,omitempty"`
// Reference to a ResourceGroup in azure to populate resourceGroupName.
// +kubebuilder:validation:Optional
ResourceGroupNameRef *v1.Reference `json:"resourceGroupNameRef,omitempty" tf:"-"`
// Selector for a ResourceGroup in azure to populate resourceGroupName.
// +kubebuilder:validation:Optional
ResourceGroupNameSelector *v1.Selector `json:"resourceGroupNameSelector,omitempty" tf:"-"`
// Limits enumeration of files and folders (that is, listing the contents) in SMB only to users with allowed access on the share. For instance, if a user doesn't have access to read a file or folder in a share with access-based enumeration enabled, then the file or folder doesn't show up in directory listings. Defaults to false. For more information, please refer to Understand NAS share permissions in Azure NetApp Files
// +kubebuilder:validation:Optional
SMBAccessBasedEnumerationEnabled *bool `json:"smbAccessBasedEnumerationEnabled,omitempty" tf:"smb_access_based_enumeration_enabled,omitempty"`
// Limits clients from browsing for an SMB share by hiding the share from view in Windows Explorer or when listing shares in "net view." Only end users that know the absolute paths to the share are able to find the share. Defaults to false. For more information, please refer to Understand NAS share permissions in Azure NetApp Files
// +kubebuilder:validation:Optional
SMBNonBrowsableEnabled *bool `json:"smbNonBrowsableEnabled,omitempty" tf:"smb_non_browsable_enabled,omitempty"`
// Volume security style, accepted values are unix or ntfs. If not provided, single-protocol volume is created defaulting to unix if it is NFSv3 or NFSv4.1 volume, if CIFS, it will default to ntfs. In a dual-protocol volume, if not provided, its value will be ntfs. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
SecurityStyle *string `json:"securityStyle,omitempty" tf:"security_style,omitempty"`
// The target performance of the file system. Valid values include Premium, Standard, or Ultra. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
ServiceLevel *string `json:"serviceLevel,omitempty" tf:"service_level,omitempty"`
// Specifies whether the .snapshot (NFS clients) or ~snapshot (SMB clients) path of a volume is visible, default value is true.
// +kubebuilder:validation:Optional
SnapshotDirectoryVisible *bool `json:"snapshotDirectoryVisible,omitempty" tf:"snapshot_directory_visible,omitempty"`
// The maximum Storage Quota allowed for a file system in Gigabytes.
// +kubebuilder:validation:Optional
StorageQuotaInGb *float64 `json:"storageQuotaInGb,omitempty" tf:"storage_quota_in_gb,omitempty"`
// The ID of the Subnet the NetApp Volume resides in, which must have the Microsoft.NetApp/volumes delegation. Changing this forces a new resource to be created.
// +crossplane:generate:reference:type=github.com/upbound/provider-azure/apis/network/v1beta1.Subnet
// +crossplane:generate:reference:extractor=github.com/crossplane/upjet/pkg/resource.ExtractResourceID()
// +kubebuilder:validation:Optional
SubnetID *string `json:"subnetId,omitempty" tf:"subnet_id,omitempty"`
// Reference to a Subnet in network to populate subnetId.
// +kubebuilder:validation:Optional
SubnetIDRef *v1.Reference `json:"subnetIdRef,omitempty" tf:"-"`
// Selector for a Subnet in network to populate subnetId.
// +kubebuilder:validation:Optional
SubnetIDSelector *v1.Selector `json:"subnetIdSelector,omitempty" tf:"-"`
// A mapping of tags to assign to the resource.
// +kubebuilder:validation:Optional
// +mapType=granular
Tags map[string]*string `json:"tags,omitempty" tf:"tags,omitempty"`
// Throughput of this volume in Mibps.
// +kubebuilder:validation:Optional
ThroughputInMibps *float64 `json:"throughputInMibps,omitempty" tf:"throughput_in_mibps,omitempty"`
// A unique file path for the volume. Used when creating mount targets. Changing this forces a new resource to be created.
// +kubebuilder:validation:Optional
VolumePath *string `json:"volumePath,omitempty" tf:"volume_path,omitempty"`
// Specifies the Availability Zone in which the Volume should be located. Possible values are 1, 2 and 3. Changing this forces a new resource to be created. This feature is currently in preview, for more information on how to enable it, please refer to Manage availability zone volume placement for Azure NetApp Files.
// +kubebuilder:validation:Optional
Zone *string `json:"zone,omitempty" tf:"zone,omitempty"`
}
// VolumeSpec defines the desired state of Volume
type VolumeSpec struct {
v1.ResourceSpec `json:",inline"`
ForProvider VolumeParameters `json:"forProvider"`
// THIS IS A BETA FIELD. It will be honored
// unless the Management Policies feature flag is disabled.
// InitProvider holds the same fields as ForProvider, with the exception
// of Identifier and other resource reference fields. The fields that are
// in InitProvider are merged into ForProvider when the resource is created.
// The same fields are also added to the terraform ignore_changes hook, to
// avoid updating them after creation. This is useful for fields that are
// required on creation, but we do not desire to update them after creation,
// for example because of an external controller is managing them, like an
// autoscaler.
InitProvider VolumeInitParameters `json:"initProvider,omitempty"`
}
// VolumeStatus defines the observed state of Volume.
type VolumeStatus struct {
v1.ResourceStatus `json:",inline"`
AtProvider VolumeObservation `json:"atProvider,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:storageversion
// Volume is the Schema for the Volumes API. Manages a NetApp Volume.
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,azure}
type Volume struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.location) || (has(self.initProvider) && has(self.initProvider.location))",message="spec.forProvider.location is a required parameter"
// +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.serviceLevel) || (has(self.initProvider) && has(self.initProvider.serviceLevel))",message="spec.forProvider.serviceLevel is a required parameter"
// +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.storageQuotaInGb) || (has(self.initProvider) && has(self.initProvider.storageQuotaInGb))",message="spec.forProvider.storageQuotaInGb is a required parameter"
// +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.volumePath) || (has(self.initProvider) && has(self.initProvider.volumePath))",message="spec.forProvider.volumePath is a required parameter"
Spec VolumeSpec `json:"spec"`
Status VolumeStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// VolumeList contains a list of Volumes
type VolumeList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Volume `json:"items"`
}
// Repository type metadata.
var (
Volume_Kind = "Volume"
Volume_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Volume_Kind}.String()
Volume_KindAPIVersion = Volume_Kind + "." + CRDGroupVersion.String()
Volume_GroupVersionKind = CRDGroupVersion.WithKind(Volume_Kind)
)
func init() {
SchemeBuilder.Register(&Volume{}, &VolumeList{})
}