1package dns 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "github.com/Azure/go-autorest/autorest" 12 "github.com/Azure/go-autorest/autorest/azure" 13 "github.com/Azure/go-autorest/autorest/validation" 14 "github.com/Azure/go-autorest/tracing" 15 "net/http" 16) 17 18// ZonesClient is the the DNS Management Client. 19type ZonesClient struct { 20 BaseClient 21} 22 23// NewZonesClient creates an instance of the ZonesClient client. 24func NewZonesClient(subscriptionID string) ZonesClient { 25 return NewZonesClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewZonesClientWithBaseURI creates an instance of the ZonesClient client using a custom endpoint. Use this when 29// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 30func NewZonesClientWithBaseURI(baseURI string, subscriptionID string) ZonesClient { 31 return ZonesClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// CreateOrUpdate creates or updates a DNS zone. Does not modify DNS records within the zone. 35// Parameters: 36// resourceGroupName - the name of the resource group. The name is case insensitive. 37// zoneName - the name of the DNS zone (without a terminating dot). 38// parameters - parameters supplied to the CreateOrUpdate operation. 39// ifMatch - the etag of the DNS zone. Omit this value to always overwrite the current zone. Specify the 40// last-seen etag value to prevent accidentally overwriting any concurrent changes. 41// ifNoneMatch - set to '*' to allow a new DNS zone to be created, but to prevent updating an existing zone. 42// Other values will be ignored. 43func (client ZonesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, zoneName string, parameters Zone, ifMatch string, ifNoneMatch string) (result Zone, err error) { 44 if tracing.IsEnabled() { 45 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.CreateOrUpdate") 46 defer func() { 47 sc := -1 48 if result.Response.Response != nil { 49 sc = result.Response.Response.StatusCode 50 } 51 tracing.EndSpan(ctx, sc, err) 52 }() 53 } 54 if err := validation.Validate([]validation.Validation{ 55 {TargetValue: resourceGroupName, 56 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 57 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 58 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 59 {TargetValue: client.SubscriptionID, 60 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 61 return result, validation.NewError("dns.ZonesClient", "CreateOrUpdate", err.Error()) 62 } 63 64 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, zoneName, parameters, ifMatch, ifNoneMatch) 65 if err != nil { 66 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "CreateOrUpdate", nil, "Failure preparing request") 67 return 68 } 69 70 resp, err := client.CreateOrUpdateSender(req) 71 if err != nil { 72 result.Response = autorest.Response{Response: resp} 73 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "CreateOrUpdate", resp, "Failure sending request") 74 return 75 } 76 77 result, err = client.CreateOrUpdateResponder(resp) 78 if err != nil { 79 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "CreateOrUpdate", resp, "Failure responding to request") 80 return 81 } 82 83 return 84} 85 86// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 87func (client ZonesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, zoneName string, parameters Zone, ifMatch string, ifNoneMatch string) (*http.Request, error) { 88 pathParameters := map[string]interface{}{ 89 "resourceGroupName": autorest.Encode("path", resourceGroupName), 90 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 91 "zoneName": autorest.Encode("path", zoneName), 92 } 93 94 const APIVersion = "2017-10-01" 95 queryParameters := map[string]interface{}{ 96 "api-version": APIVersion, 97 } 98 99 preparer := autorest.CreatePreparer( 100 autorest.AsContentType("application/json; charset=utf-8"), 101 autorest.AsPut(), 102 autorest.WithBaseURL(client.BaseURI), 103 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", pathParameters), 104 autorest.WithJSON(parameters), 105 autorest.WithQueryParameters(queryParameters)) 106 if len(ifMatch) > 0 { 107 preparer = autorest.DecoratePreparer(preparer, 108 autorest.WithHeader("If-Match", autorest.String(ifMatch))) 109 } 110 if len(ifNoneMatch) > 0 { 111 preparer = autorest.DecoratePreparer(preparer, 112 autorest.WithHeader("If-None-Match", autorest.String(ifNoneMatch))) 113 } 114 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 115} 116 117// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 118// http.Response Body if it receives an error. 119func (client ZonesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { 120 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 121} 122 123// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 124// closes the http.Response Body. 125func (client ZonesClient) CreateOrUpdateResponder(resp *http.Response) (result Zone, err error) { 126 err = autorest.Respond( 127 resp, 128 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), 129 autorest.ByUnmarshallingJSON(&result), 130 autorest.ByClosing()) 131 result.Response = autorest.Response{Response: resp} 132 return 133} 134 135// Delete deletes a DNS zone. WARNING: All DNS records in the zone will also be deleted. This operation cannot be 136// undone. 137// Parameters: 138// resourceGroupName - the name of the resource group. The name is case insensitive. 139// zoneName - the name of the DNS zone (without a terminating dot). 140// ifMatch - the etag of the DNS zone. Omit this value to always delete the current zone. Specify the last-seen 141// etag value to prevent accidentally deleting any concurrent changes. 142func (client ZonesClient) Delete(ctx context.Context, resourceGroupName string, zoneName string, ifMatch string) (result ZonesDeleteFuture, err error) { 143 if tracing.IsEnabled() { 144 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.Delete") 145 defer func() { 146 sc := -1 147 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 148 sc = result.FutureAPI.Response().StatusCode 149 } 150 tracing.EndSpan(ctx, sc, err) 151 }() 152 } 153 if err := validation.Validate([]validation.Validation{ 154 {TargetValue: resourceGroupName, 155 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 156 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 157 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 158 {TargetValue: client.SubscriptionID, 159 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 160 return result, validation.NewError("dns.ZonesClient", "Delete", err.Error()) 161 } 162 163 req, err := client.DeletePreparer(ctx, resourceGroupName, zoneName, ifMatch) 164 if err != nil { 165 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Delete", nil, "Failure preparing request") 166 return 167 } 168 169 result, err = client.DeleteSender(req) 170 if err != nil { 171 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Delete", nil, "Failure sending request") 172 return 173 } 174 175 return 176} 177 178// DeletePreparer prepares the Delete request. 179func (client ZonesClient) DeletePreparer(ctx context.Context, resourceGroupName string, zoneName string, ifMatch string) (*http.Request, error) { 180 pathParameters := map[string]interface{}{ 181 "resourceGroupName": autorest.Encode("path", resourceGroupName), 182 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 183 "zoneName": autorest.Encode("path", zoneName), 184 } 185 186 const APIVersion = "2017-10-01" 187 queryParameters := map[string]interface{}{ 188 "api-version": APIVersion, 189 } 190 191 preparer := autorest.CreatePreparer( 192 autorest.AsDelete(), 193 autorest.WithBaseURL(client.BaseURI), 194 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", pathParameters), 195 autorest.WithQueryParameters(queryParameters)) 196 if len(ifMatch) > 0 { 197 preparer = autorest.DecoratePreparer(preparer, 198 autorest.WithHeader("If-Match", autorest.String(ifMatch))) 199 } 200 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 201} 202 203// DeleteSender sends the Delete request. The method will close the 204// http.Response Body if it receives an error. 205func (client ZonesClient) DeleteSender(req *http.Request) (future ZonesDeleteFuture, err error) { 206 var resp *http.Response 207 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 208 if err != nil { 209 return 210 } 211 var azf azure.Future 212 azf, err = azure.NewFutureFromResponse(resp) 213 future.FutureAPI = &azf 214 future.Result = future.result 215 return 216} 217 218// DeleteResponder handles the response to the Delete request. The method always 219// closes the http.Response Body. 220func (client ZonesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 221 err = autorest.Respond( 222 resp, 223 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 224 autorest.ByClosing()) 225 result.Response = resp 226 return 227} 228 229// Get gets a DNS zone. Retrieves the zone properties, but not the record sets within the zone. 230// Parameters: 231// resourceGroupName - the name of the resource group. The name is case insensitive. 232// zoneName - the name of the DNS zone (without a terminating dot). 233func (client ZonesClient) Get(ctx context.Context, resourceGroupName string, zoneName string) (result Zone, err error) { 234 if tracing.IsEnabled() { 235 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.Get") 236 defer func() { 237 sc := -1 238 if result.Response.Response != nil { 239 sc = result.Response.Response.StatusCode 240 } 241 tracing.EndSpan(ctx, sc, err) 242 }() 243 } 244 if err := validation.Validate([]validation.Validation{ 245 {TargetValue: resourceGroupName, 246 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 247 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 248 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 249 {TargetValue: client.SubscriptionID, 250 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 251 return result, validation.NewError("dns.ZonesClient", "Get", err.Error()) 252 } 253 254 req, err := client.GetPreparer(ctx, resourceGroupName, zoneName) 255 if err != nil { 256 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Get", nil, "Failure preparing request") 257 return 258 } 259 260 resp, err := client.GetSender(req) 261 if err != nil { 262 result.Response = autorest.Response{Response: resp} 263 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Get", resp, "Failure sending request") 264 return 265 } 266 267 result, err = client.GetResponder(resp) 268 if err != nil { 269 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Get", resp, "Failure responding to request") 270 return 271 } 272 273 return 274} 275 276// GetPreparer prepares the Get request. 277func (client ZonesClient) GetPreparer(ctx context.Context, resourceGroupName string, zoneName string) (*http.Request, error) { 278 pathParameters := map[string]interface{}{ 279 "resourceGroupName": autorest.Encode("path", resourceGroupName), 280 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 281 "zoneName": autorest.Encode("path", zoneName), 282 } 283 284 const APIVersion = "2017-10-01" 285 queryParameters := map[string]interface{}{ 286 "api-version": APIVersion, 287 } 288 289 preparer := autorest.CreatePreparer( 290 autorest.AsGet(), 291 autorest.WithBaseURL(client.BaseURI), 292 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", pathParameters), 293 autorest.WithQueryParameters(queryParameters)) 294 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 295} 296 297// GetSender sends the Get request. The method will close the 298// http.Response Body if it receives an error. 299func (client ZonesClient) GetSender(req *http.Request) (*http.Response, error) { 300 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 301} 302 303// GetResponder handles the response to the Get request. The method always 304// closes the http.Response Body. 305func (client ZonesClient) GetResponder(resp *http.Response) (result Zone, err error) { 306 err = autorest.Respond( 307 resp, 308 azure.WithErrorUnlessStatusCode(http.StatusOK), 309 autorest.ByUnmarshallingJSON(&result), 310 autorest.ByClosing()) 311 result.Response = autorest.Response{Response: resp} 312 return 313} 314 315// List lists the DNS zones in all resource groups in a subscription. 316// Parameters: 317// top - the maximum number of DNS zones to return. If not specified, returns up to 100 zones. 318func (client ZonesClient) List(ctx context.Context, top *int32) (result ZoneListResultPage, err error) { 319 if tracing.IsEnabled() { 320 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.List") 321 defer func() { 322 sc := -1 323 if result.zlr.Response.Response != nil { 324 sc = result.zlr.Response.Response.StatusCode 325 } 326 tracing.EndSpan(ctx, sc, err) 327 }() 328 } 329 if err := validation.Validate([]validation.Validation{ 330 {TargetValue: client.SubscriptionID, 331 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 332 return result, validation.NewError("dns.ZonesClient", "List", err.Error()) 333 } 334 335 result.fn = client.listNextResults 336 req, err := client.ListPreparer(ctx, top) 337 if err != nil { 338 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "List", nil, "Failure preparing request") 339 return 340 } 341 342 resp, err := client.ListSender(req) 343 if err != nil { 344 result.zlr.Response = autorest.Response{Response: resp} 345 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "List", resp, "Failure sending request") 346 return 347 } 348 349 result.zlr, err = client.ListResponder(resp) 350 if err != nil { 351 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "List", resp, "Failure responding to request") 352 return 353 } 354 if result.zlr.hasNextLink() && result.zlr.IsEmpty() { 355 err = result.NextWithContext(ctx) 356 return 357 } 358 359 return 360} 361 362// ListPreparer prepares the List request. 363func (client ZonesClient) ListPreparer(ctx context.Context, top *int32) (*http.Request, error) { 364 pathParameters := map[string]interface{}{ 365 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 366 } 367 368 const APIVersion = "2017-10-01" 369 queryParameters := map[string]interface{}{ 370 "api-version": APIVersion, 371 } 372 if top != nil { 373 queryParameters["$top"] = autorest.Encode("query", *top) 374 } 375 376 preparer := autorest.CreatePreparer( 377 autorest.AsGet(), 378 autorest.WithBaseURL(client.BaseURI), 379 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/dnszones", pathParameters), 380 autorest.WithQueryParameters(queryParameters)) 381 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 382} 383 384// ListSender sends the List request. The method will close the 385// http.Response Body if it receives an error. 386func (client ZonesClient) ListSender(req *http.Request) (*http.Response, error) { 387 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 388} 389 390// ListResponder handles the response to the List request. The method always 391// closes the http.Response Body. 392func (client ZonesClient) ListResponder(resp *http.Response) (result ZoneListResult, err error) { 393 err = autorest.Respond( 394 resp, 395 azure.WithErrorUnlessStatusCode(http.StatusOK), 396 autorest.ByUnmarshallingJSON(&result), 397 autorest.ByClosing()) 398 result.Response = autorest.Response{Response: resp} 399 return 400} 401 402// listNextResults retrieves the next set of results, if any. 403func (client ZonesClient) listNextResults(ctx context.Context, lastResults ZoneListResult) (result ZoneListResult, err error) { 404 req, err := lastResults.zoneListResultPreparer(ctx) 405 if err != nil { 406 return result, autorest.NewErrorWithError(err, "dns.ZonesClient", "listNextResults", nil, "Failure preparing next results request") 407 } 408 if req == nil { 409 return 410 } 411 resp, err := client.ListSender(req) 412 if err != nil { 413 result.Response = autorest.Response{Response: resp} 414 return result, autorest.NewErrorWithError(err, "dns.ZonesClient", "listNextResults", resp, "Failure sending next results request") 415 } 416 result, err = client.ListResponder(resp) 417 if err != nil { 418 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "listNextResults", resp, "Failure responding to next results request") 419 } 420 return 421} 422 423// ListComplete enumerates all values, automatically crossing page boundaries as required. 424func (client ZonesClient) ListComplete(ctx context.Context, top *int32) (result ZoneListResultIterator, err error) { 425 if tracing.IsEnabled() { 426 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.List") 427 defer func() { 428 sc := -1 429 if result.Response().Response.Response != nil { 430 sc = result.page.Response().Response.Response.StatusCode 431 } 432 tracing.EndSpan(ctx, sc, err) 433 }() 434 } 435 result.page, err = client.List(ctx, top) 436 return 437} 438 439// ListByResourceGroup lists the DNS zones within a resource group. 440// Parameters: 441// resourceGroupName - the name of the resource group. The name is case insensitive. 442// top - the maximum number of record sets to return. If not specified, returns up to 100 record sets. 443func (client ZonesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string, top *int32) (result ZoneListResultPage, err error) { 444 if tracing.IsEnabled() { 445 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.ListByResourceGroup") 446 defer func() { 447 sc := -1 448 if result.zlr.Response.Response != nil { 449 sc = result.zlr.Response.Response.StatusCode 450 } 451 tracing.EndSpan(ctx, sc, err) 452 }() 453 } 454 if err := validation.Validate([]validation.Validation{ 455 {TargetValue: resourceGroupName, 456 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 457 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 458 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 459 {TargetValue: client.SubscriptionID, 460 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 461 return result, validation.NewError("dns.ZonesClient", "ListByResourceGroup", err.Error()) 462 } 463 464 result.fn = client.listByResourceGroupNextResults 465 req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName, top) 466 if err != nil { 467 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "ListByResourceGroup", nil, "Failure preparing request") 468 return 469 } 470 471 resp, err := client.ListByResourceGroupSender(req) 472 if err != nil { 473 result.zlr.Response = autorest.Response{Response: resp} 474 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "ListByResourceGroup", resp, "Failure sending request") 475 return 476 } 477 478 result.zlr, err = client.ListByResourceGroupResponder(resp) 479 if err != nil { 480 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "ListByResourceGroup", resp, "Failure responding to request") 481 return 482 } 483 if result.zlr.hasNextLink() && result.zlr.IsEmpty() { 484 err = result.NextWithContext(ctx) 485 return 486 } 487 488 return 489} 490 491// ListByResourceGroupPreparer prepares the ListByResourceGroup request. 492func (client ZonesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string, top *int32) (*http.Request, error) { 493 pathParameters := map[string]interface{}{ 494 "resourceGroupName": autorest.Encode("path", resourceGroupName), 495 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 496 } 497 498 const APIVersion = "2017-10-01" 499 queryParameters := map[string]interface{}{ 500 "api-version": APIVersion, 501 } 502 if top != nil { 503 queryParameters["$top"] = autorest.Encode("query", *top) 504 } 505 506 preparer := autorest.CreatePreparer( 507 autorest.AsGet(), 508 autorest.WithBaseURL(client.BaseURI), 509 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones", pathParameters), 510 autorest.WithQueryParameters(queryParameters)) 511 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 512} 513 514// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the 515// http.Response Body if it receives an error. 516func (client ZonesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { 517 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 518} 519 520// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always 521// closes the http.Response Body. 522func (client ZonesClient) ListByResourceGroupResponder(resp *http.Response) (result ZoneListResult, err error) { 523 err = autorest.Respond( 524 resp, 525 azure.WithErrorUnlessStatusCode(http.StatusOK), 526 autorest.ByUnmarshallingJSON(&result), 527 autorest.ByClosing()) 528 result.Response = autorest.Response{Response: resp} 529 return 530} 531 532// listByResourceGroupNextResults retrieves the next set of results, if any. 533func (client ZonesClient) listByResourceGroupNextResults(ctx context.Context, lastResults ZoneListResult) (result ZoneListResult, err error) { 534 req, err := lastResults.zoneListResultPreparer(ctx) 535 if err != nil { 536 return result, autorest.NewErrorWithError(err, "dns.ZonesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") 537 } 538 if req == nil { 539 return 540 } 541 resp, err := client.ListByResourceGroupSender(req) 542 if err != nil { 543 result.Response = autorest.Response{Response: resp} 544 return result, autorest.NewErrorWithError(err, "dns.ZonesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") 545 } 546 result, err = client.ListByResourceGroupResponder(resp) 547 if err != nil { 548 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") 549 } 550 return 551} 552 553// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. 554func (client ZonesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string, top *int32) (result ZoneListResultIterator, err error) { 555 if tracing.IsEnabled() { 556 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.ListByResourceGroup") 557 defer func() { 558 sc := -1 559 if result.Response().Response.Response != nil { 560 sc = result.page.Response().Response.Response.StatusCode 561 } 562 tracing.EndSpan(ctx, sc, err) 563 }() 564 } 565 result.page, err = client.ListByResourceGroup(ctx, resourceGroupName, top) 566 return 567} 568 569// Update updates a DNS zone. Does not modify DNS records within the zone. 570// Parameters: 571// resourceGroupName - the name of the resource group. The name is case insensitive. 572// zoneName - the name of the DNS zone (without a terminating dot). 573// parameters - parameters supplied to the Update operation. 574// ifMatch - the etag of the DNS zone. Omit this value to always overwrite the current zone. Specify the 575// last-seen etag value to prevent accidentally overwriting any concurrent changes. 576func (client ZonesClient) Update(ctx context.Context, resourceGroupName string, zoneName string, parameters ZoneUpdate, ifMatch string) (result Zone, err error) { 577 if tracing.IsEnabled() { 578 ctx = tracing.StartSpan(ctx, fqdn+"/ZonesClient.Update") 579 defer func() { 580 sc := -1 581 if result.Response.Response != nil { 582 sc = result.Response.Response.StatusCode 583 } 584 tracing.EndSpan(ctx, sc, err) 585 }() 586 } 587 if err := validation.Validate([]validation.Validation{ 588 {TargetValue: resourceGroupName, 589 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 590 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 591 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 592 {TargetValue: client.SubscriptionID, 593 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 594 return result, validation.NewError("dns.ZonesClient", "Update", err.Error()) 595 } 596 597 req, err := client.UpdatePreparer(ctx, resourceGroupName, zoneName, parameters, ifMatch) 598 if err != nil { 599 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Update", nil, "Failure preparing request") 600 return 601 } 602 603 resp, err := client.UpdateSender(req) 604 if err != nil { 605 result.Response = autorest.Response{Response: resp} 606 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Update", resp, "Failure sending request") 607 return 608 } 609 610 result, err = client.UpdateResponder(resp) 611 if err != nil { 612 err = autorest.NewErrorWithError(err, "dns.ZonesClient", "Update", resp, "Failure responding to request") 613 return 614 } 615 616 return 617} 618 619// UpdatePreparer prepares the Update request. 620func (client ZonesClient) UpdatePreparer(ctx context.Context, resourceGroupName string, zoneName string, parameters ZoneUpdate, ifMatch string) (*http.Request, error) { 621 pathParameters := map[string]interface{}{ 622 "resourceGroupName": autorest.Encode("path", resourceGroupName), 623 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 624 "zoneName": autorest.Encode("path", zoneName), 625 } 626 627 const APIVersion = "2017-10-01" 628 queryParameters := map[string]interface{}{ 629 "api-version": APIVersion, 630 } 631 632 preparer := autorest.CreatePreparer( 633 autorest.AsContentType("application/json; charset=utf-8"), 634 autorest.AsPatch(), 635 autorest.WithBaseURL(client.BaseURI), 636 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", pathParameters), 637 autorest.WithJSON(parameters), 638 autorest.WithQueryParameters(queryParameters)) 639 if len(ifMatch) > 0 { 640 preparer = autorest.DecoratePreparer(preparer, 641 autorest.WithHeader("If-Match", autorest.String(ifMatch))) 642 } 643 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 644} 645 646// UpdateSender sends the Update request. The method will close the 647// http.Response Body if it receives an error. 648func (client ZonesClient) UpdateSender(req *http.Request) (*http.Response, error) { 649 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 650} 651 652// UpdateResponder handles the response to the Update request. The method always 653// closes the http.Response Body. 654func (client ZonesClient) UpdateResponder(resp *http.Response) (result Zone, err error) { 655 err = autorest.Respond( 656 resp, 657 azure.WithErrorUnlessStatusCode(http.StatusOK), 658 autorest.ByUnmarshallingJSON(&result), 659 autorest.ByClosing()) 660 result.Response = autorest.Response{Response: resp} 661 return 662} 663