legacy-cloud-providers: k8s.io/legacy-cloud-providers/azure Index | Files | Directories

package azure

import "k8s.io/legacy-cloud-providers/azure"

Package azure is an implementation of CloudProvider Interface, LoadBalancer and Instances for Azure.

Index

Package Files

azure.go azure_backoff.go azure_blobDiskController.go azure_config.go azure_controller_common.go azure_controller_standard.go azure_controller_vmss.go azure_fakes.go azure_file.go azure_instance_metadata.go azure_instances.go azure_loadbalancer.go azure_managedDiskController.go azure_ratelimit.go azure_routes.go azure_standard.go azure_storage.go azure_storageaccount.go azure_utils.go azure_vmsets.go azure_vmss.go azure_vmss_cache.go azure_wrap.go azure_zones.go doc.go

Constants

const (
    // PreConfiguredBackendPoolLoadBalancerTypesNone means that the load balancers are not pre-configured
    PreConfiguredBackendPoolLoadBalancerTypesNone = ""
    // PreConfiguredBackendPoolLoadBalancerTypesInteral means that the `internal` load balancers are pre-configured
    PreConfiguredBackendPoolLoadBalancerTypesInteral = "internal"
    // PreConfiguredBackendPoolLoadBalancerTypesExternal means that the `external` load balancers are pre-configured
    PreConfiguredBackendPoolLoadBalancerTypesExternal = "external"
    // PreConfiguredBackendPoolLoadBalancerTypesAll means that all load balancers are pre-configured
    PreConfiguredBackendPoolLoadBalancerTypesAll = "all"
)
const (
    // ServiceAnnotationLoadBalancerInternal is the annotation used on the service
    ServiceAnnotationLoadBalancerInternal = "service.beta.kubernetes.io/azure-load-balancer-internal"

    // ServiceAnnotationLoadBalancerInternalSubnet is the annotation used on the service
    // to specify what subnet it is exposed on
    ServiceAnnotationLoadBalancerInternalSubnet = "service.beta.kubernetes.io/azure-load-balancer-internal-subnet"

    // ServiceAnnotationLoadBalancerMode is the annotation used on the service to specify the
    // Azure load balancer selection based on availability sets
    // There are currently three possible load balancer selection modes :
    // 1. Default mode - service has no annotation ("service.beta.kubernetes.io/azure-load-balancer-mode")
    //	  In this case the Loadbalancer of the primary Availability set is selected
    // 2. "__auto__" mode - service is annotated with __auto__ value, this when loadbalancer from any availability set
    //    is selected which has the minimum rules associated with it.
    // 3. "as1,as2" mode - this is when the load balancer from the specified availability sets is selected that has the
    //    minimum rules associated with it.
    ServiceAnnotationLoadBalancerMode = "service.beta.kubernetes.io/azure-load-balancer-mode"

    // ServiceAnnotationLoadBalancerAutoModeValue is the annotation used on the service to specify the
    // Azure load balancer auto selection from the availability sets
    ServiceAnnotationLoadBalancerAutoModeValue = "__auto__"

    // ServiceAnnotationDNSLabelName is the annotation used on the service
    // to specify the DNS label name for the service.
    ServiceAnnotationDNSLabelName = "service.beta.kubernetes.io/azure-dns-label-name"

    // ServiceAnnotationSharedSecurityRule is the annotation used on the service
    // to specify that the service should be exposed using an Azure security rule
    // that may be shared with other service, trading specificity of rules for an
    // increase in the number of services that can be exposed. This relies on the
    // Azure "augmented security rules" feature.
    ServiceAnnotationSharedSecurityRule = "service.beta.kubernetes.io/azure-shared-securityrule"

    // ServiceAnnotationLoadBalancerResourceGroup is the annotation used on the service
    // to specify the resource group of load balancer objects that are not in the same resource group as the cluster.
    ServiceAnnotationLoadBalancerResourceGroup = "service.beta.kubernetes.io/azure-load-balancer-resource-group"

    // ServiceAnnotationPIPName specifies the pip that will be applied to load balancer
    ServiceAnnotationPIPName = "service.beta.kubernetes.io/azure-pip-name"

    // ServiceAnnotationAllowedServiceTag is the annotation used on the service
    // to specify a list of allowed service tags separated by comma
    // Refer https://docs.microsoft.com/en-us/azure/virtual-network/security-overview#service-tags for all supported service tags.
    ServiceAnnotationAllowedServiceTag = "service.beta.kubernetes.io/azure-allowed-service-tags"

    // ServiceAnnotationLoadBalancerIdleTimeout is the annotation used on the service
    // to specify the idle timeout for connections on the load balancer in minutes.
    ServiceAnnotationLoadBalancerIdleTimeout = "service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout"

    // ServiceAnnotationLoadBalancerMixedProtocols is the annotation used on the service
    // to create both TCP and UDP protocols when creating load balancer rules.
    ServiceAnnotationLoadBalancerMixedProtocols = "service.beta.kubernetes.io/azure-load-balancer-mixed-protocols"

    // ServiceAnnotationLoadBalancerDisableTCPReset is the annotation used on the service
    // to set enableTcpReset to false in load balancer rule. This only works for Azure standard load balancer backed service.
    // TODO(feiskyer): disable-tcp-reset annotations has been depracated since v1.18, it would removed on v1.20.
    ServiceAnnotationLoadBalancerDisableTCPReset = "service.beta.kubernetes.io/azure-load-balancer-disable-tcp-reset"
)
const (
    // IPv6DualStack is here to avoid having to import features pkg
    // and violate import rules
    IPv6DualStack featuregate.Feature = "IPv6DualStack"

    // InternalLoadBalancerNameSuffix is load balancer posfix
    InternalLoadBalancerNameSuffix = "-internal"
)
const (
    // CloudProviderName is the value used for the --cloud-provider flag
    CloudProviderName = "azure"
)
const (

    // WriteAcceleratorEnabled support for Azure Write Accelerator on Azure Disks
    // https://docs.microsoft.com/azure/virtual-machines/windows/how-to-enable-write-accelerator
    WriteAcceleratorEnabled = "writeacceleratorenabled"
)

Variables

var (

    // ErrorNotVmssInstance indicates an instance is not belonging to any vmss.
    ErrorNotVmssInstance = errors.New("not a vmss instance")
)

func ConvertTagsToMap Uses

func ConvertTagsToMap(tags string) (map[string]string, error)

