1// Package managementgroups implements the Azure ARM Managementgroups service API version 2018-03-01-preview. 2// 3// The Azure Management Groups API enables consolidation of multiple subscriptions/resources into an organizational 4// hierarchy and centrally manage access control, policies, alerting and reporting for those resources. 5package managementgroups 6 7// Copyright (c) Microsoft Corporation. All rights reserved. 8// Licensed under the MIT License. See License.txt in the project root for license information. 9// 10// Code generated by Microsoft (R) AutoRest Code Generator. 11// Changes may cause incorrect behavior and will be lost if the code is regenerated. 12 13import ( 14 "context" 15 "github.com/Azure/go-autorest/autorest" 16 "github.com/Azure/go-autorest/autorest/azure" 17 "github.com/Azure/go-autorest/tracing" 18 "net/http" 19) 20 21const ( 22 // DefaultBaseURI is the default URI used for the service Managementgroups 23 DefaultBaseURI = "https://management.azure.com" 24) 25 26// BaseClient is the base client for Managementgroups. 27type BaseClient struct { 28 autorest.Client 29 BaseURI string 30} 31 32// New creates an instance of the BaseClient client. 33func New() BaseClient { 34 return NewWithBaseURI(DefaultBaseURI) 35} 36 37// NewWithBaseURI creates an instance of the BaseClient client using a custom endpoint. Use this when interacting with 38// an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 39func NewWithBaseURI(baseURI string) BaseClient { 40 return BaseClient{ 41 Client: autorest.NewClientWithUserAgent(UserAgent()), 42 BaseURI: baseURI, 43 } 44} 45 46// CheckNameAvailability checks if the specified management group name is valid and unique 47// Parameters: 48// checkNameAvailabilityRequest - management group name availability check parameters. 49func (client BaseClient) CheckNameAvailability(ctx context.Context, checkNameAvailabilityRequest CheckNameAvailabilityRequest) (result CheckNameAvailabilityResult, err error) { 50 if tracing.IsEnabled() { 51 ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.CheckNameAvailability") 52 defer func() { 53 sc := -1 54 if result.Response.Response != nil { 55 sc = result.Response.Response.StatusCode 56 } 57 tracing.EndSpan(ctx, sc, err) 58 }() 59 } 60 req, err := client.CheckNameAvailabilityPreparer(ctx, checkNameAvailabilityRequest) 61 if err != nil { 62 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "CheckNameAvailability", nil, "Failure preparing request") 63 return 64 } 65 66 resp, err := client.CheckNameAvailabilitySender(req) 67 if err != nil { 68 result.Response = autorest.Response{Response: resp} 69 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "CheckNameAvailability", resp, "Failure sending request") 70 return 71 } 72 73 result, err = client.CheckNameAvailabilityResponder(resp) 74 if err != nil { 75 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "CheckNameAvailability", resp, "Failure responding to request") 76 return 77 } 78 79 return 80} 81 82// CheckNameAvailabilityPreparer prepares the CheckNameAvailability request. 83func (client BaseClient) CheckNameAvailabilityPreparer(ctx context.Context, checkNameAvailabilityRequest CheckNameAvailabilityRequest) (*http.Request, error) { 84 const APIVersion = "2018-03-01-preview" 85 queryParameters := map[string]interface{}{ 86 "api-version": APIVersion, 87 } 88 89 preparer := autorest.CreatePreparer( 90 autorest.AsContentType("application/json; charset=utf-8"), 91 autorest.AsPost(), 92 autorest.WithBaseURL(client.BaseURI), 93 autorest.WithPath("/providers/Microsoft.Management/checkNameAvailability"), 94 autorest.WithJSON(checkNameAvailabilityRequest), 95 autorest.WithQueryParameters(queryParameters)) 96 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 97} 98 99// CheckNameAvailabilitySender sends the CheckNameAvailability request. The method will close the 100// http.Response Body if it receives an error. 101func (client BaseClient) CheckNameAvailabilitySender(req *http.Request) (*http.Response, error) { 102 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 103} 104 105// CheckNameAvailabilityResponder handles the response to the CheckNameAvailability request. The method always 106// closes the http.Response Body. 107func (client BaseClient) CheckNameAvailabilityResponder(resp *http.Response) (result CheckNameAvailabilityResult, err error) { 108 err = autorest.Respond( 109 resp, 110 azure.WithErrorUnlessStatusCode(http.StatusOK), 111 autorest.ByUnmarshallingJSON(&result), 112 autorest.ByClosing()) 113 result.Response = autorest.Response{Response: resp} 114 return 115} 116 117// StartTenantBackfill starts backfilling subscriptions for the Tenant. 118func (client BaseClient) StartTenantBackfill(ctx context.Context) (result TenantBackfillStatusResult, err error) { 119 if tracing.IsEnabled() { 120 ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.StartTenantBackfill") 121 defer func() { 122 sc := -1 123 if result.Response.Response != nil { 124 sc = result.Response.Response.StatusCode 125 } 126 tracing.EndSpan(ctx, sc, err) 127 }() 128 } 129 req, err := client.StartTenantBackfillPreparer(ctx) 130 if err != nil { 131 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "StartTenantBackfill", nil, "Failure preparing request") 132 return 133 } 134 135 resp, err := client.StartTenantBackfillSender(req) 136 if err != nil { 137 result.Response = autorest.Response{Response: resp} 138 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "StartTenantBackfill", resp, "Failure sending request") 139 return 140 } 141 142 result, err = client.StartTenantBackfillResponder(resp) 143 if err != nil { 144 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "StartTenantBackfill", resp, "Failure responding to request") 145 return 146 } 147 148 return 149} 150 151// StartTenantBackfillPreparer prepares the StartTenantBackfill request. 152func (client BaseClient) StartTenantBackfillPreparer(ctx context.Context) (*http.Request, error) { 153 const APIVersion = "2018-03-01-preview" 154 queryParameters := map[string]interface{}{ 155 "api-version": APIVersion, 156 } 157 158 preparer := autorest.CreatePreparer( 159 autorest.AsPost(), 160 autorest.WithBaseURL(client.BaseURI), 161 autorest.WithPath("/providers/Microsoft.Management/startTenantBackfill"), 162 autorest.WithQueryParameters(queryParameters)) 163 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 164} 165 166// StartTenantBackfillSender sends the StartTenantBackfill request. The method will close the 167// http.Response Body if it receives an error. 168func (client BaseClient) StartTenantBackfillSender(req *http.Request) (*http.Response, error) { 169 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 170} 171 172// StartTenantBackfillResponder handles the response to the StartTenantBackfill request. The method always 173// closes the http.Response Body. 174func (client BaseClient) StartTenantBackfillResponder(resp *http.Response) (result TenantBackfillStatusResult, err error) { 175 err = autorest.Respond( 176 resp, 177 azure.WithErrorUnlessStatusCode(http.StatusOK), 178 autorest.ByUnmarshallingJSON(&result), 179 autorest.ByClosing()) 180 result.Response = autorest.Response{Response: resp} 181 return 182} 183 184// TenantBackfillStatus gets tenant backfill status 185func (client BaseClient) TenantBackfillStatus(ctx context.Context) (result TenantBackfillStatusResult, err error) { 186 if tracing.IsEnabled() { 187 ctx = tracing.StartSpan(ctx, fqdn+"/BaseClient.TenantBackfillStatus") 188 defer func() { 189 sc := -1 190 if result.Response.Response != nil { 191 sc = result.Response.Response.StatusCode 192 } 193 tracing.EndSpan(ctx, sc, err) 194 }() 195 } 196 req, err := client.TenantBackfillStatusPreparer(ctx) 197 if err != nil { 198 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "TenantBackfillStatus", nil, "Failure preparing request") 199 return 200 } 201 202 resp, err := client.TenantBackfillStatusSender(req) 203 if err != nil { 204 result.Response = autorest.Response{Response: resp} 205 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "TenantBackfillStatus", resp, "Failure sending request") 206 return 207 } 208 209 result, err = client.TenantBackfillStatusResponder(resp) 210 if err != nil { 211 err = autorest.NewErrorWithError(err, "managementgroups.BaseClient", "TenantBackfillStatus", resp, "Failure responding to request") 212 return 213 } 214 215 return 216} 217 218// TenantBackfillStatusPreparer prepares the TenantBackfillStatus request. 219func (client BaseClient) TenantBackfillStatusPreparer(ctx context.Context) (*http.Request, error) { 220 const APIVersion = "2018-03-01-preview" 221 queryParameters := map[string]interface{}{ 222 "api-version": APIVersion, 223 } 224 225 preparer := autorest.CreatePreparer( 226 autorest.AsPost(), 227 autorest.WithBaseURL(client.BaseURI), 228 autorest.WithPath("/providers/Microsoft.Management/tenantBackfillStatus"), 229 autorest.WithQueryParameters(queryParameters)) 230 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 231} 232 233// TenantBackfillStatusSender sends the TenantBackfillStatus request. The method will close the 234// http.Response Body if it receives an error. 235func (client BaseClient) TenantBackfillStatusSender(req *http.Request) (*http.Response, error) { 236 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 237} 238 239// TenantBackfillStatusResponder handles the response to the TenantBackfillStatus request. The method always 240// closes the http.Response Body. 241func (client BaseClient) TenantBackfillStatusResponder(resp *http.Response) (result TenantBackfillStatusResult, err error) { 242 err = autorest.Respond( 243 resp, 244 azure.WithErrorUnlessStatusCode(http.StatusOK), 245 autorest.ByUnmarshallingJSON(&result), 246 autorest.ByClosing()) 247 result.Response = autorest.Response{Response: resp} 248 return 249} 250