Add azClientConfig to pass all essential information to create clients

This commit is contained in:
Pengfei Ni 2018-01-10 17:19:35 +08:00
parent 2423e7c52b
commit c3a885353b
2 changed files with 84 additions and 70 deletions

View File

@ -171,22 +171,28 @@ func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) {
config.CloudProviderRateLimitBucket)
}
azClientConfig := &azClientConfig{
subscriptionID: config.SubscriptionID,
resourceManagerEndpoint: env.ResourceManagerEndpoint,
servicePrincipalToken: servicePrincipalToken,
rateLimiter: operationPollRateLimiter,
}
az := Cloud{
Config: *config,
Environment: *env,
DisksClient: newAzDisksClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
RoutesClient: newAzRoutesClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
SubnetsClient: newAzSubnetsClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
InterfacesClient: newAzInterfacesClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
RouteTablesClient: newAzRouteTablesClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
LoadBalancerClient: newAzLoadBalancersClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
SecurityGroupsClient: newAzSecurityGroupsClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
StorageAccountClient: newAzStorageAccountClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
VirtualMachinesClient: newAzVirtualMachinesClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
PublicIPAddressesClient: newAzPublicIPAddressesClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
VirtualMachineScaleSetsClient: newAzVirtualMachineScaleSetsClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
VirtualMachineScaleSetVMsClient: newAzVirtualMachineScaleSetVMsClient(config.SubscriptionID, env.ResourceManagerEndpoint, servicePrincipalToken, operationPollRateLimiter),
DisksClient: newAzDisksClient(azClientConfig),
RoutesClient: newAzRoutesClient(azClientConfig),
SubnetsClient: newAzSubnetsClient(azClientConfig),
InterfacesClient: newAzInterfacesClient(azClientConfig),
RouteTablesClient: newAzRouteTablesClient(azClientConfig),
LoadBalancerClient: newAzLoadBalancersClient(azClientConfig),
SecurityGroupsClient: newAzSecurityGroupsClient(azClientConfig),
StorageAccountClient: newAzStorageAccountClient(azClientConfig),
VirtualMachinesClient: newAzVirtualMachinesClient(azClientConfig),
PublicIPAddressesClient: newAzPublicIPAddressesClient(azClientConfig),
VirtualMachineScaleSetsClient: newAzVirtualMachineScaleSetsClient(azClientConfig),
VirtualMachineScaleSetVMsClient: newAzVirtualMachineScaleSetVMsClient(azClientConfig),
}
// Conditionally configure resource request backoff

View File