ConvertTagsToMap convert the tags from string to map the valid tags fomat is "key1=value1,key2=value2", which could be converted to {"key1": "value1", "key2": "value2"}

func InitializeCloudProviderRateLimitConfig Uses

func InitializeCloudProviderRateLimitConfig(config *CloudProviderRateLimitConfig)

InitializeCloudProviderRateLimitConfig initializes rate limit configs.

func MakeCRC32 Uses

func MakeCRC32(str string) string

MakeCRC32 : convert string to CRC32 format

func NewCloud Uses

func NewCloud(configReader io.Reader) (cloudprovider.Interface, error)

NewCloud returns a Cloud with initialized clients

type AccountOptions Uses

type AccountOptions struct {
    Name, Type, Kind, ResourceGroup, Location string
    EnableHTTPSTrafficOnly                    bool
    Tags                                      map[string]string
}

AccountOptions contains the fields which are used to create storage account.

type BlobDiskController Uses

type BlobDiskController struct {
    // contains filtered or unexported fields
}

BlobDiskController : blob disk controller struct

func (*BlobDiskController) CreateBlobDisk Uses

func (c *BlobDiskController) CreateBlobDisk(dataDiskName string, storageAccountType storage.SkuName, sizeGB int) (string, error)

CreateBlobDisk : create a blob disk in a node

func (*BlobDiskController) CreateVolume Uses

func (c *BlobDiskController) CreateVolume(blobName, accountName, accountType, location string, requestGB int) (string, string, int, error)

CreateVolume creates a VHD blob in a storage account that has storageType and location using the given storage account. If no storage account is given, search all the storage accounts associated with the resource group and pick one that fits storage type and location.

func (*BlobDiskController) DeleteBlobDisk Uses

func (c *BlobDiskController) DeleteBlobDisk(diskURI string) error

DeleteBlobDisk : delete a blob disk from a node

func (*BlobDiskController) DeleteVolume Uses

func (c *BlobDiskController) DeleteVolume(diskURI string) error

DeleteVolume deletes a VHD blob

type Cloud Uses

type Cloud struct {
    Config
    Environment azure.Environment

    RoutesClient                    routeclient.Interface
    SubnetsClient                   subnetclient.Interface
    InterfacesClient                interfaceclient.Interface
    RouteTablesClient               routetableclient.Interface
    LoadBalancerClient              loadbalancerclient.Interface
    PublicIPAddressesClient         publicipclient.Interface
    SecurityGroupsClient            securitygroupclient.Interface
    VirtualMachinesClient           vmclient.Interface
    StorageAccountClient            storageaccountclient.Interface
    DisksClient                     diskclient.Interface
    SnapshotsClient                 snapshotclient.Interface
    FileClient                      fileclient.Interface
    VirtualMachineScaleSetsClient   vmssclient.Interface
    VirtualMachineScaleSetVMsClient vmssvmclient.Interface
    VirtualMachineSizesClient       vmsizeclient.Interface

    ResourceRequestBackoff wait.Backoff

    KubeClient clientset.Interface

    *BlobDiskController
    *ManagedDiskController
    // contains filtered or unexported fields
}

Cloud holds the config and clients

func GetTestCloud Uses

func GetTestCloud(ctrl *gomock.Controller) (az *Cloud)

GetTestCloud returns a fake azure cloud for unit tests in Azure related CSI drivers

func NewCloudWithoutFeatureGates Uses

func NewCloudWithoutFeatureGates(configReader io.Reader) (*Cloud, error)

NewCloudWithoutFeatureGates returns a Cloud without trying to wire the feature gates. This is used by the unit tests that don't load the actual features being used in the cluster.

func (*Cloud) AddSSHKeyToAllInstances Uses

func (az *Cloud) AddSSHKeyToAllInstances(ctx context.Context, user string, keyData []byte) error

AddSSHKeyToAllInstances adds an SSH public key as a legal identity for all instances expected format for the key is standard ssh-keygen format: <protocol> <blob>

func (Cloud) AttachDisk Uses

func (c Cloud) AttachDisk(isManagedDisk bool, diskName, diskURI string, nodeName types.NodeName, cachingMode compute.CachingTypes) (int32, error)

AttachDisk attaches a vhd to vm. The vhd must exist, can be identified by diskName, diskURI. return (lun, error)

func (*Cloud) Clusters Uses

func (az *Cloud) Clusters() (cloudprovider.Clusters, bool)

Clusters returns a clusters interface. Also returns true if the interface is supported, false otherwise.

func (*Cloud) CreateFileShare Uses

func (az *Cloud) CreateFileShare(accountOptions *AccountOptions, shareOptions *fileclient.ShareOptions) (string, string, error)

CreateFileShare creates a file share, using a matching storage account type, account kind, etc. storage account will be created if specified account is not found

func (*Cloud) CreateOrUpdateInterface Uses

func (az *Cloud) CreateOrUpdateInterface(service *v1.Service, nic network.Interface) error

CreateOrUpdateInterface invokes az.PublicIPAddressesClient.CreateOrUpdate with exponential backoff retry

func (*Cloud) CreateOrUpdateLB Uses

func (az *Cloud) CreateOrUpdateLB(service *v1.Service, lb network.LoadBalancer) error

CreateOrUpdateLB invokes az.LoadBalancerClient.CreateOrUpdate with exponential backoff retry

func (*Cloud) CreateOrUpdatePIP Uses

func (az *Cloud) CreateOrUpdatePIP(service *v1.Service, pipResourceGroup string, pip network.PublicIPAddress) error

CreateOrUpdatePIP invokes az.PublicIPAddressesClient.CreateOrUpdate with exponential backoff retry

func (*Cloud) CreateOrUpdateRoute Uses

func (az *Cloud) CreateOrUpdateRoute(route network.Route) error

CreateOrUpdateRoute invokes az.RoutesClient.CreateOrUpdate with exponential backoff retry

func (*Cloud) CreateOrUpdateRouteTable Uses

func (az *Cloud) CreateOrUpdateRouteTable(routeTable network.RouteTable) error

CreateOrUpdateRouteTable invokes az.RouteTablesClient.CreateOrUpdate with exponential backoff retry

func (*Cloud) CreateOrUpdateSecurityGroup Uses

func (az *Cloud) CreateOrUpdateSecurityGroup(service *v1.Service, sg network.SecurityGroup) error

