github.com/swisspost/terratest@v0.0.0-20230214120104-7ec6de2e1ae0/modules/azure/client_factory.go (about) 1 /* 2 3 This file implements an Azure client factory that automatically handles setting up Base URI 4 values for sovereign cloud support. Note the list of clients below is not initially exhaustive; 5 rather, additional clients will be added as-needed. 6 7 */ 8 9 package azure 10 11 // snippet-tag-start::client_factory_example.imports 12 13 import ( 14 "os" 15 "reflect" 16 17 "github.com/Azure/azure-sdk-for-go/profiles/latest/frontdoor/mgmt/frontdoor" 18 "github.com/Azure/azure-sdk-for-go/profiles/latest/mysql/mgmt/mysql" 19 "github.com/Azure/azure-sdk-for-go/profiles/latest/resources/mgmt/resources" 20 "github.com/Azure/azure-sdk-for-go/profiles/latest/sql/mgmt/sql" 21 "github.com/Azure/azure-sdk-for-go/profiles/preview/cosmos-db/mgmt/documentdb" 22 "github.com/Azure/azure-sdk-for-go/profiles/preview/preview/monitor/mgmt/insights" 23 "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute" 24 "github.com/Azure/azure-sdk-for-go/services/containerinstance/mgmt/2018-10-01/containerinstance" 25 "github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry" 26 "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2019-11-01/containerservice" 27 kvmng "github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault" 28 "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network" 29 "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-06-01/subscriptions" 30 "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage" 31 "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2019-08-01/web" 32 autorestAzure "github.com/Azure/go-autorest/autorest/azure" 33 ) 34 35 // snippet-tag-end::client_factory_example.imports 36 37 const ( 38 // AzureEnvironmentEnvName is the name of the Azure environment to use. Set to one of the following: 39 // 40 // "AzureChinaCloud": ChinaCloud 41 // "AzureGermanCloud": GermanCloud 42 // "AzurePublicCloud": PublicCloud 43 // "AzureUSGovernmentCloud": USGovernmentCloud 44 // "AzureStackCloud": Azure stack 45 AzureEnvironmentEnvName = "AZURE_ENVIRONMENT" 46 47 // ResourceManagerEndpointName is the name of the ResourceManagerEndpoint field in the Environment struct. 48 ResourceManagerEndpointName = "ResourceManagerEndpoint" 49 ) 50 51 // ClientType describes the type of client a module can create. 52 type ClientType int 53 54 // CreateSubscriptionsClientE returns a virtual machines client instance configured with the correct BaseURI depending on 55 // the Azure environment that is currently setup (or "Public", if none is setup). 56 func CreateSubscriptionsClientE() (subscriptions.Client, error) { 57 // Lookup environment URI 58 baseURI, err := getBaseURI() 59 if err != nil { 60 return subscriptions.Client{}, err 61 } 62 63 // Create correct client based on type passed 64 return subscriptions.NewClientWithBaseURI(baseURI), nil 65 } 66 67 // snippet-tag-start::client_factory_example.CreateClient 68 69 // CreateVirtualMachinesClientE returns a virtual machines client instance configured with the correct BaseURI depending on 70 // the Azure environment that is currently setup (or "Public", if none is setup). 71 func CreateVirtualMachinesClientE(subscriptionID string) (*compute.VirtualMachinesClient, error) { 72 // Validate Azure subscription ID 73 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 74 if err != nil { 75 return nil, err 76 } 77 78 // Lookup environment URI 79 baseURI, err := getBaseURI() 80 if err != nil { 81 return nil, err 82 } 83 84 // Create correct client based on type passed 85 vmClient := compute.NewVirtualMachinesClientWithBaseURI(baseURI, subscriptionID) 86 87 return &vmClient, nil 88 } 89 90 // snippet-tag-end::client_factory_example.CreateClient 91 92 // CreateManagedClustersClientE returns a virtual machines client instance configured with the correct BaseURI depending on 93 // the Azure environment that is currently setup (or "Public", if none is setup). 94 func CreateManagedClustersClientE(subscriptionID string) (containerservice.ManagedClustersClient, error) { 95 // Validate Azure subscription ID 96 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 97 if err != nil { 98 return containerservice.ManagedClustersClient{}, err 99 } 100 101 // Lookup environment URI 102 baseURI, err := getBaseURI() 103 if err != nil { 104 return containerservice.ManagedClustersClient{}, err 105 } 106 107 // Create correct client based on type passed 108 return containerservice.NewManagedClustersClientWithBaseURI(baseURI, subscriptionID), nil 109 } 110 111 // CreateCosmosDBAccountClientE is a helper function that will setup a CosmosDB account client with the correct BaseURI depending on 112 // the Azure environment that is currently setup (or "Public", if none is setup). 113 func CreateCosmosDBAccountClientE(subscriptionID string) (*documentdb.DatabaseAccountsClient, error) { 114 // Validate Azure subscription ID 115 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 116 if err != nil { 117 return nil, err 118 } 119 120 // Lookup environment URI 121 baseURI, err := getBaseURI() 122 if err != nil { 123 return nil, err 124 } 125 126 // Create a CosmosDB client 127 cosmosClient := documentdb.NewDatabaseAccountsClientWithBaseURI(baseURI, subscriptionID) 128 129 return &cosmosClient, nil 130 } 131 132 // CreateCosmosDBSQLClientE is a helper function that will setup a CosmosDB SQL client with the correct BaseURI depending on 133 // the Azure environment that is currently setup (or "Public", if none is setup). 134 func CreateCosmosDBSQLClientE(subscriptionID string) (*documentdb.SQLResourcesClient, error) { 135 // Validate Azure subscription ID 136 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 137 if err != nil { 138 return nil, err 139 } 140 141 // Lookup environment URI 142 baseURI, err := getBaseURI() 143 if err != nil { 144 return nil, err 145 } 146 147 // Create a CosmosDB client 148 cosmosClient := documentdb.NewSQLResourcesClientWithBaseURI(baseURI, subscriptionID) 149 150 return &cosmosClient, nil 151 } 152 153 // CreateKeyVaultManagementClientE is a helper function that will setup a key vault management client with the correct BaseURI depending on 154 // the Azure environment that is currently setup (or "Public", if none is setup). 155 func CreateKeyVaultManagementClientE(subscriptionID string) (*kvmng.VaultsClient, error) { 156 // Validate Azure subscription ID 157 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 158 if err != nil { 159 return nil, err 160 } 161 162 // Lookup environment URI 163 baseURI, err := getBaseURI() 164 if err != nil { 165 return nil, err 166 } 167 168 //create keyvault management clinet 169 vaultClient := kvmng.NewVaultsClientWithBaseURI(baseURI, subscriptionID) 170 171 return &vaultClient, nil 172 } 173 174 // CreateStorageAccountClientE creates a storage account client. 175 func CreateStorageAccountClientE(subscriptionID string) (*storage.AccountsClient, error) { 176 // Validate Azure subscription ID 177 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 178 if err != nil { 179 return nil, err 180 } 181 182 // Lookup environment URI 183 baseURI, err := getBaseURI() 184 if err != nil { 185 return nil, err 186 } 187 188 storageAccountClient := storage.NewAccountsClientWithBaseURI(baseURI, subscriptionID) 189 authorizer, err := NewAuthorizer() 190 if err != nil { 191 return nil, err 192 } 193 storageAccountClient.Authorizer = *authorizer 194 return &storageAccountClient, nil 195 } 196 197 // CreateStorageBlobContainerClientE creates a storage container client. 198 func CreateStorageBlobContainerClientE(subscriptionID string) (*storage.BlobContainersClient, error) { 199 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 200 if err != nil { 201 return nil, err 202 } 203 204 // Lookup environment URI 205 baseURI, err := getBaseURI() 206 if err != nil { 207 return nil, err 208 } 209 210 blobContainerClient := storage.NewBlobContainersClientWithBaseURI(baseURI, subscriptionID) 211 authorizer, err := NewAuthorizer() 212 213 if err != nil { 214 return nil, err 215 } 216 blobContainerClient.Authorizer = *authorizer 217 return &blobContainerClient, nil 218 } 219 220 // CreateStorageFileSharesClientE creates a storage file share client. 221 func CreateStorageFileSharesClientE(subscriptionID string) (*storage.FileSharesClient, error) { 222 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 223 if err != nil { 224 return nil, err 225 } 226 227 // Lookup environment URI 228 baseURI, err := getBaseURI() 229 if err != nil { 230 return nil, err 231 } 232 233 fileShareClient := storage.NewFileSharesClientWithBaseURI(baseURI, subscriptionID) 234 authorizer, err := NewAuthorizer() 235 236 if err != nil { 237 return nil, err 238 } 239 fileShareClient.Authorizer = *authorizer 240 return &fileShareClient, nil 241 } 242 243 // CreateAvailabilitySetClientE creates a new Availability Set client in the specified Azure Subscription 244 func CreateAvailabilitySetClientE(subscriptionID string) (*compute.AvailabilitySetsClient, error) { 245 // Validate Azure subscription ID 246 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 247 if err != nil { 248 return nil, err 249 } 250 251 // Lookup environment URI 252 baseURI, err := getBaseURI() 253 if err != nil { 254 return nil, err 255 } 256 257 // Get the Availability Set client 258 client := compute.NewAvailabilitySetsClientWithBaseURI(baseURI, subscriptionID) 259 260 // Create an authorizer 261 authorizer, err := NewAuthorizer() 262 if err != nil { 263 return nil, err 264 } 265 client.Authorizer = *authorizer 266 267 return &client, nil 268 } 269 270 // CreateResourceGroupClientE gets a resource group client in a subscription 271 func CreateResourceGroupClientE(subscriptionID string) (*resources.GroupsClient, error) { 272 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 273 if err != nil { 274 return nil, err 275 } 276 277 // Lookup environment URI 278 baseURI, err := getBaseURI() 279 if err != nil { 280 return nil, err 281 } 282 283 resourceGroupClient := resources.NewGroupsClientWithBaseURI(baseURI, subscriptionID) 284 285 authorizer, err := NewAuthorizer() 286 if err != nil { 287 return nil, err 288 } 289 resourceGroupClient.Authorizer = *authorizer 290 return &resourceGroupClient, nil 291 } 292 293 // CreateSQLServerClient is a helper function that will create and setup a sql server client 294 func CreateSQLServerClient(subscriptionID string) (*sql.ServersClient, error) { 295 // Validate Azure subscription ID 296 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 297 if err != nil { 298 return nil, err 299 } 300 301 // Lookup environment URI 302 baseURI, err := getBaseURI() 303 if err != nil { 304 return nil, err 305 } 306 307 // Create a sql server client 308 sqlClient := sql.NewServersClientWithBaseURI(baseURI, subscriptionID) 309 310 // Create an authorizer 311 authorizer, err := NewAuthorizer() 312 if err != nil { 313 return nil, err 314 } 315 316 // Attach authorizer to the client 317 sqlClient.Authorizer = *authorizer 318 319 return &sqlClient, nil 320 } 321 322 // CreateDatabaseClient is a helper function that will create and setup a SQL DB client 323 func CreateDatabaseClient(subscriptionID string) (*sql.DatabasesClient, error) { 324 // Validate Azure subscription ID 325 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 326 if err != nil { 327 return nil, err 328 } 329 330 // Lookup environment URI 331 baseURI, err := getBaseURI() 332 if err != nil { 333 return nil, err 334 } 335 336 // Create a sql DB client 337 sqlDBClient := sql.NewDatabasesClientWithBaseURI(baseURI, subscriptionID) 338 339 // Create an authorizer 340 authorizer, err := NewAuthorizer() 341 if err != nil { 342 return nil, err 343 } 344 345 // Attach authorizer to the client 346 sqlDBClient.Authorizer = *authorizer 347 348 return &sqlDBClient, nil 349 } 350 351 // CreateMySQLServerClientE is a helper function that will setup a mysql server client. 352 func CreateMySQLServerClientE(subscriptionID string) (*mysql.ServersClient, error) { 353 // Validate Azure subscription ID 354 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 355 if err != nil { 356 return nil, err 357 } 358 359 // Lookup environment URI 360 baseURI, err := getBaseURI() 361 if err != nil { 362 return nil, err 363 } 364 365 // Create a mysql server client 366 mysqlClient := mysql.NewServersClientWithBaseURI(baseURI, subscriptionID) 367 368 // Create an authorizer 369 authorizer, err := NewAuthorizer() 370 if err != nil { 371 return nil, err 372 } 373 374 // Attach authorizer to the client 375 mysqlClient.Authorizer = *authorizer 376 377 return &mysqlClient, nil 378 } 379 380 // CreateDisksClientE returns a new Disks client in the specified Azure Subscription 381 func CreateDisksClientE(subscriptionID string) (*compute.DisksClient, error) { 382 // Validate Azure subscription ID 383 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 384 if err != nil { 385 return nil, err 386 } 387 388 // Lookup environment URI 389 baseURI, err := getBaseURI() 390 if err != nil { 391 return nil, err 392 } 393 394 // Get the Disks client 395 client := compute.NewDisksClientWithBaseURI(baseURI, subscriptionID) 396 397 // Create an authorizer 398 authorizer, err := NewAuthorizer() 399 if err != nil { 400 return nil, err 401 } 402 403 client.Authorizer = *authorizer 404 405 return &client, nil 406 } 407 408 func CreateActionGroupClient(subscriptionID string) (*insights.ActionGroupsClient, error) { 409 subID, err := getTargetAzureSubscription(subscriptionID) 410 if err != nil { 411 return nil, err 412 } 413 414 // Lookup environment URI 415 baseURI, err := getBaseURI() 416 if err != nil { 417 return nil, err 418 } 419 420 metricAlertsClient := insights.NewActionGroupsClientWithBaseURI(baseURI, subID) 421 422 authorizer, err := NewAuthorizer() 423 if err != nil { 424 return nil, err 425 } 426 427 metricAlertsClient.Authorizer = *authorizer 428 429 return &metricAlertsClient, nil 430 } 431 432 // CreateVMInsightsClientE gets a VM Insights client 433 func CreateVMInsightsClientE(subscriptionID string) (*insights.VMInsightsClient, error) { 434 // Validate Azure subscription ID 435 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 436 if err != nil { 437 return nil, err 438 } 439 440 // Lookup environment URI 441 baseURI, err := getBaseURI() 442 if err != nil { 443 return nil, err 444 } 445 446 client := insights.NewVMInsightsClientWithBaseURI(baseURI, subscriptionID) 447 448 authorizer, err := NewAuthorizer() 449 if err != nil { 450 return nil, err 451 } 452 453 client.Authorizer = *authorizer 454 455 return &client, nil 456 } 457 458 // CreateActivityLogAlertsClientE gets an Action Groups client in the specified Azure Subscription 459 func CreateActivityLogAlertsClientE(subscriptionID string) (*insights.ActivityLogAlertsClient, error) { 460 // Validate Azure subscription ID 461 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 462 if err != nil { 463 return nil, err 464 } 465 466 // Lookup environment URI 467 baseURI, err := getBaseURI() 468 if err != nil { 469 return nil, err 470 } 471 472 // Get the Action Groups client 473 client := insights.NewActivityLogAlertsClientWithBaseURI(baseURI, subscriptionID) 474 475 // Create an authorizer 476 authorizer, err := NewAuthorizer() 477 if err != nil { 478 return nil, err 479 } 480 481 client.Authorizer = *authorizer 482 483 return &client, nil 484 } 485 486 // CreateDiagnosticsSettingsClientE returns a diagnostics settings client 487 func CreateDiagnosticsSettingsClientE(subscriptionID string) (*insights.DiagnosticSettingsClient, error) { 488 // Validate Azure subscription ID 489 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 490 if err != nil { 491 return nil, err 492 } 493 494 // Lookup environment URI 495 baseURI, err := getBaseURI() 496 if err != nil { 497 return nil, err 498 } 499 500 client := insights.NewDiagnosticSettingsClientWithBaseURI(baseURI, subscriptionID) 501 502 authorizer, err := NewAuthorizer() 503 if err != nil { 504 return nil, err 505 } 506 507 client.Authorizer = *authorizer 508 509 return &client, nil 510 } 511 512 // CreateNsgDefaultRulesClientE returns an NSG default (platform) rules client instance configured with the 513 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 514 func CreateNsgDefaultRulesClientE(subscriptionID string) (*network.DefaultSecurityRulesClient, error) { 515 // Validate Azure subscription ID 516 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 517 if err != nil { 518 return nil, err 519 } 520 521 // Lookup environment URI 522 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 523 if err != nil { 524 return nil, err 525 } 526 527 // Create new client 528 nsgClient := network.NewDefaultSecurityRulesClientWithBaseURI(baseURI, subscriptionID) 529 return &nsgClient, nil 530 } 531 532 // CreateNsgCustomRulesClientE returns an NSG custom (user) rules client instance configured with the 533 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 534 func CreateNsgCustomRulesClientE(subscriptionID string) (*network.SecurityRulesClient, error) { 535 // Validate Azure subscription ID 536 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 537 if err != nil { 538 return nil, err 539 } 540 541 // Lookup environment URI 542 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 543 if err != nil { 544 return nil, err 545 } 546 547 // Create new client 548 nsgClient := network.NewSecurityRulesClientWithBaseURI(baseURI, subscriptionID) 549 return &nsgClient, nil 550 } 551 552 // CreateNewNetworkInterfacesClientE returns an NIC client instance configured with the 553 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 554 func CreateNewNetworkInterfacesClientE(subscriptionID string) (*network.InterfacesClient, error) { 555 // Validate Azure subscription ID 556 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 557 if err != nil { 558 return nil, err 559 } 560 561 // Lookup environment URI 562 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 563 if err != nil { 564 return nil, err 565 } 566 567 // create client 568 nicClient := network.NewInterfacesClientWithBaseURI(baseURI, subscriptionID) 569 return &nicClient, nil 570 } 571 572 // CreateNewNetworkInterfaceIPConfigurationClientE returns an NIC IP configuration client instance configured with the 573 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 574 func CreateNewNetworkInterfaceIPConfigurationClientE(subscriptionID string) (*network.InterfaceIPConfigurationsClient, error) { 575 // Validate Azure subscription ID 576 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 577 if err != nil { 578 return nil, err 579 } 580 581 // Lookup environment URI 582 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 583 if err != nil { 584 return nil, err 585 } 586 587 // create client 588 ipConfigClient := network.NewInterfaceIPConfigurationsClientWithBaseURI(baseURI, subscriptionID) 589 return &ipConfigClient, nil 590 } 591 592 // CreatePublicIPAddressesClientE returns a public IP address client instance configured with the correct BaseURI depending on 593 // the Azure environment that is currently setup (or "Public", if none is setup). 594 func CreatePublicIPAddressesClientE(subscriptionID string) (*network.PublicIPAddressesClient, error) { 595 // Validate Azure subscription ID 596 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 597 if err != nil { 598 return nil, err 599 } 600 601 // Lookup environment URI 602 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 603 if err != nil { 604 return nil, err 605 } 606 607 // Create client 608 client := network.NewPublicIPAddressesClientWithBaseURI(baseURI, subscriptionID) 609 return &client, nil 610 } 611 612 // CreateLoadBalancerClientE returns a load balancer client instance configured with the correct BaseURI depending on 613 // the Azure environment that is currently setup (or "Public", if none is setup). 614 func CreateLoadBalancerClientE(subscriptionID string) (*network.LoadBalancersClient, error) { 615 // Validate Azure subscription ID 616 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 617 if err != nil { 618 return nil, err 619 } 620 621 // Lookup environment URI 622 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 623 if err != nil { 624 return nil, err 625 } 626 627 //create LB client 628 client := network.NewLoadBalancersClientWithBaseURI(baseURI, subscriptionID) 629 return &client, nil 630 } 631 632 // CreateNewSubnetClientE returns a Subnet client instance configured with the 633 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 634 func CreateNewSubnetClientE(subscriptionID string) (*network.SubnetsClient, error) { 635 // Validate Azure subscription ID 636 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 637 if err != nil { 638 return nil, err 639 } 640 641 // Lookup environment URI 642 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 643 if err != nil { 644 return nil, err 645 } 646 647 // create client 648 subnetClient := network.NewSubnetsClientWithBaseURI(baseURI, subscriptionID) 649 return &subnetClient, nil 650 } 651 652 // CreateNewVirtualNetworkClientE returns a Virtual Network client instance configured with the 653 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 654 func CreateNewVirtualNetworkClientE(subscriptionID string) (*network.VirtualNetworksClient, error) { 655 // Validate Azure subscription ID 656 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 657 if err != nil { 658 return nil, err 659 } 660 661 // Lookup environment URI 662 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 663 if err != nil { 664 return nil, err 665 } 666 667 // create client 668 vnetClient := network.NewVirtualNetworksClientWithBaseURI(baseURI, subscriptionID) 669 return &vnetClient, nil 670 } 671 672 // CreateAppServiceClientE returns an App service client instance configured with the 673 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 674 func CreateAppServiceClientE(subscriptionID string) (*web.AppsClient, error) { 675 676 // Validate Azure subscription ID 677 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 678 if err != nil { 679 return nil, err 680 } 681 682 // Lookup environment URI 683 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 684 if err != nil { 685 return nil, err 686 } 687 688 // create client 689 appsClient := web.NewAppsClientWithBaseURI(baseURI, subscriptionID) 690 return &appsClient, nil 691 } 692 693 // CreateContainerRegistryClientE returns an ACR client instance configured with the 694 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 695 func CreateContainerRegistryClientE(subscriptionID string) (*containerregistry.RegistriesClient, error) { 696 697 // Validate Azure subscription ID 698 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 699 if err != nil { 700 return nil, err 701 } 702 703 // Lookup environment URI 704 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 705 if err != nil { 706 return nil, err 707 } 708 709 // create client 710 registryClient := containerregistry.NewRegistriesClientWithBaseURI(baseURI, subscriptionID) 711 return ®istryClient, nil 712 } 713 714 // CreateContainerInstanceClientE returns an ACI client instance configured with the 715 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 716 func CreateContainerInstanceClientE(subscriptionID string) (*containerinstance.ContainerGroupsClient, error) { 717 // Validate Azure subscription ID 718 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 719 if err != nil { 720 return nil, err 721 } 722 723 // Lookup environment URI 724 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 725 if err != nil { 726 return nil, err 727 } 728 729 // create client 730 instanceClient := containerinstance.NewContainerGroupsClientWithBaseURI(baseURI, subscriptionID) 731 return &instanceClient, nil 732 } 733 734 // CreateFrontDoorClientE returns an AFD client instance configured with the 735 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 736 func CreateFrontDoorClientE(subscriptionID string) (*frontdoor.FrontDoorsClient, error) { 737 // Validate Azure subscription ID 738 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 739 if err != nil { 740 return nil, err 741 } 742 743 // Lookup environment URI 744 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 745 if err != nil { 746 return nil, err 747 } 748 749 // create client 750 client := frontdoor.NewFrontDoorsClientWithBaseURI(baseURI, subscriptionID) 751 return &client, nil 752 } 753 754 // CreateFrontDoorFrontendEndpointClientE returns an AFD Frontend Endpoints client instance configured with the 755 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup). 756 func CreateFrontDoorFrontendEndpointClientE(subscriptionID string) (*frontdoor.FrontendEndpointsClient, error) { 757 // Validate Azure subscription ID 758 subscriptionID, err := getTargetAzureSubscription(subscriptionID) 759 if err != nil { 760 return nil, err 761 } 762 763 // Lookup environment URI 764 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 765 if err != nil { 766 return nil, err 767 } 768 769 // create client 770 client := frontdoor.NewFrontendEndpointsClientWithBaseURI(baseURI, subscriptionID) 771 return &client, nil 772 } 773 774 // GetKeyVaultURISuffixE returns the proper KeyVault URI suffix for the configured Azure environment. 775 // This function would fail the test if there is an error. 776 func GetKeyVaultURISuffixE() (string, error) { 777 envName := getDefaultEnvironmentName() 778 env, err := autorestAzure.EnvironmentFromName(envName) 779 if err != nil { 780 return "", err 781 } 782 return env.KeyVaultDNSSuffix, nil 783 } 784 785 // getDefaultEnvironmentName returns either a configured Azure environment name, or the public default 786 func getDefaultEnvironmentName() string { 787 envName, exists := os.LookupEnv(AzureEnvironmentEnvName) 788 789 if exists && len(envName) > 0 { 790 return envName 791 } 792 793 return autorestAzure.PublicCloud.Name 794 } 795 796 // getEnvironmentEndpointE returns the endpoint identified by the endpoint name parameter. 797 func getEnvironmentEndpointE(endpointName string) (string, error) { 798 envName := getDefaultEnvironmentName() 799 env, err := autorestAzure.EnvironmentFromName(envName) 800 if err != nil { 801 return "", err 802 } 803 return getFieldValue(&env, endpointName), nil 804 } 805 806 // getFieldValue gets the field identified by the field parameter from the passed Environment struct 807 func getFieldValue(env *autorestAzure.Environment, field string) string { 808 structValue := reflect.ValueOf(env) 809 fieldVal := reflect.Indirect(structValue).FieldByName(field) 810 return fieldVal.String() 811 } 812 813 // getBaseURI gets the base URI endpoint. 814 func getBaseURI() (string, error) { 815 // Lookup environment URI 816 baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName) 817 if err != nil { 818 return "", err 819 } 820 return baseURI, nil 821 }