1package resourcemover
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	"context"
22	"encoding/json"
23	"github.com/Azure/go-autorest/autorest"
24	"github.com/Azure/go-autorest/autorest/azure"
25	"github.com/Azure/go-autorest/autorest/to"
26	"github.com/Azure/go-autorest/tracing"
27	"net/http"
28)
29
30// The package's fully qualified name.
31const fqdn = "github.com/Azure/azure-sdk-for-go/services/resourcemover/mgmt/2021-01-01/resourcemover"
32
33// AffectedMoveResource the RP custom operation error info.
34type AffectedMoveResource struct {
35	// ID - READ-ONLY; The affected move resource id.
36	ID *string `json:"id,omitempty"`
37	// SourceID - READ-ONLY; The affected move resource source id.
38	SourceID *string `json:"sourceId,omitempty"`
39	// MoveResources - READ-ONLY; The affected move resources.
40	MoveResources *[]AffectedMoveResource `json:"moveResources,omitempty"`
41}
42
43// AutomaticResolutionProperties defines the properties for automatic resolution.
44type AutomaticResolutionProperties struct {
45	// MoveResourceID - Gets the MoveResource ARM ID of
46	// the dependent resource if the resolution type is Automatic.
47	MoveResourceID *string `json:"moveResourceId,omitempty"`
48}
49
50// AvailabilitySetResourceSettings gets or sets the availability set resource settings.
51type AvailabilitySetResourceSettings struct {
52	// FaultDomain - Gets or sets the target fault domain.
53	FaultDomain *int32 `json:"faultDomain,omitempty"`
54	// UpdateDomain - Gets or sets the target update domain.
55	UpdateDomain *int32 `json:"updateDomain,omitempty"`
56	// TargetResourceName - Gets or sets the target Resource name.
57	TargetResourceName *string `json:"targetResourceName,omitempty"`
58	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
59	ResourceType ResourceType `json:"resourceType,omitempty"`
60}
61
62// MarshalJSON is the custom marshaler for AvailabilitySetResourceSettings.
63func (asrs AvailabilitySetResourceSettings) MarshalJSON() ([]byte, error) {
64	asrs.ResourceType = ResourceTypeMicrosoftComputeavailabilitySets
65	objectMap := make(map[string]interface{})
66	if asrs.FaultDomain != nil {
67		objectMap["faultDomain"] = asrs.FaultDomain
68	}
69	if asrs.UpdateDomain != nil {
70		objectMap["updateDomain"] = asrs.UpdateDomain
71	}
72	if asrs.TargetResourceName != nil {
73		objectMap["targetResourceName"] = asrs.TargetResourceName
74	}
75	if asrs.ResourceType != "" {
76		objectMap["resourceType"] = asrs.ResourceType
77	}
78	return json.Marshal(objectMap)
79}
80
81// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
82func (asrs AvailabilitySetResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
83	return nil, false
84}
85
86// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
87func (asrs AvailabilitySetResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
88	return &asrs, true
89}
90
91// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
92func (asrs AvailabilitySetResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
93	return nil, false
94}
95
96// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
97func (asrs AvailabilitySetResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
98	return nil, false
99}
100
101// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
102func (asrs AvailabilitySetResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
103	return nil, false
104}
105
106// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
107func (asrs AvailabilitySetResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
108	return nil, false
109}
110
111// AsSQLServerResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
112func (asrs AvailabilitySetResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
113	return nil, false
114}
115
116// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
117func (asrs AvailabilitySetResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
118	return nil, false
119}
120
121// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
122func (asrs AvailabilitySetResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
123	return nil, false
124}
125
126// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
127func (asrs AvailabilitySetResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
128	return nil, false
129}
130
131// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
132func (asrs AvailabilitySetResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
133	return nil, false
134}
135
136// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
137func (asrs AvailabilitySetResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
138	return nil, false
139}
140
141// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
142func (asrs AvailabilitySetResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
143	return nil, false
144}
145
146// AsResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
147func (asrs AvailabilitySetResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
148	return nil, false
149}
150
151// AsBasicResourceSettings is the BasicResourceSettings implementation for AvailabilitySetResourceSettings.
152func (asrs AvailabilitySetResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
153	return &asrs, true
154}
155
156// AzureResourceReference defines reference to an Azure resource.
157type AzureResourceReference struct {
158	// SourceArmResourceID - Gets the ARM resource ID of the tracked resource being referenced.
159	SourceArmResourceID *string `json:"sourceArmResourceId,omitempty"`
160}
161
162// BulkRemoveRequest defines the request body for bulk remove of move resources operation.
163type BulkRemoveRequest struct {
164	// ValidateOnly - Gets or sets a value indicating whether the operation needs to only run pre-requisite.
165	ValidateOnly *bool `json:"validateOnly,omitempty"`
166	// MoveResources - Gets or sets the list of resource Id's, by default it accepts move resource id's unless the input type is switched via moveResourceInputType property.
167	MoveResources *[]string `json:"moveResources,omitempty"`
168	// MoveResourceInputType - Possible values include: 'MoveResourceID', 'MoveResourceSourceID'
169	MoveResourceInputType MoveResourceInputType `json:"moveResourceInputType,omitempty"`
170}
171
172// CloudError an error response from the service.
173type CloudError struct {
174	// Error - Cloud error body.
175	Error *CloudErrorBody `json:"error,omitempty"`
176}
177
178// CloudErrorBody an error response from the service.
179type CloudErrorBody struct {
180	// Code - An identifier for the error. Codes are invariant and are intended to be consumed programmatically.
181	Code *string `json:"code,omitempty"`
182	// Message - A message describing the error, intended to be suitable for display in a user interface.
183	Message *string `json:"message,omitempty"`
184	// Target - The target of the particular error. For example, the name of the property in error.
185	Target *string `json:"target,omitempty"`
186	// Details - A list of additional details about the error.
187	Details *[]CloudErrorBody `json:"details,omitempty"`
188}
189
190// CommitRequest defines the request body for commit operation.
191type CommitRequest struct {
192	// ValidateOnly - Gets or sets a value indicating whether the operation needs to only run pre-requisite.
193	ValidateOnly *bool `json:"validateOnly,omitempty"`
194	// MoveResources - Gets or sets the list of resource Id's, by default it accepts move resource id's unless the input type is switched via moveResourceInputType property.
195	MoveResources *[]string `json:"moveResources,omitempty"`
196	// MoveResourceInputType - Possible values include: 'MoveResourceID', 'MoveResourceSourceID'
197	MoveResourceInputType MoveResourceInputType `json:"moveResourceInputType,omitempty"`
198}
199
200// DiscardRequest defines the request body for discard operation.
201type DiscardRequest struct {
202	// ValidateOnly - Gets or sets a value indicating whether the operation needs to only run pre-requisite.
203	ValidateOnly *bool `json:"validateOnly,omitempty"`
204	// MoveResources - Gets or sets the list of resource Id's, by default it accepts move resource id's unless the input type is switched via moveResourceInputType property.
205	MoveResources *[]string `json:"moveResources,omitempty"`
206	// MoveResourceInputType - Possible values include: 'MoveResourceID', 'MoveResourceSourceID'
207	MoveResourceInputType MoveResourceInputType `json:"moveResourceInputType,omitempty"`
208}
209
210// DiskEncryptionSetResourceSettings defines the disk encryption set resource settings.
211type DiskEncryptionSetResourceSettings struct {
212	// TargetResourceName - Gets or sets the target Resource name.
213	TargetResourceName *string `json:"targetResourceName,omitempty"`
214	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
215	ResourceType ResourceType `json:"resourceType,omitempty"`
216}
217
218// MarshalJSON is the custom marshaler for DiskEncryptionSetResourceSettings.
219func (desrs DiskEncryptionSetResourceSettings) MarshalJSON() ([]byte, error) {
220	desrs.ResourceType = ResourceTypeMicrosoftComputediskEncryptionSets
221	objectMap := make(map[string]interface{})
222	if desrs.TargetResourceName != nil {
223		objectMap["targetResourceName"] = desrs.TargetResourceName
224	}
225	if desrs.ResourceType != "" {
226		objectMap["resourceType"] = desrs.ResourceType
227	}
228	return json.Marshal(objectMap)
229}
230
231// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
232func (desrs DiskEncryptionSetResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
233	return nil, false
234}
235
236// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
237func (desrs DiskEncryptionSetResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
238	return nil, false
239}
240
241// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
242func (desrs DiskEncryptionSetResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
243	return nil, false
244}
245
246// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
247func (desrs DiskEncryptionSetResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
248	return nil, false
249}
250
251// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
252func (desrs DiskEncryptionSetResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
253	return nil, false
254}
255
256// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
257func (desrs DiskEncryptionSetResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
258	return nil, false
259}
260
261// AsSQLServerResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
262func (desrs DiskEncryptionSetResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
263	return nil, false
264}
265
266// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
267func (desrs DiskEncryptionSetResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
268	return nil, false
269}
270
271// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
272func (desrs DiskEncryptionSetResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
273	return nil, false
274}
275
276// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
277func (desrs DiskEncryptionSetResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
278	return nil, false
279}
280
281// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
282func (desrs DiskEncryptionSetResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
283	return nil, false
284}
285
286// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
287func (desrs DiskEncryptionSetResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
288	return nil, false
289}
290
291// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
292func (desrs DiskEncryptionSetResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
293	return &desrs, true
294}
295
296// AsResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
297func (desrs DiskEncryptionSetResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
298	return nil, false
299}
300
301// AsBasicResourceSettings is the BasicResourceSettings implementation for DiskEncryptionSetResourceSettings.
302func (desrs DiskEncryptionSetResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
303	return &desrs, true
304}
305
306// Display contains the localized display information for this particular operation / action. These
307// value will be used by several clients for
308// (1) custom role definitions for RBAC;
309// (2) complex query filters for the event service; and
310// (3) audit history / records for management operations.
311type Display struct {
312	// Provider - Gets or sets the provider.
313	// The localized friendly form of the resource provider name – it is expected to also
314	// include the publisher/company responsible.
315	// It should use Title Casing and begin with "Microsoft" for 1st party services.
316	// e.g. "Microsoft Monitoring Insights" or "Microsoft Compute.".
317	Provider *string `json:"provider,omitempty"`
318	// Resource - Gets or sets the resource.
319	// The localized friendly form of the resource related to this action/operation – it
320	// should match the public documentation for the resource provider.
321	// It should use Title Casing.
322	// This value should be unique for a particular URL type (e.g. nested types should *not*
323	// reuse their parent’s display.resource field)
324	// e.g. "Virtual Machines" or "Scheduler Job Collections", or "Virtual Machine VM Sizes"
325	// or "Scheduler Jobs".
326	Resource *string `json:"resource,omitempty"`
327	// Operation - Gets or sets the operation.
328	// The localized friendly name for the operation, as it should be shown to the user.
329	// It should be concise (to fit in drop downs) but clear (i.e. self-documenting).
330	// It should use Title Casing.
331	// Prescriptive guidance: Read Create or Update Delete 'ActionName'.
332	Operation *string `json:"operation,omitempty"`
333	// Description - Gets or sets the description.
334	// The localized friendly description for the operation, as it should be shown to the
335	// user.
336	// It should be thorough, yet concise – it will be used in tool tips and detailed views.
337	// Prescriptive guidance for namespace:
338	// Read any 'display.provider'  resource
339	// Create or Update any  'display.provider'  resource
340	// Delete any  'display.provider'  resource
341	// Perform any other action on any  'display.provider'  resource
342	// Prescriptive guidance for namespace:
343	// Read any 'display.resource' Create or Update any  'display.resource' Delete any
344	//  'display.resource' 'ActionName' any 'display.resources'.
345	Description *string `json:"description,omitempty"`
346}
347
348// Identity defines the MSI properties of the Move Collection.
349type Identity struct {
350	// Type - Possible values include: 'None', 'SystemAssigned', 'UserAssigned'
351	Type ResourceIdentityType `json:"type,omitempty"`
352	// PrincipalID - Gets or sets the principal id.
353	PrincipalID *string `json:"principalId,omitempty"`
354	// TenantID - Gets or sets the tenant id.
355	TenantID *string `json:"tenantId,omitempty"`
356}
357
358// JobStatus defines the job status.
359type JobStatus struct {
360	// JobName - Possible values include: 'InitialSync'
361	JobName JobName `json:"jobName,omitempty"`
362	// JobProgress - READ-ONLY; Gets or sets the monitoring job percentage.
363	JobProgress *string `json:"jobProgress,omitempty"`
364}
365
366// MarshalJSON is the custom marshaler for JobStatus.
367func (js JobStatus) MarshalJSON() ([]byte, error) {
368	objectMap := make(map[string]interface{})
369	if js.JobName != "" {
370		objectMap["jobName"] = js.JobName
371	}
372	return json.Marshal(objectMap)
373}
374
375// KeyVaultResourceSettings defines the key vault resource settings.
376type KeyVaultResourceSettings struct {
377	// TargetResourceName - Gets or sets the target Resource name.
378	TargetResourceName *string `json:"targetResourceName,omitempty"`
379	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
380	ResourceType ResourceType `json:"resourceType,omitempty"`
381}
382
383// MarshalJSON is the custom marshaler for KeyVaultResourceSettings.
384func (kvrs KeyVaultResourceSettings) MarshalJSON() ([]byte, error) {
385	kvrs.ResourceType = ResourceTypeMicrosoftKeyVaultvaults
386	objectMap := make(map[string]interface{})
387	if kvrs.TargetResourceName != nil {
388		objectMap["targetResourceName"] = kvrs.TargetResourceName
389	}
390	if kvrs.ResourceType != "" {
391		objectMap["resourceType"] = kvrs.ResourceType
392	}
393	return json.Marshal(objectMap)
394}
395
396// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
397func (kvrs KeyVaultResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
398	return nil, false
399}
400
401// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
402func (kvrs KeyVaultResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
403	return nil, false
404}
405
406// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
407func (kvrs KeyVaultResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
408	return nil, false
409}
410
411// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
412func (kvrs KeyVaultResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
413	return nil, false
414}
415
416// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
417func (kvrs KeyVaultResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
418	return nil, false
419}
420
421// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
422func (kvrs KeyVaultResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
423	return nil, false
424}
425
426// AsSQLServerResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
427func (kvrs KeyVaultResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
428	return nil, false
429}
430
431// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
432func (kvrs KeyVaultResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
433	return nil, false
434}
435
436// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
437func (kvrs KeyVaultResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
438	return nil, false
439}
440
441// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
442func (kvrs KeyVaultResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
443	return nil, false
444}
445
446// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
447func (kvrs KeyVaultResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
448	return nil, false
449}
450
451// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
452func (kvrs KeyVaultResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
453	return &kvrs, true
454}
455
456// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
457func (kvrs KeyVaultResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
458	return nil, false
459}
460
461// AsResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
462func (kvrs KeyVaultResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
463	return nil, false
464}
465
466// AsBasicResourceSettings is the BasicResourceSettings implementation for KeyVaultResourceSettings.
467func (kvrs KeyVaultResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
468	return &kvrs, true
469}
470
471// LBBackendAddressPoolResourceSettings defines load balancer backend address pool properties.
472type LBBackendAddressPoolResourceSettings struct {
473	// Name - Gets or sets the backend address pool name.
474	Name *string `json:"name,omitempty"`
475}
476
477// LBFrontendIPConfigurationResourceSettings defines load balancer frontend IP configuration properties.
478type LBFrontendIPConfigurationResourceSettings struct {
479	// Name - Gets or sets the frontend IP configuration name.
480	Name *string `json:"name,omitempty"`
481	// PrivateIPAddress - Gets or sets the IP address of the Load Balancer.This is only specified if a specific
482	// private IP address shall be allocated from the subnet specified in subnetRef.
483	PrivateIPAddress *string `json:"privateIpAddress,omitempty"`
484	// PrivateIPAllocationMethod - Gets or sets PrivateIP allocation method (Static/Dynamic).
485	PrivateIPAllocationMethod *string          `json:"privateIpAllocationMethod,omitempty"`
486	Subnet                    *SubnetReference `json:"subnet,omitempty"`
487	// Zones - Gets or sets the csv list of zones.
488	Zones *string `json:"zones,omitempty"`
489}
490
491// LoadBalancerBackendAddressPoolReference defines reference to load balancer backend address pools.
492type LoadBalancerBackendAddressPoolReference struct {
493	// Name - Gets the name of the proxy resource on the target side.
494	Name *string `json:"name,omitempty"`
495	// SourceArmResourceID - Gets the ARM resource ID of the tracked resource being referenced.
496	SourceArmResourceID *string `json:"sourceArmResourceId,omitempty"`
497}
498
499// LoadBalancerNatRuleReference defines reference to load balancer NAT rules.
500type LoadBalancerNatRuleReference struct {
501	// Name - Gets the name of the proxy resource on the target side.
502	Name *string `json:"name,omitempty"`
503	// SourceArmResourceID - Gets the ARM resource ID of the tracked resource being referenced.
504	SourceArmResourceID *string `json:"sourceArmResourceId,omitempty"`
505}
506
507// LoadBalancerResourceSettings defines the load balancer resource settings.
508type LoadBalancerResourceSettings struct {
509	// Sku - Gets or sets load balancer sku (Basic/Standard).
510	Sku *string `json:"sku,omitempty"`
511	// FrontendIPConfigurations - Gets or sets the frontend IP configurations of the load balancer.
512	FrontendIPConfigurations *[]LBFrontendIPConfigurationResourceSettings `json:"frontendIPConfigurations,omitempty"`
513	// BackendAddressPools - Gets or sets the backend address pools of the load balancer.
514	BackendAddressPools *[]LBBackendAddressPoolResourceSettings `json:"backendAddressPools,omitempty"`
515	// Zones - Gets or sets the csv list of zones common for all frontend IP configurations. Note this is given
516	//  precedence only if frontend IP configurations settings are not present.
517	Zones *string `json:"zones,omitempty"`
518	// TargetResourceName - Gets or sets the target Resource name.
519	TargetResourceName *string `json:"targetResourceName,omitempty"`
520	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
521	ResourceType ResourceType `json:"resourceType,omitempty"`
522}
523
524// MarshalJSON is the custom marshaler for LoadBalancerResourceSettings.
525func (lbrs LoadBalancerResourceSettings) MarshalJSON() ([]byte, error) {
526	lbrs.ResourceType = ResourceTypeMicrosoftNetworkloadBalancers
527	objectMap := make(map[string]interface{})
528	if lbrs.Sku != nil {
529		objectMap["sku"] = lbrs.Sku
530	}
531	if lbrs.FrontendIPConfigurations != nil {
532		objectMap["frontendIPConfigurations"] = lbrs.FrontendIPConfigurations
533	}
534	if lbrs.BackendAddressPools != nil {
535		objectMap["backendAddressPools"] = lbrs.BackendAddressPools
536	}
537	if lbrs.Zones != nil {
538		objectMap["zones"] = lbrs.Zones
539	}
540	if lbrs.TargetResourceName != nil {
541		objectMap["targetResourceName"] = lbrs.TargetResourceName
542	}
543	if lbrs.ResourceType != "" {
544		objectMap["resourceType"] = lbrs.ResourceType
545	}
546	return json.Marshal(objectMap)
547}
548
549// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
550func (lbrs LoadBalancerResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
551	return nil, false
552}
553
554// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
555func (lbrs LoadBalancerResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
556	return nil, false
557}
558
559// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
560func (lbrs LoadBalancerResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
561	return nil, false
562}
563
564// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
565func (lbrs LoadBalancerResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
566	return nil, false
567}
568
569// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
570func (lbrs LoadBalancerResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
571	return nil, false
572}
573
574// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
575func (lbrs LoadBalancerResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
576	return &lbrs, true
577}
578
579// AsSQLServerResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
580func (lbrs LoadBalancerResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
581	return nil, false
582}
583
584// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
585func (lbrs LoadBalancerResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
586	return nil, false
587}
588
589// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
590func (lbrs LoadBalancerResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
591	return nil, false
592}
593
594// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
595func (lbrs LoadBalancerResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
596	return nil, false
597}
598
599// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
600func (lbrs LoadBalancerResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
601	return nil, false
602}
603
604// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
605func (lbrs LoadBalancerResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
606	return nil, false
607}
608
609// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
610func (lbrs LoadBalancerResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
611	return nil, false
612}
613
614// AsResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
615func (lbrs LoadBalancerResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
616	return nil, false
617}
618
619// AsBasicResourceSettings is the BasicResourceSettings implementation for LoadBalancerResourceSettings.
620func (lbrs LoadBalancerResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
621	return &lbrs, true
622}
623
624// ManualResolutionProperties defines the properties for manual resolution.
625type ManualResolutionProperties struct {
626	// TargetID - Gets or sets the target resource ARM ID of the dependent resource if the resource type is Manual.
627	TargetID *string `json:"targetId,omitempty"`
628}
629
630// MoveCollection define the move collection.
631type MoveCollection struct {
632	autorest.Response `json:"-"`
633	// ID - READ-ONLY; Fully qualified resource Id for the resource.
634	ID *string `json:"id,omitempty"`
635	// Name - READ-ONLY; The name of the resource
636	Name *string `json:"name,omitempty"`
637	// Type - READ-ONLY; The type of the resource.
638	Type *string `json:"type,omitempty"`
639	// Etag - READ-ONLY; The etag of the resource.
640	Etag *string `json:"etag,omitempty"`
641	// Tags - Resource tags.
642	Tags map[string]*string `json:"tags"`
643	// Location - The geo-location where the resource lives.
644	Location   *string                   `json:"location,omitempty"`
645	Identity   *Identity                 `json:"identity,omitempty"`
646	Properties *MoveCollectionProperties `json:"properties,omitempty"`
647}
648
649// MarshalJSON is the custom marshaler for MoveCollection.
650func (mc MoveCollection) MarshalJSON() ([]byte, error) {
651	objectMap := make(map[string]interface{})
652	if mc.Tags != nil {
653		objectMap["tags"] = mc.Tags
654	}
655	if mc.Location != nil {
656		objectMap["location"] = mc.Location
657	}
658	if mc.Identity != nil {
659		objectMap["identity"] = mc.Identity
660	}
661	if mc.Properties != nil {
662		objectMap["properties"] = mc.Properties
663	}
664	return json.Marshal(objectMap)
665}
666
667// MoveCollectionProperties defines the move collection properties.
668type MoveCollectionProperties struct {
669	// SourceRegion - Gets or sets the source region.
670	SourceRegion *string `json:"sourceRegion,omitempty"`
671	// TargetRegion - Gets or sets the target region.
672	TargetRegion *string `json:"targetRegion,omitempty"`
673	// ProvisioningState - Possible values include: 'Succeeded', 'Updating', 'Creating', 'Failed'
674	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
675	// Errors - READ-ONLY; Defines the move collection errors.
676	Errors *MoveCollectionPropertiesErrors `json:"errors,omitempty"`
677}
678
679// MarshalJSON is the custom marshaler for MoveCollectionProperties.
680func (mcp MoveCollectionProperties) MarshalJSON() ([]byte, error) {
681	objectMap := make(map[string]interface{})
682	if mcp.SourceRegion != nil {
683		objectMap["sourceRegion"] = mcp.SourceRegion
684	}
685	if mcp.TargetRegion != nil {
686		objectMap["targetRegion"] = mcp.TargetRegion
687	}
688	if mcp.ProvisioningState != "" {
689		objectMap["provisioningState"] = mcp.ProvisioningState
690	}
691	return json.Marshal(objectMap)
692}
693
694// MoveCollectionPropertiesErrors defines the move collection errors.
695type MoveCollectionPropertiesErrors struct {
696	// Properties - The move resource error body.
697	Properties *MoveResourceErrorBody `json:"properties,omitempty"`
698}
699
700// MoveCollectionResultList defines the collection of move collections.
701type MoveCollectionResultList struct {
702	autorest.Response `json:"-"`
703	// Value - Gets the list of move collections.
704	Value *[]MoveCollection `json:"value,omitempty"`
705	// NextLink - Gets the value of  next link.
706	NextLink *string `json:"nextLink,omitempty"`
707}
708
709// MoveCollectionResultListIterator provides access to a complete listing of MoveCollection values.
710type MoveCollectionResultListIterator struct {
711	i    int
712	page MoveCollectionResultListPage
713}
714
715// NextWithContext advances to the next value.  If there was an error making
716// the request the iterator does not advance and the error is returned.
717func (iter *MoveCollectionResultListIterator) NextWithContext(ctx context.Context) (err error) {
718	if tracing.IsEnabled() {
719		ctx = tracing.StartSpan(ctx, fqdn+"/MoveCollectionResultListIterator.NextWithContext")
720		defer func() {
721			sc := -1
722			if iter.Response().Response.Response != nil {
723				sc = iter.Response().Response.Response.StatusCode
724			}
725			tracing.EndSpan(ctx, sc, err)
726		}()
727	}
728	iter.i++
729	if iter.i < len(iter.page.Values()) {
730		return nil
731	}
732	err = iter.page.NextWithContext(ctx)
733	if err != nil {
734		iter.i--
735		return err
736	}
737	iter.i = 0
738	return nil
739}
740
741// Next advances to the next value.  If there was an error making
742// the request the iterator does not advance and the error is returned.
743// Deprecated: Use NextWithContext() instead.
744func (iter *MoveCollectionResultListIterator) Next() error {
745	return iter.NextWithContext(context.Background())
746}
747
748// NotDone returns true if the enumeration should be started or is not yet complete.
749func (iter MoveCollectionResultListIterator) NotDone() bool {
750	return iter.page.NotDone() && iter.i < len(iter.page.Values())
751}
752
753// Response returns the raw server response from the last page request.
754func (iter MoveCollectionResultListIterator) Response() MoveCollectionResultList {
755	return iter.page.Response()
756}
757
758// Value returns the current value or a zero-initialized value if the
759// iterator has advanced beyond the end of the collection.
760func (iter MoveCollectionResultListIterator) Value() MoveCollection {
761	if !iter.page.NotDone() {
762		return MoveCollection{}
763	}
764	return iter.page.Values()[iter.i]
765}
766
767// Creates a new instance of the MoveCollectionResultListIterator type.
768func NewMoveCollectionResultListIterator(page MoveCollectionResultListPage) MoveCollectionResultListIterator {
769	return MoveCollectionResultListIterator{page: page}
770}
771
772// IsEmpty returns true if the ListResult contains no values.
773func (mcrl MoveCollectionResultList) IsEmpty() bool {
774	return mcrl.Value == nil || len(*mcrl.Value) == 0
775}
776
777// hasNextLink returns true if the NextLink is not empty.
778func (mcrl MoveCollectionResultList) hasNextLink() bool {
779	return mcrl.NextLink != nil && len(*mcrl.NextLink) != 0
780}
781
782// moveCollectionResultListPreparer prepares a request to retrieve the next set of results.
783// It returns nil if no more results exist.
784func (mcrl MoveCollectionResultList) moveCollectionResultListPreparer(ctx context.Context) (*http.Request, error) {
785	if !mcrl.hasNextLink() {
786		return nil, nil
787	}
788	return autorest.Prepare((&http.Request{}).WithContext(ctx),
789		autorest.AsJSON(),
790		autorest.AsGet(),
791		autorest.WithBaseURL(to.String(mcrl.NextLink)))
792}
793
794// MoveCollectionResultListPage contains a page of MoveCollection values.
795type MoveCollectionResultListPage struct {
796	fn   func(context.Context, MoveCollectionResultList) (MoveCollectionResultList, error)
797	mcrl MoveCollectionResultList
798}
799
800// NextWithContext advances to the next page of values.  If there was an error making
801// the request the page does not advance and the error is returned.
802func (page *MoveCollectionResultListPage) NextWithContext(ctx context.Context) (err error) {
803	if tracing.IsEnabled() {
804		ctx = tracing.StartSpan(ctx, fqdn+"/MoveCollectionResultListPage.NextWithContext")
805		defer func() {
806			sc := -1
807			if page.Response().Response.Response != nil {
808				sc = page.Response().Response.Response.StatusCode
809			}
810			tracing.EndSpan(ctx, sc, err)
811		}()
812	}
813	for {
814		next, err := page.fn(ctx, page.mcrl)
815		if err != nil {
816			return err
817		}
818		page.mcrl = next
819		if !next.hasNextLink() || !next.IsEmpty() {
820			break
821		}
822	}
823	return nil
824}
825
826// Next advances to the next page of values.  If there was an error making
827// the request the page does not advance and the error is returned.
828// Deprecated: Use NextWithContext() instead.
829func (page *MoveCollectionResultListPage) Next() error {
830	return page.NextWithContext(context.Background())
831}
832
833// NotDone returns true if the page enumeration should be started or is not yet complete.
834func (page MoveCollectionResultListPage) NotDone() bool {
835	return !page.mcrl.IsEmpty()
836}
837
838// Response returns the raw server response from the last page request.
839func (page MoveCollectionResultListPage) Response() MoveCollectionResultList {
840	return page.mcrl
841}
842
843// Values returns the slice of values for the current page or nil if there are no values.
844func (page MoveCollectionResultListPage) Values() []MoveCollection {
845	if page.mcrl.IsEmpty() {
846		return nil
847	}
848	return *page.mcrl.Value
849}
850
851// Creates a new instance of the MoveCollectionResultListPage type.
852func NewMoveCollectionResultListPage(cur MoveCollectionResultList, getNextPage func(context.Context, MoveCollectionResultList) (MoveCollectionResultList, error)) MoveCollectionResultListPage {
853	return MoveCollectionResultListPage{
854		fn:   getNextPage,
855		mcrl: cur,
856	}
857}
858
859// MoveCollectionsBulkRemoveFuture an abstraction for monitoring and retrieving the results of a
860// long-running operation.
861type MoveCollectionsBulkRemoveFuture struct {
862	azure.FutureAPI
863	// Result returns the result of the asynchronous operation.
864	// If the operation has not completed it will return an error.
865	Result func(MoveCollectionsClient) (OperationStatus, error)
866}
867
868// MoveCollectionsCommitFuture an abstraction for monitoring and retrieving the results of a long-running
869// operation.
870type MoveCollectionsCommitFuture struct {
871	azure.FutureAPI
872	// Result returns the result of the asynchronous operation.
873	// If the operation has not completed it will return an error.
874	Result func(MoveCollectionsClient) (OperationStatus, error)
875}
876
877// MoveCollectionsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
878// operation.
879type MoveCollectionsDeleteFuture struct {
880	azure.FutureAPI
881	// Result returns the result of the asynchronous operation.
882	// If the operation has not completed it will return an error.
883	Result func(MoveCollectionsClient) (OperationStatus, error)
884}
885
886// MoveCollectionsDiscardFuture an abstraction for monitoring and retrieving the results of a long-running
887// operation.
888type MoveCollectionsDiscardFuture struct {
889	azure.FutureAPI
890	// Result returns the result of the asynchronous operation.
891	// If the operation has not completed it will return an error.
892	Result func(MoveCollectionsClient) (OperationStatus, error)
893}
894
895// MoveCollectionsInitiateMoveFuture an abstraction for monitoring and retrieving the results of a
896// long-running operation.
897type MoveCollectionsInitiateMoveFuture struct {
898	azure.FutureAPI
899	// Result returns the result of the asynchronous operation.
900	// If the operation has not completed it will return an error.
901	Result func(MoveCollectionsClient) (OperationStatus, error)
902}
903
904// MoveCollectionsPrepareFuture an abstraction for monitoring and retrieving the results of a long-running
905// operation.
906type MoveCollectionsPrepareFuture struct {
907	azure.FutureAPI
908	// Result returns the result of the asynchronous operation.
909	// If the operation has not completed it will return an error.
910	Result func(MoveCollectionsClient) (OperationStatus, error)
911}
912
913// MoveCollectionsResolveDependenciesFuture an abstraction for monitoring and retrieving the results of a
914// long-running operation.
915type MoveCollectionsResolveDependenciesFuture struct {
916	azure.FutureAPI
917	// Result returns the result of the asynchronous operation.
918	// If the operation has not completed it will return an error.
919	Result func(MoveCollectionsClient) (OperationStatus, error)
920}
921
922// MoveErrorInfo the move custom error info.
923type MoveErrorInfo struct {
924	// MoveResources - READ-ONLY; The affected move resources.
925	MoveResources *[]AffectedMoveResource `json:"moveResources,omitempty"`
926}
927
928// MoveResource defines the move resource.
929type MoveResource struct {
930	autorest.Response `json:"-"`
931	// ID - READ-ONLY; Fully qualified resource Id for the resource.
932	ID *string `json:"id,omitempty"`
933	// Name - READ-ONLY; The name of the resource
934	Name *string `json:"name,omitempty"`
935	// Type - READ-ONLY; The type of the resource.
936	Type       *string                 `json:"type,omitempty"`
937	Properties *MoveResourceProperties `json:"properties,omitempty"`
938}
939
940// MarshalJSON is the custom marshaler for MoveResource.
941func (mr MoveResource) MarshalJSON() ([]byte, error) {
942	objectMap := make(map[string]interface{})
943	if mr.Properties != nil {
944		objectMap["properties"] = mr.Properties
945	}
946	return json.Marshal(objectMap)
947}
948
949// MoveResourceCollection defines the collection of move resources.
950type MoveResourceCollection struct {
951	autorest.Response `json:"-"`
952	// Value - Gets the list of move resources.
953	Value *[]MoveResource `json:"value,omitempty"`
954	// NextLink - Gets the value of  next link.
955	NextLink *string `json:"nextLink,omitempty"`
956	// SummaryCollection - Gets or sets the list of summary items and the field on which summary is done.
957	SummaryCollection *SummaryCollection `json:"summaryCollection,omitempty"`
958	// TotalCount - READ-ONLY; Gets the total count.
959	TotalCount *int64 `json:"totalCount,omitempty"`
960}
961
962// MarshalJSON is the custom marshaler for MoveResourceCollection.
963func (mrc MoveResourceCollection) MarshalJSON() ([]byte, error) {
964	objectMap := make(map[string]interface{})
965	if mrc.Value != nil {
966		objectMap["value"] = mrc.Value
967	}
968	if mrc.NextLink != nil {
969		objectMap["nextLink"] = mrc.NextLink
970	}
971	if mrc.SummaryCollection != nil {
972		objectMap["summaryCollection"] = mrc.SummaryCollection
973	}
974	return json.Marshal(objectMap)
975}
976
977// MoveResourceCollectionIterator provides access to a complete listing of MoveResource values.
978type MoveResourceCollectionIterator struct {
979	i    int
980	page MoveResourceCollectionPage
981}
982
983// NextWithContext advances to the next value.  If there was an error making
984// the request the iterator does not advance and the error is returned.
985func (iter *MoveResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
986	if tracing.IsEnabled() {
987		ctx = tracing.StartSpan(ctx, fqdn+"/MoveResourceCollectionIterator.NextWithContext")
988		defer func() {
989			sc := -1
990			if iter.Response().Response.Response != nil {
991				sc = iter.Response().Response.Response.StatusCode
992			}
993			tracing.EndSpan(ctx, sc, err)
994		}()
995	}
996	iter.i++
997	if iter.i < len(iter.page.Values()) {
998		return nil
999	}
1000	err = iter.page.NextWithContext(ctx)
1001	if err != nil {
1002		iter.i--
1003		return err
1004	}
1005	iter.i = 0
1006	return nil
1007}
1008
1009// Next advances to the next value.  If there was an error making
1010// the request the iterator does not advance and the error is returned.
1011// Deprecated: Use NextWithContext() instead.
1012func (iter *MoveResourceCollectionIterator) Next() error {
1013	return iter.NextWithContext(context.Background())
1014}
1015
1016// NotDone returns true if the enumeration should be started or is not yet complete.
1017func (iter MoveResourceCollectionIterator) NotDone() bool {
1018	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1019}
1020
1021// Response returns the raw server response from the last page request.
1022func (iter MoveResourceCollectionIterator) Response() MoveResourceCollection {
1023	return iter.page.Response()
1024}
1025
1026// Value returns the current value or a zero-initialized value if the
1027// iterator has advanced beyond the end of the collection.
1028func (iter MoveResourceCollectionIterator) Value() MoveResource {
1029	if !iter.page.NotDone() {
1030		return MoveResource{}
1031	}
1032	return iter.page.Values()[iter.i]
1033}
1034
1035// Creates a new instance of the MoveResourceCollectionIterator type.
1036func NewMoveResourceCollectionIterator(page MoveResourceCollectionPage) MoveResourceCollectionIterator {
1037	return MoveResourceCollectionIterator{page: page}
1038}
1039
1040// IsEmpty returns true if the ListResult contains no values.
1041func (mrc MoveResourceCollection) IsEmpty() bool {
1042	return mrc.Value == nil || len(*mrc.Value) == 0
1043}
1044
1045// hasNextLink returns true if the NextLink is not empty.
1046func (mrc MoveResourceCollection) hasNextLink() bool {
1047	return mrc.NextLink != nil && len(*mrc.NextLink) != 0
1048}
1049
1050// moveResourceCollectionPreparer prepares a request to retrieve the next set of results.
1051// It returns nil if no more results exist.
1052func (mrc MoveResourceCollection) moveResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
1053	if !mrc.hasNextLink() {
1054		return nil, nil
1055	}
1056	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1057		autorest.AsJSON(),
1058		autorest.AsGet(),
1059		autorest.WithBaseURL(to.String(mrc.NextLink)))
1060}
1061
1062// MoveResourceCollectionPage contains a page of MoveResource values.
1063type MoveResourceCollectionPage struct {
1064	fn  func(context.Context, MoveResourceCollection) (MoveResourceCollection, error)
1065	mrc MoveResourceCollection
1066}
1067
1068// NextWithContext advances to the next page of values.  If there was an error making
1069// the request the page does not advance and the error is returned.
1070func (page *MoveResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
1071	if tracing.IsEnabled() {
1072		ctx = tracing.StartSpan(ctx, fqdn+"/MoveResourceCollectionPage.NextWithContext")
1073		defer func() {
1074			sc := -1
1075			if page.Response().Response.Response != nil {
1076				sc = page.Response().Response.Response.StatusCode
1077			}
1078			tracing.EndSpan(ctx, sc, err)
1079		}()
1080	}
1081	for {
1082		next, err := page.fn(ctx, page.mrc)
1083		if err != nil {
1084			return err
1085		}
1086		page.mrc = next
1087		if !next.hasNextLink() || !next.IsEmpty() {
1088			break
1089		}
1090	}
1091	return nil
1092}
1093
1094// Next advances to the next page of values.  If there was an error making
1095// the request the page does not advance and the error is returned.
1096// Deprecated: Use NextWithContext() instead.
1097func (page *MoveResourceCollectionPage) Next() error {
1098	return page.NextWithContext(context.Background())
1099}
1100
1101// NotDone returns true if the page enumeration should be started or is not yet complete.
1102func (page MoveResourceCollectionPage) NotDone() bool {
1103	return !page.mrc.IsEmpty()
1104}
1105
1106// Response returns the raw server response from the last page request.
1107func (page MoveResourceCollectionPage) Response() MoveResourceCollection {
1108	return page.mrc
1109}
1110
1111// Values returns the slice of values for the current page or nil if there are no values.
1112func (page MoveResourceCollectionPage) Values() []MoveResource {
1113	if page.mrc.IsEmpty() {
1114		return nil
1115	}
1116	return *page.mrc.Value
1117}
1118
1119// Creates a new instance of the MoveResourceCollectionPage type.
1120func NewMoveResourceCollectionPage(cur MoveResourceCollection, getNextPage func(context.Context, MoveResourceCollection) (MoveResourceCollection, error)) MoveResourceCollectionPage {
1121	return MoveResourceCollectionPage{
1122		fn:  getNextPage,
1123		mrc: cur,
1124	}
1125}
1126
1127// MoveResourceDependency defines the dependency of the move resource.
1128type MoveResourceDependency struct {
1129	// ID - Gets the source ARM ID of the dependent resource.
1130	ID *string `json:"id,omitempty"`
1131	// ResolutionStatus - Gets the dependency resolution status.
1132	ResolutionStatus *string `json:"resolutionStatus,omitempty"`
1133	// ResolutionType - Possible values include: 'Manual', 'Automatic'
1134	ResolutionType ResolutionType `json:"resolutionType,omitempty"`
1135	// DependencyType - Possible values include: 'RequiredForPrepare', 'RequiredForMove'
1136	DependencyType      DependencyType                 `json:"dependencyType,omitempty"`
1137	ManualResolution    *ManualResolutionProperties    `json:"manualResolution,omitempty"`
1138	AutomaticResolution *AutomaticResolutionProperties `json:"automaticResolution,omitempty"`
1139	// IsOptional - Gets or sets a value indicating whether the dependency is optional.
1140	IsOptional *string `json:"isOptional,omitempty"`
1141}
1142
1143// MoveResourceDependencyOverride defines the dependency override of the move resource.
1144type MoveResourceDependencyOverride struct {
1145	// ID - Gets or sets the ARM ID of the dependent resource.
1146	ID *string `json:"id,omitempty"`
1147	// TargetID - Gets or sets the resource ARM id of either the MoveResource or the resource ARM ID of
1148	// the dependent resource.
1149	TargetID *string `json:"targetId,omitempty"`
1150}
1151
1152// MoveResourceError an error response from the azure resource mover service.
1153type MoveResourceError struct {
1154	// Properties - The move resource error body.
1155	Properties *MoveResourceErrorBody `json:"properties,omitempty"`
1156}
1157
1158// MoveResourceErrorBody an error response from the Azure Migrate service.
1159type MoveResourceErrorBody struct {
1160	// Code - READ-ONLY; An identifier for the error. Codes are invariant and are intended to be consumed programmatically.
1161	Code *string `json:"code,omitempty"`
1162	// Message - READ-ONLY; A message describing the error, intended to be suitable for display in a user interface.
1163	Message *string `json:"message,omitempty"`
1164	// Target - READ-ONLY; The target of the particular error. For example, the name of the property in error.
1165	Target *string `json:"target,omitempty"`
1166	// Details - READ-ONLY; A list of additional details about the error.
1167	Details *[]MoveResourceErrorBody `json:"details,omitempty"`
1168}
1169
1170// MoveResourceFilter move resource filter.
1171type MoveResourceFilter struct {
1172	Properties *MoveResourceFilterProperties `json:"properties,omitempty"`
1173}
1174
1175// MoveResourceFilterProperties ...
1176type MoveResourceFilterProperties struct {
1177	// ProvisioningState - The provisioning state.
1178	ProvisioningState *string `json:"provisioningState,omitempty"`
1179}
1180
1181// MoveResourceProperties defines the move resource properties.
1182type MoveResourceProperties struct {
1183	// ProvisioningState - Possible values include: 'Succeeded', 'Updating', 'Creating', 'Failed'
1184	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
1185	// SourceID - Gets or sets the Source ARM Id of the resource.
1186	SourceID *string `json:"sourceId,omitempty"`
1187	// TargetID - READ-ONLY; Gets or sets the Target ARM Id of the resource.
1188	TargetID *string `json:"targetId,omitempty"`
1189	// ExistingTargetID - Gets or sets the existing target ARM Id of the resource.
1190	ExistingTargetID *string `json:"existingTargetId,omitempty"`
1191	// ResourceSettings - Gets or sets the resource settings.
1192	ResourceSettings BasicResourceSettings `json:"resourceSettings,omitempty"`
1193	// SourceResourceSettings - READ-ONLY; Gets or sets the source resource settings.
1194	SourceResourceSettings BasicResourceSettings `json:"sourceResourceSettings,omitempty"`
1195	// MoveStatus - READ-ONLY; Defines the move resource status.
1196	MoveStatus *MoveResourcePropertiesMoveStatus `json:"moveStatus,omitempty"`
1197	// DependsOn - READ-ONLY; Gets or sets the move resource dependencies.
1198	DependsOn *[]MoveResourceDependency `json:"dependsOn,omitempty"`
1199	// DependsOnOverrides - Gets or sets the move resource dependencies overrides.
1200	DependsOnOverrides *[]MoveResourceDependencyOverride `json:"dependsOnOverrides,omitempty"`
1201	// IsResolveRequired - READ-ONLY; Gets a value indicating whether the resolve action is required over the move collection.
1202	IsResolveRequired *bool `json:"isResolveRequired,omitempty"`
1203	// Errors - READ-ONLY; Defines the move resource errors.
1204	Errors *MoveResourcePropertiesErrors `json:"errors,omitempty"`
1205}
1206
1207// MarshalJSON is the custom marshaler for MoveResourceProperties.
1208func (mrp MoveResourceProperties) MarshalJSON() ([]byte, error) {
1209	objectMap := make(map[string]interface{})
1210	if mrp.ProvisioningState != "" {
1211		objectMap["provisioningState"] = mrp.ProvisioningState
1212	}
1213	if mrp.SourceID != nil {
1214		objectMap["sourceId"] = mrp.SourceID
1215	}
1216	if mrp.ExistingTargetID != nil {
1217		objectMap["existingTargetId"] = mrp.ExistingTargetID
1218	}
1219	objectMap["resourceSettings"] = mrp.ResourceSettings
1220	if mrp.DependsOnOverrides != nil {
1221		objectMap["dependsOnOverrides"] = mrp.DependsOnOverrides
1222	}
1223	return json.Marshal(objectMap)
1224}
1225
1226// UnmarshalJSON is the custom unmarshaler for MoveResourceProperties struct.
1227func (mrp *MoveResourceProperties) UnmarshalJSON(body []byte) error {
1228	var m map[string]*json.RawMessage
1229	err := json.Unmarshal(body, &m)
1230	if err != nil {
1231		return err
1232	}
1233	for k, v := range m {
1234		switch k {
1235		case "provisioningState":
1236			if v != nil {
1237				var provisioningState ProvisioningState
1238				err = json.Unmarshal(*v, &provisioningState)
1239				if err != nil {
1240					return err
1241				}
1242				mrp.ProvisioningState = provisioningState
1243			}
1244		case "sourceId":
1245			if v != nil {
1246				var sourceID string
1247				err = json.Unmarshal(*v, &sourceID)
1248				if err != nil {
1249					return err
1250				}
1251				mrp.SourceID = &sourceID
1252			}
1253		case "targetId":
1254			if v != nil {
1255				var targetID string
1256				err = json.Unmarshal(*v, &targetID)
1257				if err != nil {
1258					return err
1259				}
1260				mrp.TargetID = &targetID
1261			}
1262		case "existingTargetId":
1263			if v != nil {
1264				var existingTargetID string
1265				err = json.Unmarshal(*v, &existingTargetID)
1266				if err != nil {
1267					return err
1268				}
1269				mrp.ExistingTargetID = &existingTargetID
1270			}
1271		case "resourceSettings":
1272			if v != nil {
1273				resourceSettings, err := unmarshalBasicResourceSettings(*v)
1274				if err != nil {
1275					return err
1276				}
1277				mrp.ResourceSettings = resourceSettings
1278			}
1279		case "sourceResourceSettings":
1280			if v != nil {
1281				sourceResourceSettings, err := unmarshalBasicResourceSettings(*v)
1282				if err != nil {
1283					return err
1284				}
1285				mrp.SourceResourceSettings = sourceResourceSettings
1286			}
1287		case "moveStatus":
1288			if v != nil {
1289				var moveStatus MoveResourcePropertiesMoveStatus
1290				err = json.Unmarshal(*v, &moveStatus)
1291				if err != nil {
1292					return err
1293				}
1294				mrp.MoveStatus = &moveStatus
1295			}
1296		case "dependsOn":
1297			if v != nil {
1298				var dependsOn []MoveResourceDependency
1299				err = json.Unmarshal(*v, &dependsOn)
1300				if err != nil {
1301					return err
1302				}
1303				mrp.DependsOn = &dependsOn
1304			}
1305		case "dependsOnOverrides":
1306			if v != nil {
1307				var dependsOnOverrides []MoveResourceDependencyOverride
1308				err = json.Unmarshal(*v, &dependsOnOverrides)
1309				if err != nil {
1310					return err
1311				}
1312				mrp.DependsOnOverrides = &dependsOnOverrides
1313			}
1314		case "isResolveRequired":
1315			if v != nil {
1316				var isResolveRequired bool
1317				err = json.Unmarshal(*v, &isResolveRequired)
1318				if err != nil {
1319					return err
1320				}
1321				mrp.IsResolveRequired = &isResolveRequired
1322			}
1323		case "errors":
1324			if v != nil {
1325				var errorsVar MoveResourcePropertiesErrors
1326				err = json.Unmarshal(*v, &errorsVar)
1327				if err != nil {
1328					return err
1329				}
1330				mrp.Errors = &errorsVar
1331			}
1332		}
1333	}
1334
1335	return nil
1336}
1337
1338// MoveResourcePropertiesErrors defines the move resource errors.
1339type MoveResourcePropertiesErrors struct {
1340	// Properties - The move resource error body.
1341	Properties *MoveResourceErrorBody `json:"properties,omitempty"`
1342}
1343
1344// MoveResourcePropertiesMoveStatus defines the move resource status.
1345type MoveResourcePropertiesMoveStatus struct {
1346	// MoveState - Possible values include: 'AssignmentPending', 'PreparePending', 'PrepareInProgress', 'PrepareFailed', 'MovePending', 'MoveInProgress', 'MoveFailed', 'DiscardInProgress', 'DiscardFailed', 'CommitPending', 'CommitInProgress', 'CommitFailed', 'Committed', 'DeleteSourcePending', 'ResourceMoveCompleted'
1347	MoveState MoveState          `json:"moveState,omitempty"`
1348	JobStatus *JobStatus         `json:"jobStatus,omitempty"`
1349	Errors    *MoveResourceError `json:"errors,omitempty"`
1350}
1351
1352// MoveResourcesCreateFuture an abstraction for monitoring and retrieving the results of a long-running
1353// operation.
1354type MoveResourcesCreateFuture struct {
1355	azure.FutureAPI
1356	// Result returns the result of the asynchronous operation.
1357	// If the operation has not completed it will return an error.
1358	Result func(MoveResourcesClient) (MoveResource, error)
1359}
1360
1361// MoveResourcesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
1362// operation.
1363type MoveResourcesDeleteFuture struct {
1364	azure.FutureAPI
1365	// Result returns the result of the asynchronous operation.
1366	// If the operation has not completed it will return an error.
1367	Result func(MoveResourcesClient) (OperationStatus, error)
1368}
1369
1370// MoveResourceStatus defines the move resource status.
1371type MoveResourceStatus struct {
1372	// MoveState - Possible values include: 'AssignmentPending', 'PreparePending', 'PrepareInProgress', 'PrepareFailed', 'MovePending', 'MoveInProgress', 'MoveFailed', 'DiscardInProgress', 'DiscardFailed', 'CommitPending', 'CommitInProgress', 'CommitFailed', 'Committed', 'DeleteSourcePending', 'ResourceMoveCompleted'
1373	MoveState MoveState          `json:"moveState,omitempty"`
1374	JobStatus *JobStatus         `json:"jobStatus,omitempty"`
1375	Errors    *MoveResourceError `json:"errors,omitempty"`
1376}
1377
1378// NetworkInterfaceResourceSettings defines the network interface resource settings.
1379type NetworkInterfaceResourceSettings struct {
1380	// IPConfigurations - Gets or sets the IP configurations of the NIC.
1381	IPConfigurations *[]NicIPConfigurationResourceSettings `json:"ipConfigurations,omitempty"`
1382	// EnableAcceleratedNetworking - Gets or sets a value indicating whether accelerated networking is enabled.
1383	EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`
1384	// TargetResourceName - Gets or sets the target Resource name.
1385	TargetResourceName *string `json:"targetResourceName,omitempty"`
1386	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
1387	ResourceType ResourceType `json:"resourceType,omitempty"`
1388}
1389
1390// MarshalJSON is the custom marshaler for NetworkInterfaceResourceSettings.
1391func (nirs NetworkInterfaceResourceSettings) MarshalJSON() ([]byte, error) {
1392	nirs.ResourceType = ResourceTypeMicrosoftNetworknetworkInterfaces
1393	objectMap := make(map[string]interface{})
1394	if nirs.IPConfigurations != nil {
1395		objectMap["ipConfigurations"] = nirs.IPConfigurations
1396	}
1397	if nirs.EnableAcceleratedNetworking != nil {
1398		objectMap["enableAcceleratedNetworking"] = nirs.EnableAcceleratedNetworking
1399	}
1400	if nirs.TargetResourceName != nil {
1401		objectMap["targetResourceName"] = nirs.TargetResourceName
1402	}
1403	if nirs.ResourceType != "" {
1404		objectMap["resourceType"] = nirs.ResourceType
1405	}
1406	return json.Marshal(objectMap)
1407}
1408
1409// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1410func (nirs NetworkInterfaceResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
1411	return nil, false
1412}
1413
1414// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1415func (nirs NetworkInterfaceResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
1416	return nil, false
1417}
1418
1419// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1420func (nirs NetworkInterfaceResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
1421	return nil, false
1422}
1423
1424// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1425func (nirs NetworkInterfaceResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
1426	return &nirs, true
1427}
1428
1429// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1430func (nirs NetworkInterfaceResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
1431	return nil, false
1432}
1433
1434// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1435func (nirs NetworkInterfaceResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
1436	return nil, false
1437}
1438
1439// AsSQLServerResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1440func (nirs NetworkInterfaceResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
1441	return nil, false
1442}
1443
1444// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1445func (nirs NetworkInterfaceResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
1446	return nil, false
1447}
1448
1449// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1450func (nirs NetworkInterfaceResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
1451	return nil, false
1452}
1453
1454// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1455func (nirs NetworkInterfaceResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
1456	return nil, false
1457}
1458
1459// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1460func (nirs NetworkInterfaceResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
1461	return nil, false
1462}
1463
1464// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1465func (nirs NetworkInterfaceResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
1466	return nil, false
1467}
1468
1469// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1470func (nirs NetworkInterfaceResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
1471	return nil, false
1472}
1473
1474// AsResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1475func (nirs NetworkInterfaceResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
1476	return nil, false
1477}
1478
1479// AsBasicResourceSettings is the BasicResourceSettings implementation for NetworkInterfaceResourceSettings.
1480func (nirs NetworkInterfaceResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
1481	return &nirs, true
1482}
1483
1484// NetworkSecurityGroupResourceSettings defines the NSG resource settings.
1485type NetworkSecurityGroupResourceSettings struct {
1486	// SecurityRules - Gets or sets Security rules of network security group.
1487	SecurityRules *[]NsgSecurityRule `json:"securityRules,omitempty"`
1488	// TargetResourceName - Gets or sets the target Resource name.
1489	TargetResourceName *string `json:"targetResourceName,omitempty"`
1490	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
1491	ResourceType ResourceType `json:"resourceType,omitempty"`
1492}
1493
1494// MarshalJSON is the custom marshaler for NetworkSecurityGroupResourceSettings.
1495func (nsgrs NetworkSecurityGroupResourceSettings) MarshalJSON() ([]byte, error) {
1496	nsgrs.ResourceType = ResourceTypeMicrosoftNetworknetworkSecurityGroups
1497	objectMap := make(map[string]interface{})
1498	if nsgrs.SecurityRules != nil {
1499		objectMap["securityRules"] = nsgrs.SecurityRules
1500	}
1501	if nsgrs.TargetResourceName != nil {
1502		objectMap["targetResourceName"] = nsgrs.TargetResourceName
1503	}
1504	if nsgrs.ResourceType != "" {
1505		objectMap["resourceType"] = nsgrs.ResourceType
1506	}
1507	return json.Marshal(objectMap)
1508}
1509
1510// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1511func (nsgrs NetworkSecurityGroupResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
1512	return nil, false
1513}
1514
1515// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1516func (nsgrs NetworkSecurityGroupResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
1517	return nil, false
1518}
1519
1520// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1521func (nsgrs NetworkSecurityGroupResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
1522	return nil, false
1523}
1524
1525// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1526func (nsgrs NetworkSecurityGroupResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
1527	return nil, false
1528}
1529
1530// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1531func (nsgrs NetworkSecurityGroupResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
1532	return &nsgrs, true
1533}
1534
1535// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1536func (nsgrs NetworkSecurityGroupResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
1537	return nil, false
1538}
1539
1540// AsSQLServerResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1541func (nsgrs NetworkSecurityGroupResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
1542	return nil, false
1543}
1544
1545// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1546func (nsgrs NetworkSecurityGroupResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
1547	return nil, false
1548}
1549
1550// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1551func (nsgrs NetworkSecurityGroupResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
1552	return nil, false
1553}
1554
1555// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1556func (nsgrs NetworkSecurityGroupResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
1557	return nil, false
1558}
1559
1560// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1561func (nsgrs NetworkSecurityGroupResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
1562	return nil, false
1563}
1564
1565// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1566func (nsgrs NetworkSecurityGroupResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
1567	return nil, false
1568}
1569
1570// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1571func (nsgrs NetworkSecurityGroupResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
1572	return nil, false
1573}
1574
1575// AsResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1576func (nsgrs NetworkSecurityGroupResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
1577	return nil, false
1578}
1579
1580// AsBasicResourceSettings is the BasicResourceSettings implementation for NetworkSecurityGroupResourceSettings.
1581func (nsgrs NetworkSecurityGroupResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
1582	return &nsgrs, true
1583}
1584
1585// NicIPConfigurationResourceSettings defines NIC IP configuration properties.
1586type NicIPConfigurationResourceSettings struct {
1587	// Name - Gets or sets the IP configuration name.
1588	Name *string `json:"name,omitempty"`
1589	// PrivateIPAddress - Gets or sets the private IP address of the network interface IP Configuration.
1590	PrivateIPAddress *string `json:"privateIpAddress,omitempty"`
1591	// PrivateIPAllocationMethod - Gets or sets the private IP address allocation method.
1592	PrivateIPAllocationMethod *string          `json:"privateIpAllocationMethod,omitempty"`
1593	Subnet                    *SubnetReference `json:"subnet,omitempty"`
1594	// Primary - Gets or sets a value indicating whether this IP configuration is the primary.
1595	Primary *bool `json:"primary,omitempty"`
1596	// LoadBalancerBackendAddressPools - Gets or sets the references of the load balancer backend address pools.
1597	LoadBalancerBackendAddressPools *[]LoadBalancerBackendAddressPoolReference `json:"loadBalancerBackendAddressPools,omitempty"`
1598	// LoadBalancerNatRules - Gets or sets the references of the load balancer NAT rules.
1599	LoadBalancerNatRules *[]LoadBalancerNatRuleReference `json:"loadBalancerNatRules,omitempty"`
1600	PublicIP             *PublicIPReference              `json:"publicIp,omitempty"`
1601}
1602
1603// NsgReference defines reference to NSG.
1604type NsgReference struct {
1605	// SourceArmResourceID - Gets the ARM resource ID of the tracked resource being referenced.
1606	SourceArmResourceID *string `json:"sourceArmResourceId,omitempty"`
1607}
1608
1609// NsgSecurityRule security Rule data model for Network Security Groups.
1610type NsgSecurityRule struct {
1611	// Name - Gets or sets the Security rule name.
1612	Name *string `json:"name,omitempty"`
1613	// Access - Gets or sets whether network traffic is allowed or denied.
1614	// Possible values are “Allow” and “Deny”.
1615	Access *string `json:"access,omitempty"`
1616	// Description - Gets or sets a description for this rule. Restricted to 140 chars.
1617	Description *string `json:"description,omitempty"`
1618	// DestinationAddressPrefix - Gets or sets destination address prefix. CIDR or source IP range.
1619	//  A “*” can also be used to match all source IPs. Default tags such
1620	// as ‘VirtualNetwork’, ‘AzureLoadBalancer’ and ‘Internet’ can also be used.
1621	DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"`
1622	// DestinationPortRange - Gets or sets Destination Port or Range. Integer or range between
1623	// 0 and 65535. A “*” can also be used to match all ports.
1624	DestinationPortRange *string `json:"destinationPortRange,omitempty"`
1625	// Direction - Gets or sets the direction of the rule.InBound or Outbound. The
1626	// direction specifies if rule will be evaluated on incoming or outgoing traffic.
1627	Direction *string `json:"direction,omitempty"`
1628	// Priority - Gets or sets the priority of the rule. The value can be between
1629	// 100 and 4096. The priority number must be unique for each rule in the collection.
1630	// The lower the priority number, the higher the priority of the rule.
1631	Priority *int32 `json:"priority,omitempty"`
1632	// Protocol - Gets or sets Network protocol this rule applies to. Can be Tcp, Udp or All(*).
1633	Protocol *string `json:"protocol,omitempty"`
1634	// SourceAddressPrefix - Gets or sets source address prefix. CIDR or source IP range. A
1635	// “*” can also be used to match all source IPs.  Default tags such as ‘VirtualNetwork’,
1636	// ‘AzureLoadBalancer’ and ‘Internet’ can also be used. If this is an ingress
1637	// rule, specifies where network traffic originates from.
1638	SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"`
1639	// SourcePortRange - Gets or sets Source Port or Range. Integer or range between 0 and
1640	// 65535. A “*” can also be used to match all ports.
1641	SourcePortRange *string `json:"sourcePortRange,omitempty"`
1642}
1643
1644// OperationErrorAdditionalInfo the operation error info.
1645type OperationErrorAdditionalInfo struct {
1646	// Type - READ-ONLY; The error type.
1647	Type *string `json:"type,omitempty"`
1648	// Info - READ-ONLY; The operation error info.
1649	Info *MoveErrorInfo `json:"info,omitempty"`
1650}
1651
1652// OperationsDiscovery operations discovery class.
1653type OperationsDiscovery struct {
1654	// Name - Gets or sets Name of the API.
1655	// The name of the operation being performed on this particular object. It should
1656	// match the action name that appears in RBAC / the event service.
1657	// Examples of operations include:
1658	// * Microsoft.Compute/virtualMachine/capture/action
1659	// * Microsoft.Compute/virtualMachine/restart/action
1660	// * Microsoft.Compute/virtualMachine/write
1661	// * Microsoft.Compute/virtualMachine/read
1662	// * Microsoft.Compute/virtualMachine/delete
1663	// Each action should include, in order:
1664	// (1) Resource Provider Namespace
1665	// (2) Type hierarchy for which the action applies (e.g. server/databases for a SQL
1666	// Azure database)
1667	// (3) Read, Write, Action or Delete indicating which type applies. If it is a PUT/PATCH
1668	// on a collection or named value, Write should be used.
1669	// If it is a GET, Read should be used. If it is a DELETE, Delete should be used. If it
1670	// is a POST, Action should be used.
1671	// As a note: all resource providers would need to include the "{Resource Provider
1672	// Namespace}/register/action" operation in their response.
1673	// This API is used to register for their service, and should include details about the
1674	// operation (e.g. a localized name for the resource provider + any special
1675	// considerations like PII release).
1676	Name *string `json:"name,omitempty"`
1677	// IsDataAction - Indicates whether the operation is a data action
1678	IsDataAction *bool    `json:"isDataAction,omitempty"`
1679	Display      *Display `json:"display,omitempty"`
1680	// Origin - Gets or sets Origin.
1681	// The intended executor of the operation; governs the display of the operation in the
1682	// RBAC UX and the audit logs UX.
1683	// Default value is "user,system".
1684	Origin     *string     `json:"origin,omitempty"`
1685	Properties interface{} `json:"properties,omitempty"`
1686}
1687
1688// OperationsDiscoveryCollection collection of ClientDiscovery details.
1689type OperationsDiscoveryCollection struct {
1690	autorest.Response `json:"-"`
1691	// Value - Gets or sets the ClientDiscovery details.
1692	Value *[]OperationsDiscovery `json:"value,omitempty"`
1693	// NextLink - Gets or sets the value of next link.
1694	NextLink *string `json:"nextLink,omitempty"`
1695}
1696
1697// OperationStatus operation status REST resource.
1698type OperationStatus struct {
1699	autorest.Response `json:"-"`
1700	// ID - READ-ONLY; Resource Id.
1701	ID *string `json:"id,omitempty"`
1702	// Name - READ-ONLY; Operation name.
1703	Name *string `json:"name,omitempty"`
1704	// Status - READ-ONLY; Status of the operation. ARM expects the terminal status to be one of Succeeded/ Failed/ Canceled. All other values imply that the operation is still running.
1705	Status *string `json:"status,omitempty"`
1706	// StartTime - READ-ONLY; Start time.
1707	StartTime *string `json:"startTime,omitempty"`
1708	// EndTime - READ-ONLY; End time.
1709	EndTime *string `json:"endTime,omitempty"`
1710	// Error - READ-ONLY; Error stating all error details for the operation.
1711	Error *OperationStatusError `json:"error,omitempty"`
1712	// Properties - READ-ONLY; Custom data.
1713	Properties interface{} `json:"properties,omitempty"`
1714}
1715
1716// OperationStatusError class for operation status errors.
1717type OperationStatusError struct {
1718	// Code - READ-ONLY; The error code.
1719	Code *string `json:"code,omitempty"`
1720	// Message - READ-ONLY; The error message.
1721	Message *string `json:"message,omitempty"`
1722	// Details - READ-ONLY; The error details.
1723	Details *[]OperationStatusError `json:"details,omitempty"`
1724	// AdditionalInfo - READ-ONLY; The additional info.
1725	AdditionalInfo *[]OperationErrorAdditionalInfo `json:"additionalInfo,omitempty"`
1726}
1727
1728// PrepareRequest defines the request body for initiate prepare operation.
1729type PrepareRequest struct {
1730	// ValidateOnly - Gets or sets a value indicating whether the operation needs to only run pre-requisite.
1731	ValidateOnly *bool `json:"validateOnly,omitempty"`
1732	// MoveResources - Gets or sets the list of resource Id's, by default it accepts move resource id's unless the input type is switched via moveResourceInputType property.
1733	MoveResources *[]string `json:"moveResources,omitempty"`
1734	// MoveResourceInputType - Possible values include: 'MoveResourceID', 'MoveResourceSourceID'
1735	MoveResourceInputType MoveResourceInputType `json:"moveResourceInputType,omitempty"`
1736}
1737
1738// ProxyResourceReference defines reference to a proxy resource.
1739type ProxyResourceReference struct {
1740	// Name - Gets the name of the proxy resource on the target side.
1741	Name *string `json:"name,omitempty"`
1742	// SourceArmResourceID - Gets the ARM resource ID of the tracked resource being referenced.
1743	SourceArmResourceID *string `json:"sourceArmResourceId,omitempty"`
1744}
1745
1746// PublicIPAddressResourceSettings defines the public IP address resource settings.
1747type PublicIPAddressResourceSettings struct {
1748	// DomainNameLabel - Gets or sets the domain name label.
1749	DomainNameLabel *string `json:"domainNameLabel,omitempty"`
1750	// Fqdn - Gets or sets the fully qualified domain name.
1751	Fqdn *string `json:"fqdn,omitempty"`
1752	// PublicIPAllocationMethod - Gets or sets public IP allocation method.
1753	PublicIPAllocationMethod *string `json:"publicIpAllocationMethod,omitempty"`
1754	// Sku - Gets or sets public IP sku.
1755	Sku *string `json:"sku,omitempty"`
1756	// Zones - Gets or sets public IP zones.
1757	Zones *string `json:"zones,omitempty"`
1758	// TargetResourceName - Gets or sets the target Resource name.
1759	TargetResourceName *string `json:"targetResourceName,omitempty"`
1760	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
1761	ResourceType ResourceType `json:"resourceType,omitempty"`
1762}
1763
1764// MarshalJSON is the custom marshaler for PublicIPAddressResourceSettings.
1765func (piars PublicIPAddressResourceSettings) MarshalJSON() ([]byte, error) {
1766	piars.ResourceType = ResourceTypeMicrosoftNetworkpublicIPAddresses
1767	objectMap := make(map[string]interface{})
1768	if piars.DomainNameLabel != nil {
1769		objectMap["domainNameLabel"] = piars.DomainNameLabel
1770	}
1771	if piars.Fqdn != nil {
1772		objectMap["fqdn"] = piars.Fqdn
1773	}
1774	if piars.PublicIPAllocationMethod != nil {
1775		objectMap["publicIpAllocationMethod"] = piars.PublicIPAllocationMethod
1776	}
1777	if piars.Sku != nil {
1778		objectMap["sku"] = piars.Sku
1779	}
1780	if piars.Zones != nil {
1781		objectMap["zones"] = piars.Zones
1782	}
1783	if piars.TargetResourceName != nil {
1784		objectMap["targetResourceName"] = piars.TargetResourceName
1785	}
1786	if piars.ResourceType != "" {
1787		objectMap["resourceType"] = piars.ResourceType
1788	}
1789	return json.Marshal(objectMap)
1790}
1791
1792// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1793func (piars PublicIPAddressResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
1794	return nil, false
1795}
1796
1797// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1798func (piars PublicIPAddressResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
1799	return nil, false
1800}
1801
1802// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1803func (piars PublicIPAddressResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
1804	return nil, false
1805}
1806
1807// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1808func (piars PublicIPAddressResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
1809	return nil, false
1810}
1811
1812// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1813func (piars PublicIPAddressResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
1814	return nil, false
1815}
1816
1817// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1818func (piars PublicIPAddressResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
1819	return nil, false
1820}
1821
1822// AsSQLServerResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1823func (piars PublicIPAddressResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
1824	return nil, false
1825}
1826
1827// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1828func (piars PublicIPAddressResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
1829	return nil, false
1830}
1831
1832// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1833func (piars PublicIPAddressResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
1834	return nil, false
1835}
1836
1837// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1838func (piars PublicIPAddressResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
1839	return nil, false
1840}
1841
1842// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1843func (piars PublicIPAddressResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
1844	return &piars, true
1845}
1846
1847// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1848func (piars PublicIPAddressResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
1849	return nil, false
1850}
1851
1852// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1853func (piars PublicIPAddressResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
1854	return nil, false
1855}
1856
1857// AsResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1858func (piars PublicIPAddressResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
1859	return nil, false
1860}
1861
1862// AsBasicResourceSettings is the BasicResourceSettings implementation for PublicIPAddressResourceSettings.
1863func (piars PublicIPAddressResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
1864	return &piars, true
1865}
1866
1867// PublicIPReference defines reference to a public IP.
1868type PublicIPReference struct {
1869	// SourceArmResourceID - Gets the ARM resource ID of the tracked resource being referenced.
1870	SourceArmResourceID *string `json:"sourceArmResourceId,omitempty"`
1871}
1872
1873// RequiredForResourcesCollection required for resources collection.
1874type RequiredForResourcesCollection struct {
1875	autorest.Response `json:"-"`
1876	// SourceIds - Gets or sets the list of source Ids for which the input resource is required.
1877	SourceIds *[]string `json:"sourceIds,omitempty"`
1878}
1879
1880// ResourceGroupResourceSettings defines the resource group resource settings.
1881type ResourceGroupResourceSettings struct {
1882	// TargetResourceName - Gets or sets the target Resource name.
1883	TargetResourceName *string `json:"targetResourceName,omitempty"`
1884	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
1885	ResourceType ResourceType `json:"resourceType,omitempty"`
1886}
1887
1888// MarshalJSON is the custom marshaler for ResourceGroupResourceSettings.
1889func (rgrs ResourceGroupResourceSettings) MarshalJSON() ([]byte, error) {
1890	rgrs.ResourceType = ResourceTypeResourceGroups
1891	objectMap := make(map[string]interface{})
1892	if rgrs.TargetResourceName != nil {
1893		objectMap["targetResourceName"] = rgrs.TargetResourceName
1894	}
1895	if rgrs.ResourceType != "" {
1896		objectMap["resourceType"] = rgrs.ResourceType
1897	}
1898	return json.Marshal(objectMap)
1899}
1900
1901// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1902func (rgrs ResourceGroupResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
1903	return nil, false
1904}
1905
1906// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1907func (rgrs ResourceGroupResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
1908	return nil, false
1909}
1910
1911// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1912func (rgrs ResourceGroupResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
1913	return nil, false
1914}
1915
1916// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1917func (rgrs ResourceGroupResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
1918	return nil, false
1919}
1920
1921// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1922func (rgrs ResourceGroupResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
1923	return nil, false
1924}
1925
1926// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1927func (rgrs ResourceGroupResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
1928	return nil, false
1929}
1930
1931// AsSQLServerResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1932func (rgrs ResourceGroupResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
1933	return nil, false
1934}
1935
1936// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1937func (rgrs ResourceGroupResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
1938	return nil, false
1939}
1940
1941// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1942func (rgrs ResourceGroupResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
1943	return nil, false
1944}
1945
1946// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1947func (rgrs ResourceGroupResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
1948	return &rgrs, true
1949}
1950
1951// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1952func (rgrs ResourceGroupResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
1953	return nil, false
1954}
1955
1956// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1957func (rgrs ResourceGroupResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
1958	return nil, false
1959}
1960
1961// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1962func (rgrs ResourceGroupResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
1963	return nil, false
1964}
1965
1966// AsResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1967func (rgrs ResourceGroupResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
1968	return nil, false
1969}
1970
1971// AsBasicResourceSettings is the BasicResourceSettings implementation for ResourceGroupResourceSettings.
1972func (rgrs ResourceGroupResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
1973	return &rgrs, true
1974}
1975
1976// ResourceMoveRequestType defines the request body for resource move operation.
1977type ResourceMoveRequestType struct {
1978	// ValidateOnly - Gets or sets a value indicating whether the operation needs to only run pre-requisite.
1979	ValidateOnly *bool `json:"validateOnly,omitempty"`
1980	// MoveResources - Gets or sets the list of resource Id's, by default it accepts move resource id's unless the input type is switched via moveResourceInputType property.
1981	MoveResources *[]string `json:"moveResources,omitempty"`
1982	// MoveResourceInputType - Possible values include: 'MoveResourceID', 'MoveResourceSourceID'
1983	MoveResourceInputType MoveResourceInputType `json:"moveResourceInputType,omitempty"`
1984}
1985
1986// BasicResourceSettings gets or sets the resource settings.
1987type BasicResourceSettings interface {
1988	AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool)
1989	AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool)
1990	AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool)
1991	AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool)
1992	AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool)
1993	AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool)
1994	AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool)
1995	AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool)
1996	AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool)
1997	AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool)
1998	AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool)
1999	AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool)
2000	AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool)
2001	AsResourceSettings() (*ResourceSettings, bool)
2002}
2003
2004// ResourceSettings gets or sets the resource settings.
2005type ResourceSettings struct {
2006	// TargetResourceName - Gets or sets the target Resource name.
2007	TargetResourceName *string `json:"targetResourceName,omitempty"`
2008	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
2009	ResourceType ResourceType `json:"resourceType,omitempty"`
2010}
2011
2012func unmarshalBasicResourceSettings(body []byte) (BasicResourceSettings, error) {
2013	var m map[string]interface{}
2014	err := json.Unmarshal(body, &m)
2015	if err != nil {
2016		return nil, err
2017	}
2018
2019	switch m["resourceType"] {
2020	case string(ResourceTypeMicrosoftComputevirtualMachines):
2021		var vmrs VirtualMachineResourceSettings
2022		err := json.Unmarshal(body, &vmrs)
2023		return vmrs, err
2024	case string(ResourceTypeMicrosoftComputeavailabilitySets):
2025		var asrs AvailabilitySetResourceSettings
2026		err := json.Unmarshal(body, &asrs)
2027		return asrs, err
2028	case string(ResourceTypeMicrosoftNetworkvirtualNetworks):
2029		var vnrs VirtualNetworkResourceSettings
2030		err := json.Unmarshal(body, &vnrs)
2031		return vnrs, err
2032	case string(ResourceTypeMicrosoftNetworknetworkInterfaces):
2033		var nirs NetworkInterfaceResourceSettings
2034		err := json.Unmarshal(body, &nirs)
2035		return nirs, err
2036	case string(ResourceTypeMicrosoftNetworknetworkSecurityGroups):
2037		var nsgrs NetworkSecurityGroupResourceSettings
2038		err := json.Unmarshal(body, &nsgrs)
2039		return nsgrs, err
2040	case string(ResourceTypeMicrosoftNetworkloadBalancers):
2041		var lbrs LoadBalancerResourceSettings
2042		err := json.Unmarshal(body, &lbrs)
2043		return lbrs, err
2044	case string(ResourceTypeMicrosoftSqlservers):
2045		var ssrs SQLServerResourceSettings
2046		err := json.Unmarshal(body, &ssrs)
2047		return ssrs, err
2048	case string(ResourceTypeMicrosoftSqlserverselasticPools):
2049		var seprs SQLElasticPoolResourceSettings
2050		err := json.Unmarshal(body, &seprs)
2051		return seprs, err
2052	case string(ResourceTypeMicrosoftSqlserversdatabases):
2053		var sdrs SQLDatabaseResourceSettings
2054		err := json.Unmarshal(body, &sdrs)
2055		return sdrs, err
2056	case string(ResourceTypeResourceGroups):
2057		var rgrs ResourceGroupResourceSettings
2058		err := json.Unmarshal(body, &rgrs)
2059		return rgrs, err
2060	case string(ResourceTypeMicrosoftNetworkpublicIPAddresses):
2061		var piars PublicIPAddressResourceSettings
2062		err := json.Unmarshal(body, &piars)
2063		return piars, err
2064	case string(ResourceTypeMicrosoftKeyVaultvaults):
2065		var kvrs KeyVaultResourceSettings
2066		err := json.Unmarshal(body, &kvrs)
2067		return kvrs, err
2068	case string(ResourceTypeMicrosoftComputediskEncryptionSets):
2069		var desrs DiskEncryptionSetResourceSettings
2070		err := json.Unmarshal(body, &desrs)
2071		return desrs, err
2072	default:
2073		var rs ResourceSettings
2074		err := json.Unmarshal(body, &rs)
2075		return rs, err
2076	}
2077}
2078func unmarshalBasicResourceSettingsArray(body []byte) ([]BasicResourceSettings, error) {
2079	var rawMessages []*json.RawMessage
2080	err := json.Unmarshal(body, &rawMessages)
2081	if err != nil {
2082		return nil, err
2083	}
2084
2085	rsArray := make([]BasicResourceSettings, len(rawMessages))
2086
2087	for index, rawMessage := range rawMessages {
2088		rs, err := unmarshalBasicResourceSettings(*rawMessage)
2089		if err != nil {
2090			return nil, err
2091		}
2092		rsArray[index] = rs
2093	}
2094	return rsArray, nil
2095}
2096
2097// MarshalJSON is the custom marshaler for ResourceSettings.
2098func (rs ResourceSettings) MarshalJSON() ([]byte, error) {
2099	rs.ResourceType = ResourceTypeResourceSettings
2100	objectMap := make(map[string]interface{})
2101	if rs.TargetResourceName != nil {
2102		objectMap["targetResourceName"] = rs.TargetResourceName
2103	}
2104	if rs.ResourceType != "" {
2105		objectMap["resourceType"] = rs.ResourceType
2106	}
2107	return json.Marshal(objectMap)
2108}
2109
2110// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2111func (rs ResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
2112	return nil, false
2113}
2114
2115// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2116func (rs ResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
2117	return nil, false
2118}
2119
2120// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2121func (rs ResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
2122	return nil, false
2123}
2124
2125// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2126func (rs ResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
2127	return nil, false
2128}
2129
2130// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2131func (rs ResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
2132	return nil, false
2133}
2134
2135// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2136func (rs ResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
2137	return nil, false
2138}
2139
2140// AsSQLServerResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2141func (rs ResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
2142	return nil, false
2143}
2144
2145// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2146func (rs ResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
2147	return nil, false
2148}
2149
2150// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2151func (rs ResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
2152	return nil, false
2153}
2154
2155// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2156func (rs ResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
2157	return nil, false
2158}
2159
2160// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2161func (rs ResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
2162	return nil, false
2163}
2164
2165// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2166func (rs ResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
2167	return nil, false
2168}
2169
2170// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2171func (rs ResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
2172	return nil, false
2173}
2174
2175// AsResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2176func (rs ResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
2177	return &rs, true
2178}
2179
2180// AsBasicResourceSettings is the BasicResourceSettings implementation for ResourceSettings.
2181func (rs ResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
2182	return &rs, true
2183}
2184
2185// SQLDatabaseResourceSettings defines the Sql Database resource settings.
2186type SQLDatabaseResourceSettings struct {
2187	// ZoneRedundant - Possible values include: 'Enable', 'Disable'
2188	ZoneRedundant ZoneRedundant `json:"zoneRedundant,omitempty"`
2189	// TargetResourceName - Gets or sets the target Resource name.
2190	TargetResourceName *string `json:"targetResourceName,omitempty"`
2191	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
2192	ResourceType ResourceType `json:"resourceType,omitempty"`
2193}
2194
2195// MarshalJSON is the custom marshaler for SQLDatabaseResourceSettings.
2196func (sdrs SQLDatabaseResourceSettings) MarshalJSON() ([]byte, error) {
2197	sdrs.ResourceType = ResourceTypeMicrosoftSqlserversdatabases
2198	objectMap := make(map[string]interface{})
2199	if sdrs.ZoneRedundant != "" {
2200		objectMap["zoneRedundant"] = sdrs.ZoneRedundant
2201	}
2202	if sdrs.TargetResourceName != nil {
2203		objectMap["targetResourceName"] = sdrs.TargetResourceName
2204	}
2205	if sdrs.ResourceType != "" {
2206		objectMap["resourceType"] = sdrs.ResourceType
2207	}
2208	return json.Marshal(objectMap)
2209}
2210
2211// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2212func (sdrs SQLDatabaseResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
2213	return nil, false
2214}
2215
2216// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2217func (sdrs SQLDatabaseResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
2218	return nil, false
2219}
2220
2221// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2222func (sdrs SQLDatabaseResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
2223	return nil, false
2224}
2225
2226// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2227func (sdrs SQLDatabaseResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
2228	return nil, false
2229}
2230
2231// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2232func (sdrs SQLDatabaseResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
2233	return nil, false
2234}
2235
2236// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2237func (sdrs SQLDatabaseResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
2238	return nil, false
2239}
2240
2241// AsSQLServerResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2242func (sdrs SQLDatabaseResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
2243	return nil, false
2244}
2245
2246// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2247func (sdrs SQLDatabaseResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
2248	return nil, false
2249}
2250
2251// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2252func (sdrs SQLDatabaseResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
2253	return &sdrs, true
2254}
2255
2256// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2257func (sdrs SQLDatabaseResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
2258	return nil, false
2259}
2260
2261// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2262func (sdrs SQLDatabaseResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
2263	return nil, false
2264}
2265
2266// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2267func (sdrs SQLDatabaseResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
2268	return nil, false
2269}
2270
2271// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2272func (sdrs SQLDatabaseResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
2273	return nil, false
2274}
2275
2276// AsResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2277func (sdrs SQLDatabaseResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
2278	return nil, false
2279}
2280
2281// AsBasicResourceSettings is the BasicResourceSettings implementation for SQLDatabaseResourceSettings.
2282func (sdrs SQLDatabaseResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
2283	return &sdrs, true
2284}
2285
2286// SQLElasticPoolResourceSettings defines the Sql ElasticPool resource settings.
2287type SQLElasticPoolResourceSettings struct {
2288	// ZoneRedundant - Possible values include: 'Enable', 'Disable'
2289	ZoneRedundant ZoneRedundant `json:"zoneRedundant,omitempty"`
2290	// TargetResourceName - Gets or sets the target Resource name.
2291	TargetResourceName *string `json:"targetResourceName,omitempty"`
2292	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
2293	ResourceType ResourceType `json:"resourceType,omitempty"`
2294}
2295
2296// MarshalJSON is the custom marshaler for SQLElasticPoolResourceSettings.
2297func (seprs SQLElasticPoolResourceSettings) MarshalJSON() ([]byte, error) {
2298	seprs.ResourceType = ResourceTypeMicrosoftSqlserverselasticPools
2299	objectMap := make(map[string]interface{})
2300	if seprs.ZoneRedundant != "" {
2301		objectMap["zoneRedundant"] = seprs.ZoneRedundant
2302	}
2303	if seprs.TargetResourceName != nil {
2304		objectMap["targetResourceName"] = seprs.TargetResourceName
2305	}
2306	if seprs.ResourceType != "" {
2307		objectMap["resourceType"] = seprs.ResourceType
2308	}
2309	return json.Marshal(objectMap)
2310}
2311
2312// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2313func (seprs SQLElasticPoolResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
2314	return nil, false
2315}
2316
2317// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2318func (seprs SQLElasticPoolResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
2319	return nil, false
2320}
2321
2322// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2323func (seprs SQLElasticPoolResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
2324	return nil, false
2325}
2326
2327// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2328func (seprs SQLElasticPoolResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
2329	return nil, false
2330}
2331
2332// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2333func (seprs SQLElasticPoolResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
2334	return nil, false
2335}
2336
2337// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2338func (seprs SQLElasticPoolResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
2339	return nil, false
2340}
2341
2342// AsSQLServerResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2343func (seprs SQLElasticPoolResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
2344	return nil, false
2345}
2346
2347// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2348func (seprs SQLElasticPoolResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
2349	return &seprs, true
2350}
2351
2352// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2353func (seprs SQLElasticPoolResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
2354	return nil, false
2355}
2356
2357// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2358func (seprs SQLElasticPoolResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
2359	return nil, false
2360}
2361
2362// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2363func (seprs SQLElasticPoolResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
2364	return nil, false
2365}
2366
2367// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2368func (seprs SQLElasticPoolResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
2369	return nil, false
2370}
2371
2372// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2373func (seprs SQLElasticPoolResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
2374	return nil, false
2375}
2376
2377// AsResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2378func (seprs SQLElasticPoolResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
2379	return nil, false
2380}
2381
2382// AsBasicResourceSettings is the BasicResourceSettings implementation for SQLElasticPoolResourceSettings.
2383func (seprs SQLElasticPoolResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
2384	return &seprs, true
2385}
2386
2387// SQLServerResourceSettings defines the SQL Server resource settings.
2388type SQLServerResourceSettings struct {
2389	// TargetResourceName - Gets or sets the target Resource name.
2390	TargetResourceName *string `json:"targetResourceName,omitempty"`
2391	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
2392	ResourceType ResourceType `json:"resourceType,omitempty"`
2393}
2394
2395// MarshalJSON is the custom marshaler for SQLServerResourceSettings.
2396func (ssrs SQLServerResourceSettings) MarshalJSON() ([]byte, error) {
2397	ssrs.ResourceType = ResourceTypeMicrosoftSqlservers
2398	objectMap := make(map[string]interface{})
2399	if ssrs.TargetResourceName != nil {
2400		objectMap["targetResourceName"] = ssrs.TargetResourceName
2401	}
2402	if ssrs.ResourceType != "" {
2403		objectMap["resourceType"] = ssrs.ResourceType
2404	}
2405	return json.Marshal(objectMap)
2406}
2407
2408// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2409func (ssrs SQLServerResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
2410	return nil, false
2411}
2412
2413// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2414func (ssrs SQLServerResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
2415	return nil, false
2416}
2417
2418// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2419func (ssrs SQLServerResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
2420	return nil, false
2421}
2422
2423// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2424func (ssrs SQLServerResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
2425	return nil, false
2426}
2427
2428// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2429func (ssrs SQLServerResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
2430	return nil, false
2431}
2432
2433// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2434func (ssrs SQLServerResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
2435	return nil, false
2436}
2437
2438// AsSQLServerResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2439func (ssrs SQLServerResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
2440	return &ssrs, true
2441}
2442
2443// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2444func (ssrs SQLServerResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
2445	return nil, false
2446}
2447
2448// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2449func (ssrs SQLServerResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
2450	return nil, false
2451}
2452
2453// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2454func (ssrs SQLServerResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
2455	return nil, false
2456}
2457
2458// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2459func (ssrs SQLServerResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
2460	return nil, false
2461}
2462
2463// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2464func (ssrs SQLServerResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
2465	return nil, false
2466}
2467
2468// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2469func (ssrs SQLServerResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
2470	return nil, false
2471}
2472
2473// AsResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2474func (ssrs SQLServerResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
2475	return nil, false
2476}
2477
2478// AsBasicResourceSettings is the BasicResourceSettings implementation for SQLServerResourceSettings.
2479func (ssrs SQLServerResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
2480	return &ssrs, true
2481}
2482
2483// SubnetReference defines reference to subnet.
2484type SubnetReference struct {
2485	// Name - Gets the name of the proxy resource on the target side.
2486	Name *string `json:"name,omitempty"`
2487	// SourceArmResourceID - Gets the ARM resource ID of the tracked resource being referenced.
2488	SourceArmResourceID *string `json:"sourceArmResourceId,omitempty"`
2489}
2490
2491// SubnetResourceSettings defines the virtual network subnets resource settings.
2492type SubnetResourceSettings struct {
2493	// Name - Gets or sets the Subnet name.
2494	Name *string `json:"name,omitempty"`
2495	// AddressPrefix - Gets or sets address prefix for the subnet.
2496	AddressPrefix        *string       `json:"addressPrefix,omitempty"`
2497	NetworkSecurityGroup *NsgReference `json:"networkSecurityGroup,omitempty"`
2498}
2499
2500// Summary summary item.
2501type Summary struct {
2502	// Count - Gets the count.
2503	Count *int32 `json:"count,omitempty"`
2504	// Item - Gets the item.
2505	Item *string `json:"item,omitempty"`
2506}
2507
2508// SummaryCollection summary Collection.
2509type SummaryCollection struct {
2510	// FieldName - Gets or sets the field name on which summary is done.
2511	FieldName *string `json:"fieldName,omitempty"`
2512	// Summary - Gets or sets the list of summary items.
2513	Summary *[]Summary `json:"summary,omitempty"`
2514}
2515
2516// UnresolvedDependenciesFilter unresolved dependencies contract.
2517type UnresolvedDependenciesFilter struct {
2518	Properties *UnresolvedDependenciesFilterProperties `json:"properties,omitempty"`
2519}
2520
2521// UnresolvedDependenciesFilterProperties ...
2522type UnresolvedDependenciesFilterProperties struct {
2523	// Count - The count of the resource.
2524	Count *int32 `json:"count,omitempty"`
2525}
2526
2527// UnresolvedDependency unresolved dependency.
2528type UnresolvedDependency struct {
2529	// Count - Gets or sets the count.
2530	Count *int32 `json:"count,omitempty"`
2531	// ID - Gets or sets the arm id of the dependency.
2532	ID *string `json:"id,omitempty"`
2533}
2534
2535// UnresolvedDependencyCollection unresolved dependency collection.
2536type UnresolvedDependencyCollection struct {
2537	autorest.Response `json:"-"`
2538	// Value - Gets or sets the list of unresolved dependencies.
2539	Value *[]UnresolvedDependency `json:"value,omitempty"`
2540	// NextLink - Gets or sets the value of  next link.
2541	NextLink *string `json:"nextLink,omitempty"`
2542	// SummaryCollection - READ-ONLY; Gets or sets the list of summary items and the field on which summary is done.
2543	SummaryCollection *SummaryCollection `json:"summaryCollection,omitempty"`
2544	// TotalCount - READ-ONLY; Gets the total count.
2545	TotalCount *int64 `json:"totalCount,omitempty"`
2546}
2547
2548// MarshalJSON is the custom marshaler for UnresolvedDependencyCollection.
2549func (udc UnresolvedDependencyCollection) MarshalJSON() ([]byte, error) {
2550	objectMap := make(map[string]interface{})
2551	if udc.Value != nil {
2552		objectMap["value"] = udc.Value
2553	}
2554	if udc.NextLink != nil {
2555		objectMap["nextLink"] = udc.NextLink
2556	}
2557	return json.Marshal(objectMap)
2558}
2559
2560// UnresolvedDependencyCollectionIterator provides access to a complete listing of UnresolvedDependency
2561// values.
2562type UnresolvedDependencyCollectionIterator struct {
2563	i    int
2564	page UnresolvedDependencyCollectionPage
2565}
2566
2567// NextWithContext advances to the next value.  If there was an error making
2568// the request the iterator does not advance and the error is returned.
2569func (iter *UnresolvedDependencyCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2570	if tracing.IsEnabled() {
2571		ctx = tracing.StartSpan(ctx, fqdn+"/UnresolvedDependencyCollectionIterator.NextWithContext")
2572		defer func() {
2573			sc := -1
2574			if iter.Response().Response.Response != nil {
2575				sc = iter.Response().Response.Response.StatusCode
2576			}
2577			tracing.EndSpan(ctx, sc, err)
2578		}()
2579	}
2580	iter.i++
2581	if iter.i < len(iter.page.Values()) {
2582		return nil
2583	}
2584	err = iter.page.NextWithContext(ctx)
2585	if err != nil {
2586		iter.i--
2587		return err
2588	}
2589	iter.i = 0
2590	return nil
2591}
2592
2593// Next advances to the next value.  If there was an error making
2594// the request the iterator does not advance and the error is returned.
2595// Deprecated: Use NextWithContext() instead.
2596func (iter *UnresolvedDependencyCollectionIterator) Next() error {
2597	return iter.NextWithContext(context.Background())
2598}
2599
2600// NotDone returns true if the enumeration should be started or is not yet complete.
2601func (iter UnresolvedDependencyCollectionIterator) NotDone() bool {
2602	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2603}
2604
2605// Response returns the raw server response from the last page request.
2606func (iter UnresolvedDependencyCollectionIterator) Response() UnresolvedDependencyCollection {
2607	return iter.page.Response()
2608}
2609
2610// Value returns the current value or a zero-initialized value if the
2611// iterator has advanced beyond the end of the collection.
2612func (iter UnresolvedDependencyCollectionIterator) Value() UnresolvedDependency {
2613	if !iter.page.NotDone() {
2614		return UnresolvedDependency{}
2615	}
2616	return iter.page.Values()[iter.i]
2617}
2618
2619// Creates a new instance of the UnresolvedDependencyCollectionIterator type.
2620func NewUnresolvedDependencyCollectionIterator(page UnresolvedDependencyCollectionPage) UnresolvedDependencyCollectionIterator {
2621	return UnresolvedDependencyCollectionIterator{page: page}
2622}
2623
2624// IsEmpty returns true if the ListResult contains no values.
2625func (udc UnresolvedDependencyCollection) IsEmpty() bool {
2626	return udc.Value == nil || len(*udc.Value) == 0
2627}
2628
2629// hasNextLink returns true if the NextLink is not empty.
2630func (udc UnresolvedDependencyCollection) hasNextLink() bool {
2631	return udc.NextLink != nil && len(*udc.NextLink) != 0
2632}
2633
2634// unresolvedDependencyCollectionPreparer prepares a request to retrieve the next set of results.
2635// It returns nil if no more results exist.
2636func (udc UnresolvedDependencyCollection) unresolvedDependencyCollectionPreparer(ctx context.Context) (*http.Request, error) {
2637	if !udc.hasNextLink() {
2638		return nil, nil
2639	}
2640	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2641		autorest.AsJSON(),
2642		autorest.AsGet(),
2643		autorest.WithBaseURL(to.String(udc.NextLink)))
2644}
2645
2646// UnresolvedDependencyCollectionPage contains a page of UnresolvedDependency values.
2647type UnresolvedDependencyCollectionPage struct {
2648	fn  func(context.Context, UnresolvedDependencyCollection) (UnresolvedDependencyCollection, error)
2649	udc UnresolvedDependencyCollection
2650}
2651
2652// NextWithContext advances to the next page of values.  If there was an error making
2653// the request the page does not advance and the error is returned.
2654func (page *UnresolvedDependencyCollectionPage) NextWithContext(ctx context.Context) (err error) {
2655	if tracing.IsEnabled() {
2656		ctx = tracing.StartSpan(ctx, fqdn+"/UnresolvedDependencyCollectionPage.NextWithContext")
2657		defer func() {
2658			sc := -1
2659			if page.Response().Response.Response != nil {
2660				sc = page.Response().Response.Response.StatusCode
2661			}
2662			tracing.EndSpan(ctx, sc, err)
2663		}()
2664	}
2665	for {
2666		next, err := page.fn(ctx, page.udc)
2667		if err != nil {
2668			return err
2669		}
2670		page.udc = next
2671		if !next.hasNextLink() || !next.IsEmpty() {
2672			break
2673		}
2674	}
2675	return nil
2676}
2677
2678// Next advances to the next page of values.  If there was an error making
2679// the request the page does not advance and the error is returned.
2680// Deprecated: Use NextWithContext() instead.
2681func (page *UnresolvedDependencyCollectionPage) Next() error {
2682	return page.NextWithContext(context.Background())
2683}
2684
2685// NotDone returns true if the page enumeration should be started or is not yet complete.
2686func (page UnresolvedDependencyCollectionPage) NotDone() bool {
2687	return !page.udc.IsEmpty()
2688}
2689
2690// Response returns the raw server response from the last page request.
2691func (page UnresolvedDependencyCollectionPage) Response() UnresolvedDependencyCollection {
2692	return page.udc
2693}
2694
2695// Values returns the slice of values for the current page or nil if there are no values.
2696func (page UnresolvedDependencyCollectionPage) Values() []UnresolvedDependency {
2697	if page.udc.IsEmpty() {
2698		return nil
2699	}
2700	return *page.udc.Value
2701}
2702
2703// Creates a new instance of the UnresolvedDependencyCollectionPage type.
2704func NewUnresolvedDependencyCollectionPage(cur UnresolvedDependencyCollection, getNextPage func(context.Context, UnresolvedDependencyCollection) (UnresolvedDependencyCollection, error)) UnresolvedDependencyCollectionPage {
2705	return UnresolvedDependencyCollectionPage{
2706		fn:  getNextPage,
2707		udc: cur,
2708	}
2709}
2710
2711// UpdateMoveCollectionRequest defines the request body for updating move collection.
2712type UpdateMoveCollectionRequest struct {
2713	// Tags - Gets or sets the Resource tags.
2714	Tags     map[string]*string `json:"tags"`
2715	Identity *Identity          `json:"identity,omitempty"`
2716}
2717
2718// MarshalJSON is the custom marshaler for UpdateMoveCollectionRequest.
2719func (umcr UpdateMoveCollectionRequest) MarshalJSON() ([]byte, error) {
2720	objectMap := make(map[string]interface{})
2721	if umcr.Tags != nil {
2722		objectMap["tags"] = umcr.Tags
2723	}
2724	if umcr.Identity != nil {
2725		objectMap["identity"] = umcr.Identity
2726	}
2727	return json.Marshal(objectMap)
2728}
2729
2730// VirtualMachineResourceSettings gets or sets the virtual machine resource settings.
2731type VirtualMachineResourceSettings struct {
2732	// TargetAvailabilityZone - Gets or sets the target availability zone. Possible values include: 'One', 'Two', 'Three', 'NA'
2733	TargetAvailabilityZone TargetAvailabilityZone `json:"targetAvailabilityZone,omitempty"`
2734	// TargetVMSize - Gets or sets the target virtual machine size.
2735	TargetVMSize *string `json:"targetVmSize,omitempty"`
2736	// TargetAvailabilitySetID - Gets or sets the target availability set id for virtual machines not in an availability set at source.
2737	TargetAvailabilitySetID *string `json:"targetAvailabilitySetId,omitempty"`
2738	// TargetResourceName - Gets or sets the target Resource name.
2739	TargetResourceName *string `json:"targetResourceName,omitempty"`
2740	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
2741	ResourceType ResourceType `json:"resourceType,omitempty"`
2742}
2743
2744// MarshalJSON is the custom marshaler for VirtualMachineResourceSettings.
2745func (vmrs VirtualMachineResourceSettings) MarshalJSON() ([]byte, error) {
2746	vmrs.ResourceType = ResourceTypeMicrosoftComputevirtualMachines
2747	objectMap := make(map[string]interface{})
2748	if vmrs.TargetAvailabilityZone != "" {
2749		objectMap["targetAvailabilityZone"] = vmrs.TargetAvailabilityZone
2750	}
2751	if vmrs.TargetVMSize != nil {
2752		objectMap["targetVmSize"] = vmrs.TargetVMSize
2753	}
2754	if vmrs.TargetAvailabilitySetID != nil {
2755		objectMap["targetAvailabilitySetId"] = vmrs.TargetAvailabilitySetID
2756	}
2757	if vmrs.TargetResourceName != nil {
2758		objectMap["targetResourceName"] = vmrs.TargetResourceName
2759	}
2760	if vmrs.ResourceType != "" {
2761		objectMap["resourceType"] = vmrs.ResourceType
2762	}
2763	return json.Marshal(objectMap)
2764}
2765
2766// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2767func (vmrs VirtualMachineResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
2768	return &vmrs, true
2769}
2770
2771// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2772func (vmrs VirtualMachineResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
2773	return nil, false
2774}
2775
2776// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2777func (vmrs VirtualMachineResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
2778	return nil, false
2779}
2780
2781// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2782func (vmrs VirtualMachineResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
2783	return nil, false
2784}
2785
2786// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2787func (vmrs VirtualMachineResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
2788	return nil, false
2789}
2790
2791// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2792func (vmrs VirtualMachineResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
2793	return nil, false
2794}
2795
2796// AsSQLServerResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2797func (vmrs VirtualMachineResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
2798	return nil, false
2799}
2800
2801// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2802func (vmrs VirtualMachineResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
2803	return nil, false
2804}
2805
2806// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2807func (vmrs VirtualMachineResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
2808	return nil, false
2809}
2810
2811// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2812func (vmrs VirtualMachineResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
2813	return nil, false
2814}
2815
2816// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2817func (vmrs VirtualMachineResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
2818	return nil, false
2819}
2820
2821// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2822func (vmrs VirtualMachineResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
2823	return nil, false
2824}
2825
2826// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2827func (vmrs VirtualMachineResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
2828	return nil, false
2829}
2830
2831// AsResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2832func (vmrs VirtualMachineResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
2833	return nil, false
2834}
2835
2836// AsBasicResourceSettings is the BasicResourceSettings implementation for VirtualMachineResourceSettings.
2837func (vmrs VirtualMachineResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
2838	return &vmrs, true
2839}
2840
2841// VirtualNetworkResourceSettings defines the virtual network resource settings.
2842type VirtualNetworkResourceSettings struct {
2843	// EnableDdosProtection - Gets or sets a value indicating whether gets or sets whether the
2844	// DDOS protection should be switched on.
2845	EnableDdosProtection *bool `json:"enableDdosProtection,omitempty"`
2846	// AddressSpace - Gets or sets the address prefixes for the virtual network.
2847	AddressSpace *[]string `json:"addressSpace,omitempty"`
2848	// DNSServers - Gets or sets DHCPOptions that contains an array of DNS servers available to VMs
2849	// deployed in the virtual network.
2850	DNSServers *[]string `json:"dnsServers,omitempty"`
2851	// Subnets - Gets or sets List of subnets in a VirtualNetwork.
2852	Subnets *[]SubnetResourceSettings `json:"subnets,omitempty"`
2853	// TargetResourceName - Gets or sets the target Resource name.
2854	TargetResourceName *string `json:"targetResourceName,omitempty"`
2855	// ResourceType - Possible values include: 'ResourceTypeResourceSettings', 'ResourceTypeMicrosoftComputevirtualMachines', 'ResourceTypeMicrosoftComputeavailabilitySets', 'ResourceTypeMicrosoftNetworkvirtualNetworks', 'ResourceTypeMicrosoftNetworknetworkInterfaces', 'ResourceTypeMicrosoftNetworknetworkSecurityGroups', 'ResourceTypeMicrosoftNetworkloadBalancers', 'ResourceTypeMicrosoftSqlservers', 'ResourceTypeMicrosoftSqlserverselasticPools', 'ResourceTypeMicrosoftSqlserversdatabases', 'ResourceTypeResourceGroups', 'ResourceTypeMicrosoftNetworkpublicIPAddresses', 'ResourceTypeMicrosoftKeyVaultvaults', 'ResourceTypeMicrosoftComputediskEncryptionSets'
2856	ResourceType ResourceType `json:"resourceType,omitempty"`
2857}
2858
2859// MarshalJSON is the custom marshaler for VirtualNetworkResourceSettings.
2860func (vnrs VirtualNetworkResourceSettings) MarshalJSON() ([]byte, error) {
2861	vnrs.ResourceType = ResourceTypeMicrosoftNetworkvirtualNetworks
2862	objectMap := make(map[string]interface{})
2863	if vnrs.EnableDdosProtection != nil {
2864		objectMap["enableDdosProtection"] = vnrs.EnableDdosProtection
2865	}
2866	if vnrs.AddressSpace != nil {
2867		objectMap["addressSpace"] = vnrs.AddressSpace
2868	}
2869	if vnrs.DNSServers != nil {
2870		objectMap["dnsServers"] = vnrs.DNSServers
2871	}
2872	if vnrs.Subnets != nil {
2873		objectMap["subnets"] = vnrs.Subnets
2874	}
2875	if vnrs.TargetResourceName != nil {
2876		objectMap["targetResourceName"] = vnrs.TargetResourceName
2877	}
2878	if vnrs.ResourceType != "" {
2879		objectMap["resourceType"] = vnrs.ResourceType
2880	}
2881	return json.Marshal(objectMap)
2882}
2883
2884// AsVirtualMachineResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2885func (vnrs VirtualNetworkResourceSettings) AsVirtualMachineResourceSettings() (*VirtualMachineResourceSettings, bool) {
2886	return nil, false
2887}
2888
2889// AsAvailabilitySetResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2890func (vnrs VirtualNetworkResourceSettings) AsAvailabilitySetResourceSettings() (*AvailabilitySetResourceSettings, bool) {
2891	return nil, false
2892}
2893
2894// AsVirtualNetworkResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2895func (vnrs VirtualNetworkResourceSettings) AsVirtualNetworkResourceSettings() (*VirtualNetworkResourceSettings, bool) {
2896	return &vnrs, true
2897}
2898
2899// AsNetworkInterfaceResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2900func (vnrs VirtualNetworkResourceSettings) AsNetworkInterfaceResourceSettings() (*NetworkInterfaceResourceSettings, bool) {
2901	return nil, false
2902}
2903
2904// AsNetworkSecurityGroupResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2905func (vnrs VirtualNetworkResourceSettings) AsNetworkSecurityGroupResourceSettings() (*NetworkSecurityGroupResourceSettings, bool) {
2906	return nil, false
2907}
2908
2909// AsLoadBalancerResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2910func (vnrs VirtualNetworkResourceSettings) AsLoadBalancerResourceSettings() (*LoadBalancerResourceSettings, bool) {
2911	return nil, false
2912}
2913
2914// AsSQLServerResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2915func (vnrs VirtualNetworkResourceSettings) AsSQLServerResourceSettings() (*SQLServerResourceSettings, bool) {
2916	return nil, false
2917}
2918
2919// AsSQLElasticPoolResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2920func (vnrs VirtualNetworkResourceSettings) AsSQLElasticPoolResourceSettings() (*SQLElasticPoolResourceSettings, bool) {
2921	return nil, false
2922}
2923
2924// AsSQLDatabaseResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2925func (vnrs VirtualNetworkResourceSettings) AsSQLDatabaseResourceSettings() (*SQLDatabaseResourceSettings, bool) {
2926	return nil, false
2927}
2928
2929// AsResourceGroupResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2930func (vnrs VirtualNetworkResourceSettings) AsResourceGroupResourceSettings() (*ResourceGroupResourceSettings, bool) {
2931	return nil, false
2932}
2933
2934// AsPublicIPAddressResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2935func (vnrs VirtualNetworkResourceSettings) AsPublicIPAddressResourceSettings() (*PublicIPAddressResourceSettings, bool) {
2936	return nil, false
2937}
2938
2939// AsKeyVaultResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2940func (vnrs VirtualNetworkResourceSettings) AsKeyVaultResourceSettings() (*KeyVaultResourceSettings, bool) {
2941	return nil, false
2942}
2943
2944// AsDiskEncryptionSetResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2945func (vnrs VirtualNetworkResourceSettings) AsDiskEncryptionSetResourceSettings() (*DiskEncryptionSetResourceSettings, bool) {
2946	return nil, false
2947}
2948
2949// AsResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2950func (vnrs VirtualNetworkResourceSettings) AsResourceSettings() (*ResourceSettings, bool) {
2951	return nil, false
2952}
2953
2954// AsBasicResourceSettings is the BasicResourceSettings implementation for VirtualNetworkResourceSettings.
2955func (vnrs VirtualNetworkResourceSettings) AsBasicResourceSettings() (BasicResourceSettings, bool) {
2956	return &vnrs, true
2957}
2958