CreateOrUpdateSecurityGroup invokes az.SecurityGroupsClient.CreateOrUpdate with exponential backoff retry

func (*Cloud) CreateOrUpdateVMSS Uses

func (az *Cloud) CreateOrUpdateVMSS(resourceGroupName string, VMScaleSetName string, parameters compute.VirtualMachineScaleSet) *retry.Error

CreateOrUpdateVMSS invokes az.VirtualMachineScaleSetsClient.Update().

func (*Cloud) CreateRoute Uses

func (az *Cloud) CreateRoute(ctx context.Context, clusterName string, nameHint string, kubeRoute *cloudprovider.Route) error

CreateRoute creates the described managed route route.Name will be ignored, although the cloud-provider may use nameHint to create a more user-meaningful name.

func (*Cloud) CurrentNodeName Uses

func (az *Cloud) CurrentNodeName(ctx context.Context, hostname string) (types.NodeName, error)

CurrentNodeName returns the name of the node we are currently running on. On Azure this is the hostname, so we just return the hostname.

func (*Cloud) DeleteFileShare Uses

func (az *Cloud) DeleteFileShare(resourceGroup, accountName, shareName string) error

DeleteFileShare deletes a file share using storage account name and key

func (*Cloud) DeleteLB Uses

func (az *Cloud) DeleteLB(service *v1.Service, lbName string) error

DeleteLB invokes az.LoadBalancerClient.Delete with exponential backoff retry

func (*Cloud) DeletePublicIP Uses

func (az *Cloud) DeletePublicIP(service *v1.Service, pipResourceGroup string, pipName string) error

DeletePublicIP invokes az.PublicIPAddressesClient.Delete with exponential backoff retry

func (*Cloud) DeleteRoute Uses

func (az *Cloud) DeleteRoute(ctx context.Context, clusterName string, kubeRoute *cloudprovider.Route) error

DeleteRoute deletes the specified managed route Route should be as returned by ListRoutes

func (*Cloud) DeleteRouteWithName Uses

func (az *Cloud) DeleteRouteWithName(routeName string) error

DeleteRouteWithName invokes az.RoutesClient.CreateOrUpdate with exponential backoff retry

func (Cloud) DetachDisk Uses

func (c Cloud) DetachDisk(diskName, diskURI string, nodeName types.NodeName) error

DetachDisk detaches a disk from host. The vhd can be identified by diskName or diskURI.

func (Cloud) DisksAreAttached Uses

func (c Cloud) DisksAreAttached(diskNames []string, nodeName types.NodeName) (map[string]bool, error)

DisksAreAttached checks if a list of volumes are attached to the node with the specified NodeName.

func (*Cloud) EnsureLoadBalancer Uses

func (az *Cloud) EnsureLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error)

EnsureLoadBalancer creates a new load balancer 'name', or updates the existing one. Returns the status of the balancer

func (*Cloud) EnsureLoadBalancerDeleted Uses

func (az *Cloud) EnsureLoadBalancerDeleted(ctx context.Context, clusterName string, service *v1.Service) error

EnsureLoadBalancerDeleted deletes the specified load balancer if it exists, returning nil if the load balancer specified either didn't exist or was successfully deleted. This construction is useful because many cloud providers' load balancers have multiple underlying components, meaning a Get could say that the LB doesn't exist even if some part of it is still laying around.

func (*Cloud) EnsureStorageAccount Uses

func (az *Cloud) EnsureStorageAccount(accountOptions *AccountOptions, genAccountNamePrefix string) (string, string, error)

EnsureStorageAccount search storage account, create one storage account(with genAccountNamePrefix) if not found, return accountName, accountKey

func (*Cloud) Event Uses

func (az *Cloud) Event(obj runtime.Object, eventtype, reason, message string)

Event creates a event for the specified object.

func (*Cloud) GetActiveZones Uses

func (az *Cloud) GetActiveZones() (sets.String, error)

GetActiveZones returns all the zones in which k8s nodes are currently running.

func (*Cloud) GetAzureDiskLabels Uses

func (c *Cloud) GetAzureDiskLabels(diskURI string) (map[string]string, error)

GetAzureDiskLabels gets availability zone labels for Azuredisk.

func (Cloud) GetDiskLun Uses

func (c Cloud) GetDiskLun(diskName, diskURI string, nodeName types.NodeName) (int32, error)

GetDiskLun finds the lun on the host that the vhd is attached to, given a vhd's diskName and diskURI.

func (*Cloud) GetFileShare Uses

func (az *Cloud) GetFileShare(resourceGroupName, accountName, name string) (storage.FileShare, error)

GetFileShare gets a file share

func (*Cloud) GetIPForMachineWithRetry Uses

func (az *Cloud) GetIPForMachineWithRetry(name types.NodeName) (string, string, error)

GetIPForMachineWithRetry invokes az.getIPForMachine with exponential backoff retry

func (*Cloud) GetLabelsForVolume Uses

func (c *Cloud) GetLabelsForVolume(ctx context.Context, pv *v1.PersistentVolume) (map[string]string, error)

GetLabelsForVolume implements PVLabeler.GetLabelsForVolume

func (*Cloud) GetLoadBalancer Uses

func (az *Cloud) GetLoadBalancer(ctx context.Context, clusterName string, service *v1.Service) (status *v1.LoadBalancerStatus, exists bool, err error)

GetLoadBalancer returns whether the specified load balancer and its components exist, and if so, what its status is.

func (*Cloud) GetLoadBalancerName Uses

func (az *Cloud) GetLoadBalancerName(ctx context.Context, clusterName string, service *v1.Service) string

GetLoadBalancerName returns the LoadBalancer name.

func (*Cloud) GetLocation Uses

func (az *Cloud) GetLocation() string

GetLocation returns the location in which k8s cluster is currently running.

func (Cloud) GetNextDiskLun Uses

func (c Cloud) GetNextDiskLun(nodeName types.NodeName) (int32, error)

GetNextDiskLun searches all vhd attachment on the host and find unused lun. Return -1 if all luns are used.

func (*Cloud) GetNodeResourceGroup Uses

func (az *Cloud) GetNodeResourceGroup(nodeName string) (string, error)

GetNodeResourceGroup gets resource group for given node.

func (*Cloud) GetResourceGroups Uses

func (az *Cloud) GetResourceGroups() (sets.String, error)

GetResourceGroups returns a set of resource groups that all nodes are running on.

