mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Use new storage clients in Azure cloud provider
This commit is contained in:
parent
c6429e3726
commit
b0a6e597fe
@ -54,10 +54,8 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/pkg/version:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/record:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/record:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
|
||||||
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
|
||||||
@ -66,17 +64,20 @@ go_library(
|
|||||||
"//staging/src/k8s.io/component-base/featuregate:go_default_library",
|
"//staging/src/k8s.io/component-base/featuregate:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/auth:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/auth:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/interfaceclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/interfaceclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/publicipclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/publicipclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routeclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routeclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routetableclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routetableclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/snapshotclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/subnetclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/subnetclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmclient:go_default_library",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/metrics:go_default_library",
|
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:go_default_library",
|
||||||
|
@ -27,7 +27,6 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute"
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
"github.com/Azure/go-autorest/autorest"
|
||||||
"github.com/Azure/go-autorest/autorest/azure"
|
"github.com/Azure/go-autorest/autorest/azure"
|
||||||
|
|
||||||
@ -39,21 +38,24 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||||
"k8s.io/client-go/pkg/version"
|
|
||||||
"k8s.io/client-go/tools/cache"
|
"k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/legacy-cloud-providers/azure/auth"
|
"k8s.io/legacy-cloud-providers/azure/auth"
|
||||||
azclients "k8s.io/legacy-cloud-providers/azure/clients"
|
azclients "k8s.io/legacy-cloud-providers/azure/clients"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/diskclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/interfaceclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/interfaceclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/publicipclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/publicipclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/routeclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/routeclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/routetableclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/routetableclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/snapshotclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/subnetclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/subnetclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/vmclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/vmclient"
|
||||||
|
"k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/vmssclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/vmssclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient"
|
"k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient"
|
||||||
"k8s.io/legacy-cloud-providers/azure/retry"
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
@ -235,7 +237,7 @@ type Cloud struct {
|
|||||||
VirtualMachinesClient VirtualMachinesClient
|
VirtualMachinesClient VirtualMachinesClient
|
||||||
StorageAccountClient StorageAccountClient
|
StorageAccountClient StorageAccountClient
|
||||||
DisksClient DisksClient
|
DisksClient DisksClient
|
||||||
SnapshotsClient *compute.SnapshotsClient
|
SnapshotsClient SnapshotsClient
|
||||||
FileClient FileClient
|
FileClient FileClient
|
||||||
VirtualMachineScaleSetsClient VirtualMachineScaleSetsClient
|
VirtualMachineScaleSetsClient VirtualMachineScaleSetsClient
|
||||||
VirtualMachineScaleSetVMsClient VirtualMachineScaleSetVMsClient
|
VirtualMachineScaleSetVMsClient VirtualMachineScaleSetVMsClient
|
||||||
@ -493,18 +495,16 @@ func (az *Cloud) InitializeCloudFromConfig(config *Config, fromSecret bool) erro
|
|||||||
az.VirtualMachinesClient = vmclient.New(azClientConfig.WithRateLimiter(config.VirtualMachineRateLimit))
|
az.VirtualMachinesClient = vmclient.New(azClientConfig.WithRateLimiter(config.VirtualMachineRateLimit))
|
||||||
az.PublicIPAddressesClient = publicipclient.New(azClientConfig.WithRateLimiter(config.PublicIPAddressRateLimit))
|
az.PublicIPAddressesClient = publicipclient.New(azClientConfig.WithRateLimiter(config.PublicIPAddressRateLimit))
|
||||||
az.VirtualMachineScaleSetsClient = vmssclient.New(azClientConfig.WithRateLimiter(config.VirtualMachineScaleSetRateLimit))
|
az.VirtualMachineScaleSetsClient = vmssclient.New(azClientConfig.WithRateLimiter(config.VirtualMachineScaleSetRateLimit))
|
||||||
|
az.DisksClient = diskclient.New(azClientConfig.WithRateLimiter(config.DiskRateLimit))
|
||||||
|
az.VirtualMachineSizesClient = vmsizeclient.New(azClientConfig.WithRateLimiter(config.VirtualMachineSizeRateLimit))
|
||||||
|
az.SnapshotsClient = snapshotclient.New(azClientConfig.WithRateLimiter(config.SnapshotRateLimit))
|
||||||
|
az.StorageAccountClient = storageaccountclient.New(azClientConfig.WithRateLimiter(config.StorageAccountRateLimit))
|
||||||
|
|
||||||
// Error "not an active Virtual Machine Scale Set VM" is not retriable for VMSS VM.
|
// Error "not an active Virtual Machine Scale Set VM" is not retriable for VMSS VM.
|
||||||
vmssVMClientConfig := azClientConfig.WithRateLimiter(config.VirtualMachineScaleSetRateLimit)
|
vmssVMClientConfig := azClientConfig.WithRateLimiter(config.VirtualMachineScaleSetRateLimit)
|
||||||
vmssVMClientConfig.Backoff = vmssVMClientConfig.Backoff.WithNonRetriableErrors([]string{vmssVMNotActiveErrorMessage})
|
vmssVMClientConfig.Backoff = vmssVMClientConfig.Backoff.WithNonRetriableErrors([]string{vmssVMNotActiveErrorMessage})
|
||||||
az.VirtualMachineScaleSetVMsClient = vmssvmclient.New(vmssVMClientConfig)
|
az.VirtualMachineScaleSetVMsClient = vmssvmclient.New(vmssVMClientConfig)
|
||||||
|
|
||||||
// TODO(feiskyer): refactor the following clients to use armclient
|
|
||||||
az.DisksClient = newAzDisksClient(azClientConfig.WithRateLimiter(config.DiskRateLimit))
|
|
||||||
az.SnapshotsClient = newSnapshotsClient(azClientConfig.WithRateLimiter(config.SnapshotRateLimit))
|
|
||||||
az.StorageAccountClient = newAzStorageAccountClient(azClientConfig.WithRateLimiter(config.StorageAccountRateLimit))
|
|
||||||
az.VirtualMachineSizesClient = newAzVirtualMachineSizesClient(azClientConfig.WithRateLimiter(config.VirtualMachineSizeRateLimit))
|
|
||||||
|
|
||||||
// TODO(feiskyer): refactor azureFileClient to Interface.
|
// TODO(feiskyer): refactor azureFileClient to Interface.
|
||||||
az.FileClient = &azureFileClient{env: *env}
|
az.FileClient = &azureFileClient{env: *env}
|
||||||
|
|
||||||
@ -615,15 +615,6 @@ func (az *Cloud) ProviderName() string {
|
|||||||
return CloudProviderName
|
return CloudProviderName
|
||||||
}
|
}
|
||||||
|
|
||||||
// configureUserAgent configures the autorest client with a user agent that
|
|
||||||
// includes "kubernetes" and the full kubernetes git version string
|
|
||||||
// example:
|
|
||||||
// Azure-SDK-for-Go/7.0.1-beta arm-network/2016-09-01; kubernetes-cloudprovider/v1.7.0-alpha.2.711+a2fadef8170bb0-dirty;
|
|
||||||
func configureUserAgent(client *autorest.Client) {
|
|
||||||
k8sVersion := version.Get().GitVersion
|
|
||||||
client.UserAgent = fmt.Sprintf("%s; kubernetes-cloudprovider/%s", client.UserAgent, k8sVersion)
|
|
||||||
}
|
|
||||||
|
|
||||||
func initDiskControllers(az *Cloud) error {
|
func initDiskControllers(az *Cloud) error {
|
||||||
// Common controller contains the function
|
// Common controller contains the function
|
||||||
// needed by both blob disk and managed disk controllers
|
// needed by both blob disk and managed disk controllers
|
||||||
|
@ -443,16 +443,13 @@ func (c *BlobDiskController) getDiskCount(SAName string) (int, error) {
|
|||||||
func (c *BlobDiskController) getAllStorageAccounts() (map[string]*storageAccountState, error) {
|
func (c *BlobDiskController) getAllStorageAccounts() (map[string]*storageAccountState, error) {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
accountListResult, rerr := c.common.cloud.StorageAccountClient.ListByResourceGroup(ctx, c.common.resourceGroup)
|
accountList, rerr := c.common.cloud.StorageAccountClient.ListByResourceGroup(ctx, c.common.resourceGroup)
|
||||||
if rerr != nil {
|
if rerr != nil {
|
||||||
return nil, rerr.Error()
|
return nil, rerr.Error()
|
||||||
}
|
}
|
||||||
if accountListResult.Value == nil {
|
|
||||||
return nil, fmt.Errorf("azureDisk - empty accountListResult")
|
|
||||||
}
|
|
||||||
|
|
||||||
accounts := make(map[string]*storageAccountState)
|
accounts := make(map[string]*storageAccountState)
|
||||||
for _, v := range *accountListResult.Value {
|
for _, v := range accountList {
|
||||||
if v.Name == nil || v.Sku == nil {
|
if v.Name == nil || v.Sku == nil {
|
||||||
klog.Info("azureDisk - accountListResult Name or Sku is nil")
|
klog.Info("azureDisk - accountListResult Name or Sku is nil")
|
||||||
continue
|
continue
|
||||||
|
@ -20,18 +20,11 @@ package azure
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute"
|
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute"
|
||||||
"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network"
|
"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network"
|
||||||
"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage"
|
"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage"
|
||||||
"github.com/Azure/go-autorest/autorest"
|
|
||||||
|
|
||||||
"k8s.io/client-go/util/flowcontrol"
|
|
||||||
"k8s.io/klog"
|
|
||||||
azclients "k8s.io/legacy-cloud-providers/azure/clients"
|
|
||||||
"k8s.io/legacy-cloud-providers/azure/metrics"
|
|
||||||
"k8s.io/legacy-cloud-providers/azure/retry"
|
"k8s.io/legacy-cloud-providers/azure/retry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -41,15 +34,6 @@ const (
|
|||||||
virtualMachineScaleSetsDeallocating = "Deallocating"
|
virtualMachineScaleSetsDeallocating = "Deallocating"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Helpers for rate limiting error/error channel creation
|
|
||||||
func createRateLimitErr(isWrite bool, opName string) *retry.Error {
|
|
||||||
opType := "read"
|
|
||||||
if isWrite {
|
|
||||||
opType = "write"
|
|
||||||
}
|
|
||||||
return retry.GetRetriableError(fmt.Errorf("azure - cloud provider rate limited(%s) for operation:%s", opType, opName))
|
|
||||||
}
|
|
||||||
|
|
||||||
// VirtualMachinesClient defines needed functions for azure compute.VirtualMachinesClient
|
// VirtualMachinesClient defines needed functions for azure compute.VirtualMachinesClient
|
||||||
type VirtualMachinesClient interface {
|
type VirtualMachinesClient interface {
|
||||||
CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine, source string) *retry.Error
|
CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine, source string) *retry.Error
|
||||||
@ -129,10 +113,18 @@ type StorageAccountClient interface {
|
|||||||
Create(ctx context.Context, resourceGroupName string, accountName string, parameters storage.AccountCreateParameters) *retry.Error
|
Create(ctx context.Context, resourceGroupName string, accountName string, parameters storage.AccountCreateParameters) *retry.Error
|
||||||
Delete(ctx context.Context, resourceGroupName string, accountName string) *retry.Error
|
Delete(ctx context.Context, resourceGroupName string, accountName string) *retry.Error
|
||||||
ListKeys(ctx context.Context, resourceGroupName string, accountName string) (result storage.AccountListKeysResult, rerr *retry.Error)
|
ListKeys(ctx context.Context, resourceGroupName string, accountName string) (result storage.AccountListKeysResult, rerr *retry.Error)
|
||||||
ListByResourceGroup(ctx context.Context, resourceGroupName string) (result storage.AccountListResult, rerr *retry.Error)
|
ListByResourceGroup(ctx context.Context, resourceGroupName string) (result []storage.Account, rerr *retry.Error)
|
||||||
GetProperties(ctx context.Context, resourceGroupName string, accountName string) (result storage.Account, rerr *retry.Error)
|
GetProperties(ctx context.Context, resourceGroupName string, accountName string) (result storage.Account, rerr *retry.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SnapshotsClient defines needed functions for azure compute.SnapshotsClient
|
||||||
|
type SnapshotsClient interface {
|
||||||
|
Get(ctx context.Context, resourceGroupName string, snapshotName string) (compute.Snapshot, *retry.Error)
|
||||||
|
Delete(ctx context.Context, resourceGroupName string, snapshotName string) *retry.Error
|
||||||
|
ListByResourceGroup(ctx context.Context, resourceGroupName string) ([]compute.Snapshot, *retry.Error)
|
||||||
|
CreateOrUpdate(ctx context.Context, resourceGroupName string, snapshotName string, snapshot compute.Snapshot) *retry.Error
|
||||||
|
}
|
||||||
|
|
||||||
// DisksClient defines needed functions for azure compute.DisksClient
|
// DisksClient defines needed functions for azure compute.DisksClient
|
||||||
type DisksClient interface {
|
type DisksClient interface {
|
||||||
CreateOrUpdate(ctx context.Context, resourceGroupName string, diskName string, diskParameter compute.Disk) *retry.Error
|
CreateOrUpdate(ctx context.Context, resourceGroupName string, diskName string, diskParameter compute.Disk) *retry.Error
|
||||||
@ -148,288 +140,3 @@ type VirtualMachineSizesClient interface {
|
|||||||
func getContextWithCancel() (context.Context, context.CancelFunc) {
|
func getContextWithCancel() (context.Context, context.CancelFunc) {
|
||||||
return context.WithCancel(context.Background())
|
return context.WithCancel(context.Background())
|
||||||
}
|
}
|
||||||
|
|
||||||
// azStorageAccountClient implements StorageAccountClient.
|
|
||||||
type azStorageAccountClient struct {
|
|
||||||
client storage.AccountsClient
|
|
||||||
rateLimiterReader flowcontrol.RateLimiter
|
|
||||||
rateLimiterWriter flowcontrol.RateLimiter
|
|
||||||
}
|
|
||||||
|
|
||||||
func newAzStorageAccountClient(config *azclients.ClientConfig) *azStorageAccountClient {
|
|
||||||
storageAccountClient := storage.NewAccountsClientWithBaseURI(config.ResourceManagerEndpoint, config.SubscriptionID)
|
|
||||||
storageAccountClient.Authorizer = autorest.NewBearerAuthorizer(config.ServicePrincipalToken)
|
|
||||||
storageAccountClient.PollingDelay = 5 * time.Second
|
|
||||||
if config.ShouldOmitCloudProviderBackoff {
|
|
||||||
storageAccountClient.RetryAttempts = config.CloudProviderBackoffRetries
|
|
||||||
storageAccountClient.RetryDuration = time.Duration(config.CloudProviderBackoffDuration) * time.Second
|
|
||||||
}
|
|
||||||
configureUserAgent(&storageAccountClient.Client)
|
|
||||||
|
|
||||||
klog.V(2).Infof("Azure StorageAccountClient (read ops) using rate limit config: QPS=%g, bucket=%d",
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitQPS,
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitBucket)
|
|
||||||
klog.V(2).Infof("Azure StorageAccountClient (write ops) using rate limit config: QPS=%g, bucket=%d",
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitQPSWrite,
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitBucketWrite)
|
|
||||||
rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(config.RateLimitConfig)
|
|
||||||
return &azStorageAccountClient{
|
|
||||||
client: storageAccountClient,
|
|
||||||
rateLimiterReader: rateLimiterReader,
|
|
||||||
rateLimiterWriter: rateLimiterWriter,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azStorageAccountClient) Create(ctx context.Context, resourceGroupName string, accountName string, parameters storage.AccountCreateParameters) *retry.Error {
|
|
||||||
mc := metrics.NewMetricContext("storage_account", "create", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
/* Write rate limiting */
|
|
||||||
if !az.rateLimiterWriter.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
return createRateLimitErr(true, "StorageAccountCreate")
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.Create(%q,%q): start", resourceGroupName, accountName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.Create(%q,%q): end", resourceGroupName, accountName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
future, err := az.client.Create(ctx, resourceGroupName, accountName, parameters)
|
|
||||||
if err != nil {
|
|
||||||
return retry.GetError(future.Response(), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = future.WaitForCompletionRef(ctx, az.client.Client)
|
|
||||||
mc.Observe(err)
|
|
||||||
return retry.GetError(future.Response(), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azStorageAccountClient) Delete(ctx context.Context, resourceGroupName string, accountName string) *retry.Error {
|
|
||||||
mc := metrics.NewMetricContext("storage_account", "delete", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
if !az.rateLimiterReader.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
return createRateLimitErr(false, "DeleteStorageAccount")
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.Delete(%q,%q): start", resourceGroupName, accountName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.Delete(%q,%q): end", resourceGroupName, accountName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
result, err := az.client.Delete(ctx, resourceGroupName, accountName)
|
|
||||||
mc.Observe(err)
|
|
||||||
return retry.GetStatusNotFoundAndForbiddenIgnoredError(result.Response, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azStorageAccountClient) ListKeys(ctx context.Context, resourceGroupName string, accountName string) (result storage.AccountListKeysResult, rerr *retry.Error) {
|
|
||||||
mc := metrics.NewMetricContext("storage_account", "list_keys", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
if !az.rateLimiterReader.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
rerr = createRateLimitErr(false, "ListStorageAccountKeys")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.ListKeys(%q,%q): start", resourceGroupName, accountName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.ListKeys(%q,%q): end", resourceGroupName, accountName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
var err error
|
|
||||||
result, err = az.client.ListKeys(ctx, resourceGroupName, accountName, storage.Kerb)
|
|
||||||
mc.Observe(err)
|
|
||||||
return result, retry.GetError(result.Response.Response, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azStorageAccountClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result storage.AccountListResult, rerr *retry.Error) {
|
|
||||||
mc := metrics.NewMetricContext("storage_account", "list_by_resource_group", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
if !az.rateLimiterReader.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
rerr = createRateLimitErr(false, "ListStorageAccountsByResourceGroup")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.ListByResourceGroup(%q): start", resourceGroupName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.ListByResourceGroup(%q): end", resourceGroupName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
var err error
|
|
||||||
result, err = az.client.ListByResourceGroup(ctx, resourceGroupName)
|
|
||||||
mc.Observe(err)
|
|
||||||
return result, retry.GetError(result.Response.Response, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azStorageAccountClient) GetProperties(ctx context.Context, resourceGroupName string, accountName string) (result storage.Account, rerr *retry.Error) {
|
|
||||||
mc := metrics.NewMetricContext("storage_account", "get_properties", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
if !az.rateLimiterReader.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
rerr = createRateLimitErr(false, "GetStorageAccount/Properties")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.GetProperties(%q,%q): start", resourceGroupName, accountName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azStorageAccountClient.GetProperties(%q,%q): end", resourceGroupName, accountName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
var err error
|
|
||||||
result, err = az.client.GetProperties(ctx, resourceGroupName, accountName, "")
|
|
||||||
mc.Observe(err)
|
|
||||||
return result, retry.GetError(result.Response.Response, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// azDisksClient implements DisksClient.
|
|
||||||
type azDisksClient struct {
|
|
||||||
client compute.DisksClient
|
|
||||||
rateLimiterReader flowcontrol.RateLimiter
|
|
||||||
rateLimiterWriter flowcontrol.RateLimiter
|
|
||||||
}
|
|
||||||
|
|
||||||
func newAzDisksClient(config *azclients.ClientConfig) *azDisksClient {
|
|
||||||
disksClient := compute.NewDisksClientWithBaseURI(config.ResourceManagerEndpoint, config.SubscriptionID)
|
|
||||||
disksClient.Authorizer = autorest.NewBearerAuthorizer(config.ServicePrincipalToken)
|
|
||||||
disksClient.PollingDelay = 5 * time.Second
|
|
||||||
if config.ShouldOmitCloudProviderBackoff {
|
|
||||||
disksClient.RetryAttempts = config.CloudProviderBackoffRetries
|
|
||||||
disksClient.RetryDuration = time.Duration(config.CloudProviderBackoffDuration) * time.Second
|
|
||||||
}
|
|
||||||
configureUserAgent(&disksClient.Client)
|
|
||||||
|
|
||||||
klog.V(2).Infof("Azure DisksClient (read ops) using rate limit config: QPS=%g, bucket=%d",
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitQPS,
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitBucket)
|
|
||||||
klog.V(2).Infof("Azure DisksClient (write ops) using rate limit config: QPS=%g, bucket=%d",
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitQPSWrite,
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitBucketWrite)
|
|
||||||
rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(config.RateLimitConfig)
|
|
||||||
return &azDisksClient{
|
|
||||||
client: disksClient,
|
|
||||||
rateLimiterReader: rateLimiterReader,
|
|
||||||
rateLimiterWriter: rateLimiterWriter,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azDisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, diskName string, diskParameter compute.Disk) *retry.Error {
|
|
||||||
mc := metrics.NewMetricContext("disks", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
/* Write rate limiting */
|
|
||||||
if !az.rateLimiterWriter.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
return createRateLimitErr(true, "DiskCreateOrUpdate")
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azDisksClient.CreateOrUpdate(%q,%q): start", resourceGroupName, diskName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azDisksClient.CreateOrUpdate(%q,%q): end", resourceGroupName, diskName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, diskName, diskParameter)
|
|
||||||
if err != nil {
|
|
||||||
return retry.GetError(future.Response(), mc.Observe(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = future.WaitForCompletionRef(ctx, az.client.Client)
|
|
||||||
return retry.GetError(future.Response(), mc.Observe(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, diskName string) *retry.Error {
|
|
||||||
mc := metrics.NewMetricContext("disks", "delete", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
/* Write rate limiting */
|
|
||||||
if !az.rateLimiterWriter.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
return createRateLimitErr(true, "DiskDelete")
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azDisksClient.Delete(%q,%q): start", resourceGroupName, diskName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azDisksClient.Delete(%q,%q): end", resourceGroupName, diskName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
future, err := az.client.Delete(ctx, resourceGroupName, diskName)
|
|
||||||
if err != nil {
|
|
||||||
return retry.GetStatusNotFoundAndForbiddenIgnoredError(future.Response(), mc.Observe(err))
|
|
||||||
}
|
|
||||||
err = future.WaitForCompletionRef(ctx, az.client.Client)
|
|
||||||
return retry.GetStatusNotFoundAndForbiddenIgnoredError(future.Response(), mc.Observe(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azDisksClient) Get(ctx context.Context, resourceGroupName string, diskName string) (result compute.Disk, rerr *retry.Error) {
|
|
||||||
mc := metrics.NewMetricContext("disks", "get", resourceGroupName, az.client.SubscriptionID, "")
|
|
||||||
if !az.rateLimiterReader.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
rerr = createRateLimitErr(false, "GetDisk")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azDisksClient.Get(%q,%q): start", resourceGroupName, diskName)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azDisksClient.Get(%q,%q): end", resourceGroupName, diskName)
|
|
||||||
}()
|
|
||||||
|
|
||||||
var err error
|
|
||||||
result, err = az.client.Get(ctx, resourceGroupName, diskName)
|
|
||||||
mc.Observe(err)
|
|
||||||
return result, retry.GetError(result.Response.Response, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(feiskyer): refactor compute.SnapshotsClient to Interface.
|
|
||||||
func newSnapshotsClient(config *azclients.ClientConfig) *compute.SnapshotsClient {
|
|
||||||
snapshotsClient := compute.NewSnapshotsClientWithBaseURI(config.ResourceManagerEndpoint, config.SubscriptionID)
|
|
||||||
snapshotsClient.Authorizer = autorest.NewBearerAuthorizer(config.ServicePrincipalToken)
|
|
||||||
snapshotsClient.PollingDelay = 5 * time.Second
|
|
||||||
if config.ShouldOmitCloudProviderBackoff {
|
|
||||||
snapshotsClient.RetryAttempts = config.CloudProviderBackoffRetries
|
|
||||||
snapshotsClient.RetryDuration = time.Duration(config.CloudProviderBackoffDuration) * time.Second
|
|
||||||
}
|
|
||||||
configureUserAgent(&snapshotsClient.Client)
|
|
||||||
return &snapshotsClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// azVirtualMachineSizesClient implements VirtualMachineSizesClient.
|
|
||||||
type azVirtualMachineSizesClient struct {
|
|
||||||
client compute.VirtualMachineSizesClient
|
|
||||||
rateLimiterReader flowcontrol.RateLimiter
|
|
||||||
rateLimiterWriter flowcontrol.RateLimiter
|
|
||||||
}
|
|
||||||
|
|
||||||
func newAzVirtualMachineSizesClient(config *azclients.ClientConfig) *azVirtualMachineSizesClient {
|
|
||||||
VirtualMachineSizesClient := compute.NewVirtualMachineSizesClient(config.SubscriptionID)
|
|
||||||
VirtualMachineSizesClient.BaseURI = config.ResourceManagerEndpoint
|
|
||||||
VirtualMachineSizesClient.Authorizer = autorest.NewBearerAuthorizer(config.ServicePrincipalToken)
|
|
||||||
VirtualMachineSizesClient.PollingDelay = 5 * time.Second
|
|
||||||
if config.ShouldOmitCloudProviderBackoff {
|
|
||||||
VirtualMachineSizesClient.RetryAttempts = config.CloudProviderBackoffRetries
|
|
||||||
VirtualMachineSizesClient.RetryDuration = time.Duration(config.CloudProviderBackoffDuration) * time.Second
|
|
||||||
}
|
|
||||||
configureUserAgent(&VirtualMachineSizesClient.Client)
|
|
||||||
|
|
||||||
klog.V(2).Infof("Azure VirtualMachineSizesClient (read ops) using rate limit config: QPS=%g, bucket=%d",
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitQPS,
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitBucket)
|
|
||||||
klog.V(2).Infof("Azure VirtualMachineSizesClient (write ops) using rate limit config: QPS=%g, bucket=%d",
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitQPSWrite,
|
|
||||||
config.RateLimitConfig.CloudProviderRateLimitBucketWrite)
|
|
||||||
rateLimiterReader, rateLimiterWriter := azclients.NewRateLimiter(config.RateLimitConfig)
|
|
||||||
return &azVirtualMachineSizesClient{
|
|
||||||
rateLimiterReader: rateLimiterReader,
|
|
||||||
rateLimiterWriter: rateLimiterWriter,
|
|
||||||
client: VirtualMachineSizesClient,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (az *azVirtualMachineSizesClient) List(ctx context.Context, location string) (result compute.VirtualMachineSizeListResult, rerr *retry.Error) {
|
|
||||||
mc := metrics.NewMetricContext("vmsizes", "list", "", az.client.SubscriptionID, "")
|
|
||||||
if !az.rateLimiterReader.TryAccept() {
|
|
||||||
mc.RateLimitedCount()
|
|
||||||
rerr = createRateLimitErr(false, "VMSizesList")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.V(10).Infof("azVirtualMachineSizesClient.List(%q): start", location)
|
|
||||||
defer func() {
|
|
||||||
klog.V(10).Infof("azVirtualMachineSizesClient.List(%q): end", location)
|
|
||||||
}()
|
|
||||||
|
|
||||||
var err error
|
|
||||||
result, err = az.client.List(ctx, location)
|
|
||||||
mc.Observe(err)
|
|
||||||
return result, retry.GetError(result.Response.Response, err)
|
|
||||||
}
|
|
||||||
|
@ -772,7 +772,7 @@ type fakeStorageAccountClient struct {
|
|||||||
mutex *sync.Mutex
|
mutex *sync.Mutex
|
||||||
FakeStore map[string]map[string]storage.Account
|
FakeStore map[string]map[string]storage.Account
|
||||||
Keys storage.AccountListKeysResult
|
Keys storage.AccountListKeysResult
|
||||||
Accounts storage.AccountListResult
|
Accounts []storage.Account
|
||||||
Err error
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -825,7 +825,7 @@ func (fSAC *fakeStorageAccountClient) ListKeys(ctx context.Context, resourceGrou
|
|||||||
return fSAC.Keys, nil
|
return fSAC.Keys, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fSAC *fakeStorageAccountClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result storage.AccountListResult, err *retry.Error) {
|
func (fSAC *fakeStorageAccountClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result []storage.Account, err *retry.Error) {
|
||||||
return fSAC.Accounts, nil
|
return fSAC.Accounts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ func TestCreateFileShare(t *testing.T) {
|
|||||||
acctKind string
|
acctKind string
|
||||||
loc string
|
loc string
|
||||||
gb int
|
gb int
|
||||||
accounts storage.AccountListResult
|
accounts []storage.Account
|
||||||
keys storage.AccountListKeysResult
|
keys storage.AccountListKeysResult
|
||||||
err error
|
err error
|
||||||
|
|
||||||
@ -77,10 +77,8 @@ func TestCreateFileShare(t *testing.T) {
|
|||||||
acctKind: kind,
|
acctKind: kind,
|
||||||
loc: location,
|
loc: location,
|
||||||
gb: 10,
|
gb: 10,
|
||||||
accounts: storage.AccountListResult{
|
accounts: []storage.Account{
|
||||||
Value: &[]storage.Account{
|
{Name: &name, Sku: &storage.Sku{Name: storage.SkuName(sku)}, Kind: storage.Kind(kind), Location: &location},
|
||||||
{Name: &name, Sku: &storage.Sku{Name: storage.SkuName(sku)}, Kind: storage.Kind(kind), Location: &location},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
keys: storage.AccountListKeysResult{
|
keys: storage.AccountListKeysResult{
|
||||||
Keys: &[]storage.AccountKey{
|
Keys: &[]storage.AccountKey{
|
||||||
@ -97,10 +95,8 @@ func TestCreateFileShare(t *testing.T) {
|
|||||||
acctKind: kind,
|
acctKind: kind,
|
||||||
loc: location,
|
loc: location,
|
||||||
gb: 10,
|
gb: 10,
|
||||||
accounts: storage.AccountListResult{
|
accounts: []storage.Account{
|
||||||
Value: &[]storage.Account{
|
{Name: &bogus, Sku: &storage.Sku{Name: storage.SkuName(sku)}, Location: &location},
|
||||||
{Name: &bogus, Sku: &storage.Sku{Name: storage.SkuName(sku)}, Location: &location},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
expectErr: true,
|
expectErr: true,
|
||||||
},
|
},
|
||||||
@ -111,10 +107,8 @@ func TestCreateFileShare(t *testing.T) {
|
|||||||
acctKind: kind,
|
acctKind: kind,
|
||||||
loc: location,
|
loc: location,
|
||||||
gb: 10,
|
gb: 10,
|
||||||
accounts: storage.AccountListResult{
|
accounts: []storage.Account{
|
||||||
Value: &[]storage.Account{
|
{Name: &name, Sku: &storage.Sku{Name: storage.SkuName(sku)}, Location: &bogus},
|
||||||
{Name: &name, Sku: &storage.Sku{Name: storage.SkuName(sku)}, Location: &bogus},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
expectErr: true,
|
expectErr: true,
|
||||||
},
|
},
|
||||||
|
@ -40,12 +40,9 @@ func (az *Cloud) getStorageAccounts(matchingAccountType, matchingAccountKind, re
|
|||||||
if rerr != nil {
|
if rerr != nil {
|
||||||
return nil, rerr.Error()
|
return nil, rerr.Error()
|
||||||
}
|
}
|
||||||
if result.Value == nil {
|
|
||||||
return nil, fmt.Errorf("unexpected error when listing storage accounts from resource group %s", resourceGroup)
|
|
||||||
}
|
|
||||||
|
|
||||||
accounts := []accountWithLocation{}
|
accounts := []accountWithLocation{}
|
||||||
for _, acct := range *result.Value {
|
for _, acct := range result {
|
||||||
if acct.Name != nil && acct.Location != nil && acct.Sku != nil {
|
if acct.Name != nil && acct.Location != nil && acct.Sku != nil {
|
||||||
storageType := string((*acct.Sku).Name)
|
storageType := string((*acct.Sku).Name)
|
||||||
if matchingAccountType != "" && !strings.EqualFold(matchingAccountType, storageType) {
|
if matchingAccountType != "" && !strings.EqualFold(matchingAccountType, storageType) {
|
||||||
|
@ -28,14 +28,18 @@ filegroup(
|
|||||||
srcs = [
|
srcs = [
|
||||||
":package-srcs",
|
":package-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:all-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/diskclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/interfaceclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/interfaceclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/publicipclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/publicipclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routeclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routeclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routetableclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/routetableclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient:all-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/snapshotclient:all-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/subnetclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/subnetclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmclient:all-srcs",
|
||||||
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssclient:all-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient:all-srcs",
|
||||||
],
|
],
|
||||||
|
@ -16,9 +16,10 @@ go_library(
|
|||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/metrics:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/metrics:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@ -31,7 +32,7 @@ go_test(
|
|||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
|
@ -11,7 +11,7 @@ go_library(
|
|||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
||||||
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -19,6 +19,7 @@ go_library(
|
|||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
||||||
|
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -3,12 +3,12 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
|||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"azure_virtualmachinesizeclient.go",
|
"azure_vmsizeclient.go",
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"interface.go",
|
"interface.go",
|
||||||
],
|
],
|
||||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/virtualmachinesizeclient",
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient",
|
||||||
importpath = "k8s.io/legacy-cloud-providers/azure/clients/virtualmachinesizeclient",
|
importpath = "k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
@ -16,25 +16,23 @@ go_library(
|
|||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/metrics:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/metrics:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
go_test(
|
go_test(
|
||||||
name = "go_default_test",
|
name = "go_default_test",
|
||||||
srcs = ["azure_virtualmachinesizeclient_test.go"],
|
srcs = ["azure_vmsizeclient_test.go"],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient:go_default_library",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/armclient/mockarmclient:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
"//vendor/github.com/Azure/go-autorest/autorest:go_default_library",
|
||||||
"//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library",
|
|
||||||
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
],
|
],
|
||||||
@ -51,7 +49,7 @@ filegroup(
|
|||||||
name = "all-srcs",
|
name = "all-srcs",
|
||||||
srcs = [
|
srcs = [
|
||||||
":package-srcs",
|
":package-srcs",
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/virtualmachinesizeclient/mockvirtualmachinesizeclient:all-srcs",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient/mockvmsizeclient:all-srcs",
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
|
@ -6,12 +6,12 @@ go_library(
|
|||||||
"doc.go",
|
"doc.go",
|
||||||
"interface.go",
|
"interface.go",
|
||||||
],
|
],
|
||||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/virtualmachinesizeclient/mockvirtualmachinesizeclient",
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient/mockvmsizeclient",
|
||||||
importpath = "k8s.io/legacy-cloud-providers/azure/clients/virtualmachinesizeclient/mockvirtualmachinesizeclient",
|
importpath = "k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient/mockvmsizeclient",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
"//staging/src/k8s.io/legacy-cloud-providers/azure/retry:go_default_library",
|
||||||
"//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:go_default_library",
|
"//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library",
|
||||||
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
"//vendor/github.com/golang/mock/gomock:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
@ -1838,14 +1838,18 @@ k8s.io/legacy-cloud-providers/azure
|
|||||||
k8s.io/legacy-cloud-providers/azure/auth
|
k8s.io/legacy-cloud-providers/azure/auth
|
||||||
k8s.io/legacy-cloud-providers/azure/clients
|
k8s.io/legacy-cloud-providers/azure/clients
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/armclient
|
k8s.io/legacy-cloud-providers/azure/clients/armclient
|
||||||
|
k8s.io/legacy-cloud-providers/azure/clients/diskclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/interfaceclient
|
k8s.io/legacy-cloud-providers/azure/clients/interfaceclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient
|
k8s.io/legacy-cloud-providers/azure/clients/loadbalancerclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/publicipclient
|
k8s.io/legacy-cloud-providers/azure/clients/publicipclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/routeclient
|
k8s.io/legacy-cloud-providers/azure/clients/routeclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/routetableclient
|
k8s.io/legacy-cloud-providers/azure/clients/routetableclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient
|
k8s.io/legacy-cloud-providers/azure/clients/securitygroupclient
|
||||||
|
k8s.io/legacy-cloud-providers/azure/clients/snapshotclient
|
||||||
|
k8s.io/legacy-cloud-providers/azure/clients/storageaccountclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/subnetclient
|
k8s.io/legacy-cloud-providers/azure/clients/subnetclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/vmclient
|
k8s.io/legacy-cloud-providers/azure/clients/vmclient
|
||||||
|
k8s.io/legacy-cloud-providers/azure/clients/vmsizeclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/vmssclient
|
k8s.io/legacy-cloud-providers/azure/clients/vmssclient
|
||||||
k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient
|
k8s.io/legacy-cloud-providers/azure/clients/vmssvmclient
|
||||||
k8s.io/legacy-cloud-providers/azure/metrics
|
k8s.io/legacy-cloud-providers/azure/metrics
|
||||||
|
Loading…
Reference in New Issue
Block a user