@ -124,21 +124,29 @@ type DisksClient interface {
Get(resourceGroupName string, diskName string) (result disk.Model, err error)
}
// azClientConfig contains all essential information to create an Azure client.
type azClientConfig struct {
subscriptionID string
resourceManagerEndpoint string
servicePrincipalToken *adal.ServicePrincipalToken
rateLimiter flowcontrol.RateLimiter
}
// azVirtualMachinesClient implements VirtualMachinesClient.
type azVirtualMachinesClient struct {
client compute.VirtualMachinesClient
rateLimiter flowcontrol.RateLimiter
}
func newAzVirtualMachinesClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azVirtualMachinesClient {
virtualMachinesClient := compute.NewVirtualMachinesClient(subscriptionID)
virtualMachinesClient.BaseURI = endpoint
virtualMachinesClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzVirtualMachinesClient(config *azClientConfig) *azVirtualMachinesClient {
virtualMachinesClient := compute.NewVirtualMachinesClient(config.subscriptionID)
virtualMachinesClient.BaseURI = config.resourceManagerEndpoint
virtualMachinesClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
virtualMachinesClient.PollingDelay = 5 * time.Second
configureUserAgent(&virtualMachinesClient.Client)
return &azVirtualMachinesClient{
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
client: virtualMachinesClient,
}
}
@ -189,15 +197,15 @@ type azInterfacesClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzInterfacesClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azInterfacesClient {
interfacesClient := network.NewInterfacesClient(subscriptionID)
interfacesClient.BaseURI = endpoint
interfacesClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzInterfacesClient(config *azClientConfig) *azInterfacesClient {
interfacesClient := network.NewInterfacesClient(config.subscriptionID)
interfacesClient.BaseURI = config.resourceManagerEndpoint
interfacesClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
interfacesClient.PollingDelay = 5 * time.Second
configureUserAgent(&interfacesClient.Client)
return &azInterfacesClient{
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
client: interfacesClient,
}
}
@ -238,15 +246,15 @@ type azLoadBalancersClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzLoadBalancersClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azLoadBalancersClient {
loadBalancerClient := network.NewLoadBalancersClient(subscriptionID)
loadBalancerClient.BaseURI = endpoint
loadBalancerClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzLoadBalancersClient(config *azClientConfig) *azLoadBalancersClient {
loadBalancerClient := network.NewLoadBalancersClient(config.subscriptionID)
loadBalancerClient.BaseURI = config.resourceManagerEndpoint
loadBalancerClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
loadBalancerClient.PollingDelay = 5 * time.Second
configureUserAgent(&loadBalancerClient.Client)
return &azLoadBalancersClient{
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
client: loadBalancerClient,
}
}
@ -307,15 +315,15 @@ type azPublicIPAddressesClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzPublicIPAddressesClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azPublicIPAddressesClient {
publicIPAddressClient := network.NewPublicIPAddressesClient(subscriptionID)
publicIPAddressClient.BaseURI = endpoint
publicIPAddressClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzPublicIPAddressesClient(config *azClientConfig) *azPublicIPAddressesClient {
publicIPAddressClient := network.NewPublicIPAddressesClient(config.subscriptionID)
publicIPAddressClient.BaseURI = config.resourceManagerEndpoint
publicIPAddressClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
publicIPAddressClient.PollingDelay = 5 * time.Second
configureUserAgent(&publicIPAddressClient.Client)
return &azPublicIPAddressesClient{
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
client: publicIPAddressClient,
}
}
@ -376,16 +384,16 @@ type azSubnetsClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzSubnetsClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azSubnetsClient {
subnetsClient := network.NewSubnetsClient(subscriptionID)
subnetsClient.BaseURI = endpoint
subnetsClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzSubnetsClient(config *azClientConfig) *azSubnetsClient {
subnetsClient := network.NewSubnetsClient(config.subscriptionID)
subnetsClient.BaseURI = config.resourceManagerEndpoint
subnetsClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
subnetsClient.PollingDelay = 5 * time.Second
configureUserAgent(&subnetsClient.Client)
return &azSubnetsClient{
client: subnetsClient,
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
}
}
@ -435,15 +443,15 @@ type azSecurityGroupsClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzSecurityGroupsClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azSecurityGroupsClient {
securityGroupsClient := network.NewSecurityGroupsClient(subscriptionID)
securityGroupsClient.BaseURI = endpoint
securityGroupsClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzSecurityGroupsClient(config *azClientConfig) *azSecurityGroupsClient {
securityGroupsClient := network.NewSecurityGroupsClient(config.subscriptionID)
securityGroupsClient.BaseURI = config.resourceManagerEndpoint
securityGroupsClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
securityGroupsClient.PollingDelay = 5 * time.Second
configureUserAgent(&securityGroupsClient.Client)
return &azSecurityGroupsClient{
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
client: securityGroupsClient,
}
}
@ -494,16 +502,16 @@ type azVirtualMachineScaleSetsClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzVirtualMachineScaleSetsClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azVirtualMachineScaleSetsClient {
virtualMachineScaleSetsClient := compute.NewVirtualMachineScaleSetsClient(subscriptionID)
virtualMachineScaleSetsClient.BaseURI = endpoint
virtualMachineScaleSetsClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzVirtualMachineScaleSetsClient(config *azClientConfig) *azVirtualMachineScaleSetsClient {
virtualMachineScaleSetsClient := compute.NewVirtualMachineScaleSetsClient(config.subscriptionID)
virtualMachineScaleSetsClient.BaseURI = config.resourceManagerEndpoint
virtualMachineScaleSetsClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
virtualMachineScaleSetsClient.PollingDelay = 5 * time.Second
configureUserAgent(&virtualMachineScaleSetsClient.Client)
return &azVirtualMachineScaleSetsClient{
client: virtualMachineScaleSetsClient,
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
}
}
@ -563,16 +571,16 @@ type azVirtualMachineScaleSetVMsClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzVirtualMachineScaleSetVMsClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azVirtualMachineScaleSetVMsClient {
virtualMachineScaleSetVMsClient := compute.NewVirtualMachineScaleSetVMsClient(subscriptionID)
virtualMachineScaleSetVMsClient.BaseURI = endpoint
virtualMachineScaleSetVMsClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzVirtualMachineScaleSetVMsClient(config *azClientConfig) *azVirtualMachineScaleSetVMsClient {
virtualMachineScaleSetVMsClient := compute.NewVirtualMachineScaleSetVMsClient(config.subscriptionID)
virtualMachineScaleSetVMsClient.BaseURI = config.resourceManagerEndpoint
virtualMachineScaleSetVMsClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
virtualMachineScaleSetVMsClient.PollingDelay = 5 * time.Second
configureUserAgent(&virtualMachineScaleSetVMsClient.Client)
return &azVirtualMachineScaleSetVMsClient{
client: virtualMachineScaleSetVMsClient,
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
}
}
@ -622,16 +630,16 @@ type azRoutesClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzRoutesClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azRoutesClient {
routesClient := network.NewRoutesClient(subscriptionID)
routesClient.BaseURI = endpoint
routesClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzRoutesClient(config *azClientConfig) *azRoutesClient {
routesClient := network.NewRoutesClient(config.subscriptionID)
routesClient.BaseURI = config.resourceManagerEndpoint
routesClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
routesClient.PollingDelay = 5 * time.Second
configureUserAgent(&routesClient.Client)
return &azRoutesClient{
client: routesClient,
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
}
}
@ -661,16 +669,16 @@ type azRouteTablesClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzRouteTablesClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azRouteTablesClient {
routeTablesClient := network.NewRouteTablesClient(subscriptionID)
routeTablesClient.BaseURI = endpoint
routeTablesClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzRouteTablesClient(config *azClientConfig) *azRouteTablesClient {
routeTablesClient := network.NewRouteTablesClient(config.subscriptionID)
routeTablesClient.BaseURI = config.resourceManagerEndpoint
routeTablesClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
routeTablesClient.PollingDelay = 5 * time.Second
configureUserAgent(&routeTablesClient.Client)
return &azRouteTablesClient{
client: routeTablesClient,
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
}
}
@ -700,15 +708,15 @@ type azStorageAccountClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzStorageAccountClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azStorageAccountClient {
storageAccountClient := storage.NewAccountsClientWithBaseURI(endpoint, subscriptionID)
storageAccountClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzStorageAccountClient(config *azClientConfig) *azStorageAccountClient {
storageAccountClient := storage.NewAccountsClientWithBaseURI(config.resourceManagerEndpoint, config.subscriptionID)
storageAccountClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
storageAccountClient.PollingDelay = 5 * time.Second
configureUserAgent(&storageAccountClient.Client)
return &azStorageAccountClient{
client: storageAccountClient,
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
}
}
@ -768,15 +776,15 @@ type azDisksClient struct {
rateLimiter flowcontrol.RateLimiter
}
func newAzDisksClient(subscriptionID string, endpoint string, servicePrincipalToken *adal.ServicePrincipalToken, rateLimiter flowcontrol.RateLimiter) *azDisksClient {
disksClient := disk.NewDisksClientWithBaseURI(endpoint, subscriptionID)
disksClient.Authorizer = autorest.NewBearerAuthorizer(servicePrincipalToken)
func newAzDisksClient(config *azClientConfig) *azDisksClient {
disksClient := disk.NewDisksClientWithBaseURI(config.resourceManagerEndpoint, config.subscriptionID)
disksClient.Authorizer = autorest.NewBearerAuthorizer(config.servicePrincipalToken)
disksClient.PollingDelay = 5 * time.Second
configureUserAgent(&disksClient.Client)
return &azDisksClient{
client: disksClient,
rateLimiter: rateLimiter,
rateLimiter: config.rateLimiter,
}
}