...

Source file src/github.com/Azure/azure-sdk-for-go/services/preview/postgresql/mgmt/2020-11-05-preview/postgresqlflexibleservers/models.go

Documentation: github.com/Azure/azure-sdk-for-go/services/preview/postgresql/mgmt/2020-11-05-preview/postgresqlflexibleservers

     1  package postgresqlflexibleservers
     2  
     3  // Copyright (c) Microsoft Corporation. All rights reserved.
     4  // Licensed under the MIT License. See License.txt in the project root for license information.
     5  //
     6  // Code generated by Microsoft (R) AutoRest Code Generator.
     7  // Changes may cause incorrect behavior and will be lost if the code is regenerated.
     8  
     9  import (
    10  	"context"
    11  	"encoding/json"
    12  	"github.com/Azure/go-autorest/autorest"
    13  	"github.com/Azure/go-autorest/autorest/azure"
    14  	"github.com/Azure/go-autorest/autorest/date"
    15  	"github.com/Azure/go-autorest/autorest/to"
    16  	"github.com/Azure/go-autorest/tracing"
    17  	"net/http"
    18  )
    19  
    20  // The package's fully qualified name.
    21  const fqdn = "github.com/Azure/azure-sdk-for-go/services/preview/postgresql/mgmt/2020-11-05-preview/postgresqlflexibleservers"
    22  
    23  // AzureEntityResource the resource model definition for an Azure Resource Manager resource with an etag.
    24  type AzureEntityResource struct {
    25  	// Etag - READ-ONLY; Resource Etag.
    26  	Etag *string `json:"etag,omitempty"`
    27  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
    28  	ID *string `json:"id,omitempty"`
    29  	// Name - READ-ONLY; The name of the resource
    30  	Name *string `json:"name,omitempty"`
    31  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
    32  	Type *string `json:"type,omitempty"`
    33  }
    34  
    35  // MarshalJSON is the custom marshaler for AzureEntityResource.
    36  func (aer AzureEntityResource) MarshalJSON() ([]byte, error) {
    37  	objectMap := make(map[string]interface{})
    38  	return json.Marshal(objectMap)
    39  }
    40  
    41  // CapabilitiesListResult location capability
    42  type CapabilitiesListResult struct {
    43  	autorest.Response `json:"-"`
    44  	// Value - READ-ONLY; A list of supported capabilities.
    45  	Value *[]CapabilityProperties `json:"value,omitempty"`
    46  	// NextLink - READ-ONLY; Link to retrieve next page of results.
    47  	NextLink *string `json:"nextLink,omitempty"`
    48  }
    49  
    50  // MarshalJSON is the custom marshaler for CapabilitiesListResult.
    51  func (clr CapabilitiesListResult) MarshalJSON() ([]byte, error) {
    52  	objectMap := make(map[string]interface{})
    53  	return json.Marshal(objectMap)
    54  }
    55  
    56  // CapabilitiesListResultIterator provides access to a complete listing of CapabilityProperties values.
    57  type CapabilitiesListResultIterator struct {
    58  	i    int
    59  	page CapabilitiesListResultPage
    60  }
    61  
    62  // NextWithContext advances to the next value.  If there was an error making
    63  // the request the iterator does not advance and the error is returned.
    64  func (iter *CapabilitiesListResultIterator) NextWithContext(ctx context.Context) (err error) {
    65  	if tracing.IsEnabled() {
    66  		ctx = tracing.StartSpan(ctx, fqdn+"/CapabilitiesListResultIterator.NextWithContext")
    67  		defer func() {
    68  			sc := -1
    69  			if iter.Response().Response.Response != nil {
    70  				sc = iter.Response().Response.Response.StatusCode
    71  			}
    72  			tracing.EndSpan(ctx, sc, err)
    73  		}()
    74  	}
    75  	iter.i++
    76  	if iter.i < len(iter.page.Values()) {
    77  		return nil
    78  	}
    79  	err = iter.page.NextWithContext(ctx)
    80  	if err != nil {
    81  		iter.i--
    82  		return err
    83  	}
    84  	iter.i = 0
    85  	return nil
    86  }
    87  
    88  // Next advances to the next value.  If there was an error making
    89  // the request the iterator does not advance and the error is returned.
    90  // Deprecated: Use NextWithContext() instead.
    91  func (iter *CapabilitiesListResultIterator) Next() error {
    92  	return iter.NextWithContext(context.Background())
    93  }
    94  
    95  // NotDone returns true if the enumeration should be started or is not yet complete.
    96  func (iter CapabilitiesListResultIterator) NotDone() bool {
    97  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
    98  }
    99  
   100  // Response returns the raw server response from the last page request.
   101  func (iter CapabilitiesListResultIterator) Response() CapabilitiesListResult {
   102  	return iter.page.Response()
   103  }
   104  
   105  // Value returns the current value or a zero-initialized value if the
   106  // iterator has advanced beyond the end of the collection.
   107  func (iter CapabilitiesListResultIterator) Value() CapabilityProperties {
   108  	if !iter.page.NotDone() {
   109  		return CapabilityProperties{}
   110  	}
   111  	return iter.page.Values()[iter.i]
   112  }
   113  
   114  // Creates a new instance of the CapabilitiesListResultIterator type.
   115  func NewCapabilitiesListResultIterator(page CapabilitiesListResultPage) CapabilitiesListResultIterator {
   116  	return CapabilitiesListResultIterator{page: page}
   117  }
   118  
   119  // IsEmpty returns true if the ListResult contains no values.
   120  func (clr CapabilitiesListResult) IsEmpty() bool {
   121  	return clr.Value == nil || len(*clr.Value) == 0
   122  }
   123  
   124  // hasNextLink returns true if the NextLink is not empty.
   125  func (clr CapabilitiesListResult) hasNextLink() bool {
   126  	return clr.NextLink != nil && len(*clr.NextLink) != 0
   127  }
   128  
   129  // capabilitiesListResultPreparer prepares a request to retrieve the next set of results.
   130  // It returns nil if no more results exist.
   131  func (clr CapabilitiesListResult) capabilitiesListResultPreparer(ctx context.Context) (*http.Request, error) {
   132  	if !clr.hasNextLink() {
   133  		return nil, nil
   134  	}
   135  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
   136  		autorest.AsJSON(),
   137  		autorest.AsGet(),
   138  		autorest.WithBaseURL(to.String(clr.NextLink)))
   139  }
   140  
   141  // CapabilitiesListResultPage contains a page of CapabilityProperties values.
   142  type CapabilitiesListResultPage struct {
   143  	fn  func(context.Context, CapabilitiesListResult) (CapabilitiesListResult, error)
   144  	clr CapabilitiesListResult
   145  }
   146  
   147  // NextWithContext advances to the next page of values.  If there was an error making
   148  // the request the page does not advance and the error is returned.
   149  func (page *CapabilitiesListResultPage) NextWithContext(ctx context.Context) (err error) {
   150  	if tracing.IsEnabled() {
   151  		ctx = tracing.StartSpan(ctx, fqdn+"/CapabilitiesListResultPage.NextWithContext")
   152  		defer func() {
   153  			sc := -1
   154  			if page.Response().Response.Response != nil {
   155  				sc = page.Response().Response.Response.StatusCode
   156  			}
   157  			tracing.EndSpan(ctx, sc, err)
   158  		}()
   159  	}
   160  	for {
   161  		next, err := page.fn(ctx, page.clr)
   162  		if err != nil {
   163  			return err
   164  		}
   165  		page.clr = next
   166  		if !next.hasNextLink() || !next.IsEmpty() {
   167  			break
   168  		}
   169  	}
   170  	return nil
   171  }
   172  
   173  // Next advances to the next page of values.  If there was an error making
   174  // the request the page does not advance and the error is returned.
   175  // Deprecated: Use NextWithContext() instead.
   176  func (page *CapabilitiesListResultPage) Next() error {
   177  	return page.NextWithContext(context.Background())
   178  }
   179  
   180  // NotDone returns true if the page enumeration should be started or is not yet complete.
   181  func (page CapabilitiesListResultPage) NotDone() bool {
   182  	return !page.clr.IsEmpty()
   183  }
   184  
   185  // Response returns the raw server response from the last page request.
   186  func (page CapabilitiesListResultPage) Response() CapabilitiesListResult {
   187  	return page.clr
   188  }
   189  
   190  // Values returns the slice of values for the current page or nil if there are no values.
   191  func (page CapabilitiesListResultPage) Values() []CapabilityProperties {
   192  	if page.clr.IsEmpty() {
   193  		return nil
   194  	}
   195  	return *page.clr.Value
   196  }
   197  
   198  // Creates a new instance of the CapabilitiesListResultPage type.
   199  func NewCapabilitiesListResultPage(cur CapabilitiesListResult, getNextPage func(context.Context, CapabilitiesListResult) (CapabilitiesListResult, error)) CapabilitiesListResultPage {
   200  	return CapabilitiesListResultPage{
   201  		fn:  getNextPage,
   202  		clr: cur,
   203  	}
   204  }
   205  
   206  // CapabilityProperties location capabilities.
   207  type CapabilityProperties struct {
   208  	// Zone - READ-ONLY; zone name
   209  	Zone *string `json:"zone,omitempty"`
   210  	// SupportedFlexibleServerEditions - READ-ONLY
   211  	SupportedFlexibleServerEditions *[]ServerEditionCapability `json:"supportedFlexibleServerEditions,omitempty"`
   212  }
   213  
   214  // MarshalJSON is the custom marshaler for CapabilityProperties.
   215  func (cp CapabilityProperties) MarshalJSON() ([]byte, error) {
   216  	objectMap := make(map[string]interface{})
   217  	return json.Marshal(objectMap)
   218  }
   219  
   220  // CloudError an error response from the Batch service.
   221  type CloudError struct {
   222  	Error *ErrorResponse `json:"error,omitempty"`
   223  }
   224  
   225  // Configuration represents a Configuration.
   226  type Configuration struct {
   227  	autorest.Response `json:"-"`
   228  	// ConfigurationProperties - The properties of a configuration.
   229  	*ConfigurationProperties `json:"properties,omitempty"`
   230  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
   231  	ID *string `json:"id,omitempty"`
   232  	// Name - READ-ONLY; The name of the resource
   233  	Name *string `json:"name,omitempty"`
   234  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
   235  	Type *string `json:"type,omitempty"`
   236  }
   237  
   238  // MarshalJSON is the custom marshaler for Configuration.
   239  func (c Configuration) MarshalJSON() ([]byte, error) {
   240  	objectMap := make(map[string]interface{})
   241  	if c.ConfigurationProperties != nil {
   242  		objectMap["properties"] = c.ConfigurationProperties
   243  	}
   244  	return json.Marshal(objectMap)
   245  }
   246  
   247  // UnmarshalJSON is the custom unmarshaler for Configuration struct.
   248  func (c *Configuration) UnmarshalJSON(body []byte) error {
   249  	var m map[string]*json.RawMessage
   250  	err := json.Unmarshal(body, &m)
   251  	if err != nil {
   252  		return err
   253  	}
   254  	for k, v := range m {
   255  		switch k {
   256  		case "properties":
   257  			if v != nil {
   258  				var configurationProperties ConfigurationProperties
   259  				err = json.Unmarshal(*v, &configurationProperties)
   260  				if err != nil {
   261  					return err
   262  				}
   263  				c.ConfigurationProperties = &configurationProperties
   264  			}
   265  		case "id":
   266  			if v != nil {
   267  				var ID string
   268  				err = json.Unmarshal(*v, &ID)
   269  				if err != nil {
   270  					return err
   271  				}
   272  				c.ID = &ID
   273  			}
   274  		case "name":
   275  			if v != nil {
   276  				var name string
   277  				err = json.Unmarshal(*v, &name)
   278  				if err != nil {
   279  					return err
   280  				}
   281  				c.Name = &name
   282  			}
   283  		case "type":
   284  			if v != nil {
   285  				var typeVar string
   286  				err = json.Unmarshal(*v, &typeVar)
   287  				if err != nil {
   288  					return err
   289  				}
   290  				c.Type = &typeVar
   291  			}
   292  		}
   293  	}
   294  
   295  	return nil
   296  }
   297  
   298  // ConfigurationListResult a list of server configurations.
   299  type ConfigurationListResult struct {
   300  	autorest.Response `json:"-"`
   301  	// Value - The list of server configurations.
   302  	Value *[]Configuration `json:"value,omitempty"`
   303  	// NextLink - The link used to get the next page of operations.
   304  	NextLink *string `json:"nextLink,omitempty"`
   305  }
   306  
   307  // ConfigurationListResultIterator provides access to a complete listing of Configuration values.
   308  type ConfigurationListResultIterator struct {
   309  	i    int
   310  	page ConfigurationListResultPage
   311  }
   312  
   313  // NextWithContext advances to the next value.  If there was an error making
   314  // the request the iterator does not advance and the error is returned.
   315  func (iter *ConfigurationListResultIterator) NextWithContext(ctx context.Context) (err error) {
   316  	if tracing.IsEnabled() {
   317  		ctx = tracing.StartSpan(ctx, fqdn+"/ConfigurationListResultIterator.NextWithContext")
   318  		defer func() {
   319  			sc := -1
   320  			if iter.Response().Response.Response != nil {
   321  				sc = iter.Response().Response.Response.StatusCode
   322  			}
   323  			tracing.EndSpan(ctx, sc, err)
   324  		}()
   325  	}
   326  	iter.i++
   327  	if iter.i < len(iter.page.Values()) {
   328  		return nil
   329  	}
   330  	err = iter.page.NextWithContext(ctx)
   331  	if err != nil {
   332  		iter.i--
   333  		return err
   334  	}
   335  	iter.i = 0
   336  	return nil
   337  }
   338  
   339  // Next advances to the next value.  If there was an error making
   340  // the request the iterator does not advance and the error is returned.
   341  // Deprecated: Use NextWithContext() instead.
   342  func (iter *ConfigurationListResultIterator) Next() error {
   343  	return iter.NextWithContext(context.Background())
   344  }
   345  
   346  // NotDone returns true if the enumeration should be started or is not yet complete.
   347  func (iter ConfigurationListResultIterator) NotDone() bool {
   348  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
   349  }
   350  
   351  // Response returns the raw server response from the last page request.
   352  func (iter ConfigurationListResultIterator) Response() ConfigurationListResult {
   353  	return iter.page.Response()
   354  }
   355  
   356  // Value returns the current value or a zero-initialized value if the
   357  // iterator has advanced beyond the end of the collection.
   358  func (iter ConfigurationListResultIterator) Value() Configuration {
   359  	if !iter.page.NotDone() {
   360  		return Configuration{}
   361  	}
   362  	return iter.page.Values()[iter.i]
   363  }
   364  
   365  // Creates a new instance of the ConfigurationListResultIterator type.
   366  func NewConfigurationListResultIterator(page ConfigurationListResultPage) ConfigurationListResultIterator {
   367  	return ConfigurationListResultIterator{page: page}
   368  }
   369  
   370  // IsEmpty returns true if the ListResult contains no values.
   371  func (clr ConfigurationListResult) IsEmpty() bool {
   372  	return clr.Value == nil || len(*clr.Value) == 0
   373  }
   374  
   375  // hasNextLink returns true if the NextLink is not empty.
   376  func (clr ConfigurationListResult) hasNextLink() bool {
   377  	return clr.NextLink != nil && len(*clr.NextLink) != 0
   378  }
   379  
   380  // configurationListResultPreparer prepares a request to retrieve the next set of results.
   381  // It returns nil if no more results exist.
   382  func (clr ConfigurationListResult) configurationListResultPreparer(ctx context.Context) (*http.Request, error) {
   383  	if !clr.hasNextLink() {
   384  		return nil, nil
   385  	}
   386  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
   387  		autorest.AsJSON(),
   388  		autorest.AsGet(),
   389  		autorest.WithBaseURL(to.String(clr.NextLink)))
   390  }
   391  
   392  // ConfigurationListResultPage contains a page of Configuration values.
   393  type ConfigurationListResultPage struct {
   394  	fn  func(context.Context, ConfigurationListResult) (ConfigurationListResult, error)
   395  	clr ConfigurationListResult
   396  }
   397  
   398  // NextWithContext advances to the next page of values.  If there was an error making
   399  // the request the page does not advance and the error is returned.
   400  func (page *ConfigurationListResultPage) NextWithContext(ctx context.Context) (err error) {
   401  	if tracing.IsEnabled() {
   402  		ctx = tracing.StartSpan(ctx, fqdn+"/ConfigurationListResultPage.NextWithContext")
   403  		defer func() {
   404  			sc := -1
   405  			if page.Response().Response.Response != nil {
   406  				sc = page.Response().Response.Response.StatusCode
   407  			}
   408  			tracing.EndSpan(ctx, sc, err)
   409  		}()
   410  	}
   411  	for {
   412  		next, err := page.fn(ctx, page.clr)
   413  		if err != nil {
   414  			return err
   415  		}
   416  		page.clr = next
   417  		if !next.hasNextLink() || !next.IsEmpty() {
   418  			break
   419  		}
   420  	}
   421  	return nil
   422  }
   423  
   424  // Next advances to the next page of values.  If there was an error making
   425  // the request the page does not advance and the error is returned.
   426  // Deprecated: Use NextWithContext() instead.
   427  func (page *ConfigurationListResultPage) Next() error {
   428  	return page.NextWithContext(context.Background())
   429  }
   430  
   431  // NotDone returns true if the page enumeration should be started or is not yet complete.
   432  func (page ConfigurationListResultPage) NotDone() bool {
   433  	return !page.clr.IsEmpty()
   434  }
   435  
   436  // Response returns the raw server response from the last page request.
   437  func (page ConfigurationListResultPage) Response() ConfigurationListResult {
   438  	return page.clr
   439  }
   440  
   441  // Values returns the slice of values for the current page or nil if there are no values.
   442  func (page ConfigurationListResultPage) Values() []Configuration {
   443  	if page.clr.IsEmpty() {
   444  		return nil
   445  	}
   446  	return *page.clr.Value
   447  }
   448  
   449  // Creates a new instance of the ConfigurationListResultPage type.
   450  func NewConfigurationListResultPage(cur ConfigurationListResult, getNextPage func(context.Context, ConfigurationListResult) (ConfigurationListResult, error)) ConfigurationListResultPage {
   451  	return ConfigurationListResultPage{
   452  		fn:  getNextPage,
   453  		clr: cur,
   454  	}
   455  }
   456  
   457  // ConfigurationProperties the properties of a configuration.
   458  type ConfigurationProperties struct {
   459  	// Value - Value of the configuration.
   460  	Value *string `json:"value,omitempty"`
   461  	// Description - READ-ONLY; Description of the configuration.
   462  	Description *string `json:"description,omitempty"`
   463  	// DefaultValue - READ-ONLY; Default value of the configuration.
   464  	DefaultValue *string `json:"defaultValue,omitempty"`
   465  	// DataType - READ-ONLY; Data type of the configuration. Possible values include: 'Boolean', 'Numeric', 'Integer', 'Enumeration'
   466  	DataType ConfigurationDataType `json:"dataType,omitempty"`
   467  	// AllowedValues - READ-ONLY; Allowed values of the configuration.
   468  	AllowedValues *string `json:"allowedValues,omitempty"`
   469  	// Source - Source of the configuration.
   470  	Source *string `json:"source,omitempty"`
   471  }
   472  
   473  // MarshalJSON is the custom marshaler for ConfigurationProperties.
   474  func (cp ConfigurationProperties) MarshalJSON() ([]byte, error) {
   475  	objectMap := make(map[string]interface{})
   476  	if cp.Value != nil {
   477  		objectMap["value"] = cp.Value
   478  	}
   479  	if cp.Source != nil {
   480  		objectMap["source"] = cp.Source
   481  	}
   482  	return json.Marshal(objectMap)
   483  }
   484  
   485  // ConfigurationsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
   486  // operation.
   487  type ConfigurationsUpdateFuture struct {
   488  	azure.FutureAPI
   489  	// Result returns the result of the asynchronous operation.
   490  	// If the operation has not completed it will return an error.
   491  	Result func(ConfigurationsClient) (Configuration, error)
   492  }
   493  
   494  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
   495  func (future *ConfigurationsUpdateFuture) UnmarshalJSON(body []byte) error {
   496  	var azFuture azure.Future
   497  	if err := json.Unmarshal(body, &azFuture); err != nil {
   498  		return err
   499  	}
   500  	future.FutureAPI = &azFuture
   501  	future.Result = future.result
   502  	return nil
   503  }
   504  
   505  // result is the default implementation for ConfigurationsUpdateFuture.Result.
   506  func (future *ConfigurationsUpdateFuture) result(client ConfigurationsClient) (c Configuration, err error) {
   507  	var done bool
   508  	done, err = future.DoneWithContext(context.Background(), client)
   509  	if err != nil {
   510  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ConfigurationsUpdateFuture", "Result", future.Response(), "Polling failure")
   511  		return
   512  	}
   513  	if !done {
   514  		c.Response.Response = future.Response()
   515  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.ConfigurationsUpdateFuture")
   516  		return
   517  	}
   518  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
   519  	if c.Response.Response, err = future.GetResult(sender); err == nil && c.Response.Response.StatusCode != http.StatusNoContent {
   520  		c, err = client.UpdateResponder(c.Response.Response)
   521  		if err != nil {
   522  			err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ConfigurationsUpdateFuture", "Result", c.Response.Response, "Failure responding to request")
   523  		}
   524  	}
   525  	return
   526  }
   527  
   528  // Database represents a Database.
   529  type Database struct {
   530  	autorest.Response `json:"-"`
   531  	// DatabaseProperties - The properties of a database.
   532  	*DatabaseProperties `json:"properties,omitempty"`
   533  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
   534  	ID *string `json:"id,omitempty"`
   535  	// Name - READ-ONLY; The name of the resource
   536  	Name *string `json:"name,omitempty"`
   537  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
   538  	Type *string `json:"type,omitempty"`
   539  }
   540  
   541  // MarshalJSON is the custom marshaler for Database.
   542  func (d Database) MarshalJSON() ([]byte, error) {
   543  	objectMap := make(map[string]interface{})
   544  	if d.DatabaseProperties != nil {
   545  		objectMap["properties"] = d.DatabaseProperties
   546  	}
   547  	return json.Marshal(objectMap)
   548  }
   549  
   550  // UnmarshalJSON is the custom unmarshaler for Database struct.
   551  func (d *Database) UnmarshalJSON(body []byte) error {
   552  	var m map[string]*json.RawMessage
   553  	err := json.Unmarshal(body, &m)
   554  	if err != nil {
   555  		return err
   556  	}
   557  	for k, v := range m {
   558  		switch k {
   559  		case "properties":
   560  			if v != nil {
   561  				var databaseProperties DatabaseProperties
   562  				err = json.Unmarshal(*v, &databaseProperties)
   563  				if err != nil {
   564  					return err
   565  				}
   566  				d.DatabaseProperties = &databaseProperties
   567  			}
   568  		case "id":
   569  			if v != nil {
   570  				var ID string
   571  				err = json.Unmarshal(*v, &ID)
   572  				if err != nil {
   573  					return err
   574  				}
   575  				d.ID = &ID
   576  			}
   577  		case "name":
   578  			if v != nil {
   579  				var name string
   580  				err = json.Unmarshal(*v, &name)
   581  				if err != nil {
   582  					return err
   583  				}
   584  				d.Name = &name
   585  			}
   586  		case "type":
   587  			if v != nil {
   588  				var typeVar string
   589  				err = json.Unmarshal(*v, &typeVar)
   590  				if err != nil {
   591  					return err
   592  				}
   593  				d.Type = &typeVar
   594  			}
   595  		}
   596  	}
   597  
   598  	return nil
   599  }
   600  
   601  // DatabaseListResult a List of databases.
   602  type DatabaseListResult struct {
   603  	autorest.Response `json:"-"`
   604  	// Value - The list of databases housed in a server
   605  	Value *[]Database `json:"value,omitempty"`
   606  	// NextLink - The link used to get the next page of databases.
   607  	NextLink *string `json:"nextLink,omitempty"`
   608  }
   609  
   610  // DatabaseListResultIterator provides access to a complete listing of Database values.
   611  type DatabaseListResultIterator struct {
   612  	i    int
   613  	page DatabaseListResultPage
   614  }
   615  
   616  // NextWithContext advances to the next value.  If there was an error making
   617  // the request the iterator does not advance and the error is returned.
   618  func (iter *DatabaseListResultIterator) NextWithContext(ctx context.Context) (err error) {
   619  	if tracing.IsEnabled() {
   620  		ctx = tracing.StartSpan(ctx, fqdn+"/DatabaseListResultIterator.NextWithContext")
   621  		defer func() {
   622  			sc := -1
   623  			if iter.Response().Response.Response != nil {
   624  				sc = iter.Response().Response.Response.StatusCode
   625  			}
   626  			tracing.EndSpan(ctx, sc, err)
   627  		}()
   628  	}
   629  	iter.i++
   630  	if iter.i < len(iter.page.Values()) {
   631  		return nil
   632  	}
   633  	err = iter.page.NextWithContext(ctx)
   634  	if err != nil {
   635  		iter.i--
   636  		return err
   637  	}
   638  	iter.i = 0
   639  	return nil
   640  }
   641  
   642  // Next advances to the next value.  If there was an error making
   643  // the request the iterator does not advance and the error is returned.
   644  // Deprecated: Use NextWithContext() instead.
   645  func (iter *DatabaseListResultIterator) Next() error {
   646  	return iter.NextWithContext(context.Background())
   647  }
   648  
   649  // NotDone returns true if the enumeration should be started or is not yet complete.
   650  func (iter DatabaseListResultIterator) NotDone() bool {
   651  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
   652  }
   653  
   654  // Response returns the raw server response from the last page request.
   655  func (iter DatabaseListResultIterator) Response() DatabaseListResult {
   656  	return iter.page.Response()
   657  }
   658  
   659  // Value returns the current value or a zero-initialized value if the
   660  // iterator has advanced beyond the end of the collection.
   661  func (iter DatabaseListResultIterator) Value() Database {
   662  	if !iter.page.NotDone() {
   663  		return Database{}
   664  	}
   665  	return iter.page.Values()[iter.i]
   666  }
   667  
   668  // Creates a new instance of the DatabaseListResultIterator type.
   669  func NewDatabaseListResultIterator(page DatabaseListResultPage) DatabaseListResultIterator {
   670  	return DatabaseListResultIterator{page: page}
   671  }
   672  
   673  // IsEmpty returns true if the ListResult contains no values.
   674  func (dlr DatabaseListResult) IsEmpty() bool {
   675  	return dlr.Value == nil || len(*dlr.Value) == 0
   676  }
   677  
   678  // hasNextLink returns true if the NextLink is not empty.
   679  func (dlr DatabaseListResult) hasNextLink() bool {
   680  	return dlr.NextLink != nil && len(*dlr.NextLink) != 0
   681  }
   682  
   683  // databaseListResultPreparer prepares a request to retrieve the next set of results.
   684  // It returns nil if no more results exist.
   685  func (dlr DatabaseListResult) databaseListResultPreparer(ctx context.Context) (*http.Request, error) {
   686  	if !dlr.hasNextLink() {
   687  		return nil, nil
   688  	}
   689  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
   690  		autorest.AsJSON(),
   691  		autorest.AsGet(),
   692  		autorest.WithBaseURL(to.String(dlr.NextLink)))
   693  }
   694  
   695  // DatabaseListResultPage contains a page of Database values.
   696  type DatabaseListResultPage struct {
   697  	fn  func(context.Context, DatabaseListResult) (DatabaseListResult, error)
   698  	dlr DatabaseListResult
   699  }
   700  
   701  // NextWithContext advances to the next page of values.  If there was an error making
   702  // the request the page does not advance and the error is returned.
   703  func (page *DatabaseListResultPage) NextWithContext(ctx context.Context) (err error) {
   704  	if tracing.IsEnabled() {
   705  		ctx = tracing.StartSpan(ctx, fqdn+"/DatabaseListResultPage.NextWithContext")
   706  		defer func() {
   707  			sc := -1
   708  			if page.Response().Response.Response != nil {
   709  				sc = page.Response().Response.Response.StatusCode
   710  			}
   711  			tracing.EndSpan(ctx, sc, err)
   712  		}()
   713  	}
   714  	for {
   715  		next, err := page.fn(ctx, page.dlr)
   716  		if err != nil {
   717  			return err
   718  		}
   719  		page.dlr = next
   720  		if !next.hasNextLink() || !next.IsEmpty() {
   721  			break
   722  		}
   723  	}
   724  	return nil
   725  }
   726  
   727  // Next advances to the next page of values.  If there was an error making
   728  // the request the page does not advance and the error is returned.
   729  // Deprecated: Use NextWithContext() instead.
   730  func (page *DatabaseListResultPage) Next() error {
   731  	return page.NextWithContext(context.Background())
   732  }
   733  
   734  // NotDone returns true if the page enumeration should be started or is not yet complete.
   735  func (page DatabaseListResultPage) NotDone() bool {
   736  	return !page.dlr.IsEmpty()
   737  }
   738  
   739  // Response returns the raw server response from the last page request.
   740  func (page DatabaseListResultPage) Response() DatabaseListResult {
   741  	return page.dlr
   742  }
   743  
   744  // Values returns the slice of values for the current page or nil if there are no values.
   745  func (page DatabaseListResultPage) Values() []Database {
   746  	if page.dlr.IsEmpty() {
   747  		return nil
   748  	}
   749  	return *page.dlr.Value
   750  }
   751  
   752  // Creates a new instance of the DatabaseListResultPage type.
   753  func NewDatabaseListResultPage(cur DatabaseListResult, getNextPage func(context.Context, DatabaseListResult) (DatabaseListResult, error)) DatabaseListResultPage {
   754  	return DatabaseListResultPage{
   755  		fn:  getNextPage,
   756  		dlr: cur,
   757  	}
   758  }
   759  
   760  // DatabaseProperties the properties of a database.
   761  type DatabaseProperties struct {
   762  	// Charset - The charset of the database.
   763  	Charset *string `json:"charset,omitempty"`
   764  	// Collation - The collation of the database.
   765  	Collation *string `json:"collation,omitempty"`
   766  }
   767  
   768  // DatabasesCreateFuture an abstraction for monitoring and retrieving the results of a long-running
   769  // operation.
   770  type DatabasesCreateFuture struct {
   771  	azure.FutureAPI
   772  	// Result returns the result of the asynchronous operation.
   773  	// If the operation has not completed it will return an error.
   774  	Result func(DatabasesClient) (Database, error)
   775  }
   776  
   777  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
   778  func (future *DatabasesCreateFuture) UnmarshalJSON(body []byte) error {
   779  	var azFuture azure.Future
   780  	if err := json.Unmarshal(body, &azFuture); err != nil {
   781  		return err
   782  	}
   783  	future.FutureAPI = &azFuture
   784  	future.Result = future.result
   785  	return nil
   786  }
   787  
   788  // result is the default implementation for DatabasesCreateFuture.Result.
   789  func (future *DatabasesCreateFuture) result(client DatabasesClient) (d Database, err error) {
   790  	var done bool
   791  	done, err = future.DoneWithContext(context.Background(), client)
   792  	if err != nil {
   793  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.DatabasesCreateFuture", "Result", future.Response(), "Polling failure")
   794  		return
   795  	}
   796  	if !done {
   797  		d.Response.Response = future.Response()
   798  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.DatabasesCreateFuture")
   799  		return
   800  	}
   801  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
   802  	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
   803  		d, err = client.CreateResponder(d.Response.Response)
   804  		if err != nil {
   805  			err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.DatabasesCreateFuture", "Result", d.Response.Response, "Failure responding to request")
   806  		}
   807  	}
   808  	return
   809  }
   810  
   811  // DatabasesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
   812  // operation.
   813  type DatabasesDeleteFuture struct {
   814  	azure.FutureAPI
   815  	// Result returns the result of the asynchronous operation.
   816  	// If the operation has not completed it will return an error.
   817  	Result func(DatabasesClient) (autorest.Response, error)
   818  }
   819  
   820  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
   821  func (future *DatabasesDeleteFuture) UnmarshalJSON(body []byte) error {
   822  	var azFuture azure.Future
   823  	if err := json.Unmarshal(body, &azFuture); err != nil {
   824  		return err
   825  	}
   826  	future.FutureAPI = &azFuture
   827  	future.Result = future.result
   828  	return nil
   829  }
   830  
   831  // result is the default implementation for DatabasesDeleteFuture.Result.
   832  func (future *DatabasesDeleteFuture) result(client DatabasesClient) (ar autorest.Response, err error) {
   833  	var done bool
   834  	done, err = future.DoneWithContext(context.Background(), client)
   835  	if err != nil {
   836  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.DatabasesDeleteFuture", "Result", future.Response(), "Polling failure")
   837  		return
   838  	}
   839  	if !done {
   840  		ar.Response = future.Response()
   841  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.DatabasesDeleteFuture")
   842  		return
   843  	}
   844  	ar.Response = future.Response()
   845  	return
   846  }
   847  
   848  // DelegatedSubnetUsage delegated subnet usage data.
   849  type DelegatedSubnetUsage struct {
   850  	// SubnetName - READ-ONLY; name of the subnet
   851  	SubnetName *string `json:"subnetName,omitempty"`
   852  	// Usage - READ-ONLY; Number of used delegated subnets
   853  	Usage *int64 `json:"usage,omitempty"`
   854  }
   855  
   856  // MarshalJSON is the custom marshaler for DelegatedSubnetUsage.
   857  func (dsu DelegatedSubnetUsage) MarshalJSON() ([]byte, error) {
   858  	objectMap := make(map[string]interface{})
   859  	return json.Marshal(objectMap)
   860  }
   861  
   862  // ErrorAdditionalInfo the resource management error additional info.
   863  type ErrorAdditionalInfo struct {
   864  	// Type - READ-ONLY; The additional info type.
   865  	Type *string `json:"type,omitempty"`
   866  	// Info - READ-ONLY; The additional info.
   867  	Info interface{} `json:"info,omitempty"`
   868  }
   869  
   870  // MarshalJSON is the custom marshaler for ErrorAdditionalInfo.
   871  func (eai ErrorAdditionalInfo) MarshalJSON() ([]byte, error) {
   872  	objectMap := make(map[string]interface{})
   873  	return json.Marshal(objectMap)
   874  }
   875  
   876  // ErrorResponse common error response for all Azure Resource Manager APIs to return error details for
   877  // failed operations. (This also follows the OData error response format.)
   878  type ErrorResponse struct {
   879  	// Code - READ-ONLY; The error code.
   880  	Code *string `json:"code,omitempty"`
   881  	// Message - READ-ONLY; The error message.
   882  	Message *string `json:"message,omitempty"`
   883  	// Target - READ-ONLY; The error target.
   884  	Target *string `json:"target,omitempty"`
   885  	// Details - READ-ONLY; The error details.
   886  	Details *[]ErrorResponse `json:"details,omitempty"`
   887  	// AdditionalInfo - READ-ONLY; The error additional info.
   888  	AdditionalInfo *[]ErrorAdditionalInfo `json:"additionalInfo,omitempty"`
   889  }
   890  
   891  // MarshalJSON is the custom marshaler for ErrorResponse.
   892  func (er ErrorResponse) MarshalJSON() ([]byte, error) {
   893  	objectMap := make(map[string]interface{})
   894  	return json.Marshal(objectMap)
   895  }
   896  
   897  // FirewallRule represents a server firewall rule.
   898  type FirewallRule struct {
   899  	autorest.Response `json:"-"`
   900  	// FirewallRuleProperties - The properties of a firewall rule.
   901  	*FirewallRuleProperties `json:"properties,omitempty"`
   902  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
   903  	ID *string `json:"id,omitempty"`
   904  	// Name - READ-ONLY; The name of the resource
   905  	Name *string `json:"name,omitempty"`
   906  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
   907  	Type *string `json:"type,omitempty"`
   908  }
   909  
   910  // MarshalJSON is the custom marshaler for FirewallRule.
   911  func (fr FirewallRule) MarshalJSON() ([]byte, error) {
   912  	objectMap := make(map[string]interface{})
   913  	if fr.FirewallRuleProperties != nil {
   914  		objectMap["properties"] = fr.FirewallRuleProperties
   915  	}
   916  	return json.Marshal(objectMap)
   917  }
   918  
   919  // UnmarshalJSON is the custom unmarshaler for FirewallRule struct.
   920  func (fr *FirewallRule) UnmarshalJSON(body []byte) error {
   921  	var m map[string]*json.RawMessage
   922  	err := json.Unmarshal(body, &m)
   923  	if err != nil {
   924  		return err
   925  	}
   926  	for k, v := range m {
   927  		switch k {
   928  		case "properties":
   929  			if v != nil {
   930  				var firewallRuleProperties FirewallRuleProperties
   931  				err = json.Unmarshal(*v, &firewallRuleProperties)
   932  				if err != nil {
   933  					return err
   934  				}
   935  				fr.FirewallRuleProperties = &firewallRuleProperties
   936  			}
   937  		case "id":
   938  			if v != nil {
   939  				var ID string
   940  				err = json.Unmarshal(*v, &ID)
   941  				if err != nil {
   942  					return err
   943  				}
   944  				fr.ID = &ID
   945  			}
   946  		case "name":
   947  			if v != nil {
   948  				var name string
   949  				err = json.Unmarshal(*v, &name)
   950  				if err != nil {
   951  					return err
   952  				}
   953  				fr.Name = &name
   954  			}
   955  		case "type":
   956  			if v != nil {
   957  				var typeVar string
   958  				err = json.Unmarshal(*v, &typeVar)
   959  				if err != nil {
   960  					return err
   961  				}
   962  				fr.Type = &typeVar
   963  			}
   964  		}
   965  	}
   966  
   967  	return nil
   968  }
   969  
   970  // FirewallRuleListResult a list of firewall rules.
   971  type FirewallRuleListResult struct {
   972  	autorest.Response `json:"-"`
   973  	// Value - The list of firewall rules in a server.
   974  	Value *[]FirewallRule `json:"value,omitempty"`
   975  	// NextLink - The link used to get the next page of operations.
   976  	NextLink *string `json:"nextLink,omitempty"`
   977  }
   978  
   979  // FirewallRuleListResultIterator provides access to a complete listing of FirewallRule values.
   980  type FirewallRuleListResultIterator struct {
   981  	i    int
   982  	page FirewallRuleListResultPage
   983  }
   984  
   985  // NextWithContext advances to the next value.  If there was an error making
   986  // the request the iterator does not advance and the error is returned.
   987  func (iter *FirewallRuleListResultIterator) NextWithContext(ctx context.Context) (err error) {
   988  	if tracing.IsEnabled() {
   989  		ctx = tracing.StartSpan(ctx, fqdn+"/FirewallRuleListResultIterator.NextWithContext")
   990  		defer func() {
   991  			sc := -1
   992  			if iter.Response().Response.Response != nil {
   993  				sc = iter.Response().Response.Response.StatusCode
   994  			}
   995  			tracing.EndSpan(ctx, sc, err)
   996  		}()
   997  	}
   998  	iter.i++
   999  	if iter.i < len(iter.page.Values()) {
  1000  		return nil
  1001  	}
  1002  	err = iter.page.NextWithContext(ctx)
  1003  	if err != nil {
  1004  		iter.i--
  1005  		return err
  1006  	}
  1007  	iter.i = 0
  1008  	return nil
  1009  }
  1010  
  1011  // Next advances to the next value.  If there was an error making
  1012  // the request the iterator does not advance and the error is returned.
  1013  // Deprecated: Use NextWithContext() instead.
  1014  func (iter *FirewallRuleListResultIterator) Next() error {
  1015  	return iter.NextWithContext(context.Background())
  1016  }
  1017  
  1018  // NotDone returns true if the enumeration should be started or is not yet complete.
  1019  func (iter FirewallRuleListResultIterator) NotDone() bool {
  1020  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
  1021  }
  1022  
  1023  // Response returns the raw server response from the last page request.
  1024  func (iter FirewallRuleListResultIterator) Response() FirewallRuleListResult {
  1025  	return iter.page.Response()
  1026  }
  1027  
  1028  // Value returns the current value or a zero-initialized value if the
  1029  // iterator has advanced beyond the end of the collection.
  1030  func (iter FirewallRuleListResultIterator) Value() FirewallRule {
  1031  	if !iter.page.NotDone() {
  1032  		return FirewallRule{}
  1033  	}
  1034  	return iter.page.Values()[iter.i]
  1035  }
  1036  
  1037  // Creates a new instance of the FirewallRuleListResultIterator type.
  1038  func NewFirewallRuleListResultIterator(page FirewallRuleListResultPage) FirewallRuleListResultIterator {
  1039  	return FirewallRuleListResultIterator{page: page}
  1040  }
  1041  
  1042  // IsEmpty returns true if the ListResult contains no values.
  1043  func (frlr FirewallRuleListResult) IsEmpty() bool {
  1044  	return frlr.Value == nil || len(*frlr.Value) == 0
  1045  }
  1046  
  1047  // hasNextLink returns true if the NextLink is not empty.
  1048  func (frlr FirewallRuleListResult) hasNextLink() bool {
  1049  	return frlr.NextLink != nil && len(*frlr.NextLink) != 0
  1050  }
  1051  
  1052  // firewallRuleListResultPreparer prepares a request to retrieve the next set of results.
  1053  // It returns nil if no more results exist.
  1054  func (frlr FirewallRuleListResult) firewallRuleListResultPreparer(ctx context.Context) (*http.Request, error) {
  1055  	if !frlr.hasNextLink() {
  1056  		return nil, nil
  1057  	}
  1058  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
  1059  		autorest.AsJSON(),
  1060  		autorest.AsGet(),
  1061  		autorest.WithBaseURL(to.String(frlr.NextLink)))
  1062  }
  1063  
  1064  // FirewallRuleListResultPage contains a page of FirewallRule values.
  1065  type FirewallRuleListResultPage struct {
  1066  	fn   func(context.Context, FirewallRuleListResult) (FirewallRuleListResult, error)
  1067  	frlr FirewallRuleListResult
  1068  }
  1069  
  1070  // NextWithContext advances to the next page of values.  If there was an error making
  1071  // the request the page does not advance and the error is returned.
  1072  func (page *FirewallRuleListResultPage) NextWithContext(ctx context.Context) (err error) {
  1073  	if tracing.IsEnabled() {
  1074  		ctx = tracing.StartSpan(ctx, fqdn+"/FirewallRuleListResultPage.NextWithContext")
  1075  		defer func() {
  1076  			sc := -1
  1077  			if page.Response().Response.Response != nil {
  1078  				sc = page.Response().Response.Response.StatusCode
  1079  			}
  1080  			tracing.EndSpan(ctx, sc, err)
  1081  		}()
  1082  	}
  1083  	for {
  1084  		next, err := page.fn(ctx, page.frlr)
  1085  		if err != nil {
  1086  			return err
  1087  		}
  1088  		page.frlr = next
  1089  		if !next.hasNextLink() || !next.IsEmpty() {
  1090  			break
  1091  		}
  1092  	}
  1093  	return nil
  1094  }
  1095  
  1096  // Next advances to the next page of values.  If there was an error making
  1097  // the request the page does not advance and the error is returned.
  1098  // Deprecated: Use NextWithContext() instead.
  1099  func (page *FirewallRuleListResultPage) Next() error {
  1100  	return page.NextWithContext(context.Background())
  1101  }
  1102  
  1103  // NotDone returns true if the page enumeration should be started or is not yet complete.
  1104  func (page FirewallRuleListResultPage) NotDone() bool {
  1105  	return !page.frlr.IsEmpty()
  1106  }
  1107  
  1108  // Response returns the raw server response from the last page request.
  1109  func (page FirewallRuleListResultPage) Response() FirewallRuleListResult {
  1110  	return page.frlr
  1111  }
  1112  
  1113  // Values returns the slice of values for the current page or nil if there are no values.
  1114  func (page FirewallRuleListResultPage) Values() []FirewallRule {
  1115  	if page.frlr.IsEmpty() {
  1116  		return nil
  1117  	}
  1118  	return *page.frlr.Value
  1119  }
  1120  
  1121  // Creates a new instance of the FirewallRuleListResultPage type.
  1122  func NewFirewallRuleListResultPage(cur FirewallRuleListResult, getNextPage func(context.Context, FirewallRuleListResult) (FirewallRuleListResult, error)) FirewallRuleListResultPage {
  1123  	return FirewallRuleListResultPage{
  1124  		fn:   getNextPage,
  1125  		frlr: cur,
  1126  	}
  1127  }
  1128  
  1129  // FirewallRuleProperties the properties of a server firewall rule.
  1130  type FirewallRuleProperties struct {
  1131  	// StartIPAddress - The start IP address of the server firewall rule. Must be IPv4 format.
  1132  	StartIPAddress *string `json:"startIpAddress,omitempty"`
  1133  	// EndIPAddress - The end IP address of the server firewall rule. Must be IPv4 format.
  1134  	EndIPAddress *string `json:"endIpAddress,omitempty"`
  1135  }
  1136  
  1137  // FirewallRulesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
  1138  // long-running operation.
  1139  type FirewallRulesCreateOrUpdateFuture struct {
  1140  	azure.FutureAPI
  1141  	// Result returns the result of the asynchronous operation.
  1142  	// If the operation has not completed it will return an error.
  1143  	Result func(FirewallRulesClient) (FirewallRule, error)
  1144  }
  1145  
  1146  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  1147  func (future *FirewallRulesCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
  1148  	var azFuture azure.Future
  1149  	if err := json.Unmarshal(body, &azFuture); err != nil {
  1150  		return err
  1151  	}
  1152  	future.FutureAPI = &azFuture
  1153  	future.Result = future.result
  1154  	return nil
  1155  }
  1156  
  1157  // result is the default implementation for FirewallRulesCreateOrUpdateFuture.Result.
  1158  func (future *FirewallRulesCreateOrUpdateFuture) result(client FirewallRulesClient) (fr FirewallRule, err error) {
  1159  	var done bool
  1160  	done, err = future.DoneWithContext(context.Background(), client)
  1161  	if err != nil {
  1162  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.FirewallRulesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
  1163  		return
  1164  	}
  1165  	if !done {
  1166  		fr.Response.Response = future.Response()
  1167  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.FirewallRulesCreateOrUpdateFuture")
  1168  		return
  1169  	}
  1170  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  1171  	if fr.Response.Response, err = future.GetResult(sender); err == nil && fr.Response.Response.StatusCode != http.StatusNoContent {
  1172  		fr, err = client.CreateOrUpdateResponder(fr.Response.Response)
  1173  		if err != nil {
  1174  			err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.FirewallRulesCreateOrUpdateFuture", "Result", fr.Response.Response, "Failure responding to request")
  1175  		}
  1176  	}
  1177  	return
  1178  }
  1179  
  1180  // FirewallRulesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
  1181  // operation.
  1182  type FirewallRulesDeleteFuture struct {
  1183  	azure.FutureAPI
  1184  	// Result returns the result of the asynchronous operation.
  1185  	// If the operation has not completed it will return an error.
  1186  	Result func(FirewallRulesClient) (autorest.Response, error)
  1187  }
  1188  
  1189  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  1190  func (future *FirewallRulesDeleteFuture) UnmarshalJSON(body []byte) error {
  1191  	var azFuture azure.Future
  1192  	if err := json.Unmarshal(body, &azFuture); err != nil {
  1193  		return err
  1194  	}
  1195  	future.FutureAPI = &azFuture
  1196  	future.Result = future.result
  1197  	return nil
  1198  }
  1199  
  1200  // result is the default implementation for FirewallRulesDeleteFuture.Result.
  1201  func (future *FirewallRulesDeleteFuture) result(client FirewallRulesClient) (ar autorest.Response, err error) {
  1202  	var done bool
  1203  	done, err = future.DoneWithContext(context.Background(), client)
  1204  	if err != nil {
  1205  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.FirewallRulesDeleteFuture", "Result", future.Response(), "Polling failure")
  1206  		return
  1207  	}
  1208  	if !done {
  1209  		ar.Response = future.Response()
  1210  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.FirewallRulesDeleteFuture")
  1211  		return
  1212  	}
  1213  	ar.Response = future.Response()
  1214  	return
  1215  }
  1216  
  1217  // Identity identity for the resource.
  1218  type Identity struct {
  1219  	// PrincipalID - READ-ONLY; The principal ID of resource identity.
  1220  	PrincipalID *string `json:"principalId,omitempty"`
  1221  	// TenantID - READ-ONLY; The tenant ID of resource.
  1222  	TenantID *string `json:"tenantId,omitempty"`
  1223  	// Type - The identity type. Possible values include: 'SystemAssigned'
  1224  	Type ResourceIdentityType `json:"type,omitempty"`
  1225  }
  1226  
  1227  // MarshalJSON is the custom marshaler for Identity.
  1228  func (i Identity) MarshalJSON() ([]byte, error) {
  1229  	objectMap := make(map[string]interface{})
  1230  	if i.Type != "" {
  1231  		objectMap["type"] = i.Type
  1232  	}
  1233  	return json.Marshal(objectMap)
  1234  }
  1235  
  1236  // MaintenanceWindow maintenance window of a server.
  1237  type MaintenanceWindow struct {
  1238  	// CustomWindow - indicates whether custom window is enabled or disabled
  1239  	CustomWindow *string `json:"customWindow,omitempty"`
  1240  	// StartHour - start hour for maintenance window
  1241  	StartHour *int32 `json:"startHour,omitempty"`
  1242  	// StartMinute - start minute for maintenance window
  1243  	StartMinute *int32 `json:"startMinute,omitempty"`
  1244  	// DayOfWeek - day of week for maintenance window
  1245  	DayOfWeek *int32 `json:"dayOfWeek,omitempty"`
  1246  }
  1247  
  1248  // NameAvailability represents a resource name availability.
  1249  type NameAvailability struct {
  1250  	autorest.Response `json:"-"`
  1251  	// Message - Error Message.
  1252  	Message *string `json:"message,omitempty"`
  1253  	// NameAvailable - Indicates whether the resource name is available.
  1254  	NameAvailable *bool `json:"nameAvailable,omitempty"`
  1255  	// Name - name of the PostgreSQL server.
  1256  	Name *string `json:"name,omitempty"`
  1257  	// Type - type of the server
  1258  	Type *string `json:"type,omitempty"`
  1259  }
  1260  
  1261  // NameAvailabilityRequest request from client to check resource name availability.
  1262  type NameAvailabilityRequest struct {
  1263  	// Name - Resource name to verify.
  1264  	Name *string `json:"name,omitempty"`
  1265  	// Type - Resource type used for verification.
  1266  	Type *string `json:"type,omitempty"`
  1267  }
  1268  
  1269  // Operation REST API operation definition.
  1270  type Operation struct {
  1271  	// Name - READ-ONLY; The name of the operation being performed on this particular object.
  1272  	Name *string `json:"name,omitempty"`
  1273  	// Display - READ-ONLY; The localized display information for this particular operation or action.
  1274  	Display *OperationDisplay `json:"display,omitempty"`
  1275  	// IsDataAction - Indicates whether the operation is a data action
  1276  	IsDataAction *bool `json:"isDataAction,omitempty"`
  1277  	// Origin - READ-ONLY; The intended executor of the operation. Possible values include: 'NotSpecified', 'User', 'System'
  1278  	Origin OperationOrigin `json:"origin,omitempty"`
  1279  	// Properties - READ-ONLY; Additional descriptions for the operation.
  1280  	Properties map[string]interface{} `json:"properties"`
  1281  }
  1282  
  1283  // MarshalJSON is the custom marshaler for Operation.
  1284  func (o Operation) MarshalJSON() ([]byte, error) {
  1285  	objectMap := make(map[string]interface{})
  1286  	if o.IsDataAction != nil {
  1287  		objectMap["isDataAction"] = o.IsDataAction
  1288  	}
  1289  	return json.Marshal(objectMap)
  1290  }
  1291  
  1292  // OperationDisplay display metadata associated with the operation.
  1293  type OperationDisplay struct {
  1294  	// Provider - READ-ONLY; Operation resource provider name.
  1295  	Provider *string `json:"provider,omitempty"`
  1296  	// Resource - READ-ONLY; Resource on which the operation is performed.
  1297  	Resource *string `json:"resource,omitempty"`
  1298  	// Operation - READ-ONLY; Localized friendly name for the operation.
  1299  	Operation *string `json:"operation,omitempty"`
  1300  	// Description - READ-ONLY; Operation description.
  1301  	Description *string `json:"description,omitempty"`
  1302  }
  1303  
  1304  // MarshalJSON is the custom marshaler for OperationDisplay.
  1305  func (od OperationDisplay) MarshalJSON() ([]byte, error) {
  1306  	objectMap := make(map[string]interface{})
  1307  	return json.Marshal(objectMap)
  1308  }
  1309  
  1310  // OperationListResult a list of resource provider operations.
  1311  type OperationListResult struct {
  1312  	autorest.Response `json:"-"`
  1313  	// Value - Collection of available operation details
  1314  	Value *[]Operation `json:"value,omitempty"`
  1315  	// NextLink - URL client should use to fetch the next page (per server side paging).
  1316  	// It's null for now, added for future use.
  1317  	NextLink *string `json:"nextLink,omitempty"`
  1318  }
  1319  
  1320  // Plan plan for the resource.
  1321  type Plan struct {
  1322  	// Name - A user defined name of the 3rd Party Artifact that is being procured.
  1323  	Name *string `json:"name,omitempty"`
  1324  	// Publisher - The publisher of the 3rd Party Artifact that is being bought. E.g. NewRelic
  1325  	Publisher *string `json:"publisher,omitempty"`
  1326  	// Product - The 3rd Party artifact that is being procured. E.g. NewRelic. Product maps to the OfferID specified for the artifact at the time of Data Market onboarding.
  1327  	Product *string `json:"product,omitempty"`
  1328  	// PromotionCode - A publisher provided promotion code as provisioned in Data Market for the said product/artifact.
  1329  	PromotionCode *string `json:"promotionCode,omitempty"`
  1330  	// Version - The version of the desired product/artifact.
  1331  	Version *string `json:"version,omitempty"`
  1332  }
  1333  
  1334  // ProxyResource the resource model definition for a Azure Resource Manager proxy resource. It will not
  1335  // have tags and a location
  1336  type ProxyResource struct {
  1337  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
  1338  	ID *string `json:"id,omitempty"`
  1339  	// Name - READ-ONLY; The name of the resource
  1340  	Name *string `json:"name,omitempty"`
  1341  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
  1342  	Type *string `json:"type,omitempty"`
  1343  }
  1344  
  1345  // MarshalJSON is the custom marshaler for ProxyResource.
  1346  func (pr ProxyResource) MarshalJSON() ([]byte, error) {
  1347  	objectMap := make(map[string]interface{})
  1348  	return json.Marshal(objectMap)
  1349  }
  1350  
  1351  // Resource common fields that are returned in the response for all Azure Resource Manager resources
  1352  type Resource struct {
  1353  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
  1354  	ID *string `json:"id,omitempty"`
  1355  	// Name - READ-ONLY; The name of the resource
  1356  	Name *string `json:"name,omitempty"`
  1357  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
  1358  	Type *string `json:"type,omitempty"`
  1359  }
  1360  
  1361  // MarshalJSON is the custom marshaler for Resource.
  1362  func (r Resource) MarshalJSON() ([]byte, error) {
  1363  	objectMap := make(map[string]interface{})
  1364  	return json.Marshal(objectMap)
  1365  }
  1366  
  1367  // ResourceModelWithAllowedPropertySet the resource model definition containing the full set of allowed
  1368  // properties for a resource. Except properties bag, there cannot be a top level property outside of this
  1369  // set.
  1370  type ResourceModelWithAllowedPropertySet struct {
  1371  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
  1372  	ID *string `json:"id,omitempty"`
  1373  	// Name - READ-ONLY; The name of the resource
  1374  	Name *string `json:"name,omitempty"`
  1375  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
  1376  	Type *string `json:"type,omitempty"`
  1377  	// Location - The geo-location where the resource lives
  1378  	Location *string `json:"location,omitempty"`
  1379  	// ManagedBy - The  fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another azure resource. If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource.
  1380  	ManagedBy *string `json:"managedBy,omitempty"`
  1381  	// Kind - Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps are a kind of Microsoft.Web/sites type.  If supported, the resource provider must validate and persist this value.
  1382  	Kind *string `json:"kind,omitempty"`
  1383  	// Etag - READ-ONLY; The etag field is *not* required. If it is provided in the response body, it must also be provided as a header per the normal etag convention.  Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.
  1384  	Etag *string `json:"etag,omitempty"`
  1385  	// Tags - Resource tags.
  1386  	Tags     map[string]*string                           `json:"tags"`
  1387  	Identity *ResourceModelWithAllowedPropertySetIdentity `json:"identity,omitempty"`
  1388  	Sku      *ResourceModelWithAllowedPropertySetSku      `json:"sku,omitempty"`
  1389  	Plan     *ResourceModelWithAllowedPropertySetPlan     `json:"plan,omitempty"`
  1390  }
  1391  
  1392  // MarshalJSON is the custom marshaler for ResourceModelWithAllowedPropertySet.
  1393  func (rmwaps ResourceModelWithAllowedPropertySet) MarshalJSON() ([]byte, error) {
  1394  	objectMap := make(map[string]interface{})
  1395  	if rmwaps.Location != nil {
  1396  		objectMap["location"] = rmwaps.Location
  1397  	}
  1398  	if rmwaps.ManagedBy != nil {
  1399  		objectMap["managedBy"] = rmwaps.ManagedBy
  1400  	}
  1401  	if rmwaps.Kind != nil {
  1402  		objectMap["kind"] = rmwaps.Kind
  1403  	}
  1404  	if rmwaps.Tags != nil {
  1405  		objectMap["tags"] = rmwaps.Tags
  1406  	}
  1407  	if rmwaps.Identity != nil {
  1408  		objectMap["identity"] = rmwaps.Identity
  1409  	}
  1410  	if rmwaps.Sku != nil {
  1411  		objectMap["sku"] = rmwaps.Sku
  1412  	}
  1413  	if rmwaps.Plan != nil {
  1414  		objectMap["plan"] = rmwaps.Plan
  1415  	}
  1416  	return json.Marshal(objectMap)
  1417  }
  1418  
  1419  // ResourceModelWithAllowedPropertySetIdentity ...
  1420  type ResourceModelWithAllowedPropertySetIdentity struct {
  1421  	// PrincipalID - READ-ONLY; The principal ID of resource identity.
  1422  	PrincipalID *string `json:"principalId,omitempty"`
  1423  	// TenantID - READ-ONLY; The tenant ID of resource.
  1424  	TenantID *string `json:"tenantId,omitempty"`
  1425  	// Type - The identity type. Possible values include: 'SystemAssigned'
  1426  	Type ResourceIdentityType `json:"type,omitempty"`
  1427  }
  1428  
  1429  // MarshalJSON is the custom marshaler for ResourceModelWithAllowedPropertySetIdentity.
  1430  func (rmwaps ResourceModelWithAllowedPropertySetIdentity) MarshalJSON() ([]byte, error) {
  1431  	objectMap := make(map[string]interface{})
  1432  	if rmwaps.Type != "" {
  1433  		objectMap["type"] = rmwaps.Type
  1434  	}
  1435  	return json.Marshal(objectMap)
  1436  }
  1437  
  1438  // ResourceModelWithAllowedPropertySetPlan ...
  1439  type ResourceModelWithAllowedPropertySetPlan struct {
  1440  	// Name - A user defined name of the 3rd Party Artifact that is being procured.
  1441  	Name *string `json:"name,omitempty"`
  1442  	// Publisher - The publisher of the 3rd Party Artifact that is being bought. E.g. NewRelic
  1443  	Publisher *string `json:"publisher,omitempty"`
  1444  	// Product - The 3rd Party artifact that is being procured. E.g. NewRelic. Product maps to the OfferID specified for the artifact at the time of Data Market onboarding.
  1445  	Product *string `json:"product,omitempty"`
  1446  	// PromotionCode - A publisher provided promotion code as provisioned in Data Market for the said product/artifact.
  1447  	PromotionCode *string `json:"promotionCode,omitempty"`
  1448  	// Version - The version of the desired product/artifact.
  1449  	Version *string `json:"version,omitempty"`
  1450  }
  1451  
  1452  // ResourceModelWithAllowedPropertySetSku ...
  1453  type ResourceModelWithAllowedPropertySetSku struct {
  1454  	// Name - The name of the sku, typically, tier + family + cores, e.g. Standard_D4s_v3.
  1455  	Name *string `json:"name,omitempty"`
  1456  	// Tier - The tier of the particular SKU, e.g. Burstable. Possible values include: 'Burstable', 'GeneralPurpose', 'MemoryOptimized'
  1457  	Tier SkuTier `json:"tier,omitempty"`
  1458  }
  1459  
  1460  // Server represents a server.
  1461  type Server struct {
  1462  	autorest.Response `json:"-"`
  1463  	// Identity - The Azure Active Directory identity of the server.
  1464  	Identity *Identity `json:"identity,omitempty"`
  1465  	// Sku - The SKU (pricing tier) of the server.
  1466  	Sku *Sku `json:"sku,omitempty"`
  1467  	// ServerProperties - Properties of the server.
  1468  	*ServerProperties `json:"properties,omitempty"`
  1469  	// Tags - Resource tags.
  1470  	Tags map[string]*string `json:"tags"`
  1471  	// Location - The geo-location where the resource lives
  1472  	Location *string `json:"location,omitempty"`
  1473  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
  1474  	ID *string `json:"id,omitempty"`
  1475  	// Name - READ-ONLY; The name of the resource
  1476  	Name *string `json:"name,omitempty"`
  1477  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
  1478  	Type *string `json:"type,omitempty"`
  1479  }
  1480  
  1481  // MarshalJSON is the custom marshaler for Server.
  1482  func (s Server) MarshalJSON() ([]byte, error) {
  1483  	objectMap := make(map[string]interface{})
  1484  	if s.Identity != nil {
  1485  		objectMap["identity"] = s.Identity
  1486  	}
  1487  	if s.Sku != nil {
  1488  		objectMap["sku"] = s.Sku
  1489  	}
  1490  	if s.ServerProperties != nil {
  1491  		objectMap["properties"] = s.ServerProperties
  1492  	}
  1493  	if s.Tags != nil {
  1494  		objectMap["tags"] = s.Tags
  1495  	}
  1496  	if s.Location != nil {
  1497  		objectMap["location"] = s.Location
  1498  	}
  1499  	return json.Marshal(objectMap)
  1500  }
  1501  
  1502  // UnmarshalJSON is the custom unmarshaler for Server struct.
  1503  func (s *Server) UnmarshalJSON(body []byte) error {
  1504  	var m map[string]*json.RawMessage
  1505  	err := json.Unmarshal(body, &m)
  1506  	if err != nil {
  1507  		return err
  1508  	}
  1509  	for k, v := range m {
  1510  		switch k {
  1511  		case "identity":
  1512  			if v != nil {
  1513  				var identity Identity
  1514  				err = json.Unmarshal(*v, &identity)
  1515  				if err != nil {
  1516  					return err
  1517  				}
  1518  				s.Identity = &identity
  1519  			}
  1520  		case "sku":
  1521  			if v != nil {
  1522  				var sku Sku
  1523  				err = json.Unmarshal(*v, &sku)
  1524  				if err != nil {
  1525  					return err
  1526  				}
  1527  				s.Sku = &sku
  1528  			}
  1529  		case "properties":
  1530  			if v != nil {
  1531  				var serverProperties ServerProperties
  1532  				err = json.Unmarshal(*v, &serverProperties)
  1533  				if err != nil {
  1534  					return err
  1535  				}
  1536  				s.ServerProperties = &serverProperties
  1537  			}
  1538  		case "tags":
  1539  			if v != nil {
  1540  				var tags map[string]*string
  1541  				err = json.Unmarshal(*v, &tags)
  1542  				if err != nil {
  1543  					return err
  1544  				}
  1545  				s.Tags = tags
  1546  			}
  1547  		case "location":
  1548  			if v != nil {
  1549  				var location string
  1550  				err = json.Unmarshal(*v, &location)
  1551  				if err != nil {
  1552  					return err
  1553  				}
  1554  				s.Location = &location
  1555  			}
  1556  		case "id":
  1557  			if v != nil {
  1558  				var ID string
  1559  				err = json.Unmarshal(*v, &ID)
  1560  				if err != nil {
  1561  					return err
  1562  				}
  1563  				s.ID = &ID
  1564  			}
  1565  		case "name":
  1566  			if v != nil {
  1567  				var name string
  1568  				err = json.Unmarshal(*v, &name)
  1569  				if err != nil {
  1570  					return err
  1571  				}
  1572  				s.Name = &name
  1573  			}
  1574  		case "type":
  1575  			if v != nil {
  1576  				var typeVar string
  1577  				err = json.Unmarshal(*v, &typeVar)
  1578  				if err != nil {
  1579  					return err
  1580  				}
  1581  				s.Type = &typeVar
  1582  			}
  1583  		}
  1584  	}
  1585  
  1586  	return nil
  1587  }
  1588  
  1589  // ServerEditionCapability server edition capabilities.
  1590  type ServerEditionCapability struct {
  1591  	// Name - READ-ONLY; Server edition name
  1592  	Name *string `json:"name,omitempty"`
  1593  	// SupportedStorageEditions - READ-ONLY
  1594  	SupportedStorageEditions *[]StorageEditionCapability `json:"supportedStorageEditions,omitempty"`
  1595  	// SupportedServerVersions - READ-ONLY
  1596  	SupportedServerVersions *[]ServerVersionCapability `json:"supportedServerVersions,omitempty"`
  1597  }
  1598  
  1599  // MarshalJSON is the custom marshaler for ServerEditionCapability.
  1600  func (sec ServerEditionCapability) MarshalJSON() ([]byte, error) {
  1601  	objectMap := make(map[string]interface{})
  1602  	return json.Marshal(objectMap)
  1603  }
  1604  
  1605  // ServerForUpdate represents a server to be updated.
  1606  type ServerForUpdate struct {
  1607  	// Location - The location the resource resides in.
  1608  	Location *string `json:"location,omitempty"`
  1609  	// Sku - The SKU (pricing tier) of the server.
  1610  	Sku *Sku `json:"sku,omitempty"`
  1611  	// ServerPropertiesForUpdate - Properties of the server.
  1612  	*ServerPropertiesForUpdate `json:"properties,omitempty"`
  1613  	// Tags - Application-specific metadata in the form of key-value pairs.
  1614  	Tags map[string]*string `json:"tags"`
  1615  }
  1616  
  1617  // MarshalJSON is the custom marshaler for ServerForUpdate.
  1618  func (sfu ServerForUpdate) MarshalJSON() ([]byte, error) {
  1619  	objectMap := make(map[string]interface{})
  1620  	if sfu.Location != nil {
  1621  		objectMap["location"] = sfu.Location
  1622  	}
  1623  	if sfu.Sku != nil {
  1624  		objectMap["sku"] = sfu.Sku
  1625  	}
  1626  	if sfu.ServerPropertiesForUpdate != nil {
  1627  		objectMap["properties"] = sfu.ServerPropertiesForUpdate
  1628  	}
  1629  	if sfu.Tags != nil {
  1630  		objectMap["tags"] = sfu.Tags
  1631  	}
  1632  	return json.Marshal(objectMap)
  1633  }
  1634  
  1635  // UnmarshalJSON is the custom unmarshaler for ServerForUpdate struct.
  1636  func (sfu *ServerForUpdate) UnmarshalJSON(body []byte) error {
  1637  	var m map[string]*json.RawMessage
  1638  	err := json.Unmarshal(body, &m)
  1639  	if err != nil {
  1640  		return err
  1641  	}
  1642  	for k, v := range m {
  1643  		switch k {
  1644  		case "location":
  1645  			if v != nil {
  1646  				var location string
  1647  				err = json.Unmarshal(*v, &location)
  1648  				if err != nil {
  1649  					return err
  1650  				}
  1651  				sfu.Location = &location
  1652  			}
  1653  		case "sku":
  1654  			if v != nil {
  1655  				var sku Sku
  1656  				err = json.Unmarshal(*v, &sku)
  1657  				if err != nil {
  1658  					return err
  1659  				}
  1660  				sfu.Sku = &sku
  1661  			}
  1662  		case "properties":
  1663  			if v != nil {
  1664  				var serverPropertiesForUpdate ServerPropertiesForUpdate
  1665  				err = json.Unmarshal(*v, &serverPropertiesForUpdate)
  1666  				if err != nil {
  1667  					return err
  1668  				}
  1669  				sfu.ServerPropertiesForUpdate = &serverPropertiesForUpdate
  1670  			}
  1671  		case "tags":
  1672  			if v != nil {
  1673  				var tags map[string]*string
  1674  				err = json.Unmarshal(*v, &tags)
  1675  				if err != nil {
  1676  					return err
  1677  				}
  1678  				sfu.Tags = tags
  1679  			}
  1680  		}
  1681  	}
  1682  
  1683  	return nil
  1684  }
  1685  
  1686  // ServerListResult a list of servers.
  1687  type ServerListResult struct {
  1688  	autorest.Response `json:"-"`
  1689  	// Value - The list of flexible servers
  1690  	Value *[]Server `json:"value,omitempty"`
  1691  	// NextLink - The link used to get the next page of operations.
  1692  	NextLink *string `json:"nextLink,omitempty"`
  1693  }
  1694  
  1695  // ServerListResultIterator provides access to a complete listing of Server values.
  1696  type ServerListResultIterator struct {
  1697  	i    int
  1698  	page ServerListResultPage
  1699  }
  1700  
  1701  // NextWithContext advances to the next value.  If there was an error making
  1702  // the request the iterator does not advance and the error is returned.
  1703  func (iter *ServerListResultIterator) NextWithContext(ctx context.Context) (err error) {
  1704  	if tracing.IsEnabled() {
  1705  		ctx = tracing.StartSpan(ctx, fqdn+"/ServerListResultIterator.NextWithContext")
  1706  		defer func() {
  1707  			sc := -1
  1708  			if iter.Response().Response.Response != nil {
  1709  				sc = iter.Response().Response.Response.StatusCode
  1710  			}
  1711  			tracing.EndSpan(ctx, sc, err)
  1712  		}()
  1713  	}
  1714  	iter.i++
  1715  	if iter.i < len(iter.page.Values()) {
  1716  		return nil
  1717  	}
  1718  	err = iter.page.NextWithContext(ctx)
  1719  	if err != nil {
  1720  		iter.i--
  1721  		return err
  1722  	}
  1723  	iter.i = 0
  1724  	return nil
  1725  }
  1726  
  1727  // Next advances to the next value.  If there was an error making
  1728  // the request the iterator does not advance and the error is returned.
  1729  // Deprecated: Use NextWithContext() instead.
  1730  func (iter *ServerListResultIterator) Next() error {
  1731  	return iter.NextWithContext(context.Background())
  1732  }
  1733  
  1734  // NotDone returns true if the enumeration should be started or is not yet complete.
  1735  func (iter ServerListResultIterator) NotDone() bool {
  1736  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
  1737  }
  1738  
  1739  // Response returns the raw server response from the last page request.
  1740  func (iter ServerListResultIterator) Response() ServerListResult {
  1741  	return iter.page.Response()
  1742  }
  1743  
  1744  // Value returns the current value or a zero-initialized value if the
  1745  // iterator has advanced beyond the end of the collection.
  1746  func (iter ServerListResultIterator) Value() Server {
  1747  	if !iter.page.NotDone() {
  1748  		return Server{}
  1749  	}
  1750  	return iter.page.Values()[iter.i]
  1751  }
  1752  
  1753  // Creates a new instance of the ServerListResultIterator type.
  1754  func NewServerListResultIterator(page ServerListResultPage) ServerListResultIterator {
  1755  	return ServerListResultIterator{page: page}
  1756  }
  1757  
  1758  // IsEmpty returns true if the ListResult contains no values.
  1759  func (slr ServerListResult) IsEmpty() bool {
  1760  	return slr.Value == nil || len(*slr.Value) == 0
  1761  }
  1762  
  1763  // hasNextLink returns true if the NextLink is not empty.
  1764  func (slr ServerListResult) hasNextLink() bool {
  1765  	return slr.NextLink != nil && len(*slr.NextLink) != 0
  1766  }
  1767  
  1768  // serverListResultPreparer prepares a request to retrieve the next set of results.
  1769  // It returns nil if no more results exist.
  1770  func (slr ServerListResult) serverListResultPreparer(ctx context.Context) (*http.Request, error) {
  1771  	if !slr.hasNextLink() {
  1772  		return nil, nil
  1773  	}
  1774  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
  1775  		autorest.AsJSON(),
  1776  		autorest.AsGet(),
  1777  		autorest.WithBaseURL(to.String(slr.NextLink)))
  1778  }
  1779  
  1780  // ServerListResultPage contains a page of Server values.
  1781  type ServerListResultPage struct {
  1782  	fn  func(context.Context, ServerListResult) (ServerListResult, error)
  1783  	slr ServerListResult
  1784  }
  1785  
  1786  // NextWithContext advances to the next page of values.  If there was an error making
  1787  // the request the page does not advance and the error is returned.
  1788  func (page *ServerListResultPage) NextWithContext(ctx context.Context) (err error) {
  1789  	if tracing.IsEnabled() {
  1790  		ctx = tracing.StartSpan(ctx, fqdn+"/ServerListResultPage.NextWithContext")
  1791  		defer func() {
  1792  			sc := -1
  1793  			if page.Response().Response.Response != nil {
  1794  				sc = page.Response().Response.Response.StatusCode
  1795  			}
  1796  			tracing.EndSpan(ctx, sc, err)
  1797  		}()
  1798  	}
  1799  	for {
  1800  		next, err := page.fn(ctx, page.slr)
  1801  		if err != nil {
  1802  			return err
  1803  		}
  1804  		page.slr = next
  1805  		if !next.hasNextLink() || !next.IsEmpty() {
  1806  			break
  1807  		}
  1808  	}
  1809  	return nil
  1810  }
  1811  
  1812  // Next advances to the next page of values.  If there was an error making
  1813  // the request the page does not advance and the error is returned.
  1814  // Deprecated: Use NextWithContext() instead.
  1815  func (page *ServerListResultPage) Next() error {
  1816  	return page.NextWithContext(context.Background())
  1817  }
  1818  
  1819  // NotDone returns true if the page enumeration should be started or is not yet complete.
  1820  func (page ServerListResultPage) NotDone() bool {
  1821  	return !page.slr.IsEmpty()
  1822  }
  1823  
  1824  // Response returns the raw server response from the last page request.
  1825  func (page ServerListResultPage) Response() ServerListResult {
  1826  	return page.slr
  1827  }
  1828  
  1829  // Values returns the slice of values for the current page or nil if there are no values.
  1830  func (page ServerListResultPage) Values() []Server {
  1831  	if page.slr.IsEmpty() {
  1832  		return nil
  1833  	}
  1834  	return *page.slr.Value
  1835  }
  1836  
  1837  // Creates a new instance of the ServerListResultPage type.
  1838  func NewServerListResultPage(cur ServerListResult, getNextPage func(context.Context, ServerListResult) (ServerListResult, error)) ServerListResultPage {
  1839  	return ServerListResultPage{
  1840  		fn:  getNextPage,
  1841  		slr: cur,
  1842  	}
  1843  }
  1844  
  1845  // ServerProperties the properties of a server.
  1846  type ServerProperties struct {
  1847  	// AdministratorLogin - The administrator's login name of a server. Can only be specified when the server is being created (and is required for creation).
  1848  	AdministratorLogin *string `json:"administratorLogin,omitempty"`
  1849  	// AdministratorLoginPassword - The administrator login password (required for server creation).
  1850  	AdministratorLoginPassword *string `json:"administratorLoginPassword,omitempty"`
  1851  	// Version - PostgreSQL Server version. Possible values include: 'OneTwo', 'OneOne'
  1852  	Version ServerVersion `json:"version,omitempty"`
  1853  	// State - READ-ONLY; A state of a server that is visible to user. Possible values include: 'ServerStateReady', 'ServerStateDropping', 'ServerStateDisabled', 'ServerStateStarting', 'ServerStateStopping', 'ServerStateStopped', 'ServerStateUpdating'
  1854  	State ServerState `json:"state,omitempty"`
  1855  	// HaState - READ-ONLY; A state of a HA server that is visible to user. Possible values include: 'NotEnabled', 'CreatingStandby', 'ReplicatingData', 'FailingOver', 'Healthy', 'RemovingStandby'
  1856  	HaState ServerHAState `json:"haState,omitempty"`
  1857  	// FullyQualifiedDomainName - READ-ONLY; The fully qualified domain name of a server.
  1858  	FullyQualifiedDomainName *string `json:"fullyQualifiedDomainName,omitempty"`
  1859  	// DisplayName - The display name of a server.
  1860  	DisplayName *string `json:"displayName,omitempty"`
  1861  	// StorageProfile - Storage profile of a server.
  1862  	StorageProfile *StorageProfile `json:"storageProfile,omitempty"`
  1863  	// PublicNetworkAccess - READ-ONLY; public network access is enabled or not. Possible values include: 'ServerPublicNetworkAccessStateEnabled', 'ServerPublicNetworkAccessStateDisabled'
  1864  	PublicNetworkAccess ServerPublicNetworkAccessState `json:"publicNetworkAccess,omitempty"`
  1865  	// MaintenanceWindow - Maintenance window of a server.
  1866  	MaintenanceWindow *MaintenanceWindow `json:"maintenanceWindow,omitempty"`
  1867  	// HaEnabled - stand by count value can be either enabled or disabled. Possible values include: 'Enabled', 'Disabled'
  1868  	HaEnabled HAEnabledEnum `json:"haEnabled,omitempty"`
  1869  	// SourceServerName - The source PostgreSQL server name to restore from.
  1870  	SourceServerName *string `json:"sourceServerName,omitempty"`
  1871  	// PointInTimeUTC - Restore point creation time (ISO8601 format), specifying the time to restore from.
  1872  	PointInTimeUTC *date.Time `json:"pointInTimeUTC,omitempty"`
  1873  	// AvailabilityZone - availability Zone information of the server.
  1874  	AvailabilityZone *string `json:"availabilityZone,omitempty"`
  1875  	// StandbyAvailabilityZone - READ-ONLY; availability Zone information of the server.
  1876  	StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"`
  1877  	// ByokEnforcement - READ-ONLY; Status showing whether the data encryption is enabled with customer-managed keys.
  1878  	ByokEnforcement          *string                                   `json:"byokEnforcement,omitempty"`
  1879  	DelegatedSubnetArguments *ServerPropertiesDelegatedSubnetArguments `json:"delegatedSubnetArguments,omitempty"`
  1880  	// CreateMode - The mode to create a new PostgreSQL server. Possible values include: 'Default', 'PointInTimeRestore'
  1881  	CreateMode CreateMode `json:"createMode,omitempty"`
  1882  	// Tags - Application-specific metadata in the form of key-value pairs.
  1883  	Tags map[string]*string `json:"tags"`
  1884  }
  1885  
  1886  // MarshalJSON is the custom marshaler for ServerProperties.
  1887  func (sp ServerProperties) MarshalJSON() ([]byte, error) {
  1888  	objectMap := make(map[string]interface{})
  1889  	if sp.AdministratorLogin != nil {
  1890  		objectMap["administratorLogin"] = sp.AdministratorLogin
  1891  	}
  1892  	if sp.AdministratorLoginPassword != nil {
  1893  		objectMap["administratorLoginPassword"] = sp.AdministratorLoginPassword
  1894  	}
  1895  	if sp.Version != "" {
  1896  		objectMap["version"] = sp.Version
  1897  	}
  1898  	if sp.DisplayName != nil {
  1899  		objectMap["displayName"] = sp.DisplayName
  1900  	}
  1901  	if sp.StorageProfile != nil {
  1902  		objectMap["storageProfile"] = sp.StorageProfile
  1903  	}
  1904  	if sp.MaintenanceWindow != nil {
  1905  		objectMap["maintenanceWindow"] = sp.MaintenanceWindow
  1906  	}
  1907  	if sp.HaEnabled != "" {
  1908  		objectMap["haEnabled"] = sp.HaEnabled
  1909  	}
  1910  	if sp.SourceServerName != nil {
  1911  		objectMap["sourceServerName"] = sp.SourceServerName
  1912  	}
  1913  	if sp.PointInTimeUTC != nil {
  1914  		objectMap["pointInTimeUTC"] = sp.PointInTimeUTC
  1915  	}
  1916  	if sp.AvailabilityZone != nil {
  1917  		objectMap["availabilityZone"] = sp.AvailabilityZone
  1918  	}
  1919  	if sp.DelegatedSubnetArguments != nil {
  1920  		objectMap["delegatedSubnetArguments"] = sp.DelegatedSubnetArguments
  1921  	}
  1922  	if sp.CreateMode != "" {
  1923  		objectMap["createMode"] = sp.CreateMode
  1924  	}
  1925  	if sp.Tags != nil {
  1926  		objectMap["tags"] = sp.Tags
  1927  	}
  1928  	return json.Marshal(objectMap)
  1929  }
  1930  
  1931  // ServerPropertiesDelegatedSubnetArguments ...
  1932  type ServerPropertiesDelegatedSubnetArguments struct {
  1933  	// SubnetArmResourceID - delegated subnet arm resource id.
  1934  	SubnetArmResourceID *string `json:"subnetArmResourceId,omitempty"`
  1935  }
  1936  
  1937  // ServerPropertiesForUpdate ...
  1938  type ServerPropertiesForUpdate struct {
  1939  	// AdministratorLoginPassword - The password of the administrator login.
  1940  	AdministratorLoginPassword *string `json:"administratorLoginPassword,omitempty"`
  1941  	// StorageProfile - Storage profile of a server.
  1942  	StorageProfile *StorageProfile `json:"storageProfile,omitempty"`
  1943  	// HaEnabled - stand by count value can be either enabled or disabled. Possible values include: 'Enabled', 'Disabled'
  1944  	HaEnabled HAEnabledEnum `json:"haEnabled,omitempty"`
  1945  	// MaintenanceWindow - Maintenance window of a server.
  1946  	MaintenanceWindow *MaintenanceWindow `json:"maintenanceWindow,omitempty"`
  1947  }
  1948  
  1949  // ServersCreateFuture an abstraction for monitoring and retrieving the results of a long-running
  1950  // operation.
  1951  type ServersCreateFuture struct {
  1952  	azure.FutureAPI
  1953  	// Result returns the result of the asynchronous operation.
  1954  	// If the operation has not completed it will return an error.
  1955  	Result func(ServersClient) (Server, error)
  1956  }
  1957  
  1958  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  1959  func (future *ServersCreateFuture) UnmarshalJSON(body []byte) error {
  1960  	var azFuture azure.Future
  1961  	if err := json.Unmarshal(body, &azFuture); err != nil {
  1962  		return err
  1963  	}
  1964  	future.FutureAPI = &azFuture
  1965  	future.Result = future.result
  1966  	return nil
  1967  }
  1968  
  1969  // result is the default implementation for ServersCreateFuture.Result.
  1970  func (future *ServersCreateFuture) result(client ServersClient) (s Server, err error) {
  1971  	var done bool
  1972  	done, err = future.DoneWithContext(context.Background(), client)
  1973  	if err != nil {
  1974  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersCreateFuture", "Result", future.Response(), "Polling failure")
  1975  		return
  1976  	}
  1977  	if !done {
  1978  		s.Response.Response = future.Response()
  1979  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.ServersCreateFuture")
  1980  		return
  1981  	}
  1982  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  1983  	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
  1984  		s, err = client.CreateResponder(s.Response.Response)
  1985  		if err != nil {
  1986  			err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersCreateFuture", "Result", s.Response.Response, "Failure responding to request")
  1987  		}
  1988  	}
  1989  	return
  1990  }
  1991  
  1992  // ServersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
  1993  // operation.
  1994  type ServersDeleteFuture struct {
  1995  	azure.FutureAPI
  1996  	// Result returns the result of the asynchronous operation.
  1997  	// If the operation has not completed it will return an error.
  1998  	Result func(ServersClient) (autorest.Response, error)
  1999  }
  2000  
  2001  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  2002  func (future *ServersDeleteFuture) UnmarshalJSON(body []byte) error {
  2003  	var azFuture azure.Future
  2004  	if err := json.Unmarshal(body, &azFuture); err != nil {
  2005  		return err
  2006  	}
  2007  	future.FutureAPI = &azFuture
  2008  	future.Result = future.result
  2009  	return nil
  2010  }
  2011  
  2012  // result is the default implementation for ServersDeleteFuture.Result.
  2013  func (future *ServersDeleteFuture) result(client ServersClient) (ar autorest.Response, err error) {
  2014  	var done bool
  2015  	done, err = future.DoneWithContext(context.Background(), client)
  2016  	if err != nil {
  2017  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersDeleteFuture", "Result", future.Response(), "Polling failure")
  2018  		return
  2019  	}
  2020  	if !done {
  2021  		ar.Response = future.Response()
  2022  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.ServersDeleteFuture")
  2023  		return
  2024  	}
  2025  	ar.Response = future.Response()
  2026  	return
  2027  }
  2028  
  2029  // ServersRestartFuture an abstraction for monitoring and retrieving the results of a long-running
  2030  // operation.
  2031  type ServersRestartFuture struct {
  2032  	azure.FutureAPI
  2033  	// Result returns the result of the asynchronous operation.
  2034  	// If the operation has not completed it will return an error.
  2035  	Result func(ServersClient) (autorest.Response, error)
  2036  }
  2037  
  2038  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  2039  func (future *ServersRestartFuture) UnmarshalJSON(body []byte) error {
  2040  	var azFuture azure.Future
  2041  	if err := json.Unmarshal(body, &azFuture); err != nil {
  2042  		return err
  2043  	}
  2044  	future.FutureAPI = &azFuture
  2045  	future.Result = future.result
  2046  	return nil
  2047  }
  2048  
  2049  // result is the default implementation for ServersRestartFuture.Result.
  2050  func (future *ServersRestartFuture) result(client ServersClient) (ar autorest.Response, err error) {
  2051  	var done bool
  2052  	done, err = future.DoneWithContext(context.Background(), client)
  2053  	if err != nil {
  2054  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersRestartFuture", "Result", future.Response(), "Polling failure")
  2055  		return
  2056  	}
  2057  	if !done {
  2058  		ar.Response = future.Response()
  2059  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.ServersRestartFuture")
  2060  		return
  2061  	}
  2062  	ar.Response = future.Response()
  2063  	return
  2064  }
  2065  
  2066  // ServersStartFuture an abstraction for monitoring and retrieving the results of a long-running operation.
  2067  type ServersStartFuture struct {
  2068  	azure.FutureAPI
  2069  	// Result returns the result of the asynchronous operation.
  2070  	// If the operation has not completed it will return an error.
  2071  	Result func(ServersClient) (autorest.Response, error)
  2072  }
  2073  
  2074  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  2075  func (future *ServersStartFuture) UnmarshalJSON(body []byte) error {
  2076  	var azFuture azure.Future
  2077  	if err := json.Unmarshal(body, &azFuture); err != nil {
  2078  		return err
  2079  	}
  2080  	future.FutureAPI = &azFuture
  2081  	future.Result = future.result
  2082  	return nil
  2083  }
  2084  
  2085  // result is the default implementation for ServersStartFuture.Result.
  2086  func (future *ServersStartFuture) result(client ServersClient) (ar autorest.Response, err error) {
  2087  	var done bool
  2088  	done, err = future.DoneWithContext(context.Background(), client)
  2089  	if err != nil {
  2090  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersStartFuture", "Result", future.Response(), "Polling failure")
  2091  		return
  2092  	}
  2093  	if !done {
  2094  		ar.Response = future.Response()
  2095  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.ServersStartFuture")
  2096  		return
  2097  	}
  2098  	ar.Response = future.Response()
  2099  	return
  2100  }
  2101  
  2102  // ServersStopFuture an abstraction for monitoring and retrieving the results of a long-running operation.
  2103  type ServersStopFuture struct {
  2104  	azure.FutureAPI
  2105  	// Result returns the result of the asynchronous operation.
  2106  	// If the operation has not completed it will return an error.
  2107  	Result func(ServersClient) (autorest.Response, error)
  2108  }
  2109  
  2110  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  2111  func (future *ServersStopFuture) UnmarshalJSON(body []byte) error {
  2112  	var azFuture azure.Future
  2113  	if err := json.Unmarshal(body, &azFuture); err != nil {
  2114  		return err
  2115  	}
  2116  	future.FutureAPI = &azFuture
  2117  	future.Result = future.result
  2118  	return nil
  2119  }
  2120  
  2121  // result is the default implementation for ServersStopFuture.Result.
  2122  func (future *ServersStopFuture) result(client ServersClient) (ar autorest.Response, err error) {
  2123  	var done bool
  2124  	done, err = future.DoneWithContext(context.Background(), client)
  2125  	if err != nil {
  2126  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersStopFuture", "Result", future.Response(), "Polling failure")
  2127  		return
  2128  	}
  2129  	if !done {
  2130  		ar.Response = future.Response()
  2131  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.ServersStopFuture")
  2132  		return
  2133  	}
  2134  	ar.Response = future.Response()
  2135  	return
  2136  }
  2137  
  2138  // ServersUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
  2139  // operation.
  2140  type ServersUpdateFuture struct {
  2141  	azure.FutureAPI
  2142  	// Result returns the result of the asynchronous operation.
  2143  	// If the operation has not completed it will return an error.
  2144  	Result func(ServersClient) (Server, error)
  2145  }
  2146  
  2147  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  2148  func (future *ServersUpdateFuture) UnmarshalJSON(body []byte) error {
  2149  	var azFuture azure.Future
  2150  	if err := json.Unmarshal(body, &azFuture); err != nil {
  2151  		return err
  2152  	}
  2153  	future.FutureAPI = &azFuture
  2154  	future.Result = future.result
  2155  	return nil
  2156  }
  2157  
  2158  // result is the default implementation for ServersUpdateFuture.Result.
  2159  func (future *ServersUpdateFuture) result(client ServersClient) (s Server, err error) {
  2160  	var done bool
  2161  	done, err = future.DoneWithContext(context.Background(), client)
  2162  	if err != nil {
  2163  		err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersUpdateFuture", "Result", future.Response(), "Polling failure")
  2164  		return
  2165  	}
  2166  	if !done {
  2167  		s.Response.Response = future.Response()
  2168  		err = azure.NewAsyncOpIncompleteError("postgresqlflexibleservers.ServersUpdateFuture")
  2169  		return
  2170  	}
  2171  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  2172  	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
  2173  		s, err = client.UpdateResponder(s.Response.Response)
  2174  		if err != nil {
  2175  			err = autorest.NewErrorWithError(err, "postgresqlflexibleservers.ServersUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
  2176  		}
  2177  	}
  2178  	return
  2179  }
  2180  
  2181  // ServerVersionCapability server version capabilities.
  2182  type ServerVersionCapability struct {
  2183  	// Name - READ-ONLY; server version
  2184  	Name *string `json:"name,omitempty"`
  2185  	// SupportedVcores - READ-ONLY
  2186  	SupportedVcores *[]VcoreCapability `json:"supportedVcores,omitempty"`
  2187  }
  2188  
  2189  // MarshalJSON is the custom marshaler for ServerVersionCapability.
  2190  func (svc ServerVersionCapability) MarshalJSON() ([]byte, error) {
  2191  	objectMap := make(map[string]interface{})
  2192  	return json.Marshal(objectMap)
  2193  }
  2194  
  2195  // Sku sku information related properties of a server.
  2196  type Sku struct {
  2197  	// Name - The name of the sku, typically, tier + family + cores, e.g. Standard_D4s_v3.
  2198  	Name *string `json:"name,omitempty"`
  2199  	// Tier - The tier of the particular SKU, e.g. Burstable. Possible values include: 'Burstable', 'GeneralPurpose', 'MemoryOptimized'
  2200  	Tier SkuTier `json:"tier,omitempty"`
  2201  }
  2202  
  2203  // StorageEditionCapability storage edition capability
  2204  type StorageEditionCapability struct {
  2205  	// Name - READ-ONLY; storage edition name
  2206  	Name *string `json:"name,omitempty"`
  2207  	// SupportedStorageMB - READ-ONLY
  2208  	SupportedStorageMB *[]StorageMBCapability `json:"supportedStorageMB,omitempty"`
  2209  }
  2210  
  2211  // MarshalJSON is the custom marshaler for StorageEditionCapability.
  2212  func (sec StorageEditionCapability) MarshalJSON() ([]byte, error) {
  2213  	objectMap := make(map[string]interface{})
  2214  	return json.Marshal(objectMap)
  2215  }
  2216  
  2217  // StorageMBCapability storage size in MB capability
  2218  type StorageMBCapability struct {
  2219  	// Name - READ-ONLY; storage MB name
  2220  	Name *string `json:"name,omitempty"`
  2221  	// SupportedIops - READ-ONLY; supported IOPS
  2222  	SupportedIops *int64 `json:"supportedIops,omitempty"`
  2223  	// StorageSizeMB - READ-ONLY; storage size in MB
  2224  	StorageSizeMB *int64 `json:"storageSizeMB,omitempty"`
  2225  }
  2226  
  2227  // MarshalJSON is the custom marshaler for StorageMBCapability.
  2228  func (smc StorageMBCapability) MarshalJSON() ([]byte, error) {
  2229  	objectMap := make(map[string]interface{})
  2230  	return json.Marshal(objectMap)
  2231  }
  2232  
  2233  // StorageProfile storage Profile properties of a server
  2234  type StorageProfile struct {
  2235  	// BackupRetentionDays - Backup retention days for the server.
  2236  	BackupRetentionDays *int32 `json:"backupRetentionDays,omitempty"`
  2237  	// StorageMB - Max storage allowed for a server.
  2238  	StorageMB *int32 `json:"storageMB,omitempty"`
  2239  }
  2240  
  2241  // TrackedResource the resource model definition for an Azure Resource Manager tracked top level resource
  2242  // which has 'tags' and a 'location'
  2243  type TrackedResource struct {
  2244  	// Tags - Resource tags.
  2245  	Tags map[string]*string `json:"tags"`
  2246  	// Location - The geo-location where the resource lives
  2247  	Location *string `json:"location,omitempty"`
  2248  	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
  2249  	ID *string `json:"id,omitempty"`
  2250  	// Name - READ-ONLY; The name of the resource
  2251  	Name *string `json:"name,omitempty"`
  2252  	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
  2253  	Type *string `json:"type,omitempty"`
  2254  }
  2255  
  2256  // MarshalJSON is the custom marshaler for TrackedResource.
  2257  func (tr TrackedResource) MarshalJSON() ([]byte, error) {
  2258  	objectMap := make(map[string]interface{})
  2259  	if tr.Tags != nil {
  2260  		objectMap["tags"] = tr.Tags
  2261  	}
  2262  	if tr.Location != nil {
  2263  		objectMap["location"] = tr.Location
  2264  	}
  2265  	return json.Marshal(objectMap)
  2266  }
  2267  
  2268  // VcoreCapability vcores capability
  2269  type VcoreCapability struct {
  2270  	// Name - READ-ONLY; vCore name
  2271  	Name *string `json:"name,omitempty"`
  2272  	// VCores - READ-ONLY; supported vCores
  2273  	VCores *int64 `json:"vCores,omitempty"`
  2274  	// SupportedIops - READ-ONLY; supported IOPS
  2275  	SupportedIops *int64 `json:"supportedIops,omitempty"`
  2276  	// SupportedMemoryPerVcoreMB - READ-ONLY; supported memory per vCore in MB
  2277  	SupportedMemoryPerVcoreMB *int64 `json:"supportedMemoryPerVcoreMB,omitempty"`
  2278  }
  2279  
  2280  // MarshalJSON is the custom marshaler for VcoreCapability.
  2281  func (vc VcoreCapability) MarshalJSON() ([]byte, error) {
  2282  	objectMap := make(map[string]interface{})
  2283  	return json.Marshal(objectMap)
  2284  }
  2285  
  2286  // VirtualNetworkSubnetUsageParameter virtual network subnet usage parameter
  2287  type VirtualNetworkSubnetUsageParameter struct {
  2288  	// VirtualNetworkArmResourceID - Virtual network resource id.
  2289  	VirtualNetworkArmResourceID *string `json:"virtualNetworkArmResourceId,omitempty"`
  2290  }
  2291  
  2292  // VirtualNetworkSubnetUsageResult virtual network subnet usage data.
  2293  type VirtualNetworkSubnetUsageResult struct {
  2294  	autorest.Response `json:"-"`
  2295  	// DelegatedSubnetsUsage - READ-ONLY
  2296  	DelegatedSubnetsUsage *[]DelegatedSubnetUsage `json:"delegatedSubnetsUsage,omitempty"`
  2297  }
  2298  
  2299  // MarshalJSON is the custom marshaler for VirtualNetworkSubnetUsageResult.
  2300  func (vnsur VirtualNetworkSubnetUsageResult) MarshalJSON() ([]byte, error) {
  2301  	objectMap := make(map[string]interface{})
  2302  	return json.Marshal(objectMap)
  2303  }
  2304  

View as plain text