package analysisservices
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
import (
"context"
"encoding/json"
"github.com/Azure/go-autorest/autorest"
"github.com/Azure/go-autorest/autorest/azure"
"github.com/Azure/go-autorest/autorest/to"
"github.com/Azure/go-autorest/tracing"
"net/http"
)
// The package's fully qualified name.
const fqdn = "github.com/Azure/azure-sdk-for-go/services/analysisservices/mgmt/2017-08-01/analysisservices"
// CheckServerNameAvailabilityParameters details of server name request body.
type CheckServerNameAvailabilityParameters struct {
// Name - Name for checking availability.
Name *string `json:"name,omitempty"`
// Type - The resource type of azure analysis services.
Type *string `json:"type,omitempty"`
}
// CheckServerNameAvailabilityResult the checking result of server name availability.
type CheckServerNameAvailabilityResult struct {
autorest.Response `json:"-"`
// NameAvailable - Indicator of available of the server name.
NameAvailable *bool `json:"nameAvailable,omitempty"`
// Reason - The reason of unavailability.
Reason *string `json:"reason,omitempty"`
// Message - The detailed message of the request unavailability.
Message *string `json:"message,omitempty"`
}
// ErrorResponse describes the format of Error response.
type ErrorResponse struct {
// Code - Error code
Code *string `json:"code,omitempty"`
// Message - Error message indicating why the operation failed.
Message *string `json:"message,omitempty"`
}
// GatewayDetails the gateway details.
type GatewayDetails struct {
// GatewayResourceID - Gateway resource to be associated with the server.
GatewayResourceID *string `json:"gatewayResourceId,omitempty"`
// GatewayObjectID - READ-ONLY; Gateway object id from in the DMTS cluster for the gateway resource.
GatewayObjectID *string `json:"gatewayObjectId,omitempty"`
// DmtsClusterURI - READ-ONLY; Uri of the DMTS cluster.
DmtsClusterURI *string `json:"dmtsClusterUri,omitempty"`
}
// MarshalJSON is the custom marshaler for GatewayDetails.
func (gd GatewayDetails) MarshalJSON() ([]byte, error) {
objectMap := make(map[string]interface{})
if gd.GatewayResourceID != nil {
objectMap["gatewayResourceId"] = gd.GatewayResourceID
}
return json.Marshal(objectMap)
}
// GatewayError detail of gateway errors.
type GatewayError struct {
// Code - Error code of list gateway.
Code *string `json:"code,omitempty"`
// Message - Error message of list gateway.
Message *string `json:"message,omitempty"`
}
// GatewayListStatusError status of gateway is error.
type GatewayListStatusError struct {
// Error - Error of the list gateway status.
Error *GatewayError `json:"error,omitempty"`
}
// GatewayListStatusLive status of gateway is live.
type GatewayListStatusLive struct {
autorest.Response `json:"-"`
// Status - Live message of list gateway. Possible values include: 'Live'
Status Status `json:"status,omitempty"`
}
// IPv4FirewallRule the detail of firewall rule.
type IPv4FirewallRule struct {
// FirewallRuleName - The rule name.
FirewallRuleName *string `json:"firewallRuleName,omitempty"`
// RangeStart - The start range of IPv4.
RangeStart *string `json:"rangeStart,omitempty"`
// RangeEnd - The end range of IPv4.
RangeEnd *string `json:"rangeEnd,omitempty"`
}
// IPv4FirewallSettings an array of firewall rules.
type IPv4FirewallSettings struct {
// FirewallRules - An array of firewall rules.
FirewallRules *[]IPv4FirewallRule `json:"firewallRules,omitempty"`
// EnablePowerBIService - The indicator of enabling PBI service.
EnablePowerBIService *bool `json:"enablePowerBIService,omitempty"`
}
// Operation a Consumption REST API operation.
type Operation struct {
// Name - READ-ONLY; Operation name: {provider}/{resource}/{operation}.
Name *string `json:"name,omitempty"`
// Display - The object that represents the operation.
Display *OperationDisplay `json:"display,omitempty"`
}
// MarshalJSON is the custom marshaler for Operation.
func (o Operation) MarshalJSON() ([]byte, error) {
objectMap := make(map[string]interface{})
if o.Display != nil {
objectMap["display"] = o.Display
}
return json.Marshal(objectMap)
}
// OperationDisplay the object that represents the operation.
type OperationDisplay struct {
// Provider - READ-ONLY; Service provider: Microsoft.Consumption.
Provider *string `json:"provider,omitempty"`
// Resource - READ-ONLY; Resource on which the operation is performed: UsageDetail, etc.
Resource *string `json:"resource,omitempty"`
// Operation - READ-ONLY; Operation type: Read, write, delete, etc.
Operation *string `json:"operation,omitempty"`
}
// MarshalJSON is the custom marshaler for OperationDisplay.
func (o OperationDisplay) MarshalJSON() ([]byte, error) {
objectMap := make(map[string]interface{})
return json.Marshal(objectMap)
}
// OperationListResult result of listing consumption operations. It contains a list of operations and a URL
// link to get the next set of results.
type OperationListResult struct {
autorest.Response `json:"-"`
// Value - READ-ONLY; List of analysis services operations supported by the Microsoft.AnalysisServices resource provider.
Value *[]Operation `json:"value,omitempty"`
// NextLink - READ-ONLY; URL to get the next set of operation list results if there are any.
NextLink *string `json:"nextLink,omitempty"`
}
// MarshalJSON is the custom marshaler for OperationListResult.
func (olr OperationListResult) MarshalJSON() ([]byte, error) {
objectMap := make(map[string]interface{})
return json.Marshal(objectMap)
}
// OperationListResultIterator provides access to a complete listing of Operation values.
type OperationListResultIterator struct {
i int
page OperationListResultPage
}
// NextWithContext advances to the next value. If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) {
if tracing.IsEnabled() {
ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.NextWithContext")
defer func() {
sc := -1
if iter.Response().Response.Response != nil {
sc = iter.Response().Response.Response.StatusCode
}
tracing.EndSpan(ctx, sc, err)
}()
}
iter.i++
if iter.i < len(iter.page.Values()) {
return nil
}
err = iter.page.NextWithContext(ctx)
if err != nil {
iter.i--
return err
}
iter.i = 0
return nil
}
// Next advances to the next value. If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *OperationListResultIterator) Next() error {
return iter.NextWithContext(context.Background())
}
// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter OperationListResultIterator) NotDone() bool {
return iter.page.NotDone() && iter.i < len(iter.page.Values())
}
// Response returns the raw server response from the last page request.
func (iter OperationListResultIterator) Response() OperationListResult {
return iter.page.Response()
}
// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter OperationListResultIterator) Value() Operation {
if !iter.page.NotDone() {
return Operation{}
}
return iter.page.Values()[iter.i]
}
// Creates a new instance of the OperationListResultIterator type.
func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator {
return OperationListResultIterator{page: page}
}
// IsEmpty returns true if the ListResult contains no values.
func (olr OperationListResult) IsEmpty() bool {
return olr.Value == nil || len(*olr.Value) == 0
}
// hasNextLink returns true if the NextLink is not empty.
func (olr OperationListResult) hasNextLink() bool {
return olr.NextLink != nil && len(*olr.NextLink) != 0
}
// operationListResultPreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) {
if !olr.hasNextLink() {
return nil, nil
}
return autorest.Prepare((&http.Request{}).WithContext(ctx),
autorest.AsJSON(),
autorest.AsGet(),
autorest.WithBaseURL(to.String(olr.NextLink)))
}
// OperationListResultPage contains a page of Operation values.
type OperationListResultPage struct {
fn func(context.Context, OperationListResult) (OperationListResult, error)
olr OperationListResult
}
// NextWithContext advances to the next page of values. If there was an error making
// the request the page does not advance and the error is returned.
func (page *OperationListResultPage) NextWithContext(ctx context.Context) (err error) {
if tracing.IsEnabled() {
ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext")
defer func() {
sc := -1
if page.Response().Response.Response != nil {
sc = page.Response().Response.Response.StatusCode
}
tracing.EndSpan(ctx, sc, err)
}()
}
for {
next, err := page.fn(ctx, page.olr)
if err != nil {
return err
}
page.olr = next
if !next.hasNextLink() || !next.IsEmpty() {
break
}
}
return nil
}
// Next advances to the next page of values. If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *OperationListResultPage) Next() error {
return page.NextWithContext(context.Background())
}
// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page OperationListResultPage) NotDone() bool {
return !page.olr.IsEmpty()
}
// Response returns the raw server response from the last page request.
func (page OperationListResultPage) Response() OperationListResult {
return page.olr
}
// Values returns the slice of values for the current page or nil if there are no values.
func (page OperationListResultPage) Values() []Operation {
if page.olr.IsEmpty() {
return nil
}
return *page.olr.Value
}
// Creates a new instance of the OperationListResultPage type.
func NewOperationListResultPage(cur OperationListResult, getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage {
return OperationListResultPage{
fn: getNextPage,
olr: cur,
}
}
// OperationStatus the status of operation.
type OperationStatus struct {
autorest.Response `json:"-"`
// ID - The operation Id.
ID *string `json:"id,omitempty"`
// Name - The operation name.
Name *string `json:"name,omitempty"`
// StartTime - The start time of the operation.
StartTime *string `json:"startTime,omitempty"`
// EndTime - The end time of the operation.
EndTime *string `json:"endTime,omitempty"`
// Status - The status of the operation.
Status *string `json:"status,omitempty"`
// Error - The error detail of the operation if any.
Error *ErrorResponse `json:"error,omitempty"`
}
// Resource represents an instance of an Analysis Services resource.
type Resource struct {
// ID - READ-ONLY; An identifier that represents the Analysis Services resource.
ID *string `json:"id,omitempty"`
// Name - READ-ONLY; The name of the Analysis Services resource.
Name *string `json:"name,omitempty"`
// Type - READ-ONLY; The type of the Analysis Services resource.
Type *string `json:"type,omitempty"`
// Location - Location of the Analysis Services resource.
Location *string `json:"location,omitempty"`
// Sku - The SKU of the Analysis Services resource.
Sku *ResourceSku `json:"sku,omitempty"`
// Tags - Key-value pairs of additional resource provisioning properties.
Tags map[string]*string `json:"tags"`
}
// MarshalJSON is the custom marshaler for Resource.
func (r Resource) MarshalJSON() ([]byte, error) {
objectMap := make(map[string]interface{})
if r.Location != nil {
objectMap["location"] = r.Location
}
if r.Sku != nil {
objectMap["sku"] = r.Sku
}
if r.Tags != nil {
objectMap["tags"] = r.Tags
}
return json.Marshal(objectMap)
}
// ResourceSku represents the SKU name and Azure pricing tier for Analysis Services resource.
type ResourceSku struct {
// Name - Name of the SKU level.
Name *string `json:"name,omitempty"`
// Tier - The name of the Azure pricing tier to which the SKU applies. Possible values include: 'Development', 'Basic', 'Standard'
Tier SkuTier `json:"tier,omitempty"`
// Capacity - The number of instances in the read only query pool.
Capacity *int32 `json:"capacity,omitempty"`
}
// Server represents an instance of an Analysis Services resource.
type Server struct {
autorest.Response `json:"-"`
// ServerProperties - Properties of the provision operation request.
*ServerProperties `json:"properties,omitempty"`
// ID - READ-ONLY; An identifier that represents the Analysis Services resource.
ID *string `json:"id,omitempty"`
// Name - READ-ONLY; The name of the Analysis Services resource.
Name *string `json:"name,omitempty"`
// Type - READ-ONLY; The type of the Analysis Services resource.
Type *string `json:"type,omitempty"`
// Location - Location of the Analysis Services resource.
Location *string `json:"location,omitempty"`
// Sku - The SKU of the Analysis Services resource.
Sku *ResourceSku `json:"sku,omitempty"`
// Tags - Key-value pairs of additional resource provisioning properties.
Tags map[string]*string `json:"tags"`
}
// MarshalJSON is the custom marshaler for Server.
func (s Server) MarshalJSON() ([]byte, error) {
objectMap := make(map[string]interface{})
if s.ServerProperties != nil {
objectMap["properties"] = s.ServerProperties
}
if s.Location != nil {
objectMap["location"] = s.Location
}
if s.Sku != nil {
objectMap["sku"] = s.Sku
}
if s.Tags != nil {
objectMap["tags"] = s.Tags
}
return json.Marshal(objectMap)
}
// UnmarshalJSON is the custom unmarshaler for Server struct.
func (s *Server) UnmarshalJSON(body []byte) error {
var m map[string]*json.RawMessage
err := json.Unmarshal(body, &m)
if err != nil {
return err
}
for k, v := range m {
switch k {
case "properties":
if v != nil {
var serverProperties ServerProperties
err = json.Unmarshal(*v, &serverProperties)
if err != nil {
return err
}
s.ServerProperties = &serverProperties
}
case "id":
if v != nil {
var ID string
err = json.Unmarshal(*v, &ID)
if err != nil {
return err
}
s.ID = &ID
}
case "name":
if v != nil {
var name string
err = json.Unmarshal(*v, &name)
if err != nil {
return err
}
s.Name = &name
}
case "type":
if v != nil {
var typeVar string
err = json.Unmarshal(*v, &typeVar)
if err != nil {
return err
}
s.Type = &typeVar
}
case "location":
if v != nil {
var location string
err = json.Unmarshal(*v, &location)
if err != nil {
return err
}
s.Location = &location
}
case "sku":
if v != nil {
var sku ResourceSku
err = json.Unmarshal(*v, &sku)
if err != nil {
return err
}
s.Sku = &sku
}
case "tags":
if v != nil {
var tags map[string]*string
err = json.Unmarshal(*v, &tags)
if err != nil {
return err
}
s.Tags = tags
}
}
}
return nil
}
// ServerAdministrators an array of administrator user identities.
type ServerAdministrators struct {
// Members - An array of administrator user identities.
Members *[]string `json:"members,omitempty"`
}
// ServerMutableProperties an object that represents a set of mutable Analysis Services resource
// properties.
type ServerMutableProperties struct {
// AsAdministrators - A collection of AS server administrators
AsAdministrators *ServerAdministrators `json:"asAdministrators,omitempty"`
// BackupBlobContainerURI - The SAS container URI to the backup container.
BackupBlobContainerURI *string `json:"backupBlobContainerUri,omitempty"`
// GatewayDetails - The gateway details configured for the AS server.
GatewayDetails *GatewayDetails `json:"gatewayDetails,omitempty"`
// IPV4FirewallSettings - The firewall settings for the AS server.
IPV4FirewallSettings *IPv4FirewallSettings `json:"ipV4FirewallSettings,omitempty"`
// QuerypoolConnectionMode - How the read-write server's participation in the query pool is controlled.
It can have the following values: