1package netapp
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"encoding/json"
12	"github.com/Azure/go-autorest/autorest"
13	"github.com/Azure/go-autorest/autorest/azure"
14	"github.com/Azure/go-autorest/autorest/date"
15	"net/http"
16)
17
18// The package's fully qualified name.
19const fqdn = "github.com/Azure/azure-sdk-for-go/services/netapp/mgmt/2020-03-01/netapp"
20
21// Account netApp account resource
22type Account struct {
23	autorest.Response `json:"-"`
24	// Location - Resource location
25	Location *string `json:"location,omitempty"`
26	// ID - READ-ONLY; Resource Id
27	ID *string `json:"id,omitempty"`
28	// Name - READ-ONLY; Resource name
29	Name *string `json:"name,omitempty"`
30	// Type - READ-ONLY; Resource type
31	Type *string `json:"type,omitempty"`
32	// Tags - Resource tags
33	Tags map[string]*string `json:"tags"`
34	// AccountProperties - NetApp Account properties
35	*AccountProperties `json:"properties,omitempty"`
36}
37
38// MarshalJSON is the custom marshaler for Account.
39func (a Account) MarshalJSON() ([]byte, error) {
40	objectMap := make(map[string]interface{})
41	if a.Location != nil {
42		objectMap["location"] = a.Location
43	}
44	if a.Tags != nil {
45		objectMap["tags"] = a.Tags
46	}
47	if a.AccountProperties != nil {
48		objectMap["properties"] = a.AccountProperties
49	}
50	return json.Marshal(objectMap)
51}
52
53// UnmarshalJSON is the custom unmarshaler for Account struct.
54func (a *Account) UnmarshalJSON(body []byte) error {
55	var m map[string]*json.RawMessage
56	err := json.Unmarshal(body, &m)
57	if err != nil {
58		return err
59	}
60	for k, v := range m {
61		switch k {
62		case "location":
63			if v != nil {
64				var location string
65				err = json.Unmarshal(*v, &location)
66				if err != nil {
67					return err
68				}
69				a.Location = &location
70			}
71		case "id":
72			if v != nil {
73				var ID string
74				err = json.Unmarshal(*v, &ID)
75				if err != nil {
76					return err
77				}
78				a.ID = &ID
79			}
80		case "name":
81			if v != nil {
82				var name string
83				err = json.Unmarshal(*v, &name)
84				if err != nil {
85					return err
86				}
87				a.Name = &name
88			}
89		case "type":
90			if v != nil {
91				var typeVar string
92				err = json.Unmarshal(*v, &typeVar)
93				if err != nil {
94					return err
95				}
96				a.Type = &typeVar
97			}
98		case "tags":
99			if v != nil {
100				var tags map[string]*string
101				err = json.Unmarshal(*v, &tags)
102				if err != nil {
103					return err
104				}
105				a.Tags = tags
106			}
107		case "properties":
108			if v != nil {
109				var accountProperties AccountProperties
110				err = json.Unmarshal(*v, &accountProperties)
111				if err != nil {
112					return err
113				}
114				a.AccountProperties = &accountProperties
115			}
116		}
117	}
118
119	return nil
120}
121
122// AccountList list of NetApp account resources
123type AccountList struct {
124	autorest.Response `json:"-"`
125	// Value - Multiple NetApp accounts
126	Value *[]Account `json:"value,omitempty"`
127}
128
129// AccountPatch netApp account patch resource
130type AccountPatch struct {
131	// Location - Resource location
132	Location *string `json:"location,omitempty"`
133	// ID - READ-ONLY; Resource Id
134	ID *string `json:"id,omitempty"`
135	// Name - READ-ONLY; Resource name
136	Name *string `json:"name,omitempty"`
137	// Type - READ-ONLY; Resource type
138	Type *string `json:"type,omitempty"`
139	// Tags - Resource tags
140	Tags map[string]*string `json:"tags"`
141	// AccountProperties - NetApp Account properties
142	*AccountProperties `json:"properties,omitempty"`
143}
144
145// MarshalJSON is the custom marshaler for AccountPatch.
146func (ap AccountPatch) MarshalJSON() ([]byte, error) {
147	objectMap := make(map[string]interface{})
148	if ap.Location != nil {
149		objectMap["location"] = ap.Location
150	}
151	if ap.Tags != nil {
152		objectMap["tags"] = ap.Tags
153	}
154	if ap.AccountProperties != nil {
155		objectMap["properties"] = ap.AccountProperties
156	}
157	return json.Marshal(objectMap)
158}
159
160// UnmarshalJSON is the custom unmarshaler for AccountPatch struct.
161func (ap *AccountPatch) UnmarshalJSON(body []byte) error {
162	var m map[string]*json.RawMessage
163	err := json.Unmarshal(body, &m)
164	if err != nil {
165		return err
166	}
167	for k, v := range m {
168		switch k {
169		case "location":
170			if v != nil {
171				var location string
172				err = json.Unmarshal(*v, &location)
173				if err != nil {
174					return err
175				}
176				ap.Location = &location
177			}
178		case "id":
179			if v != nil {
180				var ID string
181				err = json.Unmarshal(*v, &ID)
182				if err != nil {
183					return err
184				}
185				ap.ID = &ID
186			}
187		case "name":
188			if v != nil {
189				var name string
190				err = json.Unmarshal(*v, &name)
191				if err != nil {
192					return err
193				}
194				ap.Name = &name
195			}
196		case "type":
197			if v != nil {
198				var typeVar string
199				err = json.Unmarshal(*v, &typeVar)
200				if err != nil {
201					return err
202				}
203				ap.Type = &typeVar
204			}
205		case "tags":
206			if v != nil {
207				var tags map[string]*string
208				err = json.Unmarshal(*v, &tags)
209				if err != nil {
210					return err
211				}
212				ap.Tags = tags
213			}
214		case "properties":
215			if v != nil {
216				var accountProperties AccountProperties
217				err = json.Unmarshal(*v, &accountProperties)
218				if err != nil {
219					return err
220				}
221				ap.AccountProperties = &accountProperties
222			}
223		}
224	}
225
226	return nil
227}
228
229// AccountProperties netApp account properties
230type AccountProperties struct {
231	// ProvisioningState - READ-ONLY; Azure lifecycle management
232	ProvisioningState *string `json:"provisioningState,omitempty"`
233	// ActiveDirectories - Active Directories
234	ActiveDirectories *[]ActiveDirectory `json:"activeDirectories,omitempty"`
235}
236
237// MarshalJSON is the custom marshaler for AccountProperties.
238func (ap AccountProperties) MarshalJSON() ([]byte, error) {
239	objectMap := make(map[string]interface{})
240	if ap.ActiveDirectories != nil {
241		objectMap["activeDirectories"] = ap.ActiveDirectories
242	}
243	return json.Marshal(objectMap)
244}
245
246// AccountsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
247// operation.
248type AccountsCreateOrUpdateFuture struct {
249	azure.FutureAPI
250	// Result returns the result of the asynchronous operation.
251	// If the operation has not completed it will return an error.
252	Result func(AccountsClient) (Account, error)
253}
254
255// UnmarshalJSON is the custom unmarshaller for CreateFuture.
256func (future *AccountsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
257	var azFuture azure.Future
258	if err := json.Unmarshal(body, &azFuture); err != nil {
259		return err
260	}
261	future.FutureAPI = &azFuture
262	future.Result = future.result
263	return nil
264}
265
266// result is the default implementation for AccountsCreateOrUpdateFuture.Result.
267func (future *AccountsCreateOrUpdateFuture) result(client AccountsClient) (a Account, err error) {
268	var done bool
269	done, err = future.DoneWithContext(context.Background(), client)
270	if err != nil {
271		err = autorest.NewErrorWithError(err, "netapp.AccountsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
272		return
273	}
274	if !done {
275		a.Response.Response = future.Response()
276		err = azure.NewAsyncOpIncompleteError("netapp.AccountsCreateOrUpdateFuture")
277		return
278	}
279	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
280	if a.Response.Response, err = future.GetResult(sender); err == nil && a.Response.Response.StatusCode != http.StatusNoContent {
281		a, err = client.CreateOrUpdateResponder(a.Response.Response)
282		if err != nil {
283			err = autorest.NewErrorWithError(err, "netapp.AccountsCreateOrUpdateFuture", "Result", a.Response.Response, "Failure responding to request")
284		}
285	}
286	return
287}
288
289// AccountsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
290// operation.
291type AccountsDeleteFuture struct {
292	azure.FutureAPI
293	// Result returns the result of the asynchronous operation.
294	// If the operation has not completed it will return an error.
295	Result func(AccountsClient) (autorest.Response, error)
296}
297
298// UnmarshalJSON is the custom unmarshaller for CreateFuture.
299func (future *AccountsDeleteFuture) UnmarshalJSON(body []byte) error {
300	var azFuture azure.Future
301	if err := json.Unmarshal(body, &azFuture); err != nil {
302		return err
303	}
304	future.FutureAPI = &azFuture
305	future.Result = future.result
306	return nil
307}
308
309// result is the default implementation for AccountsDeleteFuture.Result.
310func (future *AccountsDeleteFuture) result(client AccountsClient) (ar autorest.Response, err error) {
311	var done bool
312	done, err = future.DoneWithContext(context.Background(), client)
313	if err != nil {
314		err = autorest.NewErrorWithError(err, "netapp.AccountsDeleteFuture", "Result", future.Response(), "Polling failure")
315		return
316	}
317	if !done {
318		ar.Response = future.Response()
319		err = azure.NewAsyncOpIncompleteError("netapp.AccountsDeleteFuture")
320		return
321	}
322	ar.Response = future.Response()
323	return
324}
325
326// AccountsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
327// operation.
328type AccountsUpdateFuture struct {
329	azure.FutureAPI
330	// Result returns the result of the asynchronous operation.
331	// If the operation has not completed it will return an error.
332	Result func(AccountsClient) (Account, error)
333}
334
335// UnmarshalJSON is the custom unmarshaller for CreateFuture.
336func (future *AccountsUpdateFuture) UnmarshalJSON(body []byte) error {
337	var azFuture azure.Future
338	if err := json.Unmarshal(body, &azFuture); err != nil {
339		return err
340	}
341	future.FutureAPI = &azFuture
342	future.Result = future.result
343	return nil
344}
345
346// result is the default implementation for AccountsUpdateFuture.Result.
347func (future *AccountsUpdateFuture) result(client AccountsClient) (a Account, err error) {
348	var done bool
349	done, err = future.DoneWithContext(context.Background(), client)
350	if err != nil {
351		err = autorest.NewErrorWithError(err, "netapp.AccountsUpdateFuture", "Result", future.Response(), "Polling failure")
352		return
353	}
354	if !done {
355		a.Response.Response = future.Response()
356		err = azure.NewAsyncOpIncompleteError("netapp.AccountsUpdateFuture")
357		return
358	}
359	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
360	if a.Response.Response, err = future.GetResult(sender); err == nil && a.Response.Response.StatusCode != http.StatusNoContent {
361		a, err = client.UpdateResponder(a.Response.Response)
362		if err != nil {
363			err = autorest.NewErrorWithError(err, "netapp.AccountsUpdateFuture", "Result", a.Response.Response, "Failure responding to request")
364		}
365	}
366	return
367}
368
369// ActiveDirectory active Directory
370type ActiveDirectory struct {
371	// ActiveDirectoryID - Id of the Active Directory
372	ActiveDirectoryID *string `json:"activeDirectoryId,omitempty"`
373	// Username - Username of Active Directory domain administrator
374	Username *string `json:"username,omitempty"`
375	// Password - Plain text password of Active Directory domain administrator
376	Password *string `json:"password,omitempty"`
377	// Domain - Name of the Active Directory domain
378	Domain *string `json:"domain,omitempty"`
379	// DNS - Comma separated list of DNS server IP addresses (IPv4 only) for the Active Directory domain
380	DNS *string `json:"dns,omitempty"`
381	// Status - Status of the Active Directory
382	Status *string `json:"status,omitempty"`
383	// SmbServerName - NetBIOS name of the SMB server. This name will be registered as a computer account in the AD and used to mount volumes
384	SmbServerName *string `json:"smbServerName,omitempty"`
385	// OrganizationalUnit - The Organizational Unit (OU) within the Windows Active Directory
386	OrganizationalUnit *string `json:"organizationalUnit,omitempty"`
387	// Site - The Active Directory site the service will limit Domain Controller discovery to
388	Site *string `json:"site,omitempty"`
389	// BackupOperators - Users to be added to the Built-in Backup Operator active directory group. A list of unique usernames without domain specifier
390	BackupOperators *[]string `json:"backupOperators,omitempty"`
391}
392
393// AuthorizeRequest authorize request
394type AuthorizeRequest struct {
395	// RemoteVolumeResourceID - Resource id of the remote volume
396	RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty"`
397}
398
399// CapacityPool capacity pool resource
400type CapacityPool struct {
401	autorest.Response `json:"-"`
402	// Location - Resource location
403	Location *string `json:"location,omitempty"`
404	// ID - READ-ONLY; Resource Id
405	ID *string `json:"id,omitempty"`
406	// Name - READ-ONLY; Resource name
407	Name *string `json:"name,omitempty"`
408	// Type - READ-ONLY; Resource type
409	Type *string `json:"type,omitempty"`
410	// Tags - Resource tags
411	Tags map[string]*string `json:"tags"`
412	// PoolProperties - Capacity pool properties
413	*PoolProperties `json:"properties,omitempty"`
414}
415
416// MarshalJSON is the custom marshaler for CapacityPool.
417func (cp CapacityPool) MarshalJSON() ([]byte, error) {
418	objectMap := make(map[string]interface{})
419	if cp.Location != nil {
420		objectMap["location"] = cp.Location
421	}
422	if cp.Tags != nil {
423		objectMap["tags"] = cp.Tags
424	}
425	if cp.PoolProperties != nil {
426		objectMap["properties"] = cp.PoolProperties
427	}
428	return json.Marshal(objectMap)
429}
430
431// UnmarshalJSON is the custom unmarshaler for CapacityPool struct.
432func (cp *CapacityPool) UnmarshalJSON(body []byte) error {
433	var m map[string]*json.RawMessage
434	err := json.Unmarshal(body, &m)
435	if err != nil {
436		return err
437	}
438	for k, v := range m {
439		switch k {
440		case "location":
441			if v != nil {
442				var location string
443				err = json.Unmarshal(*v, &location)
444				if err != nil {
445					return err
446				}
447				cp.Location = &location
448			}
449		case "id":
450			if v != nil {
451				var ID string
452				err = json.Unmarshal(*v, &ID)
453				if err != nil {
454					return err
455				}
456				cp.ID = &ID
457			}
458		case "name":
459			if v != nil {
460				var name string
461				err = json.Unmarshal(*v, &name)
462				if err != nil {
463					return err
464				}
465				cp.Name = &name
466			}
467		case "type":
468			if v != nil {
469				var typeVar string
470				err = json.Unmarshal(*v, &typeVar)
471				if err != nil {
472					return err
473				}
474				cp.Type = &typeVar
475			}
476		case "tags":
477			if v != nil {
478				var tags map[string]*string
479				err = json.Unmarshal(*v, &tags)
480				if err != nil {
481					return err
482				}
483				cp.Tags = tags
484			}
485		case "properties":
486			if v != nil {
487				var poolProperties PoolProperties
488				err = json.Unmarshal(*v, &poolProperties)
489				if err != nil {
490					return err
491				}
492				cp.PoolProperties = &poolProperties
493			}
494		}
495	}
496
497	return nil
498}
499
500// CapacityPoolList list of capacity pool resources
501type CapacityPoolList struct {
502	autorest.Response `json:"-"`
503	// Value - List of Capacity pools
504	Value *[]CapacityPool `json:"value,omitempty"`
505}
506
507// CapacityPoolPatch capacity pool patch resource
508type CapacityPoolPatch struct {
509	// Location - Resource location
510	Location *string `json:"location,omitempty"`
511	// ID - READ-ONLY; Resource Id
512	ID *string `json:"id,omitempty"`
513	// Name - READ-ONLY; Resource name
514	Name *string `json:"name,omitempty"`
515	// Type - READ-ONLY; Resource type
516	Type *string `json:"type,omitempty"`
517	// Tags - Resource tags
518	Tags map[string]*string `json:"tags"`
519	// PoolPatchProperties - Capacity pool properties
520	*PoolPatchProperties `json:"properties,omitempty"`
521}
522
523// MarshalJSON is the custom marshaler for CapacityPoolPatch.
524func (cpp CapacityPoolPatch) MarshalJSON() ([]byte, error) {
525	objectMap := make(map[string]interface{})
526	if cpp.Location != nil {
527		objectMap["location"] = cpp.Location
528	}
529	if cpp.Tags != nil {
530		objectMap["tags"] = cpp.Tags
531	}
532	if cpp.PoolPatchProperties != nil {
533		objectMap["properties"] = cpp.PoolPatchProperties
534	}
535	return json.Marshal(objectMap)
536}
537
538// UnmarshalJSON is the custom unmarshaler for CapacityPoolPatch struct.
539func (cpp *CapacityPoolPatch) UnmarshalJSON(body []byte) error {
540	var m map[string]*json.RawMessage
541	err := json.Unmarshal(body, &m)
542	if err != nil {
543		return err
544	}
545	for k, v := range m {
546		switch k {
547		case "location":
548			if v != nil {
549				var location string
550				err = json.Unmarshal(*v, &location)
551				if err != nil {
552					return err
553				}
554				cpp.Location = &location
555			}
556		case "id":
557			if v != nil {
558				var ID string
559				err = json.Unmarshal(*v, &ID)
560				if err != nil {
561					return err
562				}
563				cpp.ID = &ID
564			}
565		case "name":
566			if v != nil {
567				var name string
568				err = json.Unmarshal(*v, &name)
569				if err != nil {
570					return err
571				}
572				cpp.Name = &name
573			}
574		case "type":
575			if v != nil {
576				var typeVar string
577				err = json.Unmarshal(*v, &typeVar)
578				if err != nil {
579					return err
580				}
581				cpp.Type = &typeVar
582			}
583		case "tags":
584			if v != nil {
585				var tags map[string]*string
586				err = json.Unmarshal(*v, &tags)
587				if err != nil {
588					return err
589				}
590				cpp.Tags = tags
591			}
592		case "properties":
593			if v != nil {
594				var poolPatchProperties PoolPatchProperties
595				err = json.Unmarshal(*v, &poolPatchProperties)
596				if err != nil {
597					return err
598				}
599				cpp.PoolPatchProperties = &poolPatchProperties
600			}
601		}
602	}
603
604	return nil
605}
606
607// Dimension dimension of blobs, possibly be blob type or access tier.
608type Dimension struct {
609	// Name - Display name of dimension.
610	Name *string `json:"name,omitempty"`
611	// DisplayName - Display name of dimension.
612	DisplayName *string `json:"displayName,omitempty"`
613}
614
615// ExportPolicyRule volume Export Policy Rule
616type ExportPolicyRule struct {
617	// RuleIndex - Order index
618	RuleIndex *int32 `json:"ruleIndex,omitempty"`
619	// UnixReadOnly - Read only access
620	UnixReadOnly *bool `json:"unixReadOnly,omitempty"`
621	// UnixReadWrite - Read and write access
622	UnixReadWrite *bool `json:"unixReadWrite,omitempty"`
623	// Cifs - Allows CIFS protocol
624	Cifs *bool `json:"cifs,omitempty"`
625	// Nfsv3 - Allows NFSv3 protocol. Enable only for NFSv3 type volumes
626	Nfsv3 *bool `json:"nfsv3,omitempty"`
627	// Nfsv41 - Allows NFSv4.1 protocol. Enable only for NFSv4.1 type volumes
628	Nfsv41 *bool `json:"nfsv41,omitempty"`
629	// AllowedClients - Client ingress specification as comma separated string with IPv4 CIDRs, IPv4 host addresses and host names
630	AllowedClients *string `json:"allowedClients,omitempty"`
631}
632
633// MetricSpecification metric specification of operation.
634type MetricSpecification struct {
635	// Name - Name of metric specification.
636	Name *string `json:"name,omitempty"`
637	// DisplayName - Display name of metric specification.
638	DisplayName *string `json:"displayName,omitempty"`
639	// DisplayDescription - Display description of metric specification.
640	DisplayDescription *string `json:"displayDescription,omitempty"`
641	// Unit - Unit could be Bytes or Count.
642	Unit *string `json:"unit,omitempty"`
643	// Dimensions - Dimensions of blobs, including blob type and access tier.
644	Dimensions *[]Dimension `json:"dimensions,omitempty"`
645	// AggregationType - Aggregation type could be Average.
646	AggregationType *string `json:"aggregationType,omitempty"`
647	// FillGapWithZero - The property to decide fill gap with zero or not.
648	FillGapWithZero *bool `json:"fillGapWithZero,omitempty"`
649	// Category - The category this metric specification belong to, could be Capacity.
650	Category *string `json:"category,omitempty"`
651	// ResourceIDDimensionNameOverride - Account Resource Id.
652	ResourceIDDimensionNameOverride *string `json:"resourceIdDimensionNameOverride,omitempty"`
653}
654
655// MountTarget mount Target
656type MountTarget struct {
657	// Location - Resource location
658	Location *string `json:"location,omitempty"`
659	// ID - READ-ONLY; Resource Id
660	ID *string `json:"id,omitempty"`
661	// Name - READ-ONLY; Resource name
662	Name *string `json:"name,omitempty"`
663	// Type - READ-ONLY; Resource type
664	Type *string `json:"type,omitempty"`
665	// Tags - Resource tags
666	Tags map[string]*string `json:"tags"`
667	// MountTargetProperties - Mount Target Properties
668	*MountTargetProperties `json:"properties,omitempty"`
669}
670
671// MarshalJSON is the custom marshaler for MountTarget.
672func (mt MountTarget) MarshalJSON() ([]byte, error) {
673	objectMap := make(map[string]interface{})
674	if mt.Location != nil {
675		objectMap["location"] = mt.Location
676	}
677	if mt.Tags != nil {
678		objectMap["tags"] = mt.Tags
679	}
680	if mt.MountTargetProperties != nil {
681		objectMap["properties"] = mt.MountTargetProperties
682	}
683	return json.Marshal(objectMap)
684}
685
686// UnmarshalJSON is the custom unmarshaler for MountTarget struct.
687func (mt *MountTarget) UnmarshalJSON(body []byte) error {
688	var m map[string]*json.RawMessage
689	err := json.Unmarshal(body, &m)
690	if err != nil {
691		return err
692	}
693	for k, v := range m {
694		switch k {
695		case "location":
696			if v != nil {
697				var location string
698				err = json.Unmarshal(*v, &location)
699				if err != nil {
700					return err
701				}
702				mt.Location = &location
703			}
704		case "id":
705			if v != nil {
706				var ID string
707				err = json.Unmarshal(*v, &ID)
708				if err != nil {
709					return err
710				}
711				mt.ID = &ID
712			}
713		case "name":
714			if v != nil {
715				var name string
716				err = json.Unmarshal(*v, &name)
717				if err != nil {
718					return err
719				}
720				mt.Name = &name
721			}
722		case "type":
723			if v != nil {
724				var typeVar string
725				err = json.Unmarshal(*v, &typeVar)
726				if err != nil {
727					return err
728				}
729				mt.Type = &typeVar
730			}
731		case "tags":
732			if v != nil {
733				var tags map[string]*string
734				err = json.Unmarshal(*v, &tags)
735				if err != nil {
736					return err
737				}
738				mt.Tags = tags
739			}
740		case "properties":
741			if v != nil {
742				var mountTargetProperties MountTargetProperties
743				err = json.Unmarshal(*v, &mountTargetProperties)
744				if err != nil {
745					return err
746				}
747				mt.MountTargetProperties = &mountTargetProperties
748			}
749		}
750	}
751
752	return nil
753}
754
755// MountTargetProperties mount target properties
756type MountTargetProperties struct {
757	// MountTargetID - READ-ONLY; UUID v4 used to identify the MountTarget
758	MountTargetID *string `json:"mountTargetId,omitempty"`
759	// FileSystemID - UUID v4 used to identify the MountTarget
760	FileSystemID *string `json:"fileSystemId,omitempty"`
761	// IPAddress - READ-ONLY; The mount target's IPv4 address
762	IPAddress *string `json:"ipAddress,omitempty"`
763	// Subnet - The subnet
764	Subnet *string `json:"subnet,omitempty"`
765	// StartIP - The start of IPv4 address range to use when creating a new mount target
766	StartIP *string `json:"startIp,omitempty"`
767	// EndIP - The end of IPv4 address range to use when creating a new mount target
768	EndIP *string `json:"endIp,omitempty"`
769	// Gateway - The gateway of the IPv4 address range to use when creating a new mount target
770	Gateway *string `json:"gateway,omitempty"`
771	// Netmask - The netmask of the IPv4 address range to use when creating a new mount target
772	Netmask *string `json:"netmask,omitempty"`
773	// SmbServerFqdn - The SMB server's Fully Qualified Domain Name, FQDN
774	SmbServerFqdn *string `json:"smbServerFqdn,omitempty"`
775}
776
777// MarshalJSON is the custom marshaler for MountTargetProperties.
778func (mtp MountTargetProperties) MarshalJSON() ([]byte, error) {
779	objectMap := make(map[string]interface{})
780	if mtp.FileSystemID != nil {
781		objectMap["fileSystemId"] = mtp.FileSystemID
782	}
783	if mtp.Subnet != nil {
784		objectMap["subnet"] = mtp.Subnet
785	}
786	if mtp.StartIP != nil {
787		objectMap["startIp"] = mtp.StartIP
788	}
789	if mtp.EndIP != nil {
790		objectMap["endIp"] = mtp.EndIP
791	}
792	if mtp.Gateway != nil {
793		objectMap["gateway"] = mtp.Gateway
794	}
795	if mtp.Netmask != nil {
796		objectMap["netmask"] = mtp.Netmask
797	}
798	if mtp.SmbServerFqdn != nil {
799		objectMap["smbServerFqdn"] = mtp.SmbServerFqdn
800	}
801	return json.Marshal(objectMap)
802}
803
804// Operation microsoft.NetApp REST API operation definition.
805type Operation struct {
806	// Name - Operation name: {provider}/{resource}/{operation}
807	Name *string `json:"name,omitempty"`
808	// Display - Display metadata associated with the operation.
809	Display *OperationDisplay `json:"display,omitempty"`
810	// Origin - The origin of operations.
811	Origin *string `json:"origin,omitempty"`
812	// OperationProperties - Properties of operation, include metric specifications.
813	*OperationProperties `json:"properties,omitempty"`
814}
815
816// MarshalJSON is the custom marshaler for Operation.
817func (o Operation) MarshalJSON() ([]byte, error) {
818	objectMap := make(map[string]interface{})
819	if o.Name != nil {
820		objectMap["name"] = o.Name
821	}
822	if o.Display != nil {
823		objectMap["display"] = o.Display
824	}
825	if o.Origin != nil {
826		objectMap["origin"] = o.Origin
827	}
828	if o.OperationProperties != nil {
829		objectMap["properties"] = o.OperationProperties
830	}
831	return json.Marshal(objectMap)
832}
833
834// UnmarshalJSON is the custom unmarshaler for Operation struct.
835func (o *Operation) UnmarshalJSON(body []byte) error {
836	var m map[string]*json.RawMessage
837	err := json.Unmarshal(body, &m)
838	if err != nil {
839		return err
840	}
841	for k, v := range m {
842		switch k {
843		case "name":
844			if v != nil {
845				var name string
846				err = json.Unmarshal(*v, &name)
847				if err != nil {
848					return err
849				}
850				o.Name = &name
851			}
852		case "display":
853			if v != nil {
854				var display OperationDisplay
855				err = json.Unmarshal(*v, &display)
856				if err != nil {
857					return err
858				}
859				o.Display = &display
860			}
861		case "origin":
862			if v != nil {
863				var origin string
864				err = json.Unmarshal(*v, &origin)
865				if err != nil {
866					return err
867				}
868				o.Origin = &origin
869			}
870		case "properties":
871			if v != nil {
872				var operationProperties OperationProperties
873				err = json.Unmarshal(*v, &operationProperties)
874				if err != nil {
875					return err
876				}
877				o.OperationProperties = &operationProperties
878			}
879		}
880	}
881
882	return nil
883}
884
885// OperationDisplay display metadata associated with the operation.
886type OperationDisplay struct {
887	// Provider - Service provider: Microsoft NetApp.
888	Provider *string `json:"provider,omitempty"`
889	// Resource - Resource on which the operation is performed etc.
890	Resource *string `json:"resource,omitempty"`
891	// Operation - Type of operation: get, read, delete, etc.
892	Operation *string `json:"operation,omitempty"`
893	// Description - Operation description.
894	Description *string `json:"description,omitempty"`
895}
896
897// OperationListResult result of the request to list Cloud Volume operations. It contains a list of
898// operations and a URL link to get the next set of results.
899type OperationListResult struct {
900	autorest.Response `json:"-"`
901	// Value - List of Storage operations supported by the Storage resource provider.
902	Value *[]Operation `json:"value,omitempty"`
903}
904
905// OperationProperties properties of operation, include metric specifications.
906type OperationProperties struct {
907	// ServiceSpecification - One property of operation, include metric specifications.
908	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
909}
910
911// PoolPatchProperties patchable pool properties
912type PoolPatchProperties struct {
913	// Size - Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must be multiply of 4398046511104).
914	Size *int64 `json:"size,omitempty"`
915	// ServiceLevel - The service level of the file system. Possible values include: 'Standard', 'Premium', 'Ultra'
916	ServiceLevel PatchServiceLevel `json:"serviceLevel,omitempty"`
917}
918
919// PoolProperties pool properties
920type PoolProperties struct {
921	// PoolID - READ-ONLY; UUID v4 used to identify the Pool
922	PoolID *string `json:"poolId,omitempty"`
923	// Size - Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must be multiply of 4398046511104).
924	Size *int64 `json:"size,omitempty"`
925	// ServiceLevel - The service level of the file system. Possible values include: 'ServiceLevelStandard', 'ServiceLevelPremium', 'ServiceLevelUltra'
926	ServiceLevel ServiceLevel `json:"serviceLevel,omitempty"`
927	// ProvisioningState - READ-ONLY; Azure lifecycle management
928	ProvisioningState *string `json:"provisioningState,omitempty"`
929}
930
931// MarshalJSON is the custom marshaler for PoolProperties.
932func (pp PoolProperties) MarshalJSON() ([]byte, error) {
933	objectMap := make(map[string]interface{})
934	if pp.Size != nil {
935		objectMap["size"] = pp.Size
936	}
937	if pp.ServiceLevel != "" {
938		objectMap["serviceLevel"] = pp.ServiceLevel
939	}
940	return json.Marshal(objectMap)
941}
942
943// PoolsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
944// operation.
945type PoolsCreateOrUpdateFuture struct {
946	azure.FutureAPI
947	// Result returns the result of the asynchronous operation.
948	// If the operation has not completed it will return an error.
949	Result func(PoolsClient) (CapacityPool, error)
950}
951
952// UnmarshalJSON is the custom unmarshaller for CreateFuture.
953func (future *PoolsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
954	var azFuture azure.Future
955	if err := json.Unmarshal(body, &azFuture); err != nil {
956		return err
957	}
958	future.FutureAPI = &azFuture
959	future.Result = future.result
960	return nil
961}
962
963// result is the default implementation for PoolsCreateOrUpdateFuture.Result.
964func (future *PoolsCreateOrUpdateFuture) result(client PoolsClient) (cp CapacityPool, err error) {
965	var done bool
966	done, err = future.DoneWithContext(context.Background(), client)
967	if err != nil {
968		err = autorest.NewErrorWithError(err, "netapp.PoolsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
969		return
970	}
971	if !done {
972		cp.Response.Response = future.Response()
973		err = azure.NewAsyncOpIncompleteError("netapp.PoolsCreateOrUpdateFuture")
974		return
975	}
976	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
977	if cp.Response.Response, err = future.GetResult(sender); err == nil && cp.Response.Response.StatusCode != http.StatusNoContent {
978		cp, err = client.CreateOrUpdateResponder(cp.Response.Response)
979		if err != nil {
980			err = autorest.NewErrorWithError(err, "netapp.PoolsCreateOrUpdateFuture", "Result", cp.Response.Response, "Failure responding to request")
981		}
982	}
983	return
984}
985
986// PoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
987type PoolsDeleteFuture struct {
988	azure.FutureAPI
989	// Result returns the result of the asynchronous operation.
990	// If the operation has not completed it will return an error.
991	Result func(PoolsClient) (autorest.Response, error)
992}
993
994// UnmarshalJSON is the custom unmarshaller for CreateFuture.
995func (future *PoolsDeleteFuture) UnmarshalJSON(body []byte) error {
996	var azFuture azure.Future
997	if err := json.Unmarshal(body, &azFuture); err != nil {
998		return err
999	}
1000	future.FutureAPI = &azFuture
1001	future.Result = future.result
1002	return nil
1003}
1004
1005// result is the default implementation for PoolsDeleteFuture.Result.
1006func (future *PoolsDeleteFuture) result(client PoolsClient) (ar autorest.Response, err error) {
1007	var done bool
1008	done, err = future.DoneWithContext(context.Background(), client)
1009	if err != nil {
1010		err = autorest.NewErrorWithError(err, "netapp.PoolsDeleteFuture", "Result", future.Response(), "Polling failure")
1011		return
1012	}
1013	if !done {
1014		ar.Response = future.Response()
1015		err = azure.NewAsyncOpIncompleteError("netapp.PoolsDeleteFuture")
1016		return
1017	}
1018	ar.Response = future.Response()
1019	return
1020}
1021
1022// PoolsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
1023type PoolsUpdateFuture struct {
1024	azure.FutureAPI
1025	// Result returns the result of the asynchronous operation.
1026	// If the operation has not completed it will return an error.
1027	Result func(PoolsClient) (CapacityPool, error)
1028}
1029
1030// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1031func (future *PoolsUpdateFuture) UnmarshalJSON(body []byte) error {
1032	var azFuture azure.Future
1033	if err := json.Unmarshal(body, &azFuture); err != nil {
1034		return err
1035	}
1036	future.FutureAPI = &azFuture
1037	future.Result = future.result
1038	return nil
1039}
1040
1041// result is the default implementation for PoolsUpdateFuture.Result.
1042func (future *PoolsUpdateFuture) result(client PoolsClient) (cp CapacityPool, err error) {
1043	var done bool
1044	done, err = future.DoneWithContext(context.Background(), client)
1045	if err != nil {
1046		err = autorest.NewErrorWithError(err, "netapp.PoolsUpdateFuture", "Result", future.Response(), "Polling failure")
1047		return
1048	}
1049	if !done {
1050		cp.Response.Response = future.Response()
1051		err = azure.NewAsyncOpIncompleteError("netapp.PoolsUpdateFuture")
1052		return
1053	}
1054	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1055	if cp.Response.Response, err = future.GetResult(sender); err == nil && cp.Response.Response.StatusCode != http.StatusNoContent {
1056		cp, err = client.UpdateResponder(cp.Response.Response)
1057		if err != nil {
1058			err = autorest.NewErrorWithError(err, "netapp.PoolsUpdateFuture", "Result", cp.Response.Response, "Failure responding to request")
1059		}
1060	}
1061	return
1062}
1063
1064// ReplicationObject replication properties
1065type ReplicationObject struct {
1066	// ReplicationID - Id
1067	ReplicationID *string `json:"replicationId,omitempty"`
1068	// EndpointType - Indicates whether the local volume is the source or destination for the Volume Replication. Possible values include: 'Src', 'Dst'
1069	EndpointType EndpointType `json:"endpointType,omitempty"`
1070	// ReplicationSchedule - Schedule. Possible values include: '10minutely', 'Hourly', 'Daily', 'Weekly', 'Monthly'
1071	ReplicationSchedule ReplicationSchedule `json:"replicationSchedule,omitempty"`
1072	// RemoteVolumeResourceID - The resource ID of the remote volume.
1073	RemoteVolumeResourceID *string `json:"remoteVolumeResourceId,omitempty"`
1074	// RemoteVolumeRegion - The remote region for the other end of the Volume Replication.
1075	RemoteVolumeRegion *string `json:"remoteVolumeRegion,omitempty"`
1076}
1077
1078// ReplicationStatus replication status
1079type ReplicationStatus struct {
1080	autorest.Response `json:"-"`
1081	// Healthy - Replication health check
1082	Healthy *bool `json:"healthy,omitempty"`
1083	// RelationshipStatus - Status of the mirror relationship. Possible values include: 'Idle', 'Transferring'
1084	RelationshipStatus RelationshipStatus `json:"relationshipStatus,omitempty"`
1085	// MirrorState - The status of the replication. Possible values include: 'Uninitialized', 'Mirrored', 'Broken'
1086	MirrorState MirrorState `json:"mirrorState,omitempty"`
1087	// TotalProgress - The progress of the replication
1088	TotalProgress *string `json:"totalProgress,omitempty"`
1089	// ErrorMessage - Displays error message if the replication is in an error state
1090	ErrorMessage *string `json:"errorMessage,omitempty"`
1091}
1092
1093// ResourceNameAvailability information regarding availability of a resource name.
1094type ResourceNameAvailability struct {
1095	autorest.Response `json:"-"`
1096	// IsAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
1097	IsAvailable *bool `json:"isAvailable,omitempty"`
1098	// 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'
1099	Reason InAvailabilityReasonType `json:"reason,omitempty"`
1100	// 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.
1101	Message *string `json:"message,omitempty"`
1102}
1103
1104// ResourceNameAvailabilityRequest resource name availability request content.
1105type ResourceNameAvailabilityRequest struct {
1106	// Name - Resource name to verify.
1107	Name *string `json:"name,omitempty"`
1108	// Type - Resource type used for verification. Possible values include: 'MicrosoftNetAppnetAppAccounts', 'MicrosoftNetAppnetAppAccountscapacityPools', 'MicrosoftNetAppnetAppAccountscapacityPoolsvolumes', 'MicrosoftNetAppnetAppAccountscapacityPoolsvolumessnapshots'
1109	Type CheckNameResourceTypes `json:"type,omitempty"`
1110	// ResourceGroup - Resource group name.
1111	ResourceGroup *string `json:"resourceGroup,omitempty"`
1112}
1113
1114// ServiceSpecification one property of operation, include metric specifications.
1115type ServiceSpecification struct {
1116	// MetricSpecifications - Metric specifications of operation.
1117	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
1118}
1119
1120// Snapshot snapshot of a Volume
1121type Snapshot struct {
1122	autorest.Response `json:"-"`
1123	// Location - Resource location
1124	Location *string `json:"location,omitempty"`
1125	// ID - READ-ONLY; Resource Id
1126	ID *string `json:"id,omitempty"`
1127	// Name - READ-ONLY; Resource name
1128	Name *string `json:"name,omitempty"`
1129	// Type - READ-ONLY; Resource type
1130	Type *string `json:"type,omitempty"`
1131	// SnapshotProperties - Snapshot Properties
1132	*SnapshotProperties `json:"properties,omitempty"`
1133}
1134
1135// MarshalJSON is the custom marshaler for Snapshot.
1136func (s Snapshot) MarshalJSON() ([]byte, error) {
1137	objectMap := make(map[string]interface{})
1138	if s.Location != nil {
1139		objectMap["location"] = s.Location
1140	}
1141	if s.SnapshotProperties != nil {
1142		objectMap["properties"] = s.SnapshotProperties
1143	}
1144	return json.Marshal(objectMap)
1145}
1146
1147// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
1148func (s *Snapshot) UnmarshalJSON(body []byte) error {
1149	var m map[string]*json.RawMessage
1150	err := json.Unmarshal(body, &m)
1151	if err != nil {
1152		return err
1153	}
1154	for k, v := range m {
1155		switch k {
1156		case "location":
1157			if v != nil {
1158				var location string
1159				err = json.Unmarshal(*v, &location)
1160				if err != nil {
1161					return err
1162				}
1163				s.Location = &location
1164			}
1165		case "id":
1166			if v != nil {
1167				var ID string
1168				err = json.Unmarshal(*v, &ID)
1169				if err != nil {
1170					return err
1171				}
1172				s.ID = &ID
1173			}
1174		case "name":
1175			if v != nil {
1176				var name string
1177				err = json.Unmarshal(*v, &name)
1178				if err != nil {
1179					return err
1180				}
1181				s.Name = &name
1182			}
1183		case "type":
1184			if v != nil {
1185				var typeVar string
1186				err = json.Unmarshal(*v, &typeVar)
1187				if err != nil {
1188					return err
1189				}
1190				s.Type = &typeVar
1191			}
1192		case "properties":
1193			if v != nil {
1194				var snapshotProperties SnapshotProperties
1195				err = json.Unmarshal(*v, &snapshotProperties)
1196				if err != nil {
1197					return err
1198				}
1199				s.SnapshotProperties = &snapshotProperties
1200			}
1201		}
1202	}
1203
1204	return nil
1205}
1206
1207// SnapshotProperties snapshot properties
1208type SnapshotProperties struct {
1209	// SnapshotID - READ-ONLY; UUID v4 used to identify the Snapshot
1210	SnapshotID *string `json:"snapshotId,omitempty"`
1211	// Created - READ-ONLY; The creation date of the snapshot
1212	Created *date.Time `json:"created,omitempty"`
1213	// ProvisioningState - READ-ONLY; Azure lifecycle management
1214	ProvisioningState *string `json:"provisioningState,omitempty"`
1215}
1216
1217// MarshalJSON is the custom marshaler for SnapshotProperties.
1218func (sp SnapshotProperties) MarshalJSON() ([]byte, error) {
1219	objectMap := make(map[string]interface{})
1220	return json.Marshal(objectMap)
1221}
1222
1223// SnapshotsCreateFuture an abstraction for monitoring and retrieving the results of a long-running
1224// operation.
1225type SnapshotsCreateFuture struct {
1226	azure.FutureAPI
1227	// Result returns the result of the asynchronous operation.
1228	// If the operation has not completed it will return an error.
1229	Result func(SnapshotsClient) (Snapshot, error)
1230}
1231
1232// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1233func (future *SnapshotsCreateFuture) UnmarshalJSON(body []byte) error {
1234	var azFuture azure.Future
1235	if err := json.Unmarshal(body, &azFuture); err != nil {
1236		return err
1237	}
1238	future.FutureAPI = &azFuture
1239	future.Result = future.result
1240	return nil
1241}
1242
1243// result is the default implementation for SnapshotsCreateFuture.Result.
1244func (future *SnapshotsCreateFuture) result(client SnapshotsClient) (s Snapshot, err error) {
1245	var done bool
1246	done, err = future.DoneWithContext(context.Background(), client)
1247	if err != nil {
1248		err = autorest.NewErrorWithError(err, "netapp.SnapshotsCreateFuture", "Result", future.Response(), "Polling failure")
1249		return
1250	}
1251	if !done {
1252		s.Response.Response = future.Response()
1253		err = azure.NewAsyncOpIncompleteError("netapp.SnapshotsCreateFuture")
1254		return
1255	}
1256	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1257	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1258		s, err = client.CreateResponder(s.Response.Response)
1259		if err != nil {
1260			err = autorest.NewErrorWithError(err, "netapp.SnapshotsCreateFuture", "Result", s.Response.Response, "Failure responding to request")
1261		}
1262	}
1263	return
1264}
1265
1266// SnapshotsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
1267// operation.
1268type SnapshotsDeleteFuture struct {
1269	azure.FutureAPI
1270	// Result returns the result of the asynchronous operation.
1271	// If the operation has not completed it will return an error.
1272	Result func(SnapshotsClient) (autorest.Response, error)
1273}
1274
1275// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1276func (future *SnapshotsDeleteFuture) UnmarshalJSON(body []byte) error {
1277	var azFuture azure.Future
1278	if err := json.Unmarshal(body, &azFuture); err != nil {
1279		return err
1280	}
1281	future.FutureAPI = &azFuture
1282	future.Result = future.result
1283	return nil
1284}
1285
1286// result is the default implementation for SnapshotsDeleteFuture.Result.
1287func (future *SnapshotsDeleteFuture) result(client SnapshotsClient) (ar autorest.Response, err error) {
1288	var done bool
1289	done, err = future.DoneWithContext(context.Background(), client)
1290	if err != nil {
1291		err = autorest.NewErrorWithError(err, "netapp.SnapshotsDeleteFuture", "Result", future.Response(), "Polling failure")
1292		return
1293	}
1294	if !done {
1295		ar.Response = future.Response()
1296		err = azure.NewAsyncOpIncompleteError("netapp.SnapshotsDeleteFuture")
1297		return
1298	}
1299	ar.Response = future.Response()
1300	return
1301}
1302
1303// SnapshotsList list of Snapshots
1304type SnapshotsList struct {
1305	autorest.Response `json:"-"`
1306	// Value - A list of Snapshots
1307	Value *[]Snapshot `json:"value,omitempty"`
1308}
1309
1310// SnapshotsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1311// operation.
1312type SnapshotsUpdateFuture struct {
1313	azure.FutureAPI
1314	// Result returns the result of the asynchronous operation.
1315	// If the operation has not completed it will return an error.
1316	Result func(SnapshotsClient) (Snapshot, error)
1317}
1318
1319// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1320func (future *SnapshotsUpdateFuture) UnmarshalJSON(body []byte) error {
1321	var azFuture azure.Future
1322	if err := json.Unmarshal(body, &azFuture); err != nil {
1323		return err
1324	}
1325	future.FutureAPI = &azFuture
1326	future.Result = future.result
1327	return nil
1328}
1329
1330// result is the default implementation for SnapshotsUpdateFuture.Result.
1331func (future *SnapshotsUpdateFuture) result(client SnapshotsClient) (s Snapshot, err error) {
1332	var done bool
1333	done, err = future.DoneWithContext(context.Background(), client)
1334	if err != nil {
1335		err = autorest.NewErrorWithError(err, "netapp.SnapshotsUpdateFuture", "Result", future.Response(), "Polling failure")
1336		return
1337	}
1338	if !done {
1339		s.Response.Response = future.Response()
1340		err = azure.NewAsyncOpIncompleteError("netapp.SnapshotsUpdateFuture")
1341		return
1342	}
1343	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1344	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1345		s, err = client.UpdateResponder(s.Response.Response)
1346		if err != nil {
1347			err = autorest.NewErrorWithError(err, "netapp.SnapshotsUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
1348		}
1349	}
1350	return
1351}
1352
1353// Volume volume resource
1354type Volume struct {
1355	autorest.Response `json:"-"`
1356	// Location - Resource location
1357	Location *string `json:"location,omitempty"`
1358	// ID - READ-ONLY; Resource Id
1359	ID *string `json:"id,omitempty"`
1360	// Name - READ-ONLY; Resource name
1361	Name *string `json:"name,omitempty"`
1362	// Type - READ-ONLY; Resource type
1363	Type *string `json:"type,omitempty"`
1364	// Tags - Resource tags
1365	Tags map[string]*string `json:"tags"`
1366	// VolumeProperties - Volume properties
1367	*VolumeProperties `json:"properties,omitempty"`
1368}
1369
1370// MarshalJSON is the custom marshaler for Volume.
1371func (vVar Volume) MarshalJSON() ([]byte, error) {
1372	objectMap := make(map[string]interface{})
1373	if vVar.Location != nil {
1374		objectMap["location"] = vVar.Location
1375	}
1376	if vVar.Tags != nil {
1377		objectMap["tags"] = vVar.Tags
1378	}
1379	if vVar.VolumeProperties != nil {
1380		objectMap["properties"] = vVar.VolumeProperties
1381	}
1382	return json.Marshal(objectMap)
1383}
1384
1385// UnmarshalJSON is the custom unmarshaler for Volume struct.
1386func (vVar *Volume) UnmarshalJSON(body []byte) error {
1387	var m map[string]*json.RawMessage
1388	err := json.Unmarshal(body, &m)
1389	if err != nil {
1390		return err
1391	}
1392	for k, v := range m {
1393		switch k {
1394		case "location":
1395			if v != nil {
1396				var location string
1397				err = json.Unmarshal(*v, &location)
1398				if err != nil {
1399					return err
1400				}
1401				vVar.Location = &location
1402			}
1403		case "id":
1404			if v != nil {
1405				var ID string
1406				err = json.Unmarshal(*v, &ID)
1407				if err != nil {
1408					return err
1409				}
1410				vVar.ID = &ID
1411			}
1412		case "name":
1413			if v != nil {
1414				var name string
1415				err = json.Unmarshal(*v, &name)
1416				if err != nil {
1417					return err
1418				}
1419				vVar.Name = &name
1420			}
1421		case "type":
1422			if v != nil {
1423				var typeVar string
1424				err = json.Unmarshal(*v, &typeVar)
1425				if err != nil {
1426					return err
1427				}
1428				vVar.Type = &typeVar
1429			}
1430		case "tags":
1431			if v != nil {
1432				var tags map[string]*string
1433				err = json.Unmarshal(*v, &tags)
1434				if err != nil {
1435					return err
1436				}
1437				vVar.Tags = tags
1438			}
1439		case "properties":
1440			if v != nil {
1441				var volumeProperties VolumeProperties
1442				err = json.Unmarshal(*v, &volumeProperties)
1443				if err != nil {
1444					return err
1445				}
1446				vVar.VolumeProperties = &volumeProperties
1447			}
1448		}
1449	}
1450
1451	return nil
1452}
1453
1454// VolumeList list of volume resources
1455type VolumeList struct {
1456	autorest.Response `json:"-"`
1457	// Value - List of volumes
1458	Value *[]Volume `json:"value,omitempty"`
1459}
1460
1461// VolumePatch volume patch resource
1462type VolumePatch struct {
1463	// Location - Resource location
1464	Location *string `json:"location,omitempty"`
1465	// ID - READ-ONLY; Resource Id
1466	ID *string `json:"id,omitempty"`
1467	// Name - READ-ONLY; Resource name
1468	Name *string `json:"name,omitempty"`
1469	// Type - READ-ONLY; Resource type
1470	Type *string `json:"type,omitempty"`
1471	// Tags - Resource tags
1472	Tags map[string]*string `json:"tags"`
1473	// VolumePatchProperties - Patchable volume properties
1474	*VolumePatchProperties `json:"properties,omitempty"`
1475}
1476
1477// MarshalJSON is the custom marshaler for VolumePatch.
1478func (vp VolumePatch) MarshalJSON() ([]byte, error) {
1479	objectMap := make(map[string]interface{})
1480	if vp.Location != nil {
1481		objectMap["location"] = vp.Location
1482	}
1483	if vp.Tags != nil {
1484		objectMap["tags"] = vp.Tags
1485	}
1486	if vp.VolumePatchProperties != nil {
1487		objectMap["properties"] = vp.VolumePatchProperties
1488	}
1489	return json.Marshal(objectMap)
1490}
1491
1492// UnmarshalJSON is the custom unmarshaler for VolumePatch struct.
1493func (vp *VolumePatch) UnmarshalJSON(body []byte) error {
1494	var m map[string]*json.RawMessage
1495	err := json.Unmarshal(body, &m)
1496	if err != nil {
1497		return err
1498	}
1499	for k, v := range m {
1500		switch k {
1501		case "location":
1502			if v != nil {
1503				var location string
1504				err = json.Unmarshal(*v, &location)
1505				if err != nil {
1506					return err
1507				}
1508				vp.Location = &location
1509			}
1510		case "id":
1511			if v != nil {
1512				var ID string
1513				err = json.Unmarshal(*v, &ID)
1514				if err != nil {
1515					return err
1516				}
1517				vp.ID = &ID
1518			}
1519		case "name":
1520			if v != nil {
1521				var name string
1522				err = json.Unmarshal(*v, &name)
1523				if err != nil {
1524					return err
1525				}
1526				vp.Name = &name
1527			}
1528		case "type":
1529			if v != nil {
1530				var typeVar string
1531				err = json.Unmarshal(*v, &typeVar)
1532				if err != nil {
1533					return err
1534				}
1535				vp.Type = &typeVar
1536			}
1537		case "tags":
1538			if v != nil {
1539				var tags map[string]*string
1540				err = json.Unmarshal(*v, &tags)
1541				if err != nil {
1542					return err
1543				}
1544				vp.Tags = tags
1545			}
1546		case "properties":
1547			if v != nil {
1548				var volumePatchProperties VolumePatchProperties
1549				err = json.Unmarshal(*v, &volumePatchProperties)
1550				if err != nil {
1551					return err
1552				}
1553				vp.VolumePatchProperties = &volumePatchProperties
1554			}
1555		}
1556	}
1557
1558	return nil
1559}
1560
1561// VolumePatchProperties patchable volume properties
1562type VolumePatchProperties struct {
1563	// ServiceLevel - The service level of the file system. Possible values include: 'ServiceLevelStandard', 'ServiceLevelPremium', 'ServiceLevelUltra'
1564	ServiceLevel ServiceLevel `json:"serviceLevel,omitempty"`
1565	// 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.
1566	UsageThreshold *int64 `json:"usageThreshold,omitempty"`
1567	// ExportPolicy - Set of export policy rules
1568	ExportPolicy *VolumePatchPropertiesExportPolicy `json:"exportPolicy,omitempty"`
1569}
1570
1571// VolumePatchPropertiesExportPolicy set of export policy rules
1572type VolumePatchPropertiesExportPolicy struct {
1573	// Rules - Export policy rule
1574	Rules *[]ExportPolicyRule `json:"rules,omitempty"`
1575}
1576
1577// VolumeProperties volume properties
1578type VolumeProperties struct {
1579	// FileSystemID - READ-ONLY; Unique FileSystem Identifier.
1580	FileSystemID *string `json:"fileSystemId,omitempty"`
1581	// CreationToken - A unique file path for the volume. Used when creating mount targets
1582	CreationToken *string `json:"creationToken,omitempty"`
1583	// ServiceLevel - The service level of the file system. Possible values include: 'ServiceLevelStandard', 'ServiceLevelPremium', 'ServiceLevelUltra'
1584	ServiceLevel ServiceLevel `json:"serviceLevel,omitempty"`
1585	// 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.
1586	UsageThreshold *int64 `json:"usageThreshold,omitempty"`
1587	// ExportPolicy - Set of export policy rules
1588	ExportPolicy *VolumePropertiesExportPolicy `json:"exportPolicy,omitempty"`
1589	// ProtocolTypes - Set of protocol types
1590	ProtocolTypes *[]string `json:"protocolTypes,omitempty"`
1591	// ProvisioningState - READ-ONLY; Azure lifecycle management
1592	ProvisioningState *string `json:"provisioningState,omitempty"`
1593	// SnapshotID - UUID v4 or resource identifier used to identify the Snapshot.
1594	SnapshotID *string `json:"snapshotId,omitempty"`
1595	// BaremetalTenantID - READ-ONLY; Unique Baremetal Tenant Identifier.
1596	BaremetalTenantID *string `json:"baremetalTenantId,omitempty"`
1597	// SubnetID - The Azure Resource URI for a delegated subnet. Must have the delegation Microsoft.NetApp/volumes
1598	SubnetID *string `json:"subnetId,omitempty"`
1599	// MountTargets - List of mount targets
1600	MountTargets *[]MountTargetProperties `json:"mountTargets,omitempty"`
1601	// VolumeType - What type of volume is this
1602	VolumeType *string `json:"volumeType,omitempty"`
1603	// DataProtection - DataProtection type volumes include an object containing details of the replication
1604	DataProtection *VolumePropertiesDataProtection `json:"dataProtection,omitempty"`
1605	// IsRestoring - Restoring
1606	IsRestoring *bool `json:"isRestoring,omitempty"`
1607	// 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).
1608	SnapshotDirectoryVisible *bool `json:"snapshotDirectoryVisible,omitempty"`
1609}
1610
1611// MarshalJSON is the custom marshaler for VolumeProperties.
1612func (vp VolumeProperties) MarshalJSON() ([]byte, error) {
1613	objectMap := make(map[string]interface{})
1614	if vp.CreationToken != nil {
1615		objectMap["creationToken"] = vp.CreationToken
1616	}
1617	if vp.ServiceLevel != "" {
1618		objectMap["serviceLevel"] = vp.ServiceLevel
1619	}
1620	if vp.UsageThreshold != nil {
1621		objectMap["usageThreshold"] = vp.UsageThreshold
1622	}
1623	if vp.ExportPolicy != nil {
1624		objectMap["exportPolicy"] = vp.ExportPolicy
1625	}
1626	if vp.ProtocolTypes != nil {
1627		objectMap["protocolTypes"] = vp.ProtocolTypes
1628	}
1629	if vp.SnapshotID != nil {
1630		objectMap["snapshotId"] = vp.SnapshotID
1631	}
1632	if vp.SubnetID != nil {
1633		objectMap["subnetId"] = vp.SubnetID
1634	}
1635	if vp.MountTargets != nil {
1636		objectMap["mountTargets"] = vp.MountTargets
1637	}
1638	if vp.VolumeType != nil {
1639		objectMap["volumeType"] = vp.VolumeType
1640	}
1641	if vp.DataProtection != nil {
1642		objectMap["dataProtection"] = vp.DataProtection
1643	}
1644	if vp.IsRestoring != nil {
1645		objectMap["isRestoring"] = vp.IsRestoring
1646	}
1647	if vp.SnapshotDirectoryVisible != nil {
1648		objectMap["snapshotDirectoryVisible"] = vp.SnapshotDirectoryVisible
1649	}
1650	return json.Marshal(objectMap)
1651}
1652
1653// VolumePropertiesDataProtection dataProtection type volumes include an object containing details of the
1654// replication
1655type VolumePropertiesDataProtection struct {
1656	// Replication - Replication properties
1657	Replication *ReplicationObject `json:"replication,omitempty"`
1658	// Snapshot - Snapshot properties.
1659	Snapshot *VolumeSnapshotProperties `json:"snapshot,omitempty"`
1660}
1661
1662// VolumePropertiesExportPolicy set of export policy rules
1663type VolumePropertiesExportPolicy struct {
1664	// Rules - Export policy rule
1665	Rules *[]ExportPolicyRule `json:"rules,omitempty"`
1666}
1667
1668// VolumeRevert revert a volume to the snapshot
1669type VolumeRevert struct {
1670	// SnapshotID - Resource id of the snapshot
1671	SnapshotID *string `json:"snapshotId,omitempty"`
1672}
1673
1674// VolumesAuthorizeReplicationFuture an abstraction for monitoring and retrieving the results of a
1675// long-running operation.
1676type VolumesAuthorizeReplicationFuture struct {
1677	azure.FutureAPI
1678	// Result returns the result of the asynchronous operation.
1679	// If the operation has not completed it will return an error.
1680	Result func(VolumesClient) (autorest.Response, error)
1681}
1682
1683// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1684func (future *VolumesAuthorizeReplicationFuture) UnmarshalJSON(body []byte) error {
1685	var azFuture azure.Future
1686	if err := json.Unmarshal(body, &azFuture); err != nil {
1687		return err
1688	}
1689	future.FutureAPI = &azFuture
1690	future.Result = future.result
1691	return nil
1692}
1693
1694// result is the default implementation for VolumesAuthorizeReplicationFuture.Result.
1695func (future *VolumesAuthorizeReplicationFuture) result(client VolumesClient) (ar autorest.Response, err error) {
1696	var done bool
1697	done, err = future.DoneWithContext(context.Background(), client)
1698	if err != nil {
1699		err = autorest.NewErrorWithError(err, "netapp.VolumesAuthorizeReplicationFuture", "Result", future.Response(), "Polling failure")
1700		return
1701	}
1702	if !done {
1703		ar.Response = future.Response()
1704		err = azure.NewAsyncOpIncompleteError("netapp.VolumesAuthorizeReplicationFuture")
1705		return
1706	}
1707	ar.Response = future.Response()
1708	return
1709}
1710
1711// VolumesBreakReplicationFuture an abstraction for monitoring and retrieving the results of a long-running
1712// operation.
1713type VolumesBreakReplicationFuture struct {
1714	azure.FutureAPI
1715	// Result returns the result of the asynchronous operation.
1716	// If the operation has not completed it will return an error.
1717	Result func(VolumesClient) (autorest.Response, error)
1718}
1719
1720// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1721func (future *VolumesBreakReplicationFuture) UnmarshalJSON(body []byte) error {
1722	var azFuture azure.Future
1723	if err := json.Unmarshal(body, &azFuture); err != nil {
1724		return err
1725	}
1726	future.FutureAPI = &azFuture
1727	future.Result = future.result
1728	return nil
1729}
1730
1731// result is the default implementation for VolumesBreakReplicationFuture.Result.
1732func (future *VolumesBreakReplicationFuture) result(client VolumesClient) (ar autorest.Response, err error) {
1733	var done bool
1734	done, err = future.DoneWithContext(context.Background(), client)
1735	if err != nil {
1736		err = autorest.NewErrorWithError(err, "netapp.VolumesBreakReplicationFuture", "Result", future.Response(), "Polling failure")
1737		return
1738	}
1739	if !done {
1740		ar.Response = future.Response()
1741		err = azure.NewAsyncOpIncompleteError("netapp.VolumesBreakReplicationFuture")
1742		return
1743	}
1744	ar.Response = future.Response()
1745	return
1746}
1747
1748// VolumesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1749// operation.
1750type VolumesCreateOrUpdateFuture struct {
1751	azure.FutureAPI
1752	// Result returns the result of the asynchronous operation.
1753	// If the operation has not completed it will return an error.
1754	Result func(VolumesClient) (Volume, error)
1755}
1756
1757// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1758func (future *VolumesCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1759	var azFuture azure.Future
1760	if err := json.Unmarshal(body, &azFuture); err != nil {
1761		return err
1762	}
1763	future.FutureAPI = &azFuture
1764	future.Result = future.result
1765	return nil
1766}
1767
1768// result is the default implementation for VolumesCreateOrUpdateFuture.Result.
1769func (future *VolumesCreateOrUpdateFuture) result(client VolumesClient) (vVar Volume, err error) {
1770	var done bool
1771	done, err = future.DoneWithContext(context.Background(), client)
1772	if err != nil {
1773		err = autorest.NewErrorWithError(err, "netapp.VolumesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
1774		return
1775	}
1776	if !done {
1777		vVar.Response.Response = future.Response()
1778		err = azure.NewAsyncOpIncompleteError("netapp.VolumesCreateOrUpdateFuture")
1779		return
1780	}
1781	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1782	if vVar.Response.Response, err = future.GetResult(sender); err == nil && vVar.Response.Response.StatusCode != http.StatusNoContent {
1783		vVar, err = client.CreateOrUpdateResponder(vVar.Response.Response)
1784		if err != nil {
1785			err = autorest.NewErrorWithError(err, "netapp.VolumesCreateOrUpdateFuture", "Result", vVar.Response.Response, "Failure responding to request")
1786		}
1787	}
1788	return
1789}
1790
1791// VolumesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
1792// operation.
1793type VolumesDeleteFuture struct {
1794	azure.FutureAPI
1795	// Result returns the result of the asynchronous operation.
1796	// If the operation has not completed it will return an error.
1797	Result func(VolumesClient) (autorest.Response, error)
1798}
1799
1800// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1801func (future *VolumesDeleteFuture) UnmarshalJSON(body []byte) error {
1802	var azFuture azure.Future
1803	if err := json.Unmarshal(body, &azFuture); err != nil {
1804		return err
1805	}
1806	future.FutureAPI = &azFuture
1807	future.Result = future.result
1808	return nil
1809}
1810
1811// result is the default implementation for VolumesDeleteFuture.Result.
1812func (future *VolumesDeleteFuture) result(client VolumesClient) (ar autorest.Response, err error) {
1813	var done bool
1814	done, err = future.DoneWithContext(context.Background(), client)
1815	if err != nil {
1816		err = autorest.NewErrorWithError(err, "netapp.VolumesDeleteFuture", "Result", future.Response(), "Polling failure")
1817		return
1818	}
1819	if !done {
1820		ar.Response = future.Response()
1821		err = azure.NewAsyncOpIncompleteError("netapp.VolumesDeleteFuture")
1822		return
1823	}
1824	ar.Response = future.Response()
1825	return
1826}
1827
1828// VolumesDeleteReplicationFuture an abstraction for monitoring and retrieving the results of a
1829// long-running operation.
1830type VolumesDeleteReplicationFuture struct {
1831	azure.FutureAPI
1832	// Result returns the result of the asynchronous operation.
1833	// If the operation has not completed it will return an error.
1834	Result func(VolumesClient) (autorest.Response, error)
1835}
1836
1837// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1838func (future *VolumesDeleteReplicationFuture) UnmarshalJSON(body []byte) error {
1839	var azFuture azure.Future
1840	if err := json.Unmarshal(body, &azFuture); err != nil {
1841		return err
1842	}
1843	future.FutureAPI = &azFuture
1844	future.Result = future.result
1845	return nil
1846}
1847
1848// result is the default implementation for VolumesDeleteReplicationFuture.Result.
1849func (future *VolumesDeleteReplicationFuture) result(client VolumesClient) (ar autorest.Response, err error) {
1850	var done bool
1851	done, err = future.DoneWithContext(context.Background(), client)
1852	if err != nil {
1853		err = autorest.NewErrorWithError(err, "netapp.VolumesDeleteReplicationFuture", "Result", future.Response(), "Polling failure")
1854		return
1855	}
1856	if !done {
1857		ar.Response = future.Response()
1858		err = azure.NewAsyncOpIncompleteError("netapp.VolumesDeleteReplicationFuture")
1859		return
1860	}
1861	ar.Response = future.Response()
1862	return
1863}
1864
1865// VolumeSnapshotProperties volume Snapshot Properties
1866type VolumeSnapshotProperties struct {
1867	// SnapshotPolicyID - Snapshot Policy ResourceId
1868	SnapshotPolicyID *string `json:"snapshotPolicyId,omitempty"`
1869}
1870
1871// VolumesResyncReplicationFuture an abstraction for monitoring and retrieving the results of a
1872// long-running operation.
1873type VolumesResyncReplicationFuture struct {
1874	azure.FutureAPI
1875	// Result returns the result of the asynchronous operation.
1876	// If the operation has not completed it will return an error.
1877	Result func(VolumesClient) (autorest.Response, error)
1878}
1879
1880// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1881func (future *VolumesResyncReplicationFuture) UnmarshalJSON(body []byte) error {
1882	var azFuture azure.Future
1883	if err := json.Unmarshal(body, &azFuture); err != nil {
1884		return err
1885	}
1886	future.FutureAPI = &azFuture
1887	future.Result = future.result
1888	return nil
1889}
1890
1891// result is the default implementation for VolumesResyncReplicationFuture.Result.
1892func (future *VolumesResyncReplicationFuture) result(client VolumesClient) (ar autorest.Response, err error) {
1893	var done bool
1894	done, err = future.DoneWithContext(context.Background(), client)
1895	if err != nil {
1896		err = autorest.NewErrorWithError(err, "netapp.VolumesResyncReplicationFuture", "Result", future.Response(), "Polling failure")
1897		return
1898	}
1899	if !done {
1900		ar.Response = future.Response()
1901		err = azure.NewAsyncOpIncompleteError("netapp.VolumesResyncReplicationFuture")
1902		return
1903	}
1904	ar.Response = future.Response()
1905	return
1906}
1907
1908// VolumesRevertFuture an abstraction for monitoring and retrieving the results of a long-running
1909// operation.
1910type VolumesRevertFuture struct {
1911	azure.FutureAPI
1912	// Result returns the result of the asynchronous operation.
1913	// If the operation has not completed it will return an error.
1914	Result func(VolumesClient) (autorest.Response, error)
1915}
1916
1917// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1918func (future *VolumesRevertFuture) UnmarshalJSON(body []byte) error {
1919	var azFuture azure.Future
1920	if err := json.Unmarshal(body, &azFuture); err != nil {
1921		return err
1922	}
1923	future.FutureAPI = &azFuture
1924	future.Result = future.result
1925	return nil
1926}
1927
1928// result is the default implementation for VolumesRevertFuture.Result.
1929func (future *VolumesRevertFuture) result(client VolumesClient) (ar autorest.Response, err error) {
1930	var done bool
1931	done, err = future.DoneWithContext(context.Background(), client)
1932	if err != nil {
1933		err = autorest.NewErrorWithError(err, "netapp.VolumesRevertFuture", "Result", future.Response(), "Polling failure")
1934		return
1935	}
1936	if !done {
1937		ar.Response = future.Response()
1938		err = azure.NewAsyncOpIncompleteError("netapp.VolumesRevertFuture")
1939		return
1940	}
1941	ar.Response = future.Response()
1942	return
1943}
1944
1945// VolumesUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1946// operation.
1947type VolumesUpdateFuture struct {
1948	azure.FutureAPI
1949	// Result returns the result of the asynchronous operation.
1950	// If the operation has not completed it will return an error.
1951	Result func(VolumesClient) (Volume, error)
1952}
1953
1954// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1955func (future *VolumesUpdateFuture) UnmarshalJSON(body []byte) error {
1956	var azFuture azure.Future
1957	if err := json.Unmarshal(body, &azFuture); err != nil {
1958		return err
1959	}
1960	future.FutureAPI = &azFuture
1961	future.Result = future.result
1962	return nil
1963}
1964
1965// result is the default implementation for VolumesUpdateFuture.Result.
1966func (future *VolumesUpdateFuture) result(client VolumesClient) (vVar Volume, err error) {
1967	var done bool
1968	done, err = future.DoneWithContext(context.Background(), client)
1969	if err != nil {
1970		err = autorest.NewErrorWithError(err, "netapp.VolumesUpdateFuture", "Result", future.Response(), "Polling failure")
1971		return
1972	}
1973	if !done {
1974		vVar.Response.Response = future.Response()
1975		err = azure.NewAsyncOpIncompleteError("netapp.VolumesUpdateFuture")
1976		return
1977	}
1978	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1979	if vVar.Response.Response, err = future.GetResult(sender); err == nil && vVar.Response.Response.StatusCode != http.StatusNoContent {
1980		vVar, err = client.UpdateResponder(vVar.Response.Response)
1981		if err != nil {
1982			err = autorest.NewErrorWithError(err, "netapp.VolumesUpdateFuture", "Result", vVar.Response.Response, "Failure responding to request")
1983		}
1984	}
1985	return
1986}
1987