func (*Cloud) GetStorageAccesskey Uses

func (az *Cloud) GetStorageAccesskey(account, resourceGroup string) (string, error)

GetStorageAccesskey gets the storage account access key

func (*Cloud) GetUnmanagedNodes Uses

func (az *Cloud) GetUnmanagedNodes() (sets.String, error)

GetUnmanagedNodes returns a list of nodes not managed by Azure cloud provider (e.g. on-prem nodes).

func (*Cloud) GetVirtualMachineWithRetry Uses

func (az *Cloud) GetVirtualMachineWithRetry(name types.NodeName, crt azcache.AzureCacheReadType) (compute.VirtualMachine, error)

GetVirtualMachineWithRetry invokes az.getVirtualMachine with exponential backoff retry

func (*Cloud) GetZone Uses

func (az *Cloud) GetZone(ctx context.Context) (cloudprovider.Zone, error)

GetZone returns the Zone containing the current availability zone and locality region that the program is running in. If the node is not running with availability zones, then it will fall back to fault domain.

func (*Cloud) GetZoneByNodeName Uses

func (az *Cloud) GetZoneByNodeName(ctx context.Context, nodeName types.NodeName) (cloudprovider.Zone, error)

GetZoneByNodeName implements Zones.GetZoneByNodeName This is particularly useful in external cloud providers where the kubelet does not initialize node data.

func (*Cloud) GetZoneByProviderID Uses

func (az *Cloud) GetZoneByProviderID(ctx context.Context, providerID string) (cloudprovider.Zone, error)

GetZoneByProviderID implements Zones.GetZoneByProviderID This is particularly useful in external cloud providers where the kubelet does not initialize node data.

func (*Cloud) GetZoneID Uses

func (az *Cloud) GetZoneID(zoneLabel string) string

GetZoneID returns the ID of zone from node's zone label.

func (*Cloud) HasClusterID Uses

func (az *Cloud) HasClusterID() bool

HasClusterID returns true if the cluster has a clusterID

func (*Cloud) Initialize Uses

func (az *Cloud) Initialize(clientBuilder cloudprovider.ControllerClientBuilder, stop <-chan struct{})

Initialize passes a Kubernetes clientBuilder interface to the cloud provider

func (*Cloud) InitializeCloudFromConfig Uses

func (az *Cloud) InitializeCloudFromConfig(config *Config, fromSecret bool) error

InitializeCloudFromConfig initializes the Cloud from config.

func (*Cloud) InitializeCloudFromSecret Uses

func (az *Cloud) InitializeCloudFromSecret()

InitializeCloudFromSecret initializes Azure cloud provider from Kubernetes secret.

func (*Cloud) InstanceExistsByProviderID Uses

func (az *Cloud) InstanceExistsByProviderID(ctx context.Context, providerID string) (bool, error)

InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.

func (*Cloud) InstanceID Uses

func (az *Cloud) InstanceID(ctx context.Context, name types.NodeName) (string, error)

InstanceID returns the cloud provider ID of the specified instance. Note that if the instance does not exist or is no longer running, we must return ("", cloudprovider.InstanceNotFound)

func (*Cloud) InstanceMetadataByProviderID Uses

func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID string) (*cloudprovider.InstanceMetadata, error)

InstanceMetadataByProviderID returns metadata of the specified instance. InstanceMetadataByProviderID is part of InstancesV2 interface and is only used in cloud node-controller.

func (*Cloud) InstanceShutdownByProviderID Uses

func (az *Cloud) InstanceShutdownByProviderID(ctx context.Context, providerID string) (bool, error)

InstanceShutdownByProviderID returns true if the instance is in safe state to detach volumes

func (*Cloud) InstanceType Uses

func (az *Cloud) InstanceType(ctx context.Context, name types.NodeName) (string, error)

InstanceType returns the type of the specified instance. Note that if the instance does not exist or is no longer running, we must return ("", cloudprovider.InstanceNotFound) (Implementer Note): This is used by kubelet. Kubelet will label the node. Real log from kubelet:

Adding node label from cloud provider: beta.kubernetes.io/instance-type=[value]

func (*Cloud) InstanceTypeByProviderID Uses

func (az *Cloud) InstanceTypeByProviderID(ctx context.Context, providerID string) (string, error)

InstanceTypeByProviderID returns the cloudprovider instance type of the node with the specified unique providerID This method will not be called from the node that is requesting this ID. i.e. metadata service and other local methods cannot be used here

func (*Cloud) Instances Uses

func (az *Cloud) Instances() (cloudprovider.Instances, bool)

Instances returns an instances interface. Also returns true if the interface is supported, false otherwise.

func (*Cloud) InstancesV2 Uses

func (az *Cloud) InstancesV2() (cloudprovider.InstancesV2, bool)

InstancesV2 returns an instancesV2 interface. Also returns true if the interface is supported, false otherwise.

func (*Cloud) IsNodeUnmanaged Uses

func (az *Cloud) IsNodeUnmanaged(nodeName string) (bool, error)

IsNodeUnmanaged returns true if the node is not managed by Azure cloud provider. Those nodes includes on-prem or VMs from other clouds. They will not be added to load balancer backends. Azure routes and managed disks are also not supported for them.

func (*Cloud) IsNodeUnmanagedByProviderID Uses

func (az *Cloud) IsNodeUnmanagedByProviderID(providerID string) bool

IsNodeUnmanagedByProviderID returns true if the node is not managed by Azure cloud provider. All managed node's providerIDs are in format 'azure:///subscriptions/<id>/resourceGroups/<rg>/providers/Microsoft.Compute/.*'

func (*Cloud) ListLB Uses

func (az *Cloud) ListLB(service *v1.Service) ([]network.LoadBalancer, error)

ListLB invokes az.LoadBalancerClient.List with exponential backoff retry

func (*Cloud) ListPIP Uses

func (az *Cloud) ListPIP(service *v1.Service, pipResourceGroup string) ([]network.PublicIPAddress, error)

ListPIP list the PIP resources in the given resource group

func (*Cloud) ListRoutes Uses

func (az *Cloud) ListRoutes(ctx context.Context, clusterName string) ([]*cloudprovider.Route, error)

ListRoutes lists all managed routes that belong to the specified clusterName

func (*Cloud) ListVirtualMachines Uses

func (az *Cloud) ListVirtualMachines(resourceGroup string) ([]compute.VirtualMachine, error)

ListVirtualMachines invokes az.VirtualMachinesClient.List with exponential backoff retry

func (*Cloud) LoadBalancer Uses

func (az *Cloud) LoadBalancer() (cloudprovider.LoadBalancer, bool)

LoadBalancer returns a balancer interface. Also returns true if the interface is supported, false otherwise.

func (*Cloud) NodeAddresses Uses

func (az *Cloud) NodeAddresses(ctx context.Context, name types.NodeName) ([]v1.NodeAddress, error)

NodeAddresses returns the addresses of the specified instance.

func (*Cloud) NodeAddressesByProviderID Uses

func (az *Cloud) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error)

NodeAddressesByProviderID returns the node addresses of an instances with the specified unique providerID This method will not be called from the node that is requesting this ID. i.e. metadata service and other local methods cannot be used here

func (*Cloud) ProviderName Uses

func (az *Cloud) ProviderName() string

ProviderName returns the cloud provider ID.

func (*Cloud) RequestBackoff Uses

func (az *Cloud) RequestBackoff() (resourceRequestBackoff wait.Backoff)

RequestBackoff if backoff is disabled in cloud provider it returns a new Backoff object steps = 1 This is to make sure that the requested command executes at least once

func (*Cloud) ResizeFileShare Uses

func (az *Cloud) ResizeFileShare(resourceGroup, accountName, name string, sizeGiB int) error

ResizeFileShare resizes a file share

func (*Cloud) Routes Uses

func (az *Cloud) Routes() (cloudprovider.Routes, bool)

Routes returns a routes interface along with whether the interface is supported.

func (*Cloud) SetInformers Uses

func (az *Cloud) SetInformers(informerFactory informers.SharedInformerFactory)

SetInformers sets informers for Azure cloud provider.

func (*Cloud) ShouldNodeExcludedFromLoadBalancer Uses

func (az *Cloud) ShouldNodeExcludedFromLoadBalancer(node *v1.Node) bool

ShouldNodeExcludedFromLoadBalancer returns true if node is unmanaged or in external resource group.

func (*Cloud) UpdateLoadBalancer Uses

func (az *Cloud) UpdateLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) error

UpdateLoadBalancer updates hosts under the specified load balancer.

func (*Cloud) Zones Uses

func (az *Cloud) Zones() (cloudprovider.Zones, bool)

Zones returns a zones interface. Also returns true if the interface is supported, false otherwise.

type CloudProviderRateLimitConfig Uses

type CloudProviderRateLimitConfig struct {
    // The default rate limit config options.
    azclients.RateLimitConfig

    // Rate limit config for each clients. Values would override default settings above.
    RouteRateLimit                  *azclients.RateLimitConfig `json:"routeRateLimit,omitempty" yaml:"routeRateLimit,omitempty"`
    SubnetsRateLimit                *azclients.RateLimitConfig `json:"subnetsRateLimit,omitempty" yaml:"subnetsRateLimit,omitempty"`
    InterfaceRateLimit              *azclients.RateLimitConfig `json:"interfaceRateLimit,omitempty" yaml:"interfaceRateLimit,omitempty"`
    RouteTableRateLimit             *azclients.RateLimitConfig `json:"routeTableRateLimit,omitempty" yaml:"routeTableRateLimit,omitempty"`
    LoadBalancerRateLimit           *azclients.RateLimitConfig `json:"loadBalancerRateLimit,omitempty" yaml:"loadBalancerRateLimit,omitempty"`
    PublicIPAddressRateLimit        *azclients.RateLimitConfig `json:"publicIPAddressRateLimit,omitempty" yaml:"publicIPAddressRateLimit,omitempty"`
    SecurityGroupRateLimit          *azclients.RateLimitConfig `json:"securityGroupRateLimit,omitempty" yaml:"securityGroupRateLimit,omitempty"`
    VirtualMachineRateLimit         *azclients.RateLimitConfig `json:"virtualMachineRateLimit,omitempty" yaml:"virtualMachineRateLimit,omitempty"`
    StorageAccountRateLimit         *azclients.RateLimitConfig `json:"storageAccountRateLimit,omitempty" yaml:"storageAccountRateLimit,omitempty"`
    DiskRateLimit                   *azclients.RateLimitConfig `json:"diskRateLimit,omitempty" yaml:"diskRateLimit,omitempty"`
    SnapshotRateLimit               *azclients.RateLimitConfig `json:"snapshotRateLimit,omitempty" yaml:"snapshotRateLimit,omitempty"`
    VirtualMachineScaleSetRateLimit *azclients.RateLimitConfig `json:"virtualMachineScaleSetRateLimit,omitempty" yaml:"virtualMachineScaleSetRateLimit,omitempty"`
    VirtualMachineSizeRateLimit     *azclients.RateLimitConfig `json:"virtualMachineSizesRateLimit,omitempty" yaml:"virtualMachineSizesRateLimit,omitempty"`
}

CloudProviderRateLimitConfig indicates the rate limit config for each clients.

type ComputeMetadata Uses

type ComputeMetadata struct {
    Environment    string `json:"azEnvironment,omitempty"`
    SKU            string `json:"sku,omitempty"`
    Name           string `json:"name,omitempty"`
    Zone           string `json:"zone,omitempty"`
    VMSize         string `json:"vmSize,omitempty"`
    OSType         string `json:"osType,omitempty"`
    Location       string `json:"location,omitempty"`
    FaultDomain    string `json:"platformFaultDomain,omitempty"`
    UpdateDomain   string `json:"platformUpdateDomain,omitempty"`
    ResourceGroup  string `json:"resourceGroupName,omitempty"`
    VMScaleSetName string `json:"vmScaleSetName,omitempty"`
    SubscriptionID string `json:"subscriptionId,omitempty"`
}

ComputeMetadata represents compute information

type Config Uses

type Config struct {
    auth.AzureAuthConfig
    CloudProviderRateLimitConfig

    // The name of the resource group that the cluster is deployed in
    ResourceGroup string `json:"resourceGroup,omitempty" yaml:"resourceGroup,omitempty"`
    // The location of the resource group that the cluster is deployed in
    Location string `json:"location,omitempty" yaml:"location,omitempty"`
    // The name of the VNet that the cluster is deployed in
    VnetName string `json:"vnetName,omitempty" yaml:"vnetName,omitempty"`
    // The name of the resource group that the Vnet is deployed in
    VnetResourceGroup string `json:"vnetResourceGroup,omitempty" yaml:"vnetResourceGroup,omitempty"`
    // The name of the subnet that the cluster is deployed in
    SubnetName string `json:"subnetName,omitempty" yaml:"subnetName,omitempty"`
    // The name of the security group attached to the cluster's subnet
    SecurityGroupName string `json:"securityGroupName,omitempty" yaml:"securityGroupName,omitempty"`
    // The name of the resource group that the security group is deployed in
    SecurityGroupResourceGroup string `json:"securityGroupResourceGroup,omitempty" yaml:"securityGroupResourceGroup,omitempty"`
    // (Optional in 1.6) The name of the route table attached to the subnet that the cluster is deployed in
    RouteTableName string `json:"routeTableName,omitempty" yaml:"routeTableName,omitempty"`
    // The name of the resource group that the RouteTable is deployed in
    RouteTableResourceGroup string `json:"routeTableResourceGroup,omitempty" yaml:"routeTableResourceGroup,omitempty"`
    // (Optional) The name of the availability set that should be used as the load balancer backend
    // If this is set, the Azure cloudprovider will only add nodes from that availability set to the load
    // balancer backend pool. If this is not set, and multiple agent pools (availability sets) are used, then
    // the cloudprovider will try to add all nodes to a single backend pool which is forbidden.
    // In other words, if you use multiple agent pools (availability sets), you MUST set this field.
    PrimaryAvailabilitySetName string `json:"primaryAvailabilitySetName,omitempty" yaml:"primaryAvailabilitySetName,omitempty"`
    // The type of azure nodes. Candidate values are: vmss and standard.
    // If not set, it will be default to standard.
    VMType string `json:"vmType,omitempty" yaml:"vmType,omitempty"`
    // The name of the scale set that should be used as the load balancer backend.
    // If this is set, the Azure cloudprovider will only add nodes from that scale set to the load
    // balancer backend pool. If this is not set, and multiple agent pools (scale sets) are used, then
    // the cloudprovider will try to add all nodes to a single backend pool which is forbidden.
    // In other words, if you use multiple agent pools (scale sets), you MUST set this field.
    PrimaryScaleSetName string `json:"primaryScaleSetName,omitempty" yaml:"primaryScaleSetName,omitempty"`
    // Enable exponential backoff to manage resource request retries
    CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty" yaml:"cloudProviderBackoff,omitempty"`
    // Backoff retry limit
    CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries,omitempty" yaml:"cloudProviderBackoffRetries,omitempty"`
    // Backoff exponent
    CloudProviderBackoffExponent float64 `json:"cloudProviderBackoffExponent,omitempty" yaml:"cloudProviderBackoffExponent,omitempty"`
    // Backoff duration
    CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration,omitempty" yaml:"cloudProviderBackoffDuration,omitempty"`
    // Backoff jitter
    CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter,omitempty" yaml:"cloudProviderBackoffJitter,omitempty"`
    // Use instance metadata service where possible
    UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty" yaml:"useInstanceMetadata,omitempty"`

    // Sku of Load Balancer and Public IP. Candidate values are: basic and standard.
    // If not set, it will be default to basic.
    LoadBalancerSku string `json:"loadBalancerSku,omitempty" yaml:"loadBalancerSku,omitempty"`
    // ExcludeMasterFromStandardLB excludes master nodes from standard load balancer.
    // If not set, it will be default to true.
    ExcludeMasterFromStandardLB *bool `json:"excludeMasterFromStandardLB,omitempty" yaml:"excludeMasterFromStandardLB,omitempty"`
    // DisableOutboundSNAT disables the outbound SNAT for public load balancer rules.
    // It should only be set when loadBalancerSku is standard. If not set, it will be default to false.
    DisableOutboundSNAT *bool `json:"disableOutboundSNAT,omitempty" yaml:"disableOutboundSNAT,omitempty"`

    // Maximum allowed LoadBalancer Rule Count is the limit enforced by Azure Load balancer
    MaximumLoadBalancerRuleCount int `json:"maximumLoadBalancerRuleCount,omitempty" yaml:"maximumLoadBalancerRuleCount,omitempty"`

    // The cloud configure type for Azure cloud provider. Supported values are file, secret and merge.
    CloudConfigType cloudConfigType `json:"cloudConfigType,omitempty" yaml:"cloudConfigType,omitempty"`

    // LoadBalancerName determines the specific name of the load balancer user want to use, working with
    // LoadBalancerResourceGroup
    LoadBalancerName string `json:"loadBalancerName,omitempty" yaml:"loadBalancerName,omitempty"`
    // LoadBalancerResourceGroup determines the specific resource group of the load balancer user want to use, working
    // with LoadBalancerName
    LoadBalancerResourceGroup string `json:"loadBalancerResourceGroup,omitempty" yaml:"loadBalancerResourceGroup,omitempty"`
    // PreConfiguredBackendPoolLoadBalancerTypes determines whether the LoadBalancer BackendPool has been preconfigured.
    // Candidate values are:
    //   "": exactly with today (not pre-configured for any LBs)
    //   "internal": for internal LoadBalancer
    //   "external": for external LoadBalancer
    //   "all": for both internal and external LoadBalancer
    PreConfiguredBackendPoolLoadBalancerTypes string `json:"preConfiguredBackendPoolLoadBalancerTypes,omitempty" yaml:"preConfiguredBackendPoolLoadBalancerTypes,omitempty"`

    // AvailabilitySetNodesCacheTTLInSeconds sets the Cache TTL for availabilitySetNodesCache
    // if not set, will use default value
    AvailabilitySetNodesCacheTTLInSeconds int `json:"availabilitySetNodesCacheTTLInSeconds,omitempty" yaml:"availabilitySetNodesCacheTTLInSeconds,omitempty"`
    // VmssCacheTTLInSeconds sets the cache TTL for VMSS
    VmssCacheTTLInSeconds int `json:"vmssCacheTTLInSeconds,omitempty" yaml:"vmssCacheTTLInSeconds,omitempty"`
    // VmssVirtualMachinesCacheTTLInSeconds sets the cache TTL for vmssVirtualMachines
    VmssVirtualMachinesCacheTTLInSeconds int `json:"vmssVirtualMachinesCacheTTLInSeconds,omitempty" yaml:"vmssVirtualMachinesCacheTTLInSeconds,omitempty"`
    // VmCacheTTLInSeconds sets the cache TTL for vm
    VMCacheTTLInSeconds int `json:"vmCacheTTLInSeconds,omitempty" yaml:"vmCacheTTLInSeconds,omitempty"`
    // LoadBalancerCacheTTLInSeconds sets the cache TTL for load balancer
    LoadBalancerCacheTTLInSeconds int `json:"loadBalancerCacheTTLInSeconds,omitempty" yaml:"loadBalancerCacheTTLInSeconds,omitempty"`
    // NsgCacheTTLInSeconds sets the cache TTL for network security group
    NsgCacheTTLInSeconds int `json:"nsgCacheTTLInSeconds,omitempty" yaml:"nsgCacheTTLInSeconds,omitempty"`
    // RouteTableCacheTTLInSeconds sets the cache TTL for route table
    RouteTableCacheTTLInSeconds int `json:"routeTableCacheTTLInSeconds,omitempty" yaml:"routeTableCacheTTLInSeconds,omitempty"`

    // DisableAvailabilitySetNodes disables VMAS nodes support when "VMType" is set to "vmss".
    DisableAvailabilitySetNodes bool `json:"disableAvailabilitySetNodes,omitempty" yaml:"disableAvailabilitySetNodes,omitempty"`
}

