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-02-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// AccountList list of NetApp account resources
132type AccountList struct {
133	autorest.Response `json:"-"`
134	// Value - Multiple NetApp accounts
135	Value *[]Account `json:"value,omitempty"`
136}
137
138// AccountPatch netApp account patch resource
139type AccountPatch struct {
140	// Location - Resource location
141	Location *string `json:"location,omitempty"`
142	// ID - READ-ONLY; Resource Id
143	ID *string `json:"id,omitempty"`
144	// Name - READ-ONLY; Resource name
145	Name *string `json:"name,omitempty"`
146	// Type - READ-ONLY; Resource type
147	Type *string `json:"type,omitempty"`
148	// Tags - Resource tags
149	Tags map[string]*string `json:"tags"`
150	// AccountProperties - NetApp Account properties
151	*AccountProperties `json:"properties,omitempty"`
152}
153
154// MarshalJSON is the custom marshaler for AccountPatch.
155func (ap AccountPatch) MarshalJSON() ([]byte, error) {
156	objectMap := make(map[string]interface{})
157	if ap.Location != nil {
158		objectMap["location"] = ap.Location
159	}
160	if ap.Tags != nil {
161		objectMap["tags"] = ap.Tags
162	}
163	if ap.AccountProperties != nil {
164		objectMap["properties"] = ap.AccountProperties
165	}
166	return json.Marshal(objectMap)
167}
168
169// UnmarshalJSON is the custom unmarshaler for AccountPatch struct.
170func (ap *AccountPatch) UnmarshalJSON(body []byte) error {
171	var m map[string]*json.RawMessage
172	err := json.Unmarshal(body, &m)
173	if err != nil {
174		return err
175	}
176	for k, v := range m {
177		switch k {
178		case "location":
179			if v != nil {
180				var location string
181				err = json.Unmarshal(*v, &location)
182				if err != nil {
183					return err
184				}
185				ap.Location = &location
186			}
187		case "id":
188			if v != nil {
189				var ID string
190				err = json.Unmarshal(*v, &ID)
191				if err != nil {
192					return err
193				}
194				ap.ID = &ID
195			}
196		case "name":
197			if v != nil {
198				var name string
199				err = json.Unmarshal(*v, &name)
200				if err != nil {
201					return err
202				}
203				ap.Name = &name
204			}
205		case "type":
206			if v != nil {
207				var typeVar string
208				err = json.Unmarshal(*v, &typeVar)
209				if err != nil {
210					return err
211				}
212				ap.Type = &typeVar
213			}
214		case "tags":
215			if v != nil {
216				var tags map[string]*string
217				err = json.Unmarshal(*v, &tags)
218				if err != nil {
219					return err
220				}
221				ap.Tags = tags
222			}
223		case "properties":
224			if v != nil {
225				var accountProperties AccountProperties
226				err = json.Unmarshal(*v, &accountProperties)
227				if err != nil {
228					return err
229				}
230				ap.AccountProperties = &accountProperties
231			}
232		}
233	}
234
235	return nil
236}
237
238// AccountProperties netApp account properties
239type AccountProperties struct {
240	// ProvisioningState - READ-ONLY; Azure lifecycle management
241	ProvisioningState *string `json:"provisioningState,omitempty"`
242	// ActiveDirectories - Active Directories
243	ActiveDirectories *[]ActiveDirectory `json:"activeDirectories,omitempty"`
244}
245
246// MarshalJSON is the custom marshaler for AccountProperties.
247func (ap AccountProperties) MarshalJSON() ([]byte, error) {
248	objectMap := make(map[string]interface{})
249	if ap.ActiveDirectories != nil {
250		objectMap["activeDirectories"] = ap.ActiveDirectories
251	}
252	return json.Marshal(objectMap)
253}
254
255// AccountsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
256// operation.
257type AccountsCreateOrUpdateFuture struct {
258	azure.FutureAPI
259	// Result returns the result of the asynchronous operation.
260	// If the operation has not completed it will return an error.
261	Result func(AccountsClient) (Account, error)
262}
263
264// AccountsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
265// operation.
266type AccountsDeleteFuture 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) (autorest.Response, error)
271}
272
273// AccountsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
274// operation.
275type AccountsUpdateFuture 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) (Account, error)
280}
281
282// ActiveDirectory active Directory
283type ActiveDirectory struct {
284	// ActiveDirectoryID - Id of the Active Directory
285	ActiveDirectoryID *string `json:"activeDirectoryId,omitempty"`
286	// Username - Username of Active Directory domain administrator
287	Username *string `json:"username,omitempty"`
288	// Password - Plain text password of Active Directory domain administrator
289	Password *string `json:"password,omitempty"`
290	// Domain - Name of the Active Directory domain
291	Domain *string `json:"domain,omitempty"`
292	// DNS - Comma separated list of DNS server IP addresses (IPv4 only) for the Active Directory domain
293	DNS *string `json:"dns,omitempty"`
294	// Status - Status of the Active Directory
295	Status *string `json:"status,omitempty"`
296	// SmbServerName - NetBIOS name of the SMB server. This name will be registered as a computer account in the AD and used to mount volumes
297	SmbServerName *string `json:"smbServerName,omitempty"`
298	// OrganizationalUnit - The Organizational Unit (OU) within the Windows Active Directory
299	OrganizationalUnit *string `json:"organizationalUnit,omitempty"`
300	// Site - The Active Directory site the service will limit Domain Controller discovery to
301	Site *string `json:"site,omitempty"`
302	// BackupOperators - Users to be added to the Built-in Backup Operator active directory group. A list of unique usernames without domain specifier
303	BackupOperators *[]string `json:"backupOperators,omitempty"`
304}
305
306// AuthorizeRequest authorize request
307type AuthorizeRequest struct {
308	// RemoteVolumeResourceID - Resource id of the remote volume
309	RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty"`
310}
311
312// CapacityPool capacity pool resource
313type CapacityPool struct {
314	autorest.Response `json:"-"`
315	// Location - Resource location
316	Location *string `json:"location,omitempty"`
317	// ID - READ-ONLY; Resource Id
318	ID *string `json:"id,omitempty"`
319	// Name - READ-ONLY; Resource name
320	Name *string `json:"name,omitempty"`
321	// Type - READ-ONLY; Resource type
322	Type *string `json:"type,omitempty"`
323	// Tags - Resource tags
324	Tags map[string]*string `json:"tags"`
325	// PoolProperties - Capacity pool properties
326	*PoolProperties `json:"properties,omitempty"`
327}
328
329// MarshalJSON is the custom marshaler for CapacityPool.
330func (cp CapacityPool) MarshalJSON() ([]byte, error) {
331	objectMap := make(map[string]interface{})
332	if cp.Location != nil {
333		objectMap["location"] = cp.Location
334	}
335	if cp.Tags != nil {
336		objectMap["tags"] = cp.Tags
337	}
338	if cp.PoolProperties != nil {
339		objectMap["properties"] = cp.PoolProperties
340	}
341	return json.Marshal(objectMap)
342}
343
344// UnmarshalJSON is the custom unmarshaler for CapacityPool struct.
345func (cp *CapacityPool) UnmarshalJSON(body []byte) error {
346	var m map[string]*json.RawMessage
347	err := json.Unmarshal(body, &m)
348	if err != nil {
349		return err
350	}
351	for k, v := range m {
352		switch k {
353		case "location":
354			if v != nil {
355				var location string
356				err = json.Unmarshal(*v, &location)
357				if err != nil {
358					return err
359				}
360				cp.Location = &location
361			}
362		case "id":
363			if v != nil {
364				var ID string
365				err = json.Unmarshal(*v, &ID)
366				if err != nil {
367					return err
368				}
369				cp.ID = &ID
370			}
371		case "name":
372			if v != nil {
373				var name string
374				err = json.Unmarshal(*v, &name)
375				if err != nil {
376					return err
377				}
378				cp.Name = &name
379			}
380		case "type":
381			if v != nil {
382				var typeVar string
383				err = json.Unmarshal(*v, &typeVar)
384				if err != nil {
385					return err
386				}
387				cp.Type = &typeVar
388			}
389		case "tags":
390			if v != nil {
391				var tags map[string]*string
392				err = json.Unmarshal(*v, &tags)
393				if err != nil {
394					return err
395				}
396				cp.Tags = tags
397			}
398		case "properties":
399			if v != nil {
400				var poolProperties PoolProperties
401				err = json.Unmarshal(*v, &poolProperties)
402				if err != nil {
403					return err
404				}
405				cp.PoolProperties = &poolProperties
406			}
407		}
408	}
409
410	return nil
411}
412
413// CapacityPoolList list of capacity pool resources
414type CapacityPoolList struct {
415	autorest.Response `json:"-"`
416	// Value - List of Capacity pools
417	Value *[]CapacityPool `json:"value,omitempty"`
418}
419
420// CapacityPoolPatch capacity pool patch resource
421type CapacityPoolPatch struct {
422	// Location - Resource location
423	Location *string `json:"location,omitempty"`
424	// ID - READ-ONLY; Resource Id
425	ID *string `json:"id,omitempty"`
426	// Name - READ-ONLY; Resource name
427	Name *string `json:"name,omitempty"`
428	// Type - READ-ONLY; Resource type
429	Type *string `json:"type,omitempty"`
430	// Tags - Resource tags
431	Tags map[string]*string `json:"tags"`
432	// PoolPatchProperties - Capacity pool properties
433	*PoolPatchProperties `json:"properties,omitempty"`
434}
435
436// MarshalJSON is the custom marshaler for CapacityPoolPatch.
437func (cpp CapacityPoolPatch) MarshalJSON() ([]byte, error) {
438	objectMap := make(map[string]interface{})
439	if cpp.Location != nil {
440		objectMap["location"] = cpp.Location
441	}
442	if cpp.Tags != nil {
443		objectMap["tags"] = cpp.Tags
444	}
445	if cpp.PoolPatchProperties != nil {
446		objectMap["properties"] = cpp.PoolPatchProperties
447	}
448	return json.Marshal(objectMap)
449}
450
451// UnmarshalJSON is the custom unmarshaler for CapacityPoolPatch struct.
452func (cpp *CapacityPoolPatch) UnmarshalJSON(body []byte) error {
453	var m map[string]*json.RawMessage
454	err := json.Unmarshal(body, &m)
455	if err != nil {
456		return err
457	}
458	for k, v := range m {
459		switch k {
460		case "location":
461			if v != nil {
462				var location string
463				err = json.Unmarshal(*v, &location)
464				if err != nil {
465					return err
466				}
467				cpp.Location = &location
468			}
469		case "id":
470			if v != nil {
471				var ID string
472				err = json.Unmarshal(*v, &ID)
473				if err != nil {
474					return err
475				}
476				cpp.ID = &ID
477			}
478		case "name":
479			if v != nil {
480				var name string
481				err = json.Unmarshal(*v, &name)
482				if err != nil {
483					return err
484				}
485				cpp.Name = &name
486			}
487		case "type":
488			if v != nil {
489				var typeVar string
490				err = json.Unmarshal(*v, &typeVar)
491				if err != nil {
492					return err
493				}
494				cpp.Type = &typeVar
495			}
496		case "tags":
497			if v != nil {
498				var tags map[string]*string
499				err = json.Unmarshal(*v, &tags)
500				if err != nil {
501					return err
502				}
503				cpp.Tags = tags
504			}
505		case "properties":
506			if v != nil {
507				var poolPatchProperties PoolPatchProperties
508				err = json.Unmarshal(*v, &poolPatchProperties)
509				if err != nil {
510					return err
511				}
512				cpp.PoolPatchProperties = &poolPatchProperties
513			}
514		}
515	}
516
517	return nil
518}
519
520// Dimension dimension of blobs, possibly be blob type or access tier.
521type Dimension struct {
522	// Name - Display name of dimension.
523	Name *string `json:"name,omitempty"`
524	// DisplayName - Display name of dimension.
525	DisplayName *string `json:"displayName,omitempty"`
526}
527
528// ExportPolicyRule volume Export Policy Rule
529type ExportPolicyRule struct {
530	// RuleIndex - Order index
531	RuleIndex *int32 `json:"ruleIndex,omitempty"`
532	// UnixReadOnly - Read only access
533	UnixReadOnly *bool `json:"unixReadOnly,omitempty"`
534	// UnixReadWrite - Read and write access
535	UnixReadWrite *bool `json:"unixReadWrite,omitempty"`
536	// Cifs - Allows CIFS protocol
537	Cifs *bool `json:"cifs,omitempty"`
538	// Nfsv3 - Allows NFSv3 protocol. Enable only for NFSv3 type volumes
539	Nfsv3 *bool `json:"nfsv3,omitempty"`
540	// Nfsv41 - Allows NFSv4.1 protocol. Enable only for NFSv4.1 type volumes
541	Nfsv41 *bool `json:"nfsv41,omitempty"`
542	// AllowedClients - Client ingress specification as comma separated string with IPv4 CIDRs, IPv4 host addresses and host names
543	AllowedClients *string `json:"allowedClients,omitempty"`
544}
545
546// MetricSpecification metric specification of operation.
547type MetricSpecification struct {
548	// Name - Name of metric specification.
549	Name *string `json:"name,omitempty"`
550	// DisplayName - Display name of metric specification.
551	DisplayName *string `json:"displayName,omitempty"`
552	// DisplayDescription - Display description of metric specification.
553	DisplayDescription *string `json:"displayDescription,omitempty"`
554	// Unit - Unit could be Bytes or Count.
555	Unit *string `json:"unit,omitempty"`
556	// Dimensions - Dimensions of blobs, including blob type and access tier.
557	Dimensions *[]Dimension `json:"dimensions,omitempty"`
558	// AggregationType - Aggregation type could be Average.
559	AggregationType *string `json:"aggregationType,omitempty"`
560	// FillGapWithZero - The property to decide fill gap with zero or not.
561	FillGapWithZero *bool `json:"fillGapWithZero,omitempty"`
562	// Category - The category this metric specification belong to, could be Capacity.
563	Category *string `json:"category,omitempty"`
564	// ResourceIDDimensionNameOverride - Account Resource Id.
565	ResourceIDDimensionNameOverride *string `json:"resourceIdDimensionNameOverride,omitempty"`
566}
567
568// MountTarget mount Target
569type MountTarget struct {
570	// Location - Resource location
571	Location *string `json:"location,omitempty"`
572	// ID - READ-ONLY; Resource Id
573	ID *string `json:"id,omitempty"`
574	// Name - READ-ONLY; Resource name
575	Name *string `json:"name,omitempty"`
576	// Type - READ-ONLY; Resource type
577	Type *string `json:"type,omitempty"`
578	// Tags - Resource tags
579	Tags map[string]*string `json:"tags"`
580	// MountTargetProperties - Mount Target Properties
581	*MountTargetProperties `json:"properties,omitempty"`
582}
583
584// MarshalJSON is the custom marshaler for MountTarget.
585func (mt MountTarget) MarshalJSON() ([]byte, error) {
586	objectMap := make(map[string]interface{})
587	if mt.Location != nil {
588		objectMap["location"] = mt.Location
589	}
590	if mt.Tags != nil {
591		objectMap["tags"] = mt.Tags
592	}
593	if mt.MountTargetProperties != nil {
594		objectMap["properties"] = mt.MountTargetProperties
595	}
596	return json.Marshal(objectMap)
597}
598
599// UnmarshalJSON is the custom unmarshaler for MountTarget struct.
600func (mt *MountTarget) UnmarshalJSON(body []byte) error {
601	var m map[string]*json.RawMessage
602	err := json.Unmarshal(body, &m)
603	if err != nil {
604		return err
605	}
606	for k, v := range m {
607		switch k {
608		case "location":
609			if v != nil {
610				var location string
611				err = json.Unmarshal(*v, &location)
612				if err != nil {
613					return err
614				}
615				mt.Location = &location
616			}
617		case "id":
618			if v != nil {
619				var ID string
620				err = json.Unmarshal(*v, &ID)
621				if err != nil {
622					return err
623				}
624				mt.ID = &ID
625			}
626		case "name":
627			if v != nil {
628				var name string
629				err = json.Unmarshal(*v, &name)
630				if err != nil {
631					return err
632				}
633				mt.Name = &name
634			}
635		case "type":
636			if v != nil {
637				var typeVar string
638				err = json.Unmarshal(*v, &typeVar)
639				if err != nil {
640					return err
641				}
642				mt.Type = &typeVar
643			}
644		case "tags":
645			if v != nil {
646				var tags map[string]*string
647				err = json.Unmarshal(*v, &tags)
648				if err != nil {
649					return err
650				}
651				mt.Tags = tags
652			}
653		case "properties":
654			if v != nil {
655				var mountTargetProperties MountTargetProperties
656				err = json.Unmarshal(*v, &mountTargetProperties)
657				if err != nil {
658					return err
659				}
660				mt.MountTargetProperties = &mountTargetProperties
661			}
662		}
663	}
664
665	return nil
666}
667
668// MountTargetProperties mount target properties
669type MountTargetProperties struct {
670	// MountTargetID - READ-ONLY; UUID v4 used to identify the MountTarget
671	MountTargetID *string `json:"mountTargetId,omitempty"`
672	// FileSystemID - UUID v4 used to identify the MountTarget
673	FileSystemID *string `json:"fileSystemId,omitempty"`
674	// IPAddress - READ-ONLY; The mount target's IPv4 address
675	IPAddress *string `json:"ipAddress,omitempty"`
676	// Subnet - The subnet
677	Subnet *string `json:"subnet,omitempty"`
678	// StartIP - The start of IPv4 address range to use when creating a new mount target
679	StartIP *string `json:"startIp,omitempty"`
680	// EndIP - The end of IPv4 address range to use when creating a new mount target
681	EndIP *string `json:"endIp,omitempty"`
682	// Gateway - The gateway of the IPv4 address range to use when creating a new mount target
683	Gateway *string `json:"gateway,omitempty"`
684	// Netmask - The netmask of the IPv4 address range to use when creating a new mount target
685	Netmask *string `json:"netmask,omitempty"`
686	// SmbServerFqdn - The SMB server's Fully Qualified Domain Name, FQDN
687	SmbServerFqdn *string `json:"smbServerFqdn,omitempty"`
688}
689
690// MarshalJSON is the custom marshaler for MountTargetProperties.
691func (mtp MountTargetProperties) MarshalJSON() ([]byte, error) {
692	objectMap := make(map[string]interface{})
693	if mtp.FileSystemID != nil {
694		objectMap["fileSystemId"] = mtp.FileSystemID
695	}
696	if mtp.Subnet != nil {
697		objectMap["subnet"] = mtp.Subnet
698	}
699	if mtp.StartIP != nil {
700		objectMap["startIp"] = mtp.StartIP
701	}
702	if mtp.EndIP != nil {
703		objectMap["endIp"] = mtp.EndIP
704	}
705	if mtp.Gateway != nil {
706		objectMap["gateway"] = mtp.Gateway
707	}
708	if mtp.Netmask != nil {
709		objectMap["netmask"] = mtp.Netmask
710	}
711	if mtp.SmbServerFqdn != nil {
712		objectMap["smbServerFqdn"] = mtp.SmbServerFqdn
713	}
714	return json.Marshal(objectMap)
715}
716
717// Operation microsoft.NetApp REST API operation definition.
718type Operation struct {
719	// Name - Operation name: {provider}/{resource}/{operation}
720	Name *string `json:"name,omitempty"`
721	// Display - Display metadata associated with the operation.
722	Display *OperationDisplay `json:"display,omitempty"`
723	// Origin - The origin of operations.
724	Origin *string `json:"origin,omitempty"`
725	// OperationProperties - Properties of operation, include metric specifications.
726	*OperationProperties `json:"properties,omitempty"`
727}
728
729// MarshalJSON is the custom marshaler for Operation.
730func (o Operation) MarshalJSON() ([]byte, error) {
731	objectMap := make(map[string]interface{})
732	if o.Name != nil {
733		objectMap["name"] = o.Name
734	}
735	if o.Display != nil {
736		objectMap["display"] = o.Display
737	}
738	if o.Origin != nil {
739		objectMap["origin"] = o.Origin
740	}
741	if o.OperationProperties != nil {
742		objectMap["properties"] = o.OperationProperties
743	}
744	return json.Marshal(objectMap)
745}
746
747// UnmarshalJSON is the custom unmarshaler for Operation struct.
748func (o *Operation) UnmarshalJSON(body []byte) error {
749	var m map[string]*json.RawMessage
750	err := json.Unmarshal(body, &m)
751	if err != nil {
752		return err
753	}
754	for k, v := range m {
755		switch k {
756		case "name":
757			if v != nil {
758				var name string
759				err = json.Unmarshal(*v, &name)
760				if err != nil {
761					return err
762				}
763				o.Name = &name
764			}
765		case "display":
766			if v != nil {
767				var display OperationDisplay
768				err = json.Unmarshal(*v, &display)
769				if err != nil {
770					return err
771				}
772				o.Display = &display
773			}
774		case "origin":
775			if v != nil {
776				var origin string
777				err = json.Unmarshal(*v, &origin)
778				if err != nil {
779					return err
780				}
781				o.Origin = &origin
782			}
783		case "properties":
784			if v != nil {
785				var operationProperties OperationProperties
786				err = json.Unmarshal(*v, &operationProperties)
787				if err != nil {
788					return err
789				}
790				o.OperationProperties = &operationProperties
791			}
792		}
793	}
794
795	return nil
796}
797
798// OperationDisplay display metadata associated with the operation.
799type OperationDisplay struct {
800	// Provider - Service provider: Microsoft NetApp.
801	Provider *string `json:"provider,omitempty"`
802	// Resource - Resource on which the operation is performed etc.
803	Resource *string `json:"resource,omitempty"`
804	// Operation - Type of operation: get, read, delete, etc.
805	Operation *string `json:"operation,omitempty"`
806	// Description - Operation description.
807	Description *string `json:"description,omitempty"`
808}
809
810// OperationListResult result of the request to list Cloud Volume operations. It contains a list of
811// operations and a URL link to get the next set of results.
812type OperationListResult struct {
813	autorest.Response `json:"-"`
814	// Value - List of Storage operations supported by the Storage resource provider.
815	Value *[]Operation `json:"value,omitempty"`
816}
817
818// OperationProperties properties of operation, include metric specifications.
819type OperationProperties struct {
820	// ServiceSpecification - One property of operation, include metric specifications.
821	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
822}
823
824// PoolPatchProperties patchable pool properties
825type PoolPatchProperties struct {
826	// Size - Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must be multiply of 4398046511104).
827	Size *int64 `json:"size,omitempty"`
828	// ServiceLevel - The service level of the file system. Possible values include: 'Standard', 'Premium', 'Ultra'
829	ServiceLevel PatchServiceLevel `json:"serviceLevel,omitempty"`
830}
831
832// PoolProperties pool properties
833type PoolProperties struct {
834	// PoolID - READ-ONLY; UUID v4 used to identify the Pool
835	PoolID *string `json:"poolId,omitempty"`
836	// Size - Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must be multiply of 4398046511104).
837	Size *int64 `json:"size,omitempty"`
838	// ServiceLevel - The service level of the file system. Possible values include: 'PoolServiceLevelStandard', 'PoolServiceLevelPremium', 'PoolServiceLevelUltra'
839	ServiceLevel PoolServiceLevel `json:"serviceLevel,omitempty"`
840	// ProvisioningState - READ-ONLY; Azure lifecycle management
841	ProvisioningState *string `json:"provisioningState,omitempty"`
842}
843
844// MarshalJSON is the custom marshaler for PoolProperties.
845func (pp PoolProperties) MarshalJSON() ([]byte, error) {
846	objectMap := make(map[string]interface{})
847	if pp.Size != nil {
848		objectMap["size"] = pp.Size
849	}
850	if pp.ServiceLevel != "" {
851		objectMap["serviceLevel"] = pp.ServiceLevel
852	}
853	return json.Marshal(objectMap)
854}
855
856// PoolsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
857// operation.
858type PoolsCreateOrUpdateFuture struct {
859	azure.FutureAPI
860	// Result returns the result of the asynchronous operation.
861	// If the operation has not completed it will return an error.
862	Result func(PoolsClient) (CapacityPool, error)
863}
864
865// PoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
866type PoolsDeleteFuture struct {
867	azure.FutureAPI
868	// Result returns the result of the asynchronous operation.
869	// If the operation has not completed it will return an error.
870	Result func(PoolsClient) (autorest.Response, error)
871}
872
873// PoolsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
874type PoolsUpdateFuture struct {
875	azure.FutureAPI
876	// Result returns the result of the asynchronous operation.
877	// If the operation has not completed it will return an error.
878	Result func(PoolsClient) (CapacityPool, error)
879}
880
881// ReplicationObject replication properties
882type ReplicationObject struct {
883	// ReplicationID - Id
884	ReplicationID *string `json:"replicationId,omitempty"`
885	// EndpointType - Indicates whether the local volume is the source or destination for the Volume Replication. Possible values include: 'Src', 'Dst'
886	EndpointType EndpointType `json:"endpointType,omitempty"`
887	// ReplicationSchedule - Schedule. Possible values include: '10minutely', 'Hourly', 'Daily'
888	ReplicationSchedule ReplicationSchedule `json:"replicationSchedule,omitempty"`
889	// RemoteVolumeResourceID - The resource ID of the remote volume.
890	RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty"`
891	// RemoteVolumeRegion - The remote region for the other end of the Volume Replication.
892	RemoteVolumeRegion *string `json:"remoteVolumeRegion,omitempty"`
893}
894
895// ReplicationStatus replication status
896type ReplicationStatus struct {
897	autorest.Response `json:"-"`
898	// Healthy - Replication health check
899	Healthy *bool `json:"healthy,omitempty"`
900	// RelationshipStatus - Status of the mirror relationship. Possible values include: 'Idle', 'Transferring'
901	RelationshipStatus RelationshipStatus `json:"relationshipStatus,omitempty"`
902	// MirrorState - The status of the replication. Possible values include: 'Uninitialized', 'Mirrored', 'Broken'
903	MirrorState MirrorState `json:"mirrorState,omitempty"`
904	// TotalProgress - The progress of the replication
905	TotalProgress *string `json:"totalProgress,omitempty"`
906	// ErrorMessage - Displays error message if the replication is in an error state
907	ErrorMessage *string `json:"errorMessage,omitempty"`
908}
909
910// ResourceNameAvailability information regarding availability of a resource name.
911type ResourceNameAvailability struct {
912	autorest.Response `json:"-"`
913	// IsAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
914	IsAvailable *bool `json:"isAvailable,omitempty"`
915	// 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'
916	Reason InAvailabilityReasonType `json:"reason,omitempty"`
917	// 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.
918	Message *string `json:"message,omitempty"`
919}
920
921// ResourceNameAvailabilityRequest resource name availability request content.
922type ResourceNameAvailabilityRequest struct {
923	// Name - Resource name to verify.
924	Name *string `json:"name,omitempty"`
925	// Type - Resource type used for verification. Possible values include: 'MicrosoftNetAppnetAppAccounts', 'MicrosoftNetAppnetAppAccountscapacityPools', 'MicrosoftNetAppnetAppAccountscapacityPoolsvolumes', 'MicrosoftNetAppnetAppAccountscapacityPoolsvolumessnapshots'
926	Type CheckNameResourceTypes `json:"type,omitempty"`
927	// ResourceGroup - Resource group name.
928	ResourceGroup *string `json:"resourceGroup,omitempty"`
929}
930
931// ServiceSpecification one property of operation, include metric specifications.
932type ServiceSpecification struct {
933	// MetricSpecifications - Metric specifications of operation.
934	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
935}
936
937// Snapshot snapshot of a Volume
938type Snapshot struct {
939	autorest.Response `json:"-"`
940	// Location - Resource location
941	Location *string `json:"location,omitempty"`
942	// ID - READ-ONLY; Resource Id
943	ID *string `json:"id,omitempty"`
944	// Name - READ-ONLY; Resource name
945	Name *string `json:"name,omitempty"`
946	// Type - READ-ONLY; Resource type
947	Type *string `json:"type,omitempty"`
948	// SnapshotProperties - Snapshot Properties
949	*SnapshotProperties `json:"properties,omitempty"`
950}
951
952// MarshalJSON is the custom marshaler for Snapshot.
953func (s Snapshot) MarshalJSON() ([]byte, error) {
954	objectMap := make(map[string]interface{})
955	if s.Location != nil {
956		objectMap["location"] = s.Location
957	}
958	if s.SnapshotProperties != nil {
959		objectMap["properties"] = s.SnapshotProperties
960	}
961	return json.Marshal(objectMap)
962}
963
964// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
965func (s *Snapshot) UnmarshalJSON(body []byte) error {
966	var m map[string]*json.RawMessage
967	err := json.Unmarshal(body, &m)
968	if err != nil {
969		return err
970	}
971	for k, v := range m {
972		switch k {
973		case "location":
974			if v != nil {
975				var location string
976				err = json.Unmarshal(*v, &location)
977				if err != nil {
978					return err
979				}
980				s.Location = &location
981			}
982		case "id":
983			if v != nil {
984				var ID string
985				err = json.Unmarshal(*v, &ID)
986				if err != nil {
987					return err
988				}
989				s.ID = &ID
990			}
991		case "name":
992			if v != nil {
993				var name string
994				err = json.Unmarshal(*v, &name)
995				if err != nil {
996					return err
997				}
998				s.Name = &name
999			}
1000		case "type":
1001			if v != nil {
1002				var typeVar string
1003				err = json.Unmarshal(*v, &typeVar)
1004				if err != nil {
1005					return err
1006				}
1007				s.Type = &typeVar
1008			}
1009		case "properties":
1010			if v != nil {
1011				var snapshotProperties SnapshotProperties
1012				err = json.Unmarshal(*v, &snapshotProperties)
1013				if err != nil {
1014					return err
1015				}
1016				s.SnapshotProperties = &snapshotProperties
1017			}
1018		}
1019	}
1020
1021	return nil
1022}
1023
1024// SnapshotProperties snapshot properties
1025type SnapshotProperties struct {
1026	// SnapshotID - READ-ONLY; UUID v4 used to identify the Snapshot
1027	SnapshotID *string `json:"snapshotId,omitempty"`
1028	// Created - READ-ONLY; The creation date of the snapshot
1029	Created *date.Time `json:"created,omitempty"`
1030	// ProvisioningState - READ-ONLY; Azure lifecycle management
1031	ProvisioningState *string `json:"provisioningState,omitempty"`
1032}
1033
1034// SnapshotsCreateFuture an abstraction for monitoring and retrieving the results of a long-running
1035// operation.
1036type SnapshotsCreateFuture struct {
1037	azure.FutureAPI
1038	// Result returns the result of the asynchronous operation.
1039	// If the operation has not completed it will return an error.
1040	Result func(SnapshotsClient) (Snapshot, error)
1041}
1042
1043// SnapshotsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
1044// operation.
1045type SnapshotsDeleteFuture struct {
1046	azure.FutureAPI
1047	// Result returns the result of the asynchronous operation.
1048	// If the operation has not completed it will return an error.
1049	Result func(SnapshotsClient) (autorest.Response, error)
1050}
1051
1052// SnapshotsList list of Snapshots
1053type SnapshotsList struct {
1054	autorest.Response `json:"-"`
1055	// Value - A list of Snapshots
1056	Value *[]Snapshot `json:"value,omitempty"`
1057}
1058
1059// SnapshotsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1060// operation.
1061type SnapshotsUpdateFuture struct {
1062	azure.FutureAPI
1063	// Result returns the result of the asynchronous operation.
1064	// If the operation has not completed it will return an error.
1065	Result func(SnapshotsClient) (Snapshot, error)
1066}
1067
1068// Volume volume resource
1069type Volume struct {
1070	autorest.Response `json:"-"`
1071	// Location - Resource location
1072	Location *string `json:"location,omitempty"`
1073	// ID - READ-ONLY; Resource Id
1074	ID *string `json:"id,omitempty"`
1075	// Name - READ-ONLY; Resource name
1076	Name *string `json:"name,omitempty"`
1077	// Type - READ-ONLY; Resource type
1078	Type *string `json:"type,omitempty"`
1079	// Tags - Resource tags
1080	Tags map[string]*string `json:"tags"`
1081	// VolumeProperties - Volume properties
1082	*VolumeProperties `json:"properties,omitempty"`
1083}
1084
1085// MarshalJSON is the custom marshaler for Volume.
1086func (vVar Volume) MarshalJSON() ([]byte, error) {
1087	objectMap := make(map[string]interface{})
1088	if vVar.Location != nil {
1089		objectMap["location"] = vVar.Location
1090	}
1091	if vVar.Tags != nil {
1092		objectMap["tags"] = vVar.Tags
1093	}
1094	if vVar.VolumeProperties != nil {
1095		objectMap["properties"] = vVar.VolumeProperties
1096	}
1097	return json.Marshal(objectMap)
1098}
1099
1100// UnmarshalJSON is the custom unmarshaler for Volume struct.
1101func (vVar *Volume) UnmarshalJSON(body []byte) error {
1102	var m map[string]*json.RawMessage
1103	err := json.Unmarshal(body, &m)
1104	if err != nil {
1105		return err
1106	}
1107	for k, v := range m {
1108		switch k {
1109		case "location":
1110			if v != nil {
1111				var location string
1112				err = json.Unmarshal(*v, &location)
1113				if err != nil {
1114					return err
1115				}
1116				vVar.Location = &location
1117			}
1118		case "id":
1119			if v != nil {
1120				var ID string
1121				err = json.Unmarshal(*v, &ID)
1122				if err != nil {
1123					return err
1124				}
1125				vVar.ID = &ID
1126			}
1127		case "name":
1128			if v != nil {
1129				var name string
1130				err = json.Unmarshal(*v, &name)
1131				if err != nil {
1132					return err
1133				}
1134				vVar.Name = &name
1135			}
1136		case "type":
1137			if v != nil {
1138				var typeVar string
1139				err = json.Unmarshal(*v, &typeVar)
1140				if err != nil {
1141					return err
1142				}
1143				vVar.Type = &typeVar
1144			}
1145		case "tags":
1146			if v != nil {
1147				var tags map[string]*string
1148				err = json.Unmarshal(*v, &tags)
1149				if err != nil {
1150					return err
1151				}
1152				vVar.Tags = tags
1153			}
1154		case "properties":
1155			if v != nil {
1156				var volumeProperties VolumeProperties
1157				err = json.Unmarshal(*v, &volumeProperties)
1158				if err != nil {
1159					return err
1160				}
1161				vVar.VolumeProperties = &volumeProperties
1162			}
1163		}
1164	}
1165
1166	return nil
1167}
1168
1169// VolumeList list of volume resources
1170type VolumeList struct {
1171	autorest.Response `json:"-"`
1172	// Value - List of volumes
1173	Value *[]Volume `json:"value,omitempty"`
1174}
1175
1176// VolumePatch volume patch resource
1177type VolumePatch struct {
1178	// Location - Resource location
1179	Location *string `json:"location,omitempty"`
1180	// ID - READ-ONLY; Resource Id
1181	ID *string `json:"id,omitempty"`
1182	// Name - READ-ONLY; Resource name
1183	Name *string `json:"name,omitempty"`
1184	// Type - READ-ONLY; Resource type
1185	Type *string `json:"type,omitempty"`
1186	// Tags - Resource tags
1187	Tags map[string]*string `json:"tags"`
1188	// VolumePatchProperties - Patchable volume properties
1189	*VolumePatchProperties `json:"properties,omitempty"`
1190}
1191
1192// MarshalJSON is the custom marshaler for VolumePatch.
1193func (vp VolumePatch) MarshalJSON() ([]byte, error) {
1194	objectMap := make(map[string]interface{})
1195	if vp.Location != nil {
1196		objectMap["location"] = vp.Location
1197	}
1198	if vp.Tags != nil {
1199		objectMap["tags"] = vp.Tags
1200	}
1201	if vp.VolumePatchProperties != nil {
1202		objectMap["properties"] = vp.VolumePatchProperties
1203	}
1204	return json.Marshal(objectMap)
1205}
1206
1207// UnmarshalJSON is the custom unmarshaler for VolumePatch struct.
1208func (vp *VolumePatch) UnmarshalJSON(body []byte) error {
1209	var m map[string]*json.RawMessage
1210	err := json.Unmarshal(body, &m)
1211	if err != nil {
1212		return err
1213	}
1214	for k, v := range m {
1215		switch k {
1216		case "location":
1217			if v != nil {
1218				var location string
1219				err = json.Unmarshal(*v, &location)
1220				if err != nil {
1221					return err
1222				}
1223				vp.Location = &location
1224			}
1225		case "id":
1226			if v != nil {
1227				var ID string
1228				err = json.Unmarshal(*v, &ID)
1229				if err != nil {
1230					return err
1231				}
1232				vp.ID = &ID
1233			}
1234		case "name":
1235			if v != nil {
1236				var name string
1237				err = json.Unmarshal(*v, &name)
1238				if err != nil {
1239					return err
1240				}
1241				vp.Name = &name
1242			}
1243		case "type":
1244			if v != nil {
1245				var typeVar string
1246				err = json.Unmarshal(*v, &typeVar)
1247				if err != nil {
1248					return err
1249				}
1250				vp.Type = &typeVar
1251			}
1252		case "tags":
1253			if v != nil {
1254				var tags map[string]*string
1255				err = json.Unmarshal(*v, &tags)
1256				if err != nil {
1257					return err
1258				}
1259				vp.Tags = tags
1260			}
1261		case "properties":
1262			if v != nil {
1263				var volumePatchProperties VolumePatchProperties
1264				err = json.Unmarshal(*v, &volumePatchProperties)
1265				if err != nil {
1266					return err
1267				}
1268				vp.VolumePatchProperties = &volumePatchProperties
1269			}
1270		}
1271	}
1272
1273	return nil
1274}
1275
1276// VolumePatchProperties patchable volume properties
1277type VolumePatchProperties struct {
1278	// ServiceLevel - The service level of the file system. Possible values include: 'ServiceLevelStandard', 'ServiceLevelPremium', 'ServiceLevelUltra'
1279	ServiceLevel ServiceLevel `json:"serviceLevel,omitempty"`
1280	// 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.
1281	UsageThreshold *int64 `json:"usageThreshold,omitempty"`
1282	// ExportPolicy - Set of export policy rules
1283	ExportPolicy *VolumePatchPropertiesExportPolicy `json:"exportPolicy,omitempty"`
1284}
1285
1286// VolumePatchPropertiesExportPolicy set of export policy rules
1287type VolumePatchPropertiesExportPolicy struct {
1288	// Rules - Export policy rule
1289	Rules *[]ExportPolicyRule `json:"rules,omitempty"`
1290}
1291
1292// VolumeProperties volume properties
1293type VolumeProperties struct {
1294	// FileSystemID - READ-ONLY; Unique FileSystem Identifier.
1295	FileSystemID *string `json:"fileSystemId,omitempty"`
1296	// CreationToken - A unique file path for the volume. Used when creating mount targets
1297	CreationToken *string `json:"creationToken,omitempty"`
1298	// ServiceLevel - The service level of the file system. Possible values include: 'VolumeServiceLevelStandard', 'VolumeServiceLevelPremium', 'VolumeServiceLevelUltra'
1299	ServiceLevel VolumeServiceLevel `json:"serviceLevel,omitempty"`
1300	// 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.
1301	UsageThreshold *int64 `json:"usageThreshold,omitempty"`
1302	// ExportPolicy - Set of export policy rules
1303	ExportPolicy *VolumePropertiesExportPolicy `json:"exportPolicy,omitempty"`
1304	// ProtocolTypes - Set of protocol types
1305	ProtocolTypes *[]string `json:"protocolTypes,omitempty"`
1306	// ProvisioningState - READ-ONLY; Azure lifecycle management
1307	ProvisioningState *string `json:"provisioningState,omitempty"`
1308	// SnapshotID - UUID v4 or resource identifier used to identify the Snapshot.
1309	SnapshotID *string `json:"snapshotId,omitempty"`
1310	// BaremetalTenantID - READ-ONLY; Unique Baremetal Tenant Identifier.
1311	BaremetalTenantID *string `json:"baremetalTenantId,omitempty"`
1312	// SubnetID - The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
1313	SubnetID *string `json:"subnetId,omitempty"`
1314	// MountTargets - List of mount targets
1315	MountTargets *[]MountTargetProperties `json:"mountTargets,omitempty"`
1316	// VolumeType - What type of volume is this
1317	VolumeType *string `json:"volumeType,omitempty"`
1318	// DataProtection - DataProtection type volumes include an object containing details of the replication
1319	DataProtection *VolumePropertiesDataProtection `json:"dataProtection,omitempty"`
1320	// IsRestoring - Restoring
1321	IsRestoring *bool `json:"isRestoring,omitempty"`
1322	// 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).
1323	SnapshotDirectoryVisible *bool `json:"snapshotDirectoryVisible,omitempty"`
1324}
1325
1326// MarshalJSON is the custom marshaler for VolumeProperties.
1327func (vp VolumeProperties) MarshalJSON() ([]byte, error) {
1328	objectMap := make(map[string]interface{})
1329	if vp.CreationToken != nil {
1330		objectMap["creationToken"] = vp.CreationToken
1331	}
1332	if vp.ServiceLevel != "" {
1333		objectMap["serviceLevel"] = vp.ServiceLevel
1334	}
1335	if vp.UsageThreshold != nil {
1336		objectMap["usageThreshold"] = vp.UsageThreshold
1337	}
1338	if vp.ExportPolicy != nil {
1339		objectMap["exportPolicy"] = vp.ExportPolicy
1340	}
1341	if vp.ProtocolTypes != nil {
1342		objectMap["protocolTypes"] = vp.ProtocolTypes
1343	}
1344	if vp.SnapshotID != nil {
1345		objectMap["snapshotId"] = vp.SnapshotID
1346	}
1347	if vp.SubnetID != nil {
1348		objectMap["subnetId"] = vp.SubnetID
1349	}
1350	if vp.MountTargets != nil {
1351		objectMap["mountTargets"] = vp.MountTargets
1352	}
1353	if vp.VolumeType != nil {
1354		objectMap["volumeType"] = vp.VolumeType
1355	}
1356	if vp.DataProtection != nil {
1357		objectMap["dataProtection"] = vp.DataProtection
1358	}
1359	if vp.IsRestoring != nil {
1360		objectMap["isRestoring"] = vp.IsRestoring
1361	}
1362	if vp.SnapshotDirectoryVisible != nil {
1363		objectMap["snapshotDirectoryVisible"] = vp.SnapshotDirectoryVisible
1364	}
1365	return json.Marshal(objectMap)
1366}
1367
1368// VolumePropertiesDataProtection dataProtection type volumes include an object containing details of the
1369// replication
1370type VolumePropertiesDataProtection struct {
1371	// Replication - Replication properties
1372	Replication *ReplicationObject `json:"replication,omitempty"`
1373	// Snapshot - Snapshot properties.
1374	Snapshot *VolumeSnapshotProperties `json:"snapshot,omitempty"`
1375}
1376
1377// VolumePropertiesExportPolicy set of export policy rules
1378type VolumePropertiesExportPolicy struct {
1379	// Rules - Export policy rule
1380	Rules *[]ExportPolicyRule `json:"rules,omitempty"`
1381}
1382
1383// VolumeRevert revert a volume to the snapshot
1384type VolumeRevert struct {
1385	// SnapshotID - Resource id of the snapshot
1386	SnapshotID *string `json:"snapshotId,omitempty"`
1387}
1388
1389// VolumesAuthorizeReplicationFuture an abstraction for monitoring and retrieving the results of a
1390// long-running operation.
1391type VolumesAuthorizeReplicationFuture struct {
1392	azure.FutureAPI
1393	// Result returns the result of the asynchronous operation.
1394	// If the operation has not completed it will return an error.
1395	Result func(VolumesClient) (autorest.Response, error)
1396}
1397
1398// VolumesBreakReplicationFuture an abstraction for monitoring and retrieving the results of a long-running
1399// operation.
1400type VolumesBreakReplicationFuture struct {
1401	azure.FutureAPI
1402	// Result returns the result of the asynchronous operation.
1403	// If the operation has not completed it will return an error.
1404	Result func(VolumesClient) (autorest.Response, error)
1405}
1406
1407// VolumesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1408// operation.
1409type VolumesCreateOrUpdateFuture struct {
1410	azure.FutureAPI
1411	// Result returns the result of the asynchronous operation.
1412	// If the operation has not completed it will return an error.
1413	Result func(VolumesClient) (Volume, error)
1414}
1415
1416// VolumesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
1417// operation.
1418type VolumesDeleteFuture struct {
1419	azure.FutureAPI
1420	// Result returns the result of the asynchronous operation.
1421	// If the operation has not completed it will return an error.
1422	Result func(VolumesClient) (autorest.Response, error)
1423}
1424
1425// VolumesDeleteReplicationFuture an abstraction for monitoring and retrieving the results of a
1426// long-running operation.
1427type VolumesDeleteReplicationFuture struct {
1428	azure.FutureAPI
1429	// Result returns the result of the asynchronous operation.
1430	// If the operation has not completed it will return an error.
1431	Result func(VolumesClient) (autorest.Response, error)
1432}
1433
1434// VolumeSnapshotProperties volume Snapshot Properties
1435type VolumeSnapshotProperties struct {
1436	// SnapshotPolicyID - Snapshot Policy ResourceId
1437	SnapshotPolicyID *string `json:"snapshotPolicyId,omitempty"`
1438}
1439
1440// VolumesResyncReplicationFuture an abstraction for monitoring and retrieving the results of a
1441// long-running operation.
1442type VolumesResyncReplicationFuture struct {
1443	azure.FutureAPI
1444	// Result returns the result of the asynchronous operation.
1445	// If the operation has not completed it will return an error.
1446	Result func(VolumesClient) (autorest.Response, error)
1447}
1448
1449// VolumesRevertFuture an abstraction for monitoring and retrieving the results of a long-running
1450// operation.
1451type VolumesRevertFuture struct {
1452	azure.FutureAPI
1453	// Result returns the result of the asynchronous operation.
1454	// If the operation has not completed it will return an error.
1455	Result func(VolumesClient) (autorest.Response, error)
1456}
1457
1458// VolumesUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1459// operation.
1460type VolumesUpdateFuture struct {
1461	azure.FutureAPI
1462	// Result returns the result of the asynchronous operation.
1463	// If the operation has not completed it will return an error.
1464	Result func(VolumesClient) (Volume, error)
1465}
1466