1package netapp
2
3// Copyright (c) Microsoft and contributors.  All rights reserved.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13//
14// See the License for the specific language governing permissions and
15// limitations under the License.
16//
17// Code generated by Microsoft (R) AutoRest Code Generator.
18// Changes may cause incorrect behavior and will be lost if the code is regenerated.
19
20import (
21	"encoding/json"
22	"github.com/Azure/go-autorest/autorest"
23	"github.com/Azure/go-autorest/autorest/azure"
24	"github.com/Azure/go-autorest/autorest/date"
25)
26
27// The package's fully qualified name.
28const fqdn = "github.com/Azure/azure-sdk-for-go/services/netapp/mgmt/2020-08-01/netapp"
29
30// Account netApp account resource
31type Account struct {
32	autorest.Response `json:"-"`
33	// Location - Resource location
34	Location *string `json:"location,omitempty"`
35	// ID - READ-ONLY; Resource Id
36	ID *string `json:"id,omitempty"`
37	// Name - READ-ONLY; Resource name
38	Name *string `json:"name,omitempty"`
39	// Type - READ-ONLY; Resource type
40	Type *string `json:"type,omitempty"`
41	// Tags - Resource tags
42	Tags map[string]*string `json:"tags"`
43	// AccountProperties - NetApp Account properties
44	*AccountProperties `json:"properties,omitempty"`
45}
46
47// MarshalJSON is the custom marshaler for Account.
48func (a Account) MarshalJSON() ([]byte, error) {
49	objectMap := make(map[string]interface{})
50	if a.Location != nil {
51		objectMap["location"] = a.Location
52	}
53	if a.Tags != nil {
54		objectMap["tags"] = a.Tags
55	}
56	if a.AccountProperties != nil {
57		objectMap["properties"] = a.AccountProperties
58	}
59	return json.Marshal(objectMap)
60}
61
62// UnmarshalJSON is the custom unmarshaler for Account struct.
63func (a *Account) UnmarshalJSON(body []byte) error {
64	var m map[string]*json.RawMessage
65	err := json.Unmarshal(body, &m)
66	if err != nil {
67		return err
68	}
69	for k, v := range m {
70		switch k {
71		case "location":
72			if v != nil {
73				var location string
74				err = json.Unmarshal(*v, &location)
75				if err != nil {
76					return err
77				}
78				a.Location = &location
79			}
80		case "id":
81			if v != nil {
82				var ID string
83				err = json.Unmarshal(*v, &ID)
84				if err != nil {
85					return err
86				}
87				a.ID = &ID
88			}
89		case "name":
90			if v != nil {
91				var name string
92				err = json.Unmarshal(*v, &name)
93				if err != nil {
94					return err
95				}
96				a.Name = &name
97			}
98		case "type":
99			if v != nil {
100				var typeVar string
101				err = json.Unmarshal(*v, &typeVar)
102				if err != nil {
103					return err
104				}
105				a.Type = &typeVar
106			}
107		case "tags":
108			if v != nil {
109				var tags map[string]*string
110				err = json.Unmarshal(*v, &tags)
111				if err != nil {
112					return err
113				}
114				a.Tags = tags
115			}
116		case "properties":
117			if v != nil {
118				var accountProperties AccountProperties
119				err = json.Unmarshal(*v, &accountProperties)
120				if err != nil {
121					return err
122				}
123				a.AccountProperties = &accountProperties
124			}
125		}
126	}
127
128	return nil
129}
130
131// AccountBackupsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
132// operation.
133type AccountBackupsDeleteFuture struct {
134	azure.FutureAPI
135	// Result returns the result of the asynchronous operation.
136	// If the operation has not completed it will return an error.
137	Result func(AccountBackupsClient) (autorest.Response, error)
138}
139
140// AccountList list of NetApp account resources
141type AccountList struct {
142	autorest.Response `json:"-"`
143	// Value - Multiple NetApp accounts
144	Value *[]Account `json:"value,omitempty"`
145}
146
147// AccountPatch netApp account patch resource
148type AccountPatch struct {
149	// Location - Resource location
150	Location *string `json:"location,omitempty"`
151	// ID - READ-ONLY; Resource Id
152	ID *string `json:"id,omitempty"`
153	// Name - READ-ONLY; Resource name
154	Name *string `json:"name,omitempty"`
155	// Type - READ-ONLY; Resource type
156	Type *string `json:"type,omitempty"`
157	// Tags - Resource tags
158	Tags map[string]*string `json:"tags"`
159	// AccountProperties - NetApp Account properties
160	*AccountProperties `json:"properties,omitempty"`
161}
162
163// MarshalJSON is the custom marshaler for AccountPatch.
164func (ap AccountPatch) MarshalJSON() ([]byte, error) {
165	objectMap := make(map[string]interface{})
166	if ap.Location != nil {
167		objectMap["location"] = ap.Location
168	}
169	if ap.Tags != nil {
170		objectMap["tags"] = ap.Tags
171	}
172	if ap.AccountProperties != nil {
173		objectMap["properties"] = ap.AccountProperties
174	}
175	return json.Marshal(objectMap)
176}
177
178// UnmarshalJSON is the custom unmarshaler for AccountPatch struct.
179func (ap *AccountPatch) UnmarshalJSON(body []byte) error {
180	var m map[string]*json.RawMessage
181	err := json.Unmarshal(body, &m)
182	if err != nil {
183		return err
184	}
185	for k, v := range m {
186		switch k {
187		case "location":
188			if v != nil {
189				var location string
190				err = json.Unmarshal(*v, &location)
191				if err != nil {
192					return err
193				}
194				ap.Location = &location
195			}
196		case "id":
197			if v != nil {
198				var ID string
199				err = json.Unmarshal(*v, &ID)
200				if err != nil {
201					return err
202				}
203				ap.ID = &ID
204			}
205		case "name":
206			if v != nil {
207				var name string
208				err = json.Unmarshal(*v, &name)
209				if err != nil {
210					return err
211				}
212				ap.Name = &name
213			}
214		case "type":
215			if v != nil {
216				var typeVar string
217				err = json.Unmarshal(*v, &typeVar)
218				if err != nil {
219					return err
220				}
221				ap.Type = &typeVar
222			}
223		case "tags":
224			if v != nil {
225				var tags map[string]*string
226				err = json.Unmarshal(*v, &tags)
227				if err != nil {
228					return err
229				}
230				ap.Tags = tags
231			}
232		case "properties":
233			if v != nil {
234				var accountProperties AccountProperties
235				err = json.Unmarshal(*v, &accountProperties)
236				if err != nil {
237					return err
238				}
239				ap.AccountProperties = &accountProperties
240			}
241		}
242	}
243
244	return nil
245}
246
247// AccountProperties netApp account properties
248type AccountProperties struct {
249	// ProvisioningState - READ-ONLY; Azure lifecycle management
250	ProvisioningState *string `json:"provisioningState,omitempty"`
251	// ActiveDirectories - Active Directories
252	ActiveDirectories *[]ActiveDirectory `json:"activeDirectories,omitempty"`
253}
254
255// MarshalJSON is the custom marshaler for AccountProperties.
256func (ap AccountProperties) MarshalJSON() ([]byte, error) {
257	objectMap := make(map[string]interface{})
258	if ap.ActiveDirectories != nil {
259		objectMap["activeDirectories"] = ap.ActiveDirectories
260	}
261	return json.Marshal(objectMap)
262}
263
264// AccountsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
265// operation.
266type AccountsCreateOrUpdateFuture struct {
267	azure.FutureAPI
268	// Result returns the result of the asynchronous operation.
269	// If the operation has not completed it will return an error.
270	Result func(AccountsClient) (Account, error)
271}
272
273// AccountsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
274// operation.
275type AccountsDeleteFuture struct {
276	azure.FutureAPI
277	// Result returns the result of the asynchronous operation.
278	// If the operation has not completed it will return an error.
279	Result func(AccountsClient) (autorest.Response, error)
280}
281
282// AccountsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
283// operation.
284type AccountsUpdateFuture struct {
285	azure.FutureAPI
286	// Result returns the result of the asynchronous operation.
287	// If the operation has not completed it will return an error.
288	Result func(AccountsClient) (Account, error)
289}
290
291// ActiveDirectory active Directory
292type ActiveDirectory struct {
293	// ActiveDirectoryID - Id of the Active Directory
294	ActiveDirectoryID *string `json:"activeDirectoryId,omitempty"`
295	// Username - Username of Active Directory domain administrator
296	Username *string `json:"username,omitempty"`
297	// Password - Plain text password of Active Directory domain administrator, value is masked in the response
298	Password *string `json:"password,omitempty"`
299	// Domain - Name of the Active Directory domain
300	Domain *string `json:"domain,omitempty"`
301	// DNS - Comma separated list of DNS server IP addresses (IPv4 only) for the Active Directory domain
302	DNS *string `json:"dns,omitempty"`
303	// Status - READ-ONLY; Status of the Active Directory. Possible values include: 'Created', 'InUse', 'Deleted', 'Error', 'Updating'
304	Status ActiveDirectoryStatus `json:"status,omitempty"`
305	// StatusDetails - READ-ONLY; Any details in regards to the Status of the Active Directory
306	StatusDetails *string `json:"statusDetails,omitempty"`
307	// SmbServerName - NetBIOS name of the SMB server. This name will be registered as a computer account in the AD and used to mount volumes
308	SmbServerName *string `json:"smbServerName,omitempty"`
309	// OrganizationalUnit - The Organizational Unit (OU) within the Windows Active Directory
310	OrganizationalUnit *string `json:"organizationalUnit,omitempty"`
311	// Site - The Active Directory site the service will limit Domain Controller discovery to
312	Site *string `json:"site,omitempty"`
313	// BackupOperators - Users to be added to the Built-in Backup Operator active directory group. A list of unique usernames without domain specifier
314	BackupOperators *[]string `json:"backupOperators,omitempty"`
315	// KdcIP - kdc server IP addresses for the active directory machine. This optional parameter is used only while creating kerberos volume.
316	KdcIP *string `json:"kdcIP,omitempty"`
317	// AdName - Name of the active directory machine. This optional parameter is used only while creating kerberos volume
318	AdName *string `json:"adName,omitempty"`
319	// ServerRootCACertificate - When LDAP over SSL/TLS is enabled, the LDAP client is required to have base64 encoded Active Directory Certificate Service's self-signed root CA certificate, this optional parameter is used only for dual protocol with LDAP user-mapping volumes.
320	ServerRootCACertificate *string `json:"serverRootCACertificate,omitempty"`
321	// AesEncryption - If enabled, AES encryption will be enabled for SMB communication.
322	AesEncryption *bool `json:"aesEncryption,omitempty"`
323	// LdapSigning - Specifies whether or not the LDAP traffic needs to be signed.
324	LdapSigning *bool `json:"ldapSigning,omitempty"`
325}
326
327// MarshalJSON is the custom marshaler for ActiveDirectory.
328func (ad ActiveDirectory) MarshalJSON() ([]byte, error) {
329	objectMap := make(map[string]interface{})
330	if ad.ActiveDirectoryID != nil {
331		objectMap["activeDirectoryId"] = ad.ActiveDirectoryID
332	}
333	if ad.Username != nil {
334		objectMap["username"] = ad.Username
335	}
336	if ad.Password != nil {
337		objectMap["password"] = ad.Password
338	}
339	if ad.Domain != nil {
340		objectMap["domain"] = ad.Domain
341	}
342	if ad.DNS != nil {
343		objectMap["dns"] = ad.DNS
344	}
345	if ad.SmbServerName != nil {
346		objectMap["smbServerName"] = ad.SmbServerName
347	}
348	if ad.OrganizationalUnit != nil {
349		objectMap["organizationalUnit"] = ad.OrganizationalUnit
350	}
351	if ad.Site != nil {
352		objectMap["site"] = ad.Site
353	}
354	if ad.BackupOperators != nil {
355		objectMap["backupOperators"] = ad.BackupOperators
356	}
357	if ad.KdcIP != nil {
358		objectMap["kdcIP"] = ad.KdcIP
359	}
360	if ad.AdName != nil {
361		objectMap["adName"] = ad.AdName
362	}
363	if ad.ServerRootCACertificate != nil {
364		objectMap["serverRootCACertificate"] = ad.ServerRootCACertificate
365	}
366	if ad.AesEncryption != nil {
367		objectMap["aesEncryption"] = ad.AesEncryption
368	}
369	if ad.LdapSigning != nil {
370		objectMap["ldapSigning"] = ad.LdapSigning
371	}
372	return json.Marshal(objectMap)
373}
374
375// AuthorizeRequest authorize request
376type AuthorizeRequest struct {
377	// RemoteVolumeResourceID - Resource id of the remote volume
378	RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty"`
379}
380
381// Backup backup of a Volume
382type Backup struct {
383	autorest.Response `json:"-"`
384	// Location - Resource location
385	Location *string `json:"location,omitempty"`
386	// ID - READ-ONLY; Resource Id
387	ID *string `json:"id,omitempty"`
388	// Name - READ-ONLY; Resource name
389	Name *string `json:"name,omitempty"`
390	// Type - READ-ONLY; Resource type
391	Type *string `json:"type,omitempty"`
392	// BackupProperties - Backup Properties
393	*BackupProperties `json:"properties,omitempty"`
394}
395
396// MarshalJSON is the custom marshaler for Backup.
397func (b Backup) MarshalJSON() ([]byte, error) {
398	objectMap := make(map[string]interface{})
399	if b.Location != nil {
400		objectMap["location"] = b.Location
401	}
402	if b.BackupProperties != nil {
403		objectMap["properties"] = b.BackupProperties
404	}
405	return json.Marshal(objectMap)
406}
407
408// UnmarshalJSON is the custom unmarshaler for Backup struct.
409func (b *Backup) UnmarshalJSON(body []byte) error {
410	var m map[string]*json.RawMessage
411	err := json.Unmarshal(body, &m)
412	if err != nil {
413		return err
414	}
415	for k, v := range m {
416		switch k {
417		case "location":
418			if v != nil {
419				var location string
420				err = json.Unmarshal(*v, &location)
421				if err != nil {
422					return err
423				}
424				b.Location = &location
425			}
426		case "id":
427			if v != nil {
428				var ID string
429				err = json.Unmarshal(*v, &ID)
430				if err != nil {
431					return err
432				}
433				b.ID = &ID
434			}
435		case "name":
436			if v != nil {
437				var name string
438				err = json.Unmarshal(*v, &name)
439				if err != nil {
440					return err
441				}
442				b.Name = &name
443			}
444		case "type":
445			if v != nil {
446				var typeVar string
447				err = json.Unmarshal(*v, &typeVar)
448				if err != nil {
449					return err
450				}
451				b.Type = &typeVar
452			}
453		case "properties":
454			if v != nil {
455				var backupProperties BackupProperties
456				err = json.Unmarshal(*v, &backupProperties)
457				if err != nil {
458					return err
459				}
460				b.BackupProperties = &backupProperties
461			}
462		}
463	}
464
465	return nil
466}
467
468// BackupPatch backup patch
469type BackupPatch struct {
470	// Tags - Resource tags
471	Tags map[string]*string `json:"tags"`
472	// BackupProperties - Backup Properties
473	*BackupProperties `json:"properties,omitempty"`
474}
475
476// MarshalJSON is the custom marshaler for BackupPatch.
477func (bp BackupPatch) MarshalJSON() ([]byte, error) {
478	objectMap := make(map[string]interface{})
479	if bp.Tags != nil {
480		objectMap["tags"] = bp.Tags
481	}
482	if bp.BackupProperties != nil {
483		objectMap["properties"] = bp.BackupProperties
484	}
485	return json.Marshal(objectMap)
486}
487
488// UnmarshalJSON is the custom unmarshaler for BackupPatch struct.
489func (bp *BackupPatch) UnmarshalJSON(body []byte) error {
490	var m map[string]*json.RawMessage
491	err := json.Unmarshal(body, &m)
492	if err != nil {
493		return err
494	}
495	for k, v := range m {
496		switch k {
497		case "tags":
498			if v != nil {
499				var tags map[string]*string
500				err = json.Unmarshal(*v, &tags)
501				if err != nil {
502					return err
503				}
504				bp.Tags = tags
505			}
506		case "properties":
507			if v != nil {
508				var backupProperties BackupProperties
509				err = json.Unmarshal(*v, &backupProperties)
510				if err != nil {
511					return err
512				}
513				bp.BackupProperties = &backupProperties
514			}
515		}
516	}
517
518	return nil
519}
520
521// BackupPoliciesCreateFuture an abstraction for monitoring and retrieving the results of a long-running
522// operation.
523type BackupPoliciesCreateFuture struct {
524	azure.FutureAPI
525	// Result returns the result of the asynchronous operation.
526	// If the operation has not completed it will return an error.
527	Result func(BackupPoliciesClient) (BackupPolicy, error)
528}
529
530// BackupPoliciesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
531// operation.
532type BackupPoliciesDeleteFuture struct {
533	azure.FutureAPI
534	// Result returns the result of the asynchronous operation.
535	// If the operation has not completed it will return an error.
536	Result func(BackupPoliciesClient) (autorest.Response, error)
537}
538
539// BackupPoliciesList list of Backup Policies
540type BackupPoliciesList struct {
541	autorest.Response `json:"-"`
542	// Value - A list of backup policies
543	Value *[]BackupPolicy `json:"value,omitempty"`
544}
545
546// BackupPolicy backup policy information
547type BackupPolicy struct {
548	autorest.Response `json:"-"`
549	// Location - Resource location
550	Location *string `json:"location,omitempty"`
551	// ID - READ-ONLY; Resource Id
552	ID *string `json:"id,omitempty"`
553	// Name - READ-ONLY; Resource name
554	Name *string `json:"name,omitempty"`
555	// Type - READ-ONLY; Resource type
556	Type *string `json:"type,omitempty"`
557	// Tags - Resource tags
558	Tags map[string]*string `json:"tags"`
559	// BackupPolicyProperties - Backup policy Properties
560	*BackupPolicyProperties `json:"properties,omitempty"`
561}
562
563// MarshalJSON is the custom marshaler for BackupPolicy.
564func (bp BackupPolicy) MarshalJSON() ([]byte, error) {
565	objectMap := make(map[string]interface{})
566	if bp.Location != nil {
567		objectMap["location"] = bp.Location
568	}
569	if bp.Tags != nil {
570		objectMap["tags"] = bp.Tags
571	}
572	if bp.BackupPolicyProperties != nil {
573		objectMap["properties"] = bp.BackupPolicyProperties
574	}
575	return json.Marshal(objectMap)
576}
577
578// UnmarshalJSON is the custom unmarshaler for BackupPolicy struct.
579func (bp *BackupPolicy) UnmarshalJSON(body []byte) error {
580	var m map[string]*json.RawMessage
581	err := json.Unmarshal(body, &m)
582	if err != nil {
583		return err
584	}
585	for k, v := range m {
586		switch k {
587		case "location":
588			if v != nil {
589				var location string
590				err = json.Unmarshal(*v, &location)
591				if err != nil {
592					return err
593				}
594				bp.Location = &location
595			}
596		case "id":
597			if v != nil {
598				var ID string
599				err = json.Unmarshal(*v, &ID)
600				if err != nil {
601					return err
602				}
603				bp.ID = &ID
604			}
605		case "name":
606			if v != nil {
607				var name string
608				err = json.Unmarshal(*v, &name)
609				if err != nil {
610					return err
611				}
612				bp.Name = &name
613			}
614		case "type":
615			if v != nil {
616				var typeVar string
617				err = json.Unmarshal(*v, &typeVar)
618				if err != nil {
619					return err
620				}
621				bp.Type = &typeVar
622			}
623		case "tags":
624			if v != nil {
625				var tags map[string]*string
626				err = json.Unmarshal(*v, &tags)
627				if err != nil {
628					return err
629				}
630				bp.Tags = tags
631			}
632		case "properties":
633			if v != nil {
634				var backupPolicyProperties BackupPolicyProperties
635				err = json.Unmarshal(*v, &backupPolicyProperties)
636				if err != nil {
637					return err
638				}
639				bp.BackupPolicyProperties = &backupPolicyProperties
640			}
641		}
642	}
643
644	return nil
645}
646
647// BackupPolicyDetails backup policy properties
648type BackupPolicyDetails struct {
649	// Location - Resource location
650	Location *string `json:"location,omitempty"`
651	// ID - READ-ONLY; Resource Id
652	ID *string `json:"id,omitempty"`
653	// Name - READ-ONLY; Resource name
654	Name *string `json:"name,omitempty"`
655	// Type - READ-ONLY; Resource type
656	Type *string `json:"type,omitempty"`
657	// Tags - Resource tags
658	Tags map[string]*string `json:"tags"`
659	// BackupPolicyProperties - Backup policy Properties
660	*BackupPolicyProperties `json:"properties,omitempty"`
661}
662
663// MarshalJSON is the custom marshaler for BackupPolicyDetails.
664func (bpd BackupPolicyDetails) MarshalJSON() ([]byte, error) {
665	objectMap := make(map[string]interface{})
666	if bpd.Location != nil {
667		objectMap["location"] = bpd.Location
668	}
669	if bpd.Tags != nil {
670		objectMap["tags"] = bpd.Tags
671	}
672	if bpd.BackupPolicyProperties != nil {
673		objectMap["properties"] = bpd.BackupPolicyProperties
674	}
675	return json.Marshal(objectMap)
676}
677
678// UnmarshalJSON is the custom unmarshaler for BackupPolicyDetails struct.
679func (bpd *BackupPolicyDetails) UnmarshalJSON(body []byte) error {
680	var m map[string]*json.RawMessage
681	err := json.Unmarshal(body, &m)
682	if err != nil {
683		return err
684	}
685	for k, v := range m {
686		switch k {
687		case "location":
688			if v != nil {
689				var location string
690				err = json.Unmarshal(*v, &location)
691				if err != nil {
692					return err
693				}
694				bpd.Location = &location
695			}
696		case "id":
697			if v != nil {
698				var ID string
699				err = json.Unmarshal(*v, &ID)
700				if err != nil {
701					return err
702				}
703				bpd.ID = &ID
704			}
705		case "name":
706			if v != nil {
707				var name string
708				err = json.Unmarshal(*v, &name)
709				if err != nil {
710					return err
711				}
712				bpd.Name = &name
713			}
714		case "type":
715			if v != nil {
716				var typeVar string
717				err = json.Unmarshal(*v, &typeVar)
718				if err != nil {
719					return err
720				}
721				bpd.Type = &typeVar
722			}
723		case "tags":
724			if v != nil {
725				var tags map[string]*string
726				err = json.Unmarshal(*v, &tags)
727				if err != nil {
728					return err
729				}
730				bpd.Tags = tags
731			}
732		case "properties":
733			if v != nil {
734				var backupPolicyProperties BackupPolicyProperties
735				err = json.Unmarshal(*v, &backupPolicyProperties)
736				if err != nil {
737					return err
738				}
739				bpd.BackupPolicyProperties = &backupPolicyProperties
740			}
741		}
742	}
743
744	return nil
745}
746
747// BackupPolicyPatch backup policy Details for create and update
748type BackupPolicyPatch struct {
749	// Location - Resource location
750	Location *string `json:"location,omitempty"`
751	// ID - READ-ONLY; Resource Id
752	ID *string `json:"id,omitempty"`
753	// Name - READ-ONLY; Resource name
754	Name *string `json:"name,omitempty"`
755	// Type - READ-ONLY; Resource type
756	Type *string `json:"type,omitempty"`
757	// Tags - Resource tags
758	Tags map[string]*string `json:"tags"`
759	// BackupPolicyProperties - Backup policy Properties
760	*BackupPolicyProperties `json:"properties,omitempty"`
761}
762
763// MarshalJSON is the custom marshaler for BackupPolicyPatch.
764func (bpp BackupPolicyPatch) MarshalJSON() ([]byte, error) {
765	objectMap := make(map[string]interface{})
766	if bpp.Location != nil {
767		objectMap["location"] = bpp.Location
768	}
769	if bpp.Tags != nil {
770		objectMap["tags"] = bpp.Tags
771	}
772	if bpp.BackupPolicyProperties != nil {
773		objectMap["properties"] = bpp.BackupPolicyProperties
774	}
775	return json.Marshal(objectMap)
776}
777
778// UnmarshalJSON is the custom unmarshaler for BackupPolicyPatch struct.
779func (bpp *BackupPolicyPatch) UnmarshalJSON(body []byte) error {
780	var m map[string]*json.RawMessage
781	err := json.Unmarshal(body, &m)
782	if err != nil {
783		return err
784	}
785	for k, v := range m {
786		switch k {
787		case "location":
788			if v != nil {
789				var location string
790				err = json.Unmarshal(*v, &location)
791				if err != nil {
792					return err
793				}
794				bpp.Location = &location
795			}
796		case "id":
797			if v != nil {
798				var ID string
799				err = json.Unmarshal(*v, &ID)
800				if err != nil {
801					return err
802				}
803				bpp.ID = &ID
804			}
805		case "name":
806			if v != nil {
807				var name string
808				err = json.Unmarshal(*v, &name)
809				if err != nil {
810					return err
811				}
812				bpp.Name = &name
813			}
814		case "type":
815			if v != nil {
816				var typeVar string
817				err = json.Unmarshal(*v, &typeVar)
818				if err != nil {
819					return err
820				}
821				bpp.Type = &typeVar
822			}
823		case "tags":
824			if v != nil {
825				var tags map[string]*string
826				err = json.Unmarshal(*v, &tags)
827				if err != nil {
828					return err
829				}
830				bpp.Tags = tags
831			}
832		case "properties":
833			if v != nil {
834				var backupPolicyProperties BackupPolicyProperties
835				err = json.Unmarshal(*v, &backupPolicyProperties)
836				if err != nil {
837					return err
838				}
839				bpp.BackupPolicyProperties = &backupPolicyProperties
840			}
841		}
842	}
843
844	return nil
845}
846
847// BackupPolicyProperties backup policy properties
848type BackupPolicyProperties struct {
849	// Name - READ-ONLY; Name of backup policy
850	Name *string `json:"name,omitempty"`
851	// ProvisioningState - READ-ONLY; Azure lifecycle management
852	ProvisioningState *string `json:"provisioningState,omitempty"`
853	// DailyBackupsToKeep - Daily backups count to keep
854	DailyBackupsToKeep *int32 `json:"dailyBackupsToKeep,omitempty"`
855	// WeeklyBackupsToKeep - Weekly backups count to keep
856	WeeklyBackupsToKeep *int32 `json:"weeklyBackupsToKeep,omitempty"`
857	// MonthlyBackupsToKeep - Monthly backups count to keep
858	MonthlyBackupsToKeep *int32 `json:"monthlyBackupsToKeep,omitempty"`
859	// YearlyBackupsToKeep - Yearly backups count to keep
860	YearlyBackupsToKeep *int32 `json:"yearlyBackupsToKeep,omitempty"`
861	// VolumesAssigned - Volumes using current backup policy
862	VolumesAssigned *int32 `json:"volumesAssigned,omitempty"`
863	// Enabled - The property to decide policy is enabled or not
864	Enabled *bool `json:"enabled,omitempty"`
865	// VolumeBackups - A list of volumes assigned to this policy
866	VolumeBackups *[]VolumeBackups `json:"volumeBackups,omitempty"`
867}
868
869// MarshalJSON is the custom marshaler for BackupPolicyProperties.
870func (bpp BackupPolicyProperties) MarshalJSON() ([]byte, error) {
871	objectMap := make(map[string]interface{})
872	if bpp.DailyBackupsToKeep != nil {
873		objectMap["dailyBackupsToKeep"] = bpp.DailyBackupsToKeep
874	}
875	if bpp.WeeklyBackupsToKeep != nil {
876		objectMap["weeklyBackupsToKeep"] = bpp.WeeklyBackupsToKeep
877	}
878	if bpp.MonthlyBackupsToKeep != nil {
879		objectMap["monthlyBackupsToKeep"] = bpp.MonthlyBackupsToKeep
880	}
881	if bpp.YearlyBackupsToKeep != nil {
882		objectMap["yearlyBackupsToKeep"] = bpp.YearlyBackupsToKeep
883	}
884	if bpp.VolumesAssigned != nil {
885		objectMap["volumesAssigned"] = bpp.VolumesAssigned
886	}
887	if bpp.Enabled != nil {
888		objectMap["enabled"] = bpp.Enabled
889	}
890	if bpp.VolumeBackups != nil {
891		objectMap["volumeBackups"] = bpp.VolumeBackups
892	}
893	return json.Marshal(objectMap)
894}
895
896// BackupProperties backup properties
897type BackupProperties struct {
898	// BackupID - READ-ONLY; UUID v4 used to identify the Backup
899	BackupID *string `json:"backupId,omitempty"`
900	// CreationDate - READ-ONLY; The creation date of the backup
901	CreationDate *date.Time `json:"creationDate,omitempty"`
902	// ProvisioningState - READ-ONLY; Azure lifecycle management
903	ProvisioningState *string `json:"provisioningState,omitempty"`
904	// Size - READ-ONLY; Size of backup
905	Size *int64 `json:"size,omitempty"`
906	// Label - Label for backup
907	Label *string `json:"label,omitempty"`
908	// BackupType - READ-ONLY; Type of backup adhoc or scheduled
909	BackupType *string `json:"backupType,omitempty"`
910}
911
912// MarshalJSON is the custom marshaler for BackupProperties.
913func (bp BackupProperties) MarshalJSON() ([]byte, error) {
914	objectMap := make(map[string]interface{})
915	if bp.Label != nil {
916		objectMap["label"] = bp.Label
917	}
918	return json.Marshal(objectMap)
919}
920
921// BackupsCreateFuture an abstraction for monitoring and retrieving the results of a long-running
922// operation.
923type BackupsCreateFuture struct {
924	azure.FutureAPI
925	// Result returns the result of the asynchronous operation.
926	// If the operation has not completed it will return an error.
927	Result func(BackupsClient) (Backup, error)
928}
929
930// BackupsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
931// operation.
932type BackupsDeleteFuture struct {
933	azure.FutureAPI
934	// Result returns the result of the asynchronous operation.
935	// If the operation has not completed it will return an error.
936	Result func(BackupsClient) (autorest.Response, error)
937}
938
939// BackupsList list of Backups
940type BackupsList struct {
941	autorest.Response `json:"-"`
942	// Value - A list of Backups
943	Value *[]Backup `json:"value,omitempty"`
944}
945
946// BreakReplicationRequest break replication request
947type BreakReplicationRequest struct {
948	// ForceBreakReplication - If replication is in status transferring and you want to force break the replication, set to true
949	ForceBreakReplication *bool `json:"forceBreakReplication,omitempty"`
950}
951
952// CapacityPool capacity pool resource
953type CapacityPool struct {
954	autorest.Response `json:"-"`
955	// Location - Resource location
956	Location *string `json:"location,omitempty"`
957	// ID - READ-ONLY; Resource Id
958	ID *string `json:"id,omitempty"`
959	// Name - READ-ONLY; Resource name
960	Name *string `json:"name,omitempty"`
961	// Type - READ-ONLY; Resource type
962	Type *string `json:"type,omitempty"`
963	// Tags - Resource tags
964	Tags map[string]*string `json:"tags"`
965	// PoolProperties - Capacity pool properties
966	*PoolProperties `json:"properties,omitempty"`
967}
968
969// MarshalJSON is the custom marshaler for CapacityPool.
970func (cp CapacityPool) MarshalJSON() ([]byte, error) {
971	objectMap := make(map[string]interface{})
972	if cp.Location != nil {
973		objectMap["location"] = cp.Location
974	}
975	if cp.Tags != nil {
976		objectMap["tags"] = cp.Tags
977	}
978	if cp.PoolProperties != nil {
979		objectMap["properties"] = cp.PoolProperties
980	}
981	return json.Marshal(objectMap)
982}
983
984// UnmarshalJSON is the custom unmarshaler for CapacityPool struct.
985func (cp *CapacityPool) UnmarshalJSON(body []byte) error {
986	var m map[string]*json.RawMessage
987	err := json.Unmarshal(body, &m)
988	if err != nil {
989		return err
990	}
991	for k, v := range m {
992		switch k {
993		case "location":
994			if v != nil {
995				var location string
996				err = json.Unmarshal(*v, &location)
997				if err != nil {
998					return err
999				}
1000				cp.Location = &location
1001			}
1002		case "id":
1003			if v != nil {
1004				var ID string
1005				err = json.Unmarshal(*v, &ID)
1006				if err != nil {
1007					return err
1008				}
1009				cp.ID = &ID
1010			}
1011		case "name":
1012			if v != nil {
1013				var name string
1014				err = json.Unmarshal(*v, &name)
1015				if err != nil {
1016					return err
1017				}
1018				cp.Name = &name
1019			}
1020		case "type":
1021			if v != nil {
1022				var typeVar string
1023				err = json.Unmarshal(*v, &typeVar)
1024				if err != nil {
1025					return err
1026				}
1027				cp.Type = &typeVar
1028			}
1029		case "tags":
1030			if v != nil {
1031				var tags map[string]*string
1032				err = json.Unmarshal(*v, &tags)
1033				if err != nil {
1034					return err
1035				}
1036				cp.Tags = tags
1037			}
1038		case "properties":
1039			if v != nil {
1040				var poolProperties PoolProperties
1041				err = json.Unmarshal(*v, &poolProperties)
1042				if err != nil {
1043					return err
1044				}
1045				cp.PoolProperties = &poolProperties
1046			}
1047		}
1048	}
1049
1050	return nil
1051}
1052
1053// CapacityPoolList list of capacity pool resources
1054type CapacityPoolList struct {
1055	autorest.Response `json:"-"`
1056	// Value - List of Capacity pools
1057	Value *[]CapacityPool `json:"value,omitempty"`
1058}
1059
1060// CapacityPoolPatch capacity pool patch resource
1061type CapacityPoolPatch struct {
1062	// Location - Resource location
1063	Location *string `json:"location,omitempty"`
1064	// ID - READ-ONLY; Resource Id
1065	ID *string `json:"id,omitempty"`
1066	// Name - READ-ONLY; Resource name
1067	Name *string `json:"name,omitempty"`
1068	// Type - READ-ONLY; Resource type
1069	Type *string `json:"type,omitempty"`
1070	// Tags - Resource tags
1071	Tags map[string]*string `json:"tags"`
1072	// PoolPatchProperties - Capacity pool properties
1073	*PoolPatchProperties `json:"properties,omitempty"`
1074}
1075
1076// MarshalJSON is the custom marshaler for CapacityPoolPatch.
1077func (cpp CapacityPoolPatch) MarshalJSON() ([]byte, error) {
1078	objectMap := make(map[string]interface{})
1079	if cpp.Location != nil {
1080		objectMap["location"] = cpp.Location
1081	}
1082	if cpp.Tags != nil {
1083		objectMap["tags"] = cpp.Tags
1084	}
1085	if cpp.PoolPatchProperties != nil {
1086		objectMap["properties"] = cpp.PoolPatchProperties
1087	}
1088	return json.Marshal(objectMap)
1089}
1090
1091// UnmarshalJSON is the custom unmarshaler for CapacityPoolPatch struct.
1092func (cpp *CapacityPoolPatch) UnmarshalJSON(body []byte) error {
1093	var m map[string]*json.RawMessage
1094	err := json.Unmarshal(body, &m)
1095	if err != nil {
1096		return err
1097	}
1098	for k, v := range m {
1099		switch k {
1100		case "location":
1101			if v != nil {
1102				var location string
1103				err = json.Unmarshal(*v, &location)
1104				if err != nil {
1105					return err
1106				}
1107				cpp.Location = &location
1108			}
1109		case "id":
1110			if v != nil {
1111				var ID string
1112				err = json.Unmarshal(*v, &ID)
1113				if err != nil {
1114					return err
1115				}
1116				cpp.ID = &ID
1117			}
1118		case "name":
1119			if v != nil {
1120				var name string
1121				err = json.Unmarshal(*v, &name)
1122				if err != nil {
1123					return err
1124				}
1125				cpp.Name = &name
1126			}
1127		case "type":
1128			if v != nil {
1129				var typeVar string
1130				err = json.Unmarshal(*v, &typeVar)
1131				if err != nil {
1132					return err
1133				}
1134				cpp.Type = &typeVar
1135			}
1136		case "tags":
1137			if v != nil {
1138				var tags map[string]*string
1139				err = json.Unmarshal(*v, &tags)
1140				if err != nil {
1141					return err
1142				}
1143				cpp.Tags = tags
1144			}
1145		case "properties":
1146			if v != nil {
1147				var poolPatchProperties PoolPatchProperties
1148				err = json.Unmarshal(*v, &poolPatchProperties)
1149				if err != nil {
1150					return err
1151				}
1152				cpp.PoolPatchProperties = &poolPatchProperties
1153			}
1154		}
1155	}
1156
1157	return nil
1158}
1159
1160// CheckAvailabilityResponse information regarding availability of a resource.
1161type CheckAvailabilityResponse struct {
1162	autorest.Response `json:"-"`
1163	// IsAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
1164	IsAvailable *bool `json:"isAvailable,omitempty"`
1165	// Reason - <code>Invalid</code> indicates the name provided does not match Azure App Service naming requirements. <code>AlreadyExists</code> indicates that the name is already in use and is therefore unavailable. Possible values include: 'Invalid', 'AlreadyExists'
1166	Reason InAvailabilityReasonType `json:"reason,omitempty"`
1167	// Message - If reason == invalid, provide the user with the reason why the given name is invalid, and provide the resource naming requirements so that the user can select a valid name. If reason == AlreadyExists, explain that resource name is already in use, and direct them to select a different name.
1168	Message *string `json:"message,omitempty"`
1169}
1170
1171// DailySchedule daily Schedule properties
1172type DailySchedule struct {
1173	// SnapshotsToKeep - Daily snapshot count to keep
1174	SnapshotsToKeep *int32 `json:"snapshotsToKeep,omitempty"`
1175	// Hour - Indicates which hour in UTC timezone a snapshot should be taken
1176	Hour *int32 `json:"hour,omitempty"`
1177	// Minute - Indicates which minute snapshot should be taken
1178	Minute *int32 `json:"minute,omitempty"`
1179	// UsedBytes - Resource size in bytes, current storage usage for the volume in bytes
1180	UsedBytes *int64 `json:"usedBytes,omitempty"`
1181}
1182
1183// Dimension dimension of blobs, possibly be blob type or access tier.
1184type Dimension struct {
1185	// Name - Display name of dimension.
1186	Name *string `json:"name,omitempty"`
1187	// DisplayName - Display name of dimension.
1188	DisplayName *string `json:"displayName,omitempty"`
1189}
1190
1191// ExportPolicyRule volume Export Policy Rule
1192type ExportPolicyRule struct {
1193	// RuleIndex - Order index
1194	RuleIndex *int32 `json:"ruleIndex,omitempty"`
1195	// UnixReadOnly - Read only access
1196	UnixReadOnly *bool `json:"unixReadOnly,omitempty"`
1197	// UnixReadWrite - Read and write access
1198	UnixReadWrite *bool `json:"unixReadWrite,omitempty"`
1199	// Kerberos5ReadOnly - Kerberos5 Read only access. To be use with swagger version 2020-05-01 or later
1200	Kerberos5ReadOnly *bool `json:"kerberos5ReadOnly,omitempty"`
1201	// Kerberos5ReadWrite - Kerberos5 Read and write access. To be use with swagger version 2020-05-01 or later
1202	Kerberos5ReadWrite *bool `json:"kerberos5ReadWrite,omitempty"`
1203	// Kerberos5iReadOnly - Kerberos5i Read only access. To be use with swagger version 2020-05-01 or later
1204	Kerberos5iReadOnly *bool `json:"kerberos5iReadOnly,omitempty"`
1205	// Kerberos5iReadWrite - Kerberos5i Read and write access. To be use with swagger version 2020-05-01 or later
1206	Kerberos5iReadWrite *bool `json:"kerberos5iReadWrite,omitempty"`
1207	// Kerberos5pReadOnly - Kerberos5p Read only access. To be use with swagger version 2020-05-01 or later
1208	Kerberos5pReadOnly *bool `json:"kerberos5pReadOnly,omitempty"`
1209	// Kerberos5pReadWrite - Kerberos5p Read and write access. To be use with swagger version 2020-05-01 or later
1210	Kerberos5pReadWrite *bool `json:"kerberos5pReadWrite,omitempty"`
1211	// Cifs - Allows CIFS protocol
1212	Cifs *bool `json:"cifs,omitempty"`
1213	// Nfsv3 - Allows NFSv3 protocol. Enable only for NFSv3 type volumes
1214	Nfsv3 *bool `json:"nfsv3,omitempty"`
1215	// Nfsv41 - Allows NFSv4.1 protocol. Enable only for NFSv4.1 type volumes
1216	Nfsv41 *bool `json:"nfsv41,omitempty"`
1217	// AllowedClients - Client ingress specification as comma separated string with IPv4 CIDRs, IPv4 host addresses and host names
1218	AllowedClients *string `json:"allowedClients,omitempty"`
1219	// HasRootAccess - Has root access to volume
1220	HasRootAccess *bool `json:"hasRootAccess,omitempty"`
1221}
1222
1223// HourlySchedule hourly Schedule properties
1224type HourlySchedule struct {
1225	// SnapshotsToKeep - Hourly snapshot count to keep
1226	SnapshotsToKeep *int32 `json:"snapshotsToKeep,omitempty"`
1227	// Minute - Indicates which minute snapshot should be taken
1228	Minute *int32 `json:"minute,omitempty"`
1229	// UsedBytes - Resource size in bytes, current storage usage for the volume in bytes
1230	UsedBytes *int64 `json:"usedBytes,omitempty"`
1231}
1232
1233// MetricSpecification metric specification of operation.
1234type MetricSpecification struct {
1235	// Name - Name of metric specification.
1236	Name *string `json:"name,omitempty"`
1237	// DisplayName - Display name of metric specification.
1238	DisplayName *string `json:"displayName,omitempty"`
1239	// DisplayDescription - Display description of metric specification.
1240	DisplayDescription *string `json:"displayDescription,omitempty"`
1241	// Unit - Unit could be Bytes or Count.
1242	Unit *string `json:"unit,omitempty"`
1243	// Dimensions - Dimensions of blobs, including blob type and access tier.
1244	Dimensions *[]Dimension `json:"dimensions,omitempty"`
1245	// AggregationType - Aggregation type could be Average.
1246	AggregationType *string `json:"aggregationType,omitempty"`
1247	// FillGapWithZero - The property to decide fill gap with zero or not.
1248	FillGapWithZero *bool `json:"fillGapWithZero,omitempty"`
1249	// Category - The category this metric specification belong to, could be Capacity.
1250	Category *string `json:"category,omitempty"`
1251	// ResourceIDDimensionNameOverride - Account Resource Id.
1252	ResourceIDDimensionNameOverride *string `json:"resourceIdDimensionNameOverride,omitempty"`
1253}
1254
1255// MonthlySchedule monthly Schedule properties
1256type MonthlySchedule struct {
1257	// SnapshotsToKeep - Monthly snapshot count to keep
1258	SnapshotsToKeep *int32 `json:"snapshotsToKeep,omitempty"`
1259	// DaysOfMonth - Indicates which days of the month snapshot should be taken. A comma delimited string.
1260	DaysOfMonth *string `json:"daysOfMonth,omitempty"`
1261	// Hour - Indicates which hour in UTC timezone a snapshot should be taken
1262	Hour *int32 `json:"hour,omitempty"`
1263	// Minute - Indicates which minute snapshot should be taken
1264	Minute *int32 `json:"minute,omitempty"`
1265	// UsedBytes - Resource size in bytes, current storage usage for the volume in bytes
1266	UsedBytes *int64 `json:"usedBytes,omitempty"`
1267}
1268
1269// MountTarget mount Target
1270type MountTarget struct {
1271	// Location - Resource location
1272	Location *string `json:"location,omitempty"`
1273	// ID - READ-ONLY; Resource Id
1274	ID *string `json:"id,omitempty"`
1275	// Name - READ-ONLY; Resource name
1276	Name *string `json:"name,omitempty"`
1277	// Type - READ-ONLY; Resource type
1278	Type *string `json:"type,omitempty"`
1279	// Tags - Resource tags
1280	Tags map[string]*string `json:"tags"`
1281	// MountTargetProperties - Mount Target Properties
1282	*MountTargetProperties `json:"properties,omitempty"`
1283}
1284
1285// MarshalJSON is the custom marshaler for MountTarget.
1286func (mt MountTarget) MarshalJSON() ([]byte, error) {
1287	objectMap := make(map[string]interface{})
1288	if mt.Location != nil {
1289		objectMap["location"] = mt.Location
1290	}
1291	if mt.Tags != nil {
1292		objectMap["tags"] = mt.Tags
1293	}
1294	if mt.MountTargetProperties != nil {
1295		objectMap["properties"] = mt.MountTargetProperties
1296	}
1297	return json.Marshal(objectMap)
1298}
1299
1300// UnmarshalJSON is the custom unmarshaler for MountTarget struct.
1301func (mt *MountTarget) UnmarshalJSON(body []byte) error {
1302	var m map[string]*json.RawMessage
1303	err := json.Unmarshal(body, &m)
1304	if err != nil {
1305		return err
1306	}
1307	for k, v := range m {
1308		switch k {
1309		case "location":
1310			if v != nil {
1311				var location string
1312				err = json.Unmarshal(*v, &location)
1313				if err != nil {
1314					return err
1315				}
1316				mt.Location = &location
1317			}
1318		case "id":
1319			if v != nil {
1320				var ID string
1321				err = json.Unmarshal(*v, &ID)
1322				if err != nil {
1323					return err
1324				}
1325				mt.ID = &ID
1326			}
1327		case "name":
1328			if v != nil {
1329				var name string
1330				err = json.Unmarshal(*v, &name)
1331				if err != nil {
1332					return err
1333				}
1334				mt.Name = &name
1335			}
1336		case "type":
1337			if v != nil {
1338				var typeVar string
1339				err = json.Unmarshal(*v, &typeVar)
1340				if err != nil {
1341					return err
1342				}
1343				mt.Type = &typeVar
1344			}
1345		case "tags":
1346			if v != nil {
1347				var tags map[string]*string
1348				err = json.Unmarshal(*v, &tags)
1349				if err != nil {
1350					return err
1351				}
1352				mt.Tags = tags
1353			}
1354		case "properties":
1355			if v != nil {
1356				var mountTargetProperties MountTargetProperties
1357				err = json.Unmarshal(*v, &mountTargetProperties)
1358				if err != nil {
1359					return err
1360				}
1361				mt.MountTargetProperties = &mountTargetProperties
1362			}
1363		}
1364	}
1365
1366	return nil
1367}
1368
1369// MountTargetProperties mount target properties
1370type MountTargetProperties struct {
1371	// MountTargetID - READ-ONLY; UUID v4 used to identify the MountTarget
1372	MountTargetID *string `json:"mountTargetId,omitempty"`
1373	// FileSystemID - UUID v4 used to identify the MountTarget
1374	FileSystemID *string `json:"fileSystemId,omitempty"`
1375	// IPAddress - READ-ONLY; The mount target's IPv4 address
1376	IPAddress *string `json:"ipAddress,omitempty"`
1377	// SmbServerFqdn - The SMB server's Fully Qualified Domain Name, FQDN
1378	SmbServerFqdn *string `json:"smbServerFqdn,omitempty"`
1379}
1380
1381// MarshalJSON is the custom marshaler for MountTargetProperties.
1382func (mtp MountTargetProperties) MarshalJSON() ([]byte, error) {
1383	objectMap := make(map[string]interface{})
1384	if mtp.FileSystemID != nil {
1385		objectMap["fileSystemId"] = mtp.FileSystemID
1386	}
1387	if mtp.SmbServerFqdn != nil {
1388		objectMap["smbServerFqdn"] = mtp.SmbServerFqdn
1389	}
1390	return json.Marshal(objectMap)
1391}
1392
1393// Operation microsoft.NetApp REST API operation definition.
1394type Operation struct {
1395	// Name - Operation name: {provider}/{resource}/{operation}
1396	Name *string `json:"name,omitempty"`
1397	// Display - Display metadata associated with the operation.
1398	Display *OperationDisplay `json:"display,omitempty"`
1399	// Origin - The origin of operations.
1400	Origin *string `json:"origin,omitempty"`
1401	// OperationProperties - Properties of operation, include metric specifications.
1402	*OperationProperties `json:"properties,omitempty"`
1403}
1404
1405// MarshalJSON is the custom marshaler for Operation.
1406func (o Operation) MarshalJSON() ([]byte, error) {
1407	objectMap := make(map[string]interface{})
1408	if o.Name != nil {
1409		objectMap["name"] = o.Name
1410	}
1411	if o.Display != nil {
1412		objectMap["display"] = o.Display
1413	}
1414	if o.Origin != nil {
1415		objectMap["origin"] = o.Origin
1416	}
1417	if o.OperationProperties != nil {
1418		objectMap["properties"] = o.OperationProperties
1419	}
1420	return json.Marshal(objectMap)
1421}
1422
1423// UnmarshalJSON is the custom unmarshaler for Operation struct.
1424func (o *Operation) UnmarshalJSON(body []byte) error {
1425	var m map[string]*json.RawMessage
1426	err := json.Unmarshal(body, &m)
1427	if err != nil {
1428		return err
1429	}
1430	for k, v := range m {
1431		switch k {
1432		case "name":
1433			if v != nil {
1434				var name string
1435				err = json.Unmarshal(*v, &name)
1436				if err != nil {
1437					return err
1438				}
1439				o.Name = &name
1440			}
1441		case "display":
1442			if v != nil {
1443				var display OperationDisplay
1444				err = json.Unmarshal(*v, &display)
1445				if err != nil {
1446					return err
1447				}
1448				o.Display = &display
1449			}
1450		case "origin":
1451			if v != nil {
1452				var origin string
1453				err = json.Unmarshal(*v, &origin)
1454				if err != nil {
1455					return err
1456				}
1457				o.Origin = &origin
1458			}
1459		case "properties":
1460			if v != nil {
1461				var operationProperties OperationProperties
1462				err = json.Unmarshal(*v, &operationProperties)
1463				if err != nil {
1464					return err
1465				}
1466				o.OperationProperties = &operationProperties
1467			}
1468		}
1469	}
1470
1471	return nil
1472}
1473
1474// OperationDisplay display metadata associated with the operation.
1475type OperationDisplay struct {
1476	// Provider - Service provider: Microsoft NetApp.
1477	Provider *string `json:"provider,omitempty"`
1478	// Resource - Resource on which the operation is performed etc.
1479	Resource *string `json:"resource,omitempty"`
1480	// Operation - Type of operation: get, read, delete, etc.
1481	Operation *string `json:"operation,omitempty"`
1482	// Description - Operation description.
1483	Description *string `json:"description,omitempty"`
1484}
1485
1486// OperationListResult result of the request to list Cloud Volume operations. It contains a list of
1487// operations and a URL link to get the next set of results.
1488type OperationListResult struct {
1489	autorest.Response `json:"-"`
1490	// Value - List of Storage operations supported by the Storage resource provider.
1491	Value *[]Operation `json:"value,omitempty"`
1492}
1493
1494// OperationProperties properties of operation, include metric specifications.
1495type OperationProperties struct {
1496	// ServiceSpecification - One property of operation, include metric specifications.
1497	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
1498}
1499
1500// PoolChangeRequest pool change request
1501type PoolChangeRequest struct {
1502	// NewPoolResourceID - Resource id of the pool to move volume to
1503	NewPoolResourceID *string `json:"newPoolResourceId,omitempty"`
1504}
1505
1506// PoolPatchProperties patchable pool properties
1507type PoolPatchProperties struct {
1508	// Size - Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must be multiply of 4398046511104).
1509	Size *int64 `json:"size,omitempty"`
1510	// QosType - The qos type of the pool. Possible values include: 'Auto', 'Manual'
1511	QosType QosType `json:"qosType,omitempty"`
1512}
1513
1514// PoolProperties pool properties
1515type PoolProperties struct {
1516	// PoolID - READ-ONLY; UUID v4 used to identify the Pool
1517	PoolID *string `json:"poolId,omitempty"`
1518	// Size - Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must be multiply of 4398046511104).
1519	Size *int64 `json:"size,omitempty"`
1520	// ServiceLevel - The service level of the file system. Possible values include: 'Standard', 'Premium', 'Ultra'
1521	ServiceLevel ServiceLevel `json:"serviceLevel,omitempty"`
1522	// ProvisioningState - READ-ONLY; Azure lifecycle management
1523	ProvisioningState *string `json:"provisioningState,omitempty"`
1524	// TotalThroughputMibps - READ-ONLY; Total throughput of pool in Mibps
1525	TotalThroughputMibps *float64 `json:"totalThroughputMibps,omitempty"`
1526	// UtilizedThroughputMibps - READ-ONLY; Utilized throughput of pool in Mibps
1527	UtilizedThroughputMibps *float64 `json:"utilizedThroughputMibps,omitempty"`
1528	// QosType - The qos type of the pool. Possible values include: 'Auto', 'Manual'
1529	QosType QosType `json:"qosType,omitempty"`
1530}
1531
1532// MarshalJSON is the custom marshaler for PoolProperties.
1533func (pp PoolProperties) MarshalJSON() ([]byte, error) {
1534	objectMap := make(map[string]interface{})
1535	if pp.Size != nil {
1536		objectMap["size"] = pp.Size
1537	}
1538	if pp.ServiceLevel != "" {
1539		objectMap["serviceLevel"] = pp.ServiceLevel
1540	}
1541	if pp.QosType != "" {
1542		objectMap["qosType"] = pp.QosType
1543	}
1544	return json.Marshal(objectMap)
1545}
1546
1547// PoolsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1548// operation.
1549type PoolsCreateOrUpdateFuture struct {
1550	azure.FutureAPI
1551	// Result returns the result of the asynchronous operation.
1552	// If the operation has not completed it will return an error.
1553	Result func(PoolsClient) (CapacityPool, error)
1554}
1555
1556// PoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
1557type PoolsDeleteFuture struct {
1558	azure.FutureAPI
1559	// Result returns the result of the asynchronous operation.
1560	// If the operation has not completed it will return an error.
1561	Result func(PoolsClient) (autorest.Response, error)
1562}
1563
1564// PoolsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
1565type PoolsUpdateFuture struct {
1566	azure.FutureAPI
1567	// Result returns the result of the asynchronous operation.
1568	// If the operation has not completed it will return an error.
1569	Result func(PoolsClient) (CapacityPool, error)
1570}
1571
1572// QuotaAvailabilityRequest quota availability request content.
1573type QuotaAvailabilityRequest struct {
1574	// Name - Name of the resource to verify.
1575	Name *string `json:"name,omitempty"`
1576	// Type - Resource type used for verification. Possible values include: 'CheckQuotaNameResourceTypesMicrosoftNetAppnetAppAccounts', 'CheckQuotaNameResourceTypesMicrosoftNetAppnetAppAccountscapacityPools', 'CheckQuotaNameResourceTypesMicrosoftNetAppnetAppAccountscapacityPoolsvolumes', 'CheckQuotaNameResourceTypesMicrosoftNetAppnetAppAccountscapacityPoolsvolumessnapshots'
1577	Type CheckQuotaNameResourceTypes `json:"type,omitempty"`
1578	// ResourceGroup - Resource group name.
1579	ResourceGroup *string `json:"resourceGroup,omitempty"`
1580}
1581
1582// ReplicationObject replication properties
1583type ReplicationObject struct {
1584	// ReplicationID - Id
1585	ReplicationID *string `json:"replicationId,omitempty"`
1586	// EndpointType - Indicates whether the local volume is the source or destination for the Volume Replication. Possible values include: 'Src', 'Dst'
1587	EndpointType EndpointType `json:"endpointType,omitempty"`
1588	// ReplicationSchedule - Schedule. Possible values include: '10minutely', 'Hourly', 'Daily'
1589	ReplicationSchedule ReplicationSchedule `json:"replicationSchedule,omitempty"`
1590	// RemoteVolumeResourceID - The resource ID of the remote volume.
1591	RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty"`
1592	// RemoteVolumeRegion - The remote region for the other end of the Volume Replication.
1593	RemoteVolumeRegion *string `json:"remoteVolumeRegion,omitempty"`
1594}
1595
1596// ReplicationStatus replication status
1597type ReplicationStatus struct {
1598	autorest.Response `json:"-"`
1599	// Healthy - Replication health check
1600	Healthy *bool `json:"healthy,omitempty"`
1601	// RelationshipStatus - Status of the mirror relationship. Possible values include: 'Idle', 'Transferring'
1602	RelationshipStatus RelationshipStatus `json:"relationshipStatus,omitempty"`
1603	// MirrorState - The status of the replication. Possible values include: 'Uninitialized', 'Mirrored', 'Broken'
1604	MirrorState MirrorState `json:"mirrorState,omitempty"`
1605	// TotalProgress - The progress of the replication
1606	TotalProgress *string `json:"totalProgress,omitempty"`
1607	// ErrorMessage - Displays error message if the replication is in an error state
1608	ErrorMessage *string `json:"errorMessage,omitempty"`
1609}
1610
1611// ResourceNameAvailabilityRequest resource name availability request content.
1612type ResourceNameAvailabilityRequest struct {
1613	// Name - Resource name to verify.
1614	Name *string `json:"name,omitempty"`
1615	// Type - Resource type used for verification. Possible values include: 'MicrosoftNetAppnetAppAccounts', 'MicrosoftNetAppnetAppAccountscapacityPools', 'MicrosoftNetAppnetAppAccountscapacityPoolsvolumes', 'MicrosoftNetAppnetAppAccountscapacityPoolsvolumessnapshots'
1616	Type CheckNameResourceTypes `json:"type,omitempty"`
1617	// ResourceGroup - Resource group name.
1618	ResourceGroup *string `json:"resourceGroup,omitempty"`
1619}
1620
1621// ServiceSpecification one property of operation, include metric specifications.
1622type ServiceSpecification struct {
1623	// MetricSpecifications - Metric specifications of operation.
1624	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
1625}
1626
1627// Snapshot snapshot of a Volume
1628type Snapshot struct {
1629	autorest.Response `json:"-"`
1630	// Location - Resource location
1631	Location *string `json:"location,omitempty"`
1632	// ID - READ-ONLY; Resource Id
1633	ID *string `json:"id,omitempty"`
1634	// Name - READ-ONLY; Resource name
1635	Name *string `json:"name,omitempty"`
1636	// Type - READ-ONLY; Resource type
1637	Type *string `json:"type,omitempty"`
1638	// SnapshotProperties - Snapshot Properties
1639	*SnapshotProperties `json:"properties,omitempty"`
1640}
1641
1642// MarshalJSON is the custom marshaler for Snapshot.
1643func (s Snapshot) MarshalJSON() ([]byte, error) {
1644	objectMap := make(map[string]interface{})
1645	if s.Location != nil {
1646		objectMap["location"] = s.Location
1647	}
1648	if s.SnapshotProperties != nil {
1649		objectMap["properties"] = s.SnapshotProperties
1650	}
1651	return json.Marshal(objectMap)
1652}
1653
1654// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
1655func (s *Snapshot) UnmarshalJSON(body []byte) error {
1656	var m map[string]*json.RawMessage
1657	err := json.Unmarshal(body, &m)
1658	if err != nil {
1659		return err
1660	}
1661	for k, v := range m {
1662		switch k {
1663		case "location":
1664			if v != nil {
1665				var location string
1666				err = json.Unmarshal(*v, &location)
1667				if err != nil {
1668					return err
1669				}
1670				s.Location = &location
1671			}
1672		case "id":
1673			if v != nil {
1674				var ID string
1675				err = json.Unmarshal(*v, &ID)
1676				if err != nil {
1677					return err
1678				}
1679				s.ID = &ID
1680			}
1681		case "name":
1682			if v != nil {
1683				var name string
1684				err = json.Unmarshal(*v, &name)
1685				if err != nil {
1686					return err
1687				}
1688				s.Name = &name
1689			}
1690		case "type":
1691			if v != nil {
1692				var typeVar string
1693				err = json.Unmarshal(*v, &typeVar)
1694				if err != nil {
1695					return err
1696				}
1697				s.Type = &typeVar
1698			}
1699		case "properties":
1700			if v != nil {
1701				var snapshotProperties SnapshotProperties
1702				err = json.Unmarshal(*v, &snapshotProperties)
1703				if err != nil {
1704					return err
1705				}
1706				s.SnapshotProperties = &snapshotProperties
1707			}
1708		}
1709	}
1710
1711	return nil
1712}
1713
1714// SnapshotPoliciesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
1715// operation.
1716type SnapshotPoliciesDeleteFuture struct {
1717	azure.FutureAPI
1718	// Result returns the result of the asynchronous operation.
1719	// If the operation has not completed it will return an error.
1720	Result func(SnapshotPoliciesClient) (autorest.Response, error)
1721}
1722
1723// SnapshotPoliciesList list of Snapshot Policies
1724type SnapshotPoliciesList struct {
1725	autorest.Response `json:"-"`
1726	// Value - A list of snapshot policies
1727	Value *[]SnapshotPolicy `json:"value,omitempty"`
1728}
1729
1730// SnapshotPolicy snapshot policy information
1731type SnapshotPolicy struct {
1732	autorest.Response `json:"-"`
1733	// Location - Resource location
1734	Location *string `json:"location,omitempty"`
1735	// ID - READ-ONLY; Resource Id
1736	ID *string `json:"id,omitempty"`
1737	// Name - READ-ONLY; Resource name
1738	Name *string `json:"name,omitempty"`
1739	// Type - READ-ONLY; Resource type
1740	Type *string `json:"type,omitempty"`
1741	// Tags - Resource tags
1742	Tags map[string]*string `json:"tags"`
1743	// SnapshotPolicyProperties - Snapshot policy Properties
1744	*SnapshotPolicyProperties `json:"properties,omitempty"`
1745}
1746
1747// MarshalJSON is the custom marshaler for SnapshotPolicy.
1748func (sp SnapshotPolicy) MarshalJSON() ([]byte, error) {
1749	objectMap := make(map[string]interface{})
1750	if sp.Location != nil {
1751		objectMap["location"] = sp.Location
1752	}
1753	if sp.Tags != nil {
1754		objectMap["tags"] = sp.Tags
1755	}
1756	if sp.SnapshotPolicyProperties != nil {
1757		objectMap["properties"] = sp.SnapshotPolicyProperties
1758	}
1759	return json.Marshal(objectMap)
1760}
1761
1762// UnmarshalJSON is the custom unmarshaler for SnapshotPolicy struct.
1763func (sp *SnapshotPolicy) UnmarshalJSON(body []byte) error {
1764	var m map[string]*json.RawMessage
1765	err := json.Unmarshal(body, &m)
1766	if err != nil {
1767		return err
1768	}
1769	for k, v := range m {
1770		switch k {
1771		case "location":
1772			if v != nil {
1773				var location string
1774				err = json.Unmarshal(*v, &location)
1775				if err != nil {
1776					return err
1777				}
1778				sp.Location = &location
1779			}
1780		case "id":
1781			if v != nil {
1782				var ID string
1783				err = json.Unmarshal(*v, &ID)
1784				if err != nil {
1785					return err
1786				}
1787				sp.ID = &ID
1788			}
1789		case "name":
1790			if v != nil {
1791				var name string
1792				err = json.Unmarshal(*v, &name)
1793				if err != nil {
1794					return err
1795				}
1796				sp.Name = &name
1797			}
1798		case "type":
1799			if v != nil {
1800				var typeVar string
1801				err = json.Unmarshal(*v, &typeVar)
1802				if err != nil {
1803					return err
1804				}
1805				sp.Type = &typeVar
1806			}
1807		case "tags":
1808			if v != nil {
1809				var tags map[string]*string
1810				err = json.Unmarshal(*v, &tags)
1811				if err != nil {
1812					return err
1813				}
1814				sp.Tags = tags
1815			}
1816		case "properties":
1817			if v != nil {
1818				var snapshotPolicyProperties SnapshotPolicyProperties
1819				err = json.Unmarshal(*v, &snapshotPolicyProperties)
1820				if err != nil {
1821					return err
1822				}
1823				sp.SnapshotPolicyProperties = &snapshotPolicyProperties
1824			}
1825		}
1826	}
1827
1828	return nil
1829}
1830
1831// SnapshotPolicyDetails snapshot policy properties
1832type SnapshotPolicyDetails struct {
1833	// Location - Resource location
1834	Location *string `json:"location,omitempty"`
1835	// ID - READ-ONLY; Resource Id
1836	ID *string `json:"id,omitempty"`
1837	// Name - READ-ONLY; Resource name
1838	Name *string `json:"name,omitempty"`
1839	// Type - READ-ONLY; Resource type
1840	Type *string `json:"type,omitempty"`
1841	// Tags - Resource tags
1842	Tags map[string]*string `json:"tags"`
1843	// SnapshotPolicyProperties - Snapshot policy Properties
1844	*SnapshotPolicyProperties `json:"properties,omitempty"`
1845}
1846
1847// MarshalJSON is the custom marshaler for SnapshotPolicyDetails.
1848func (spd SnapshotPolicyDetails) MarshalJSON() ([]byte, error) {
1849	objectMap := make(map[string]interface{})
1850	if spd.Location != nil {
1851		objectMap["location"] = spd.Location
1852	}
1853	if spd.Tags != nil {
1854		objectMap["tags"] = spd.Tags
1855	}
1856	if spd.SnapshotPolicyProperties != nil {
1857		objectMap["properties"] = spd.SnapshotPolicyProperties
1858	}
1859	return json.Marshal(objectMap)
1860}
1861
1862// UnmarshalJSON is the custom unmarshaler for SnapshotPolicyDetails struct.
1863func (spd *SnapshotPolicyDetails) UnmarshalJSON(body []byte) error {
1864	var m map[string]*json.RawMessage
1865	err := json.Unmarshal(body, &m)
1866	if err != nil {
1867		return err
1868	}
1869	for k, v := range m {
1870		switch k {
1871		case "location":
1872			if v != nil {
1873				var location string
1874				err = json.Unmarshal(*v, &location)
1875				if err != nil {
1876					return err
1877				}
1878				spd.Location = &location
1879			}
1880		case "id":
1881			if v != nil {
1882				var ID string
1883				err = json.Unmarshal(*v, &ID)
1884				if err != nil {
1885					return err
1886				}
1887				spd.ID = &ID
1888			}
1889		case "name":
1890			if v != nil {
1891				var name string
1892				err = json.Unmarshal(*v, &name)
1893				if err != nil {
1894					return err
1895				}
1896				spd.Name = &name
1897			}
1898		case "type":
1899			if v != nil {
1900				var typeVar string
1901				err = json.Unmarshal(*v, &typeVar)
1902				if err != nil {
1903					return err
1904				}
1905				spd.Type = &typeVar
1906			}
1907		case "tags":
1908			if v != nil {
1909				var tags map[string]*string
1910				err = json.Unmarshal(*v, &tags)
1911				if err != nil {
1912					return err
1913				}
1914				spd.Tags = tags
1915			}
1916		case "properties":
1917			if v != nil {
1918				var snapshotPolicyProperties SnapshotPolicyProperties
1919				err = json.Unmarshal(*v, &snapshotPolicyProperties)
1920				if err != nil {
1921					return err
1922				}
1923				spd.SnapshotPolicyProperties = &snapshotPolicyProperties
1924			}
1925		}
1926	}
1927
1928	return nil
1929}
1930
1931// SnapshotPolicyPatch snapshot policy Details for create and update
1932type SnapshotPolicyPatch struct {
1933	// Location - Resource location
1934	Location *string `json:"location,omitempty"`
1935	// ID - READ-ONLY; Resource Id
1936	ID *string `json:"id,omitempty"`
1937	// Name - READ-ONLY; Resource name
1938	Name *string `json:"name,omitempty"`
1939	// Type - READ-ONLY; Resource type
1940	Type *string `json:"type,omitempty"`
1941	// Tags - Resource tags
1942	Tags map[string]*string `json:"tags"`
1943	// SnapshotPolicyProperties - Snapshot Policy properties
1944	*SnapshotPolicyProperties `json:"properties,omitempty"`
1945}
1946
1947// MarshalJSON is the custom marshaler for SnapshotPolicyPatch.
1948func (spp SnapshotPolicyPatch) MarshalJSON() ([]byte, error) {
1949	objectMap := make(map[string]interface{})
1950	if spp.Location != nil {
1951		objectMap["location"] = spp.Location
1952	}
1953	if spp.Tags != nil {
1954		objectMap["tags"] = spp.Tags
1955	}
1956	if spp.SnapshotPolicyProperties != nil {
1957		objectMap["properties"] = spp.SnapshotPolicyProperties
1958	}
1959	return json.Marshal(objectMap)
1960}
1961
1962// UnmarshalJSON is the custom unmarshaler for SnapshotPolicyPatch struct.
1963func (spp *SnapshotPolicyPatch) UnmarshalJSON(body []byte) error {
1964	var m map[string]*json.RawMessage
1965	err := json.Unmarshal(body, &m)
1966	if err != nil {
1967		return err
1968	}
1969	for k, v := range m {
1970		switch k {
1971		case "location":
1972			if v != nil {
1973				var location string
1974				err = json.Unmarshal(*v, &location)
1975				if err != nil {
1976					return err
1977				}
1978				spp.Location = &location
1979			}
1980		case "id":
1981			if v != nil {
1982				var ID string
1983				err = json.Unmarshal(*v, &ID)
1984				if err != nil {
1985					return err
1986				}
1987				spp.ID = &ID
1988			}
1989		case "name":
1990			if v != nil {
1991				var name string
1992				err = json.Unmarshal(*v, &name)
1993				if err != nil {
1994					return err
1995				}
1996				spp.Name = &name
1997			}
1998		case "type":
1999			if v != nil {
2000				var typeVar string
2001				err = json.Unmarshal(*v, &typeVar)
2002				if err != nil {
2003					return err
2004				}
2005				spp.Type = &typeVar
2006			}
2007		case "tags":
2008			if v != nil {
2009				var tags map[string]*string
2010				err = json.Unmarshal(*v, &tags)
2011				if err != nil {
2012					return err
2013				}
2014				spp.Tags = tags
2015			}
2016		case "properties":
2017			if v != nil {
2018				var snapshotPolicyProperties SnapshotPolicyProperties
2019				err = json.Unmarshal(*v, &snapshotPolicyProperties)
2020				if err != nil {
2021					return err
2022				}
2023				spp.SnapshotPolicyProperties = &snapshotPolicyProperties
2024			}
2025		}
2026	}
2027
2028	return nil
2029}
2030
2031// SnapshotPolicyProperties snapshot policy properties
2032type SnapshotPolicyProperties struct {
2033	// Name - READ-ONLY; Snapshot policy name
2034	Name *string `json:"name,omitempty"`
2035	// HourlySchedule - Schedule for hourly snapshots
2036	HourlySchedule *HourlySchedule `json:"hourlySchedule,omitempty"`
2037	// DailySchedule - Schedule for daily snapshots
2038	DailySchedule *DailySchedule `json:"dailySchedule,omitempty"`
2039	// WeeklySchedule - Schedule for weekly snapshots
2040	WeeklySchedule *WeeklySchedule `json:"weeklySchedule,omitempty"`
2041	// MonthlySchedule - Schedule for monthly snapshots
2042	MonthlySchedule *MonthlySchedule `json:"monthlySchedule,omitempty"`
2043	// Enabled - The property to decide policy is enabled or not
2044	Enabled *bool `json:"enabled,omitempty"`
2045	// ProvisioningState - READ-ONLY; Azure lifecycle management
2046	ProvisioningState *string `json:"provisioningState,omitempty"`
2047}
2048
2049// MarshalJSON is the custom marshaler for SnapshotPolicyProperties.
2050func (spp SnapshotPolicyProperties) MarshalJSON() ([]byte, error) {
2051	objectMap := make(map[string]interface{})
2052	if spp.HourlySchedule != nil {
2053		objectMap["hourlySchedule"] = spp.HourlySchedule
2054	}
2055	if spp.DailySchedule != nil {
2056		objectMap["dailySchedule"] = spp.DailySchedule
2057	}
2058	if spp.WeeklySchedule != nil {
2059		objectMap["weeklySchedule"] = spp.WeeklySchedule
2060	}
2061	if spp.MonthlySchedule != nil {
2062		objectMap["monthlySchedule"] = spp.MonthlySchedule
2063	}
2064	if spp.Enabled != nil {
2065		objectMap["enabled"] = spp.Enabled
2066	}
2067	return json.Marshal(objectMap)
2068}
2069
2070// SnapshotPolicyVolumeList volumes associated with snapshot policy
2071type SnapshotPolicyVolumeList struct {
2072	autorest.Response `json:"-"`
2073	// Value - List of volumes
2074	Value *[]interface{} `json:"value,omitempty"`
2075}
2076
2077// SnapshotProperties snapshot properties
2078type SnapshotProperties struct {
2079	// SnapshotID - READ-ONLY; UUID v4 used to identify the Snapshot
2080	SnapshotID *string `json:"snapshotId,omitempty"`
2081	// Created - READ-ONLY; The creation date of the snapshot
2082	Created *date.Time `json:"created,omitempty"`
2083	// ProvisioningState - READ-ONLY; Azure lifecycle management
2084	ProvisioningState *string `json:"provisioningState,omitempty"`
2085}
2086
2087// SnapshotsCreateFuture an abstraction for monitoring and retrieving the results of a long-running
2088// operation.
2089type SnapshotsCreateFuture struct {
2090	azure.FutureAPI
2091	// Result returns the result of the asynchronous operation.
2092	// If the operation has not completed it will return an error.
2093	Result func(SnapshotsClient) (Snapshot, error)
2094}
2095
2096// SnapshotsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
2097// operation.
2098type SnapshotsDeleteFuture struct {
2099	azure.FutureAPI
2100	// Result returns the result of the asynchronous operation.
2101	// If the operation has not completed it will return an error.
2102	Result func(SnapshotsClient) (autorest.Response, error)
2103}
2104
2105// SnapshotsList list of Snapshots
2106type SnapshotsList struct {
2107	autorest.Response `json:"-"`
2108	// Value - A list of Snapshots
2109	Value *[]Snapshot `json:"value,omitempty"`
2110}
2111
2112// SnapshotsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
2113// operation.
2114type SnapshotsUpdateFuture struct {
2115	azure.FutureAPI
2116	// Result returns the result of the asynchronous operation.
2117	// If the operation has not completed it will return an error.
2118	Result func(SnapshotsClient) (Snapshot, error)
2119}
2120
2121// Vault vault information
2122type Vault struct {
2123	// Location - Resource location
2124	Location *string `json:"location,omitempty"`
2125	// ID - READ-ONLY; Resource Id
2126	ID *string `json:"id,omitempty"`
2127	// Name - READ-ONLY; Resource name
2128	Name *string `json:"name,omitempty"`
2129	// Type - READ-ONLY; Resource type
2130	Type *string `json:"type,omitempty"`
2131	// VaultProperties - Vault Properties
2132	*VaultProperties `json:"properties,omitempty"`
2133}
2134
2135// MarshalJSON is the custom marshaler for Vault.
2136func (vVar Vault) MarshalJSON() ([]byte, error) {
2137	objectMap := make(map[string]interface{})
2138	if vVar.Location != nil {
2139		objectMap["location"] = vVar.Location
2140	}
2141	if vVar.VaultProperties != nil {
2142		objectMap["properties"] = vVar.VaultProperties
2143	}
2144	return json.Marshal(objectMap)
2145}
2146
2147// UnmarshalJSON is the custom unmarshaler for Vault struct.
2148func (vVar *Vault) UnmarshalJSON(body []byte) error {
2149	var m map[string]*json.RawMessage
2150	err := json.Unmarshal(body, &m)
2151	if err != nil {
2152		return err
2153	}
2154	for k, v := range m {
2155		switch k {
2156		case "location":
2157			if v != nil {
2158				var location string
2159				err = json.Unmarshal(*v, &location)
2160				if err != nil {
2161					return err
2162				}
2163				vVar.Location = &location
2164			}
2165		case "id":
2166			if v != nil {
2167				var ID string
2168				err = json.Unmarshal(*v, &ID)
2169				if err != nil {
2170					return err
2171				}
2172				vVar.ID = &ID
2173			}
2174		case "name":
2175			if v != nil {
2176				var name string
2177				err = json.Unmarshal(*v, &name)
2178				if err != nil {
2179					return err
2180				}
2181				vVar.Name = &name
2182			}
2183		case "type":
2184			if v != nil {
2185				var typeVar string
2186				err = json.Unmarshal(*v, &typeVar)
2187				if err != nil {
2188					return err
2189				}
2190				vVar.Type = &typeVar
2191			}
2192		case "properties":
2193			if v != nil {
2194				var vaultProperties VaultProperties
2195				err = json.Unmarshal(*v, &vaultProperties)
2196				if err != nil {
2197					return err
2198				}
2199				vVar.VaultProperties = &vaultProperties
2200			}
2201		}
2202	}
2203
2204	return nil
2205}
2206
2207// VaultList list of Vaults
2208type VaultList struct {
2209	autorest.Response `json:"-"`
2210	// Value - A list of vaults
2211	Value *[]Vault `json:"value,omitempty"`
2212}
2213
2214// VaultProperties vault properties
2215type VaultProperties struct {
2216	// VaultName - Vault Name
2217	VaultName *string `json:"vaultName,omitempty"`
2218}
2219
2220// Volume volume resource
2221type Volume struct {
2222	autorest.Response `json:"-"`
2223	// Location - Resource location
2224	Location *string `json:"location,omitempty"`
2225	// ID - READ-ONLY; Resource Id
2226	ID *string `json:"id,omitempty"`
2227	// Name - READ-ONLY; Resource name
2228	Name *string `json:"name,omitempty"`
2229	// Type - READ-ONLY; Resource type
2230	Type *string `json:"type,omitempty"`
2231	// Tags - Resource tags
2232	Tags map[string]*string `json:"tags"`
2233	// VolumeProperties - Volume properties
2234	*VolumeProperties `json:"properties,omitempty"`
2235}
2236
2237// MarshalJSON is the custom marshaler for Volume.
2238func (vVar Volume) MarshalJSON() ([]byte, error) {
2239	objectMap := make(map[string]interface{})
2240	if vVar.Location != nil {
2241		objectMap["location"] = vVar.Location
2242	}
2243	if vVar.Tags != nil {
2244		objectMap["tags"] = vVar.Tags
2245	}
2246	if vVar.VolumeProperties != nil {
2247		objectMap["properties"] = vVar.VolumeProperties
2248	}
2249	return json.Marshal(objectMap)
2250}
2251
2252// UnmarshalJSON is the custom unmarshaler for Volume struct.
2253func (vVar *Volume) UnmarshalJSON(body []byte) error {
2254	var m map[string]*json.RawMessage
2255	err := json.Unmarshal(body, &m)
2256	if err != nil {
2257		return err
2258	}
2259	for k, v := range m {
2260		switch k {
2261		case "location":
2262			if v != nil {
2263				var location string
2264				err = json.Unmarshal(*v, &location)
2265				if err != nil {
2266					return err
2267				}
2268				vVar.Location = &location
2269			}
2270		case "id":
2271			if v != nil {
2272				var ID string
2273				err = json.Unmarshal(*v, &ID)
2274				if err != nil {
2275					return err
2276				}
2277				vVar.ID = &ID
2278			}
2279		case "name":
2280			if v != nil {
2281				var name string
2282				err = json.Unmarshal(*v, &name)
2283				if err != nil {
2284					return err
2285				}
2286				vVar.Name = &name
2287			}
2288		case "type":
2289			if v != nil {
2290				var typeVar string
2291				err = json.Unmarshal(*v, &typeVar)
2292				if err != nil {
2293					return err
2294				}
2295				vVar.Type = &typeVar
2296			}
2297		case "tags":
2298			if v != nil {
2299				var tags map[string]*string
2300				err = json.Unmarshal(*v, &tags)
2301				if err != nil {
2302					return err
2303				}
2304				vVar.Tags = tags
2305			}
2306		case "properties":
2307			if v != nil {
2308				var volumeProperties VolumeProperties
2309				err = json.Unmarshal(*v, &volumeProperties)
2310				if err != nil {
2311					return err
2312				}
2313				vVar.VolumeProperties = &volumeProperties
2314			}
2315		}
2316	}
2317
2318	return nil
2319}
2320
2321// VolumeBackupProperties volume Backup Properties
2322type VolumeBackupProperties struct {
2323	// BackupPolicyID - Backup Policy Resource ID
2324	BackupPolicyID *string `json:"backupPolicyId,omitempty"`
2325	// PolicyEnforced - Policy Enforced
2326	PolicyEnforced *bool `json:"policyEnforced,omitempty"`
2327	// VaultID - Vault Resource ID
2328	VaultID *string `json:"vaultId,omitempty"`
2329	// BackupEnabled - Backup Enabled
2330	BackupEnabled *bool `json:"backupEnabled,omitempty"`
2331}
2332
2333// VolumeBackups volume details using the backup policy
2334type VolumeBackups struct {
2335	// VolumeName - Volume name
2336	VolumeName *string `json:"volumeName,omitempty"`
2337	// BackupsCount - Total count of backups for volume
2338	BackupsCount *int32 `json:"backupsCount,omitempty"`
2339	// PolicyEnabled - Policy enabled
2340	PolicyEnabled *bool `json:"policyEnabled,omitempty"`
2341}
2342
2343// VolumeList list of volume resources
2344type VolumeList struct {
2345	autorest.Response `json:"-"`
2346	// Value - List of volumes
2347	Value *[]Volume `json:"value,omitempty"`
2348}
2349
2350// VolumePatch volume patch resource
2351type VolumePatch struct {
2352	// Location - Resource location
2353	Location *string `json:"location,omitempty"`
2354	// ID - READ-ONLY; Resource Id
2355	ID *string `json:"id,omitempty"`
2356	// Name - READ-ONLY; Resource name
2357	Name *string `json:"name,omitempty"`
2358	// Type - READ-ONLY; Resource type
2359	Type *string `json:"type,omitempty"`
2360	// Tags - Resource tags
2361	Tags map[string]*string `json:"tags"`
2362	// VolumePatchProperties - Patchable volume properties
2363	*VolumePatchProperties `json:"properties,omitempty"`
2364}
2365
2366// MarshalJSON is the custom marshaler for VolumePatch.
2367func (vp VolumePatch) MarshalJSON() ([]byte, error) {
2368	objectMap := make(map[string]interface{})
2369	if vp.Location != nil {
2370		objectMap["location"] = vp.Location
2371	}
2372	if vp.Tags != nil {
2373		objectMap["tags"] = vp.Tags
2374	}
2375	if vp.VolumePatchProperties != nil {
2376		objectMap["properties"] = vp.VolumePatchProperties
2377	}
2378	return json.Marshal(objectMap)
2379}
2380
2381// UnmarshalJSON is the custom unmarshaler for VolumePatch struct.
2382func (vp *VolumePatch) UnmarshalJSON(body []byte) error {
2383	var m map[string]*json.RawMessage
2384	err := json.Unmarshal(body, &m)
2385	if err != nil {
2386		return err
2387	}
2388	for k, v := range m {
2389		switch k {
2390		case "location":
2391			if v != nil {
2392				var location string
2393				err = json.Unmarshal(*v, &location)
2394				if err != nil {
2395					return err
2396				}
2397				vp.Location = &location
2398			}
2399		case "id":
2400			if v != nil {
2401				var ID string
2402				err = json.Unmarshal(*v, &ID)
2403				if err != nil {
2404					return err
2405				}
2406				vp.ID = &ID
2407			}
2408		case "name":
2409			if v != nil {
2410				var name string
2411				err = json.Unmarshal(*v, &name)
2412				if err != nil {
2413					return err
2414				}
2415				vp.Name = &name
2416			}
2417		case "type":
2418			if v != nil {
2419				var typeVar string
2420				err = json.Unmarshal(*v, &typeVar)
2421				if err != nil {
2422					return err
2423				}
2424				vp.Type = &typeVar
2425			}
2426		case "tags":
2427			if v != nil {
2428				var tags map[string]*string
2429				err = json.Unmarshal(*v, &tags)
2430				if err != nil {
2431					return err
2432				}
2433				vp.Tags = tags
2434			}
2435		case "properties":
2436			if v != nil {
2437				var volumePatchProperties VolumePatchProperties
2438				err = json.Unmarshal(*v, &volumePatchProperties)
2439				if err != nil {
2440					return err
2441				}
2442				vp.VolumePatchProperties = &volumePatchProperties
2443			}
2444		}
2445	}
2446
2447	return nil
2448}
2449
2450// VolumePatchProperties patchable volume properties
2451type VolumePatchProperties struct {
2452	// ServiceLevel - The service level of the file system. Possible values include: 'Standard', 'Premium', 'Ultra'
2453	ServiceLevel ServiceLevel `json:"serviceLevel,omitempty"`
2454	// UsageThreshold - Maximum storage quota allowed for a file system in bytes. This is a soft quota used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB. Specified in bytes.
2455	UsageThreshold *int64 `json:"usageThreshold,omitempty"`
2456	// ExportPolicy - Set of export policy rules
2457	ExportPolicy    *VolumePatchPropertiesExportPolicy `json:"exportPolicy,omitempty"`
2458	ThroughputMibps *float64                           `json:"throughputMibps,omitempty"`
2459	// DataProtection - DataProtection type volumes include an object containing details of the replication
2460	DataProtection *VolumePatchPropertiesDataProtection `json:"dataProtection,omitempty"`
2461}
2462
2463// VolumePatchPropertiesDataProtection dataProtection type volumes include an object containing details of
2464// the replication
2465type VolumePatchPropertiesDataProtection struct {
2466	// Backup - Backup Properties
2467	Backup *VolumeBackupProperties `json:"backup,omitempty"`
2468}
2469
2470// VolumePatchPropertiesExportPolicy set of export policy rules
2471type VolumePatchPropertiesExportPolicy struct {
2472	// Rules - Export policy rule
2473	Rules *[]ExportPolicyRule `json:"rules,omitempty"`
2474}
2475
2476// VolumeProperties volume properties
2477type VolumeProperties struct {
2478	// FileSystemID - READ-ONLY; Unique FileSystem Identifier.
2479	FileSystemID *string `json:"fileSystemId,omitempty"`
2480	// CreationToken - A unique file path for the volume. Used when creating mount targets
2481	CreationToken *string `json:"creationToken,omitempty"`
2482	// ServiceLevel - The service level of the file system. Possible values include: 'Standard', 'Premium', 'Ultra'
2483	ServiceLevel ServiceLevel `json:"serviceLevel,omitempty"`
2484	// UsageThreshold - Maximum storage quota allowed for a file system in bytes. This is a soft quota used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB. Specified in bytes.
2485	UsageThreshold *int64 `json:"usageThreshold,omitempty"`
2486	// ExportPolicy - Set of export policy rules
2487	ExportPolicy *VolumePropertiesExportPolicy `json:"exportPolicy,omitempty"`
2488	// ProtocolTypes - Set of protocol types
2489	ProtocolTypes *[]string `json:"protocolTypes,omitempty"`
2490	// ProvisioningState - READ-ONLY; Azure lifecycle management
2491	ProvisioningState *string `json:"provisioningState,omitempty"`
2492	// SnapshotID - UUID v4 or resource identifier used to identify the Snapshot.
2493	SnapshotID *string `json:"snapshotId,omitempty"`
2494	// BackupID - UUID v4 or resource identifier used to identify the Backup.
2495	BackupID *string `json:"backupId,omitempty"`
2496	// BaremetalTenantID - READ-ONLY; Unique Baremetal Tenant Identifier.
2497	BaremetalTenantID *string `json:"baremetalTenantId,omitempty"`
2498	// SubnetID - The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
2499	SubnetID *string `json:"subnetId,omitempty"`
2500	// MountTargets - List of mount targets
2501	MountTargets *[]MountTargetProperties `json:"mountTargets,omitempty"`
2502	// VolumeType - What type of volume is this
2503	VolumeType *string `json:"volumeType,omitempty"`
2504	// DataProtection - DataProtection type volumes include an object containing details of the replication
2505	DataProtection *VolumePropertiesDataProtection `json:"dataProtection,omitempty"`
2506	// IsRestoring - Restoring
2507	IsRestoring *bool `json:"isRestoring,omitempty"`
2508	// SnapshotDirectoryVisible - If enabled (true) the volume will contain a read-only .snapshot directory which provides access to each of the volume's snapshots (default to true).
2509	SnapshotDirectoryVisible *bool `json:"snapshotDirectoryVisible,omitempty"`
2510	// KerberosEnabled - Describe if a volume is KerberosEnabled. To be use with swagger version 2020-05-01 or later
2511	KerberosEnabled *bool `json:"kerberosEnabled,omitempty"`
2512	// SecurityStyle - The security style of volume. Possible values include: 'Ntfs', 'Unix'
2513	SecurityStyle   SecurityStyle `json:"securityStyle,omitempty"`
2514	ThroughputMibps *float64      `json:"throughputMibps,omitempty"`
2515}
2516
2517// MarshalJSON is the custom marshaler for VolumeProperties.
2518func (vp VolumeProperties) MarshalJSON() ([]byte, error) {
2519	objectMap := make(map[string]interface{})
2520	if vp.CreationToken != nil {
2521		objectMap["creationToken"] = vp.CreationToken
2522	}
2523	if vp.ServiceLevel != "" {
2524		objectMap["serviceLevel"] = vp.ServiceLevel
2525	}
2526	if vp.UsageThreshold != nil {
2527		objectMap["usageThreshold"] = vp.UsageThreshold
2528	}
2529	if vp.ExportPolicy != nil {
2530		objectMap["exportPolicy"] = vp.ExportPolicy
2531	}
2532	if vp.ProtocolTypes != nil {
2533		objectMap["protocolTypes"] = vp.ProtocolTypes
2534	}
2535	if vp.SnapshotID != nil {
2536		objectMap["snapshotId"] = vp.SnapshotID
2537	}
2538	if vp.BackupID != nil {
2539		objectMap["backupId"] = vp.BackupID
2540	}
2541	if vp.SubnetID != nil {
2542		objectMap["subnetId"] = vp.SubnetID
2543	}
2544	if vp.MountTargets != nil {
2545		objectMap["mountTargets"] = vp.MountTargets
2546	}
2547	if vp.VolumeType != nil {
2548		objectMap["volumeType"] = vp.VolumeType
2549	}
2550	if vp.DataProtection != nil {
2551		objectMap["dataProtection"] = vp.DataProtection
2552	}
2553	if vp.IsRestoring != nil {
2554		objectMap["isRestoring"] = vp.IsRestoring
2555	}
2556	if vp.SnapshotDirectoryVisible != nil {
2557		objectMap["snapshotDirectoryVisible"] = vp.SnapshotDirectoryVisible
2558	}
2559	if vp.KerberosEnabled != nil {
2560		objectMap["kerberosEnabled"] = vp.KerberosEnabled
2561	}
2562	if vp.SecurityStyle != "" {
2563		objectMap["securityStyle"] = vp.SecurityStyle
2564	}
2565	if vp.ThroughputMibps != nil {
2566		objectMap["throughputMibps"] = vp.ThroughputMibps
2567	}
2568	return json.Marshal(objectMap)
2569}
2570
2571// VolumePropertiesDataProtection dataProtection type volumes include an object containing details of the
2572// replication
2573type VolumePropertiesDataProtection struct {
2574	// Backup - Backup Properties
2575	Backup *VolumeBackupProperties `json:"backup,omitempty"`
2576	// Replication - Replication properties
2577	Replication *ReplicationObject `json:"replication,omitempty"`
2578	// Snapshot - Snapshot properties.
2579	Snapshot *VolumeSnapshotProperties `json:"snapshot,omitempty"`
2580}
2581
2582// VolumePropertiesExportPolicy set of export policy rules
2583type VolumePropertiesExportPolicy struct {
2584	// Rules - Export policy rule
2585	Rules *[]ExportPolicyRule `json:"rules,omitempty"`
2586}
2587
2588// VolumeRevert revert a volume to the snapshot
2589type VolumeRevert struct {
2590	// SnapshotID - Resource id of the snapshot
2591	SnapshotID *string `json:"snapshotId,omitempty"`
2592}
2593
2594// VolumesAuthorizeReplicationFuture an abstraction for monitoring and retrieving the results of a
2595// long-running operation.
2596type VolumesAuthorizeReplicationFuture struct {
2597	azure.FutureAPI
2598	// Result returns the result of the asynchronous operation.
2599	// If the operation has not completed it will return an error.
2600	Result func(VolumesClient) (autorest.Response, error)
2601}
2602
2603// VolumesBreakReplicationFuture an abstraction for monitoring and retrieving the results of a long-running
2604// operation.
2605type VolumesBreakReplicationFuture struct {
2606	azure.FutureAPI
2607	// Result returns the result of the asynchronous operation.
2608	// If the operation has not completed it will return an error.
2609	Result func(VolumesClient) (autorest.Response, error)
2610}
2611
2612// VolumesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
2613// operation.
2614type VolumesCreateOrUpdateFuture struct {
2615	azure.FutureAPI
2616	// Result returns the result of the asynchronous operation.
2617	// If the operation has not completed it will return an error.
2618	Result func(VolumesClient) (Volume, error)
2619}
2620
2621// VolumesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
2622// operation.
2623type VolumesDeleteFuture struct {
2624	azure.FutureAPI
2625	// Result returns the result of the asynchronous operation.
2626	// If the operation has not completed it will return an error.
2627	Result func(VolumesClient) (autorest.Response, error)
2628}
2629
2630// VolumesDeleteReplicationFuture an abstraction for monitoring and retrieving the results of a
2631// long-running operation.
2632type VolumesDeleteReplicationFuture struct {
2633	azure.FutureAPI
2634	// Result returns the result of the asynchronous operation.
2635	// If the operation has not completed it will return an error.
2636	Result func(VolumesClient) (autorest.Response, error)
2637}
2638
2639// VolumeSnapshotProperties volume Snapshot Properties
2640type VolumeSnapshotProperties struct {
2641	// SnapshotPolicyID - Snapshot Policy ResourceId
2642	SnapshotPolicyID *string `json:"snapshotPolicyId,omitempty"`
2643}
2644
2645// VolumesPoolChangeFuture an abstraction for monitoring and retrieving the results of a long-running
2646// operation.
2647type VolumesPoolChangeFuture struct {
2648	azure.FutureAPI
2649	// Result returns the result of the asynchronous operation.
2650	// If the operation has not completed it will return an error.
2651	Result func(VolumesClient) (autorest.Response, error)
2652}
2653
2654// VolumesReInitializeReplicationFuture an abstraction for monitoring and retrieving the results of a
2655// long-running operation.
2656type VolumesReInitializeReplicationFuture struct {
2657	azure.FutureAPI
2658	// Result returns the result of the asynchronous operation.
2659	// If the operation has not completed it will return an error.
2660	Result func(VolumesClient) (autorest.Response, error)
2661}
2662
2663// VolumesResyncReplicationFuture an abstraction for monitoring and retrieving the results of a
2664// long-running operation.
2665type VolumesResyncReplicationFuture struct {
2666	azure.FutureAPI
2667	// Result returns the result of the asynchronous operation.
2668	// If the operation has not completed it will return an error.
2669	Result func(VolumesClient) (autorest.Response, error)
2670}
2671
2672// VolumesRevertFuture an abstraction for monitoring and retrieving the results of a long-running
2673// operation.
2674type VolumesRevertFuture struct {
2675	azure.FutureAPI
2676	// Result returns the result of the asynchronous operation.
2677	// If the operation has not completed it will return an error.
2678	Result func(VolumesClient) (autorest.Response, error)
2679}
2680
2681// VolumesUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
2682// operation.
2683type VolumesUpdateFuture struct {
2684	azure.FutureAPI
2685	// Result returns the result of the asynchronous operation.
2686	// If the operation has not completed it will return an error.
2687	Result func(VolumesClient) (Volume, error)
2688}
2689
2690// WeeklySchedule weekly Schedule properties, make a snapshot every week at a specific day or days
2691type WeeklySchedule struct {
2692	// SnapshotsToKeep - Weekly snapshot count to keep
2693	SnapshotsToKeep *int32 `json:"snapshotsToKeep,omitempty"`
2694	// Day - Indicates which weekdays snapshot should be taken, accepts a comma separated list of week day names in english
2695	Day *string `json:"day,omitempty"`
2696	// Hour - Indicates which hour in UTC timezone a snapshot should be taken
2697	Hour *int32 `json:"hour,omitempty"`
2698	// Minute - Indicates which minute snapshot should be taken
2699	Minute *int32 `json:"minute,omitempty"`
2700	// UsedBytes - Resource size in bytes, current storage usage for the volume in bytes
2701	UsedBytes *int64 `json:"usedBytes,omitempty"`
2702}
2703