Config holds the configuration parsed from the --cloud-config flag All fields are required unless otherwise specified NOTE: Cloud config files should follow the same Kubernetes deprecation policy as flags or CLIs. Config fields should not change behavior in incompatible ways and should be deprecated for at least 2 release prior to removing. See https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecating-a-flag-or-cli for more details.

type IPAddress Uses

type IPAddress struct {
    PrivateIP string `json:"privateIpAddress"`
    PublicIP  string `json:"publicIpAddress"`
}

IPAddress represents IP address information.

type InstanceMetadata Uses

type InstanceMetadata struct {
    Compute *ComputeMetadata `json:"compute,omitempty"`
    Network *NetworkMetadata `json:"network,omitempty"`
}

InstanceMetadata represents instance information.

type InstanceMetadataService Uses

type InstanceMetadataService struct {
    // contains filtered or unexported fields
}

InstanceMetadataService knows how to query the Azure instance metadata server.

func NewInstanceMetadataService Uses

func NewInstanceMetadataService(metadataURL string) (*InstanceMetadataService, error)

NewInstanceMetadataService creates an instance of the InstanceMetadataService accessor object.

func (*InstanceMetadataService) GetMetadata Uses

func (ims *InstanceMetadataService) GetMetadata(crt azcache.AzureCacheReadType) (*InstanceMetadata, error)

GetMetadata gets instance metadata from cache. crt determines if we can get data from stalled cache/need fresh if cache expired.

type ManagedDiskController Uses

type ManagedDiskController struct {
    // contains filtered or unexported fields
}

ManagedDiskController : managed disk controller struct

func (*ManagedDiskController) CreateManagedDisk Uses

func (c *ManagedDiskController) CreateManagedDisk(options *ManagedDiskOptions) (string, error)

CreateManagedDisk : create managed disk

func (*ManagedDiskController) DeleteManagedDisk Uses

func (c *ManagedDiskController) DeleteManagedDisk(diskURI string) error

DeleteManagedDisk : delete managed disk

func (*ManagedDiskController) GetDisk Uses

func (c *ManagedDiskController) GetDisk(resourceGroup, diskName string) (string, string, error)

GetDisk return: disk provisionState, diskID, error

func (*ManagedDiskController) ResizeDisk Uses

func (c *ManagedDiskController) ResizeDisk(diskURI string, oldSize resource.Quantity, newSize resource.Quantity) (resource.Quantity, error)

ResizeDisk Expand the disk to new size

type ManagedDiskOptions Uses

type ManagedDiskOptions struct {
    // The name of the disk.
    DiskName string
    // The size in GB.
    SizeGB int
    // The name of PVC.
    PVCName string
    // The name of resource group.
    ResourceGroup string
    // The AvailabilityZone to create the disk.
    AvailabilityZone string
    // The tags of the disk.
    Tags map[string]string
    // The SKU of storage account.
    StorageAccountType compute.DiskStorageAccountTypes
    // IOPS Caps for UltraSSD disk
    DiskIOPSReadWrite string
    // Throughput Cap (MBps) for UltraSSD disk
    DiskMBpsReadWrite string
    // if SourceResourceID is not empty, then it's a disk copy operation(for snapshot)
    SourceResourceID string
    // The type of source
    SourceType string
    // ResourceId of the disk encryption set to use for enabling encryption at rest.
    DiskEncryptionSetID string
    // The maximum number of VMs that can attach to the disk at the same time. Value greater than one indicates a disk that can be mounted on multiple VMs at the same time.
    MaxShares int32
}

ManagedDiskOptions specifies the options of managed disks.

type NetworkData Uses

type NetworkData struct {
    IPAddress []IPAddress `json:"ipAddress"`
    Subnet    []Subnet    `json:"subnet"`
}

NetworkData contains IP information for a network.

type NetworkInterface Uses

type NetworkInterface struct {
    IPV4 NetworkData `json:"ipv4"`
    IPV6 NetworkData `json:"ipv6"`
    MAC  string      `json:"macAddress"`
}

NetworkInterface represents an instances network interface.

type NetworkMetadata Uses

type NetworkMetadata struct {
    Interface []NetworkInterface `json:"interface"`
}

NetworkMetadata contains metadata about an instance's network

type Subnet Uses

type Subnet struct {
    Address string `json:"address"`
    Prefix  string `json:"prefix"`
}

Subnet represents subnet information.

type VMSet Uses

type VMSet interface {
    // GetInstanceIDByNodeName gets the cloud provider ID by node name.
    // It must return ("", cloudprovider.InstanceNotFound) if the instance does
    // not exist or is no longer running.
    GetInstanceIDByNodeName(name string) (string, error)
    // GetInstanceTypeByNodeName gets the instance type by node name.
    GetInstanceTypeByNodeName(name string) (string, error)
    // GetIPByNodeName gets machine private IP and public IP by node name.
    GetIPByNodeName(name string) (string, string, error)
    // GetPrimaryInterface gets machine primary network interface by node name.
    GetPrimaryInterface(nodeName string) (network.Interface, error)
    // GetNodeNameByProviderID gets the node name by provider ID.
    GetNodeNameByProviderID(providerID string) (types.NodeName, error)

    // GetZoneByNodeName gets cloudprovider.Zone by node name.
    GetZoneByNodeName(name string) (cloudprovider.Zone, error)

    // GetPrimaryVMSetName returns the VM set name depending on the configured vmType.
    // It returns config.PrimaryScaleSetName for vmss and config.PrimaryAvailabilitySetName for standard vmType.
    GetPrimaryVMSetName() string
    // GetVMSetNames selects all possible availability sets or scale sets
    // (depending vmType configured) for service load balancer, if the service has
    // no loadbalancer mode annotation returns the primary VMSet. If service annotation
    // for loadbalancer exists then return the eligible VMSet.
    GetVMSetNames(service *v1.Service, nodes []*v1.Node) (availabilitySetNames *[]string, err error)
    // EnsureHostsInPool ensures the given Node's primary IP configurations are
    // participating in the specified LoadBalancer Backend Pool.
    EnsureHostsInPool(service *v1.Service, nodes []*v1.Node, backendPoolID string, vmSetName string, isInternal bool) error
    // EnsureHostInPool ensures the given VM's Primary NIC's Primary IP Configuration is
    // participating in the specified LoadBalancer Backend Pool.
    EnsureHostInPool(service *v1.Service, nodeName types.NodeName, backendPoolID string, vmSetName string, isInternal bool) (string, string, string, *compute.VirtualMachineScaleSetVM, error)
    // EnsureBackendPoolDeleted ensures the loadBalancer backendAddressPools deleted from the specified nodes.
    EnsureBackendPoolDeleted(service *v1.Service, backendPoolID, vmSetName string, backendAddressPools *[]network.BackendAddressPool) error

    // AttachDisk attaches a vhd to vm. The vhd must exist, can be identified by diskName, diskURI, and lun.
    AttachDisk(isManagedDisk bool, diskName, diskURI string, nodeName types.NodeName, lun int32, cachingMode compute.CachingTypes, diskEncryptionSetID string, writeAcceleratorEnabled bool) error
    // DetachDisk detaches a vhd from host. The vhd can be identified by diskName or diskURI.
    DetachDisk(diskName, diskURI string, nodeName types.NodeName) error
    // GetDataDisks gets a list of data disks attached to the node.
    GetDataDisks(nodeName types.NodeName, string azcache.AzureCacheReadType) ([]compute.DataDisk, error)

    // GetPowerStatusByNodeName returns the power state of the specified node.
    GetPowerStatusByNodeName(name string) (string, error)

    // GetPrivateIPsByNodeName returns a slice of all private ips assigned to node (ipv6 and ipv4)
    GetPrivateIPsByNodeName(name string) ([]string, error)
}

VMSet defines functions all vmsets (including scale set and availability set) should be implemented. Don't forget to run the following command to generate the mock client: mockgen -source=$GOPATH/src/k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers/azure/azure_vmsets.go -package=mockvmsets VMSet > $GOPATH/src/k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers/azure/mockvmsets/azure_mock_vmsets.go

Directories

PathSynopsis
authPackage auth provides a general libraty to authorize Azure ARM clients.
cachePackage cache is an implementation of Azure caches.
clientsPackage clients contains a set of Azure ARM clients.
clients/armclientPackage armclient implements the client for ARM.
clients/armclient/mockarmclientPackage mockarmclient implements the mock client for ARM.
clients/containerserviceclientPackage containerserviceclient implements the client for azure container service.
clients/diskclientPackage diskclient implements the client for Disks.
clients/diskclient/mockdiskclientPackage mockdiskclient implements the mock client for Disks.
clients/fileclientPackage fileclient implements the client for azure file.
clients/fileclient/mockfileclientPackage mockfileclient implements the mock client for azure file.
clients/interfaceclientPackage interfaceclient implements the client for network interfaces.
clients/interfaceclient/mockinterfaceclientPackage mockinterfaceclient implements the mock client for network interfaces.
clients/loadbalancerclientPackage loadbalancerclient implements the client for LoadBalancer.
clients/loadbalancerclient/mockloadbalancerclientPackage mockloadbalancerclient implements the mock client for LoadBalancer.
clients/publicipclientPackage publicipclient implements the client for PublicIPAddress.
clients/publicipclient/mockpublicipclientPackage mockpublicipclient implements the mock client for PublicIPAddress.
clients/routeclientPackage routeclient implements the client for Route.
clients/routeclient/mockrouteclientPackage mockrouteclient implements the mock client for Route.
clients/routetableclientPackage routetableclient implements the client for RouteTable.
clients/routetableclient/mockroutetableclientPackage mockroutetableclient implements the mock client for RouteTable.
clients/securitygroupclientPackage securitygroupclient implements the client for SecurityGroups.
clients/securitygroupclient/mocksecuritygroupclientPackage mocksecuritygroupclient implements the mock client for SecurityGroups.
clients/snapshotclientPackage snapshotclient implements the client for Snapshots.
clients/snapshotclient/mocksnapshotclientPackage mocksnapshotclient implements the mock client for Snapshots.
clients/storageaccountclientPackage storageaccountclient implements the client for StorageAccounts.
clients/storageaccountclient/mockstorageaccountclientPackage mockstorageaccountclient implements the mock client for StorageAccounts.
clients/subnetclientPackage subnetclient implements the client for Subnet.
clients/subnetclient/mocksubnetclientPackage mocksubnetclient implements the mock client for Subnet.
clients/vmclientPackage vmclient implements the client for VirtualMachines.
clients/vmclient/mockvmclientPackage mockvmclient implements the mock client for VirtualMachines.
clients/vmsizeclientPackage vmsizeclient implements the client for VirtualMachineSizes.
clients/vmssclientPackage vmssclient implements the client for VMSS.
clients/vmssclient/mockvmssclientPackage mockvmssclient implements the mock client for VMSS.
clients/vmssvmclientPackage vmssvmclient implements the client for VirtualMachineScaleSetVM.
clients/vmssvmclient/mockvmssvmclientPackage mockvmssvmclient implements the mock client for VirtualMachineScaleSetVM.
metricsPackage metrics is an implementation of Azure CloudProvider metrics.
mockvmsetsPackage mockvmsets implements the mock client for VMSet.
retryPackage retry defines a general library to handle errors and retries for various Azure clients.

Package azure imports 89 packages (graph) and is imported by 72 packages. Updated 2020-07-14. Refresh now. Tools for package owners.