1package azurestackhci 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// ClustersClient is the azure Stack HCI management service 19type ClustersClient struct { 20 BaseClient 21} 22 23// NewClustersClient creates an instance of the ClustersClient client. 24func NewClustersClient(subscriptionID string) ClustersClient { 25 return NewClustersClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewClustersClientWithBaseURI creates an instance of the ClustersClient client using a custom endpoint. Use this 29// when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 30func NewClustersClientWithBaseURI(baseURI string, subscriptionID string) ClustersClient { 31 return ClustersClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// Create create an HCI cluster. 35// Parameters: 36// resourceGroupName - the name of the resource group. The name is case insensitive. 37// clusterName - the name of the cluster. 38// cluster - details of the HCI cluster. 39func (client ClustersClient) Create(ctx context.Context, resourceGroupName string, clusterName string, cluster Cluster) (result Cluster, err error) { 40 if tracing.IsEnabled() { 41 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.Create") 42 defer func() { 43 sc := -1 44 if result.Response.Response != nil { 45 sc = result.Response.Response.StatusCode 46 } 47 tracing.EndSpan(ctx, sc, err) 48 }() 49 } 50 if err := validation.Validate([]validation.Validation{ 51 {TargetValue: client.SubscriptionID, 52 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, 53 {TargetValue: resourceGroupName, 54 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 55 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 56 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}, 57 {TargetValue: cluster, 58 Constraints: []validation.Constraint{{Target: "cluster.ClusterProperties", Name: validation.Null, Rule: false, 59 Chain: []validation.Constraint{{Target: "cluster.ClusterProperties.AadClientID", Name: validation.Null, Rule: true, Chain: nil}, 60 {Target: "cluster.ClusterProperties.AadTenantID", Name: validation.Null, Rule: true, Chain: nil}, 61 }}}}}); err != nil { 62 return result, validation.NewError("azurestackhci.ClustersClient", "Create", err.Error()) 63 } 64 65 req, err := client.CreatePreparer(ctx, resourceGroupName, clusterName, cluster) 66 if err != nil { 67 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Create", nil, "Failure preparing request") 68 return 69 } 70 71 resp, err := client.CreateSender(req) 72 if err != nil { 73 result.Response = autorest.Response{Response: resp} 74 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Create", resp, "Failure sending request") 75 return 76 } 77 78 result, err = client.CreateResponder(resp) 79 if err != nil { 80 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Create", resp, "Failure responding to request") 81 return 82 } 83 84 return 85} 86 87// CreatePreparer prepares the Create request. 88func (client ClustersClient) CreatePreparer(ctx context.Context, resourceGroupName string, clusterName string, cluster Cluster) (*http.Request, error) { 89 pathParameters := map[string]interface{}{ 90 "clusterName": autorest.Encode("path", clusterName), 91 "resourceGroupName": autorest.Encode("path", resourceGroupName), 92 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 93 } 94 95 const APIVersion = "2020-10-01" 96 queryParameters := map[string]interface{}{ 97 "api-version": APIVersion, 98 } 99 100 preparer := autorest.CreatePreparer( 101 autorest.AsContentType("application/json; charset=utf-8"), 102 autorest.AsPut(), 103 autorest.WithBaseURL(client.BaseURI), 104 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureStackHCI/clusters/{clusterName}", pathParameters), 105 autorest.WithJSON(cluster), 106 autorest.WithQueryParameters(queryParameters)) 107 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 108} 109 110// CreateSender sends the Create request. The method will close the 111// http.Response Body if it receives an error. 112func (client ClustersClient) CreateSender(req *http.Request) (*http.Response, error) { 113 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 114} 115 116// CreateResponder handles the response to the Create request. The method always 117// closes the http.Response Body. 118func (client ClustersClient) CreateResponder(resp *http.Response) (result Cluster, err error) { 119 err = autorest.Respond( 120 resp, 121 azure.WithErrorUnlessStatusCode(http.StatusOK), 122 autorest.ByUnmarshallingJSON(&result), 123 autorest.ByClosing()) 124 result.Response = autorest.Response{Response: resp} 125 return 126} 127 128// Delete delete an HCI cluster. 129// Parameters: 130// resourceGroupName - the name of the resource group. The name is case insensitive. 131// clusterName - the name of the cluster. 132func (client ClustersClient) Delete(ctx context.Context, resourceGroupName string, clusterName string) (result autorest.Response, err error) { 133 if tracing.IsEnabled() { 134 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.Delete") 135 defer func() { 136 sc := -1 137 if result.Response != nil { 138 sc = result.Response.StatusCode 139 } 140 tracing.EndSpan(ctx, sc, err) 141 }() 142 } 143 if err := validation.Validate([]validation.Validation{ 144 {TargetValue: client.SubscriptionID, 145 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, 146 {TargetValue: resourceGroupName, 147 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 148 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 149 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 150 return result, validation.NewError("azurestackhci.ClustersClient", "Delete", err.Error()) 151 } 152 153 req, err := client.DeletePreparer(ctx, resourceGroupName, clusterName) 154 if err != nil { 155 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Delete", nil, "Failure preparing request") 156 return 157 } 158 159 resp, err := client.DeleteSender(req) 160 if err != nil { 161 result.Response = resp 162 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Delete", resp, "Failure sending request") 163 return 164 } 165 166 result, err = client.DeleteResponder(resp) 167 if err != nil { 168 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Delete", resp, "Failure responding to request") 169 return 170 } 171 172 return 173} 174 175// DeletePreparer prepares the Delete request. 176func (client ClustersClient) DeletePreparer(ctx context.Context, resourceGroupName string, clusterName string) (*http.Request, error) { 177 pathParameters := map[string]interface{}{ 178 "clusterName": autorest.Encode("path", clusterName), 179 "resourceGroupName": autorest.Encode("path", resourceGroupName), 180 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 181 } 182 183 const APIVersion = "2020-10-01" 184 queryParameters := map[string]interface{}{ 185 "api-version": APIVersion, 186 } 187 188 preparer := autorest.CreatePreparer( 189 autorest.AsDelete(), 190 autorest.WithBaseURL(client.BaseURI), 191 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureStackHCI/clusters/{clusterName}", pathParameters), 192 autorest.WithQueryParameters(queryParameters)) 193 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 194} 195 196// DeleteSender sends the Delete request. The method will close the 197// http.Response Body if it receives an error. 198func (client ClustersClient) DeleteSender(req *http.Request) (*http.Response, error) { 199 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 200} 201 202// DeleteResponder handles the response to the Delete request. The method always 203// closes the http.Response Body. 204func (client ClustersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 205 err = autorest.Respond( 206 resp, 207 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), 208 autorest.ByClosing()) 209 result.Response = resp 210 return 211} 212 213// Get get HCI cluster. 214// Parameters: 215// resourceGroupName - the name of the resource group. The name is case insensitive. 216// clusterName - the name of the cluster. 217func (client ClustersClient) Get(ctx context.Context, resourceGroupName string, clusterName string) (result Cluster, err error) { 218 if tracing.IsEnabled() { 219 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.Get") 220 defer func() { 221 sc := -1 222 if result.Response.Response != nil { 223 sc = result.Response.Response.StatusCode 224 } 225 tracing.EndSpan(ctx, sc, err) 226 }() 227 } 228 if err := validation.Validate([]validation.Validation{ 229 {TargetValue: client.SubscriptionID, 230 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, 231 {TargetValue: resourceGroupName, 232 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 233 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 234 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 235 return result, validation.NewError("azurestackhci.ClustersClient", "Get", err.Error()) 236 } 237 238 req, err := client.GetPreparer(ctx, resourceGroupName, clusterName) 239 if err != nil { 240 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Get", nil, "Failure preparing request") 241 return 242 } 243 244 resp, err := client.GetSender(req) 245 if err != nil { 246 result.Response = autorest.Response{Response: resp} 247 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Get", resp, "Failure sending request") 248 return 249 } 250 251 result, err = client.GetResponder(resp) 252 if err != nil { 253 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Get", resp, "Failure responding to request") 254 return 255 } 256 257 return 258} 259 260// GetPreparer prepares the Get request. 261func (client ClustersClient) GetPreparer(ctx context.Context, resourceGroupName string, clusterName string) (*http.Request, error) { 262 pathParameters := map[string]interface{}{ 263 "clusterName": autorest.Encode("path", clusterName), 264 "resourceGroupName": autorest.Encode("path", resourceGroupName), 265 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 266 } 267 268 const APIVersion = "2020-10-01" 269 queryParameters := map[string]interface{}{ 270 "api-version": APIVersion, 271 } 272 273 preparer := autorest.CreatePreparer( 274 autorest.AsGet(), 275 autorest.WithBaseURL(client.BaseURI), 276 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureStackHCI/clusters/{clusterName}", pathParameters), 277 autorest.WithQueryParameters(queryParameters)) 278 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 279} 280 281// GetSender sends the Get request. The method will close the 282// http.Response Body if it receives an error. 283func (client ClustersClient) GetSender(req *http.Request) (*http.Response, error) { 284 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 285} 286 287// GetResponder handles the response to the Get request. The method always 288// closes the http.Response Body. 289func (client ClustersClient) GetResponder(resp *http.Response) (result Cluster, err error) { 290 err = autorest.Respond( 291 resp, 292 azure.WithErrorUnlessStatusCode(http.StatusOK), 293 autorest.ByUnmarshallingJSON(&result), 294 autorest.ByClosing()) 295 result.Response = autorest.Response{Response: resp} 296 return 297} 298 299// ListByResourceGroup list all HCI clusters in a resource group. 300// Parameters: 301// resourceGroupName - the name of the resource group. The name is case insensitive. 302func (client ClustersClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ClusterListPage, err error) { 303 if tracing.IsEnabled() { 304 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.ListByResourceGroup") 305 defer func() { 306 sc := -1 307 if result.cl.Response.Response != nil { 308 sc = result.cl.Response.Response.StatusCode 309 } 310 tracing.EndSpan(ctx, sc, err) 311 }() 312 } 313 if err := validation.Validate([]validation.Validation{ 314 {TargetValue: client.SubscriptionID, 315 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, 316 {TargetValue: resourceGroupName, 317 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 318 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 319 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 320 return result, validation.NewError("azurestackhci.ClustersClient", "ListByResourceGroup", err.Error()) 321 } 322 323 result.fn = client.listByResourceGroupNextResults 324 req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName) 325 if err != nil { 326 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "ListByResourceGroup", nil, "Failure preparing request") 327 return 328 } 329 330 resp, err := client.ListByResourceGroupSender(req) 331 if err != nil { 332 result.cl.Response = autorest.Response{Response: resp} 333 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "ListByResourceGroup", resp, "Failure sending request") 334 return 335 } 336 337 result.cl, err = client.ListByResourceGroupResponder(resp) 338 if err != nil { 339 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "ListByResourceGroup", resp, "Failure responding to request") 340 return 341 } 342 if result.cl.hasNextLink() && result.cl.IsEmpty() { 343 err = result.NextWithContext(ctx) 344 return 345 } 346 347 return 348} 349 350// ListByResourceGroupPreparer prepares the ListByResourceGroup request. 351func (client ClustersClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { 352 pathParameters := map[string]interface{}{ 353 "resourceGroupName": autorest.Encode("path", resourceGroupName), 354 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 355 } 356 357 const APIVersion = "2020-10-01" 358 queryParameters := map[string]interface{}{ 359 "api-version": APIVersion, 360 } 361 362 preparer := autorest.CreatePreparer( 363 autorest.AsGet(), 364 autorest.WithBaseURL(client.BaseURI), 365 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureStackHCI/clusters", pathParameters), 366 autorest.WithQueryParameters(queryParameters)) 367 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 368} 369 370// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the 371// http.Response Body if it receives an error. 372func (client ClustersClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { 373 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 374} 375 376// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always 377// closes the http.Response Body. 378func (client ClustersClient) ListByResourceGroupResponder(resp *http.Response) (result ClusterList, err error) { 379 err = autorest.Respond( 380 resp, 381 azure.WithErrorUnlessStatusCode(http.StatusOK), 382 autorest.ByUnmarshallingJSON(&result), 383 autorest.ByClosing()) 384 result.Response = autorest.Response{Response: resp} 385 return 386} 387 388// listByResourceGroupNextResults retrieves the next set of results, if any. 389func (client ClustersClient) listByResourceGroupNextResults(ctx context.Context, lastResults ClusterList) (result ClusterList, err error) { 390 req, err := lastResults.clusterListPreparer(ctx) 391 if err != nil { 392 return result, autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request") 393 } 394 if req == nil { 395 return 396 } 397 resp, err := client.ListByResourceGroupSender(req) 398 if err != nil { 399 result.Response = autorest.Response{Response: resp} 400 return result, autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "listByResourceGroupNextResults", resp, "Failure sending next results request") 401 } 402 result, err = client.ListByResourceGroupResponder(resp) 403 if err != nil { 404 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request") 405 } 406 return 407} 408 409// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required. 410func (client ClustersClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ClusterListIterator, err error) { 411 if tracing.IsEnabled() { 412 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.ListByResourceGroup") 413 defer func() { 414 sc := -1 415 if result.Response().Response.Response != nil { 416 sc = result.page.Response().Response.Response.StatusCode 417 } 418 tracing.EndSpan(ctx, sc, err) 419 }() 420 } 421 result.page, err = client.ListByResourceGroup(ctx, resourceGroupName) 422 return 423} 424 425// ListBySubscription list all HCI clusters in a subscription. 426func (client ClustersClient) ListBySubscription(ctx context.Context) (result ClusterListPage, err error) { 427 if tracing.IsEnabled() { 428 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.ListBySubscription") 429 defer func() { 430 sc := -1 431 if result.cl.Response.Response != nil { 432 sc = result.cl.Response.Response.StatusCode 433 } 434 tracing.EndSpan(ctx, sc, err) 435 }() 436 } 437 if err := validation.Validate([]validation.Validation{ 438 {TargetValue: client.SubscriptionID, 439 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}}); err != nil { 440 return result, validation.NewError("azurestackhci.ClustersClient", "ListBySubscription", err.Error()) 441 } 442 443 result.fn = client.listBySubscriptionNextResults 444 req, err := client.ListBySubscriptionPreparer(ctx) 445 if err != nil { 446 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "ListBySubscription", nil, "Failure preparing request") 447 return 448 } 449 450 resp, err := client.ListBySubscriptionSender(req) 451 if err != nil { 452 result.cl.Response = autorest.Response{Response: resp} 453 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "ListBySubscription", resp, "Failure sending request") 454 return 455 } 456 457 result.cl, err = client.ListBySubscriptionResponder(resp) 458 if err != nil { 459 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "ListBySubscription", resp, "Failure responding to request") 460 return 461 } 462 if result.cl.hasNextLink() && result.cl.IsEmpty() { 463 err = result.NextWithContext(ctx) 464 return 465 } 466 467 return 468} 469 470// ListBySubscriptionPreparer prepares the ListBySubscription request. 471func (client ClustersClient) ListBySubscriptionPreparer(ctx context.Context) (*http.Request, error) { 472 pathParameters := map[string]interface{}{ 473 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 474 } 475 476 const APIVersion = "2020-10-01" 477 queryParameters := map[string]interface{}{ 478 "api-version": APIVersion, 479 } 480 481 preparer := autorest.CreatePreparer( 482 autorest.AsGet(), 483 autorest.WithBaseURL(client.BaseURI), 484 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.AzureStackHCI/clusters", pathParameters), 485 autorest.WithQueryParameters(queryParameters)) 486 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 487} 488 489// ListBySubscriptionSender sends the ListBySubscription request. The method will close the 490// http.Response Body if it receives an error. 491func (client ClustersClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) { 492 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 493} 494 495// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always 496// closes the http.Response Body. 497func (client ClustersClient) ListBySubscriptionResponder(resp *http.Response) (result ClusterList, err error) { 498 err = autorest.Respond( 499 resp, 500 azure.WithErrorUnlessStatusCode(http.StatusOK), 501 autorest.ByUnmarshallingJSON(&result), 502 autorest.ByClosing()) 503 result.Response = autorest.Response{Response: resp} 504 return 505} 506 507// listBySubscriptionNextResults retrieves the next set of results, if any. 508func (client ClustersClient) listBySubscriptionNextResults(ctx context.Context, lastResults ClusterList) (result ClusterList, err error) { 509 req, err := lastResults.clusterListPreparer(ctx) 510 if err != nil { 511 return result, autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "listBySubscriptionNextResults", nil, "Failure preparing next results request") 512 } 513 if req == nil { 514 return 515 } 516 resp, err := client.ListBySubscriptionSender(req) 517 if err != nil { 518 result.Response = autorest.Response{Response: resp} 519 return result, autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "listBySubscriptionNextResults", resp, "Failure sending next results request") 520 } 521 result, err = client.ListBySubscriptionResponder(resp) 522 if err != nil { 523 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "listBySubscriptionNextResults", resp, "Failure responding to next results request") 524 } 525 return 526} 527 528// ListBySubscriptionComplete enumerates all values, automatically crossing page boundaries as required. 529func (client ClustersClient) ListBySubscriptionComplete(ctx context.Context) (result ClusterListIterator, err error) { 530 if tracing.IsEnabled() { 531 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.ListBySubscription") 532 defer func() { 533 sc := -1 534 if result.Response().Response.Response != nil { 535 sc = result.page.Response().Response.Response.StatusCode 536 } 537 tracing.EndSpan(ctx, sc, err) 538 }() 539 } 540 result.page, err = client.ListBySubscription(ctx) 541 return 542} 543 544// Update update an HCI cluster. 545// Parameters: 546// resourceGroupName - the name of the resource group. The name is case insensitive. 547// clusterName - the name of the cluster. 548// cluster - details of the HCI cluster. 549func (client ClustersClient) Update(ctx context.Context, resourceGroupName string, clusterName string, cluster ClusterUpdate) (result Cluster, err error) { 550 if tracing.IsEnabled() { 551 ctx = tracing.StartSpan(ctx, fqdn+"/ClustersClient.Update") 552 defer func() { 553 sc := -1 554 if result.Response.Response != nil { 555 sc = result.Response.Response.StatusCode 556 } 557 tracing.EndSpan(ctx, sc, err) 558 }() 559 } 560 if err := validation.Validate([]validation.Validation{ 561 {TargetValue: client.SubscriptionID, 562 Constraints: []validation.Constraint{{Target: "client.SubscriptionID", Name: validation.MinLength, Rule: 1, Chain: nil}}}, 563 {TargetValue: resourceGroupName, 564 Constraints: []validation.Constraint{{Target: "resourceGroupName", Name: validation.MaxLength, Rule: 90, Chain: nil}, 565 {Target: "resourceGroupName", Name: validation.MinLength, Rule: 1, Chain: nil}, 566 {Target: "resourceGroupName", Name: validation.Pattern, Rule: `^[-\w\._\(\)]+$`, Chain: nil}}}}); err != nil { 567 return result, validation.NewError("azurestackhci.ClustersClient", "Update", err.Error()) 568 } 569 570 req, err := client.UpdatePreparer(ctx, resourceGroupName, clusterName, cluster) 571 if err != nil { 572 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Update", nil, "Failure preparing request") 573 return 574 } 575 576 resp, err := client.UpdateSender(req) 577 if err != nil { 578 result.Response = autorest.Response{Response: resp} 579 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Update", resp, "Failure sending request") 580 return 581 } 582 583 result, err = client.UpdateResponder(resp) 584 if err != nil { 585 err = autorest.NewErrorWithError(err, "azurestackhci.ClustersClient", "Update", resp, "Failure responding to request") 586 return 587 } 588 589 return 590} 591 592// UpdatePreparer prepares the Update request. 593func (client ClustersClient) UpdatePreparer(ctx context.Context, resourceGroupName string, clusterName string, cluster ClusterUpdate) (*http.Request, error) { 594 pathParameters := map[string]interface{}{ 595 "clusterName": autorest.Encode("path", clusterName), 596 "resourceGroupName": autorest.Encode("path", resourceGroupName), 597 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 598 } 599 600 const APIVersion = "2020-10-01" 601 queryParameters := map[string]interface{}{ 602 "api-version": APIVersion, 603 } 604 605 preparer := autorest.CreatePreparer( 606 autorest.AsContentType("application/json; charset=utf-8"), 607 autorest.AsPatch(), 608 autorest.WithBaseURL(client.BaseURI), 609 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureStackHCI/clusters/{clusterName}", pathParameters), 610 autorest.WithJSON(cluster), 611 autorest.WithQueryParameters(queryParameters)) 612 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 613} 614 615// UpdateSender sends the Update request. The method will close the 616// http.Response Body if it receives an error. 617func (client ClustersClient) UpdateSender(req *http.Request) (*http.Response, error) { 618 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 619} 620 621// UpdateResponder handles the response to the Update request. The method always 622// closes the http.Response Body. 623func (client ClustersClient) UpdateResponder(resp *http.Response) (result Cluster, err error) { 624 err = autorest.Respond( 625 resp, 626 azure.WithErrorUnlessStatusCode(http.StatusOK), 627 autorest.ByUnmarshallingJSON(&result), 628 autorest.ByClosing()) 629 result.Response = autorest.Response{Response: resp} 630 return 631} 632