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