Merge pull request #77491 from andyzhangx/azuredisk-metrics

add operation name for vm/vmss update operations in prometheus metrics
This commit is contained in:
Kubernetes Prow Robot 2019-05-13 05:02:20 -07:00 committed by GitHub
commit 1c689c2f49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 63 additions and 74 deletions

View File

@ -550,25 +550,13 @@ func (az *Cloud) deleteRouteWithRetry(routeName string) error {
})
}
// CreateOrUpdateVMWithRetry invokes az.VirtualMachinesClient.CreateOrUpdate with exponential backoff retry
func (az *Cloud) CreateOrUpdateVMWithRetry(resourceGroup, vmName string, newVM compute.VirtualMachine) error {
return wait.ExponentialBackoff(az.requestBackoff(), func() (bool, error) {
ctx, cancel := getContextWithCancel()
defer cancel()
resp, err := az.VirtualMachinesClient.CreateOrUpdate(ctx, resourceGroup, vmName, newVM)
klog.V(10).Infof("VirtualMachinesClient.CreateOrUpdate(%s): end", vmName)
return az.processHTTPRetryResponse(nil, "", resp, err)
})
}
// UpdateVmssVMWithRetry invokes az.VirtualMachineScaleSetVMsClient.Update with exponential backoff retry
func (az *Cloud) UpdateVmssVMWithRetry(resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM) error {
func (az *Cloud) UpdateVmssVMWithRetry(resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM, source string) error {
return wait.ExponentialBackoff(az.requestBackoff(), func() (bool, error) {
ctx, cancel := getContextWithCancel()
defer cancel()
resp, err := az.VirtualMachineScaleSetVMsClient.Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters)
resp, err := az.VirtualMachineScaleSetVMsClient.Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters, source)
klog.V(10).Infof("VirtualMachinesClient.CreateOrUpdate(%s,%s): end", VMScaleSetName, instanceID)
return az.processHTTPRetryResponse(nil, "", resp, err)
})

View File

@ -48,7 +48,7 @@ func createRateLimitErr(isWrite bool, opName string) error {
// VirtualMachinesClient defines needed functions for azure compute.VirtualMachinesClient
type VirtualMachinesClient interface {
CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine) (resp *http.Response, err error)
CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine, source string) (resp *http.Response, err error)
Get(ctx context.Context, resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error)
List(ctx context.Context, resourceGroupName string) (result []compute.VirtualMachine, err error)
}
@ -103,7 +103,7 @@ type VirtualMachineScaleSetVMsClient interface {
Get(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result compute.VirtualMachineScaleSetVM, err error)
GetInstanceView(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result compute.VirtualMachineScaleSetVMInstanceView, err error)
List(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (result []compute.VirtualMachineScaleSetVM, err error)
Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM) (resp *http.Response, err error)
Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM, source string) (resp *http.Response, err error)
}
// RoutesClient defines needed functions for azure network.RoutesClient
@ -183,7 +183,7 @@ func newAzVirtualMachinesClient(config *azClientConfig) *azVirtualMachinesClient
}
}
func (az *azVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine) (resp *http.Response, err error) {
func (az *azVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine, source string) (resp *http.Response, err error) {
// /* Write rate limiting */
if !az.rateLimiterWriter.TryAccept() {
err = createRateLimitErr(true, "VMCreateOrUpdate")
@ -195,7 +195,7 @@ func (az *azVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceG
klog.V(10).Infof("azVirtualMachinesClient.CreateOrUpdate(%q, %q): end", resourceGroupName, VMName)
}()
mc := newMetricContext("vm", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vm", "create_or_update", resourceGroupName, az.client.SubscriptionID, source)
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, VMName, parameters)
if err != nil {
return future.Response(), err
@ -217,7 +217,7 @@ func (az *azVirtualMachinesClient) Get(ctx context.Context, resourceGroupName st
klog.V(10).Infof("azVirtualMachinesClient.Get(%q, %q): end", resourceGroupName, VMName)
}()
mc := newMetricContext("vm", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vm", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, VMName, expand)
mc.Observe(err)
return
@ -234,7 +234,7 @@ func (az *azVirtualMachinesClient) List(ctx context.Context, resourceGroupName s
klog.V(10).Infof("azVirtualMachinesClient.List(%q): end", resourceGroupName)
}()
mc := newMetricContext("vm", "list", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vm", "list", resourceGroupName, az.client.SubscriptionID, "")
iterator, err := az.client.ListComplete(ctx, resourceGroupName)
mc.Observe(err)
if err != nil {
@ -290,7 +290,7 @@ func (az *azInterfacesClient) CreateOrUpdate(ctx context.Context, resourceGroupN
klog.V(10).Infof("azInterfacesClient.CreateOrUpdate(%q,%q): end", resourceGroupName, networkInterfaceName)
}()
mc := newMetricContext("interfaces", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("interfaces", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, networkInterfaceName, parameters)
if err != nil {
return future.Response(), mc.Observe(err)
@ -311,7 +311,7 @@ func (az *azInterfacesClient) Get(ctx context.Context, resourceGroupName string,
klog.V(10).Infof("azInterfacesClient.Get(%q,%q): end", resourceGroupName, networkInterfaceName)
}()
mc := newMetricContext("interfaces", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("interfaces", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, networkInterfaceName, expand)
mc.Observe(err)
return
@ -328,7 +328,7 @@ func (az *azInterfacesClient) GetVirtualMachineScaleSetNetworkInterface(ctx cont
klog.V(10).Infof("azInterfacesClient.GetVirtualMachineScaleSetNetworkInterface(%q,%q,%q,%q): end", resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName)
}()
mc := newMetricContext("interfaces", "get_vmss_ni", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("interfaces", "get_vmss_ni", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.GetVirtualMachineScaleSetNetworkInterface(ctx, resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand)
mc.Observe(err)
return
@ -371,7 +371,7 @@ func (az *azLoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGro
klog.V(10).Infof("azLoadBalancersClient.CreateOrUpdate(%q,%q): end", resourceGroupName, loadBalancerName)
}()
mc := newMetricContext("load_balancers", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("load_balancers", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
req, err := az.createOrUpdatePreparer(ctx, resourceGroupName, loadBalancerName, parameters, etag)
if err != nil {
return nil, mc.Observe(err)
@ -425,7 +425,7 @@ func (az *azLoadBalancersClient) Delete(ctx context.Context, resourceGroupName s
klog.V(10).Infof("azLoadBalancersClient.Delete(%q,%q): end", resourceGroupName, loadBalancerName)
}()
mc := newMetricContext("load_balancers", "delete", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("load_balancers", "delete", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.Delete(ctx, resourceGroupName, loadBalancerName)
if err != nil {
return future.Response(), mc.Observe(err)
@ -446,7 +446,7 @@ func (az *azLoadBalancersClient) Get(ctx context.Context, resourceGroupName stri
klog.V(10).Infof("azLoadBalancersClient.Get(%q,%q): end", resourceGroupName, loadBalancerName)
}()
mc := newMetricContext("load_balancers", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("load_balancers", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, loadBalancerName, expand)
mc.Observe(err)
return
@ -463,7 +463,7 @@ func (az *azLoadBalancersClient) List(ctx context.Context, resourceGroupName str
klog.V(10).Infof("azLoadBalancersClient.List(%q): end", resourceGroupName)
}()
mc := newMetricContext("load_balancers", "list", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("load_balancers", "list", resourceGroupName, az.client.SubscriptionID, "")
iterator, err := az.client.ListComplete(ctx, resourceGroupName)
mc.Observe(err)
if err != nil {
@ -519,7 +519,7 @@ func (az *azPublicIPAddressesClient) CreateOrUpdate(ctx context.Context, resourc
klog.V(10).Infof("azPublicIPAddressesClient.CreateOrUpdate(%q,%q): end", resourceGroupName, publicIPAddressName)
}()
mc := newMetricContext("public_ip_addresses", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("public_ip_addresses", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, publicIPAddressName, parameters)
if err != nil {
return future.Response(), mc.Observe(err)
@ -541,7 +541,7 @@ func (az *azPublicIPAddressesClient) Delete(ctx context.Context, resourceGroupNa
klog.V(10).Infof("azPublicIPAddressesClient.Delete(%q,%q): end", resourceGroupName, publicIPAddressName)
}()
mc := newMetricContext("public_ip_addresses", "delete", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("public_ip_addresses", "delete", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.Delete(ctx, resourceGroupName, publicIPAddressName)
if err != nil {
return future.Response(), mc.Observe(err)
@ -562,7 +562,7 @@ func (az *azPublicIPAddressesClient) Get(ctx context.Context, resourceGroupName
klog.V(10).Infof("azPublicIPAddressesClient.Get(%q,%q): end", resourceGroupName, publicIPAddressName)
}()
mc := newMetricContext("public_ip_addresses", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("public_ip_addresses", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, publicIPAddressName, expand)
mc.Observe(err)
return
@ -578,7 +578,7 @@ func (az *azPublicIPAddressesClient) List(ctx context.Context, resourceGroupName
klog.V(10).Infof("azPublicIPAddressesClient.List(%q): end", resourceGroupName)
}()
mc := newMetricContext("public_ip_addresses", "list", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("public_ip_addresses", "list", resourceGroupName, az.client.SubscriptionID, "")
iterator, err := az.client.ListComplete(ctx, resourceGroupName)
mc.Observe(err)
if err != nil {
@ -634,7 +634,7 @@ func (az *azSubnetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName
klog.V(10).Infof("azSubnetsClient.CreateOrUpdate(%q,%q,%q): end", resourceGroupName, virtualNetworkName, subnetName)
}()
mc := newMetricContext("subnets", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("subnets", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, virtualNetworkName, subnetName, subnetParameters)
if err != nil {
return future.Response(), mc.Observe(err)
@ -656,7 +656,7 @@ func (az *azSubnetsClient) Delete(ctx context.Context, resourceGroupName string,
klog.V(10).Infof("azSubnetsClient.Delete(%q,%q,%q): end", resourceGroupName, virtualNetworkName, subnetName)
}()
mc := newMetricContext("subnets", "delete", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("subnets", "delete", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.Delete(ctx, resourceGroupName, virtualNetworkName, subnetName)
if err != nil {
return future.Response(), mc.Observe(err)
@ -677,7 +677,7 @@ func (az *azSubnetsClient) Get(ctx context.Context, resourceGroupName string, vi
klog.V(10).Infof("azSubnetsClient.Get(%q,%q,%q): end", resourceGroupName, virtualNetworkName, subnetName)
}()
mc := newMetricContext("subnets", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("subnets", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, virtualNetworkName, subnetName, expand)
mc.Observe(err)
return
@ -693,7 +693,7 @@ func (az *azSubnetsClient) List(ctx context.Context, resourceGroupName string, v
klog.V(10).Infof("azSubnetsClient.List(%q,%q): end", resourceGroupName, virtualNetworkName)
}()
mc := newMetricContext("subnets", "list", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("subnets", "list", resourceGroupName, az.client.SubscriptionID, "")
iterator, err := az.client.ListComplete(ctx, resourceGroupName, virtualNetworkName)
mc.Observe(err)
if err != nil {
@ -749,7 +749,7 @@ func (az *azSecurityGroupsClient) CreateOrUpdate(ctx context.Context, resourceGr
klog.V(10).Infof("azSecurityGroupsClient.CreateOrUpdate(%q,%q): end", resourceGroupName, networkSecurityGroupName)
}()
mc := newMetricContext("security_groups", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("security_groups", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
req, err := az.createOrUpdatePreparer(ctx, resourceGroupName, networkSecurityGroupName, parameters, etag)
if err != nil {
return nil, mc.Observe(err)
@ -803,7 +803,7 @@ func (az *azSecurityGroupsClient) Delete(ctx context.Context, resourceGroupName
klog.V(10).Infof("azSecurityGroupsClient.Delete(%q,%q): end", resourceGroupName, networkSecurityGroupName)
}()
mc := newMetricContext("security_groups", "delete", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("security_groups", "delete", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.Delete(ctx, resourceGroupName, networkSecurityGroupName)
if err != nil {
return future.Response(), mc.Observe(err)
@ -824,7 +824,7 @@ func (az *azSecurityGroupsClient) Get(ctx context.Context, resourceGroupName str
klog.V(10).Infof("azSecurityGroupsClient.Get(%q,%q): end", resourceGroupName, networkSecurityGroupName)
}()
mc := newMetricContext("security_groups", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("security_groups", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, networkSecurityGroupName, expand)
mc.Observe(err)
return
@ -840,7 +840,7 @@ func (az *azSecurityGroupsClient) List(ctx context.Context, resourceGroupName st
klog.V(10).Infof("azSecurityGroupsClient.List(%q): end", resourceGroupName)
}()
mc := newMetricContext("security_groups", "list", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("security_groups", "list", resourceGroupName, az.client.SubscriptionID, "")
iterator, err := az.client.ListComplete(ctx, resourceGroupName)
mc.Observe(err)
if err != nil {
@ -895,7 +895,7 @@ func (az *azVirtualMachineScaleSetsClient) Get(ctx context.Context, resourceGrou
klog.V(10).Infof("azVirtualMachineScaleSetsClient.Get(%q,%q): end", resourceGroupName, VMScaleSetName)
}()
mc := newMetricContext("vmss", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vmss", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, VMScaleSetName)
mc.Observe(err)
return
@ -912,7 +912,7 @@ func (az *azVirtualMachineScaleSetsClient) List(ctx context.Context, resourceGro
klog.V(10).Infof("azVirtualMachineScaleSetsClient.List(%q): end", resourceGroupName)
}()
mc := newMetricContext("vmss", "list", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vmss", "list", resourceGroupName, az.client.SubscriptionID, "")
iterator, err := az.client.ListComplete(ctx, resourceGroupName)
mc.Observe(err)
if err != nil {
@ -967,7 +967,7 @@ func (az *azVirtualMachineScaleSetVMsClient) Get(ctx context.Context, resourceGr
klog.V(10).Infof("azVirtualMachineScaleSetVMsClient.Get(%q,%q,%q): end", resourceGroupName, VMScaleSetName, instanceID)
}()
mc := newMetricContext("vmssvm", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vmssvm", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, VMScaleSetName, instanceID)
mc.Observe(err)
return
@ -984,7 +984,7 @@ func (az *azVirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Context
klog.V(10).Infof("azVirtualMachineScaleSetVMsClient.GetInstanceView(%q,%q,%q): end", resourceGroupName, VMScaleSetName, instanceID)
}()
mc := newMetricContext("vmssvm", "get_instance_view", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vmssvm", "get_instance_view", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.GetInstanceView(ctx, resourceGroupName, VMScaleSetName, instanceID)
mc.Observe(err)
return
@ -1001,7 +1001,7 @@ func (az *azVirtualMachineScaleSetVMsClient) List(ctx context.Context, resourceG
klog.V(10).Infof("azVirtualMachineScaleSetVMsClient.List(%q,%q,%q): end", resourceGroupName, virtualMachineScaleSetName, filter)
}()
mc := newMetricContext("vmssvm", "list", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vmssvm", "list", resourceGroupName, az.client.SubscriptionID, "")
iterator, err := az.client.ListComplete(ctx, resourceGroupName, virtualMachineScaleSetName, filter, selectParameter, expand)
mc.Observe(err)
if err != nil {
@ -1020,7 +1020,7 @@ func (az *azVirtualMachineScaleSetVMsClient) List(ctx context.Context, resourceG
return result, nil
}
func (az *azVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM) (resp *http.Response, err error) {
func (az *azVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM, source string) (resp *http.Response, err error) {
if !az.rateLimiterWriter.TryAccept() {
err = createRateLimitErr(true, "VMSSUpdate")
return
@ -1031,7 +1031,7 @@ func (az *azVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourc
klog.V(10).Infof("azVirtualMachineScaleSetVMsClient.Update(%q,%q,%q): end", resourceGroupName, VMScaleSetName, instanceID)
}()
mc := newMetricContext("vmssvm", "update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("vmssvm", "create_or_update", resourceGroupName, az.client.SubscriptionID, source)
future, err := az.client.Update(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters)
if err != nil {
return future.Response(), mc.Observe(err)
@ -1078,7 +1078,7 @@ func (az *azRoutesClient) CreateOrUpdate(ctx context.Context, resourceGroupName
klog.V(10).Infof("azRoutesClient.CreateOrUpdate(%q,%q,%q): end", resourceGroupName, routeTableName, routeName)
}()
mc := newMetricContext("routes", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("routes", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
req, err := az.createOrUpdatePreparer(ctx, resourceGroupName, routeTableName, routeName, routeParameters, etag)
if err != nil {
mc.Observe(err)
@ -1135,7 +1135,7 @@ func (az *azRoutesClient) Delete(ctx context.Context, resourceGroupName string,
klog.V(10).Infof("azRoutesClient.Delete(%q,%q,%q): end", resourceGroupName, routeTableName, routeName)
}()
mc := newMetricContext("routes", "delete", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("routes", "delete", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.Delete(ctx, resourceGroupName, routeTableName, routeName)
if err != nil {
return future.Response(), mc.Observe(err)
@ -1182,7 +1182,7 @@ func (az *azRouteTablesClient) CreateOrUpdate(ctx context.Context, resourceGroup
klog.V(10).Infof("azRouteTablesClient.CreateOrUpdate(%q,%q): end", resourceGroupName, routeTableName)
}()
mc := newMetricContext("route_tables", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("route_tables", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
req, err := az.createOrUpdatePreparer(ctx, resourceGroupName, routeTableName, parameters, etag)
if err != nil {
return nil, mc.Observe(err)
@ -1235,7 +1235,7 @@ func (az *azRouteTablesClient) Get(ctx context.Context, resourceGroupName string
klog.V(10).Infof("azRouteTablesClient.Get(%q,%q): end", resourceGroupName, routeTableName)
}()
mc := newMetricContext("route_tables", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("route_tables", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, routeTableName, expand)
mc.Observe(err)
return
@ -1277,7 +1277,7 @@ func (az *azStorageAccountClient) Create(ctx context.Context, resourceGroupName
klog.V(10).Infof("azStorageAccountClient.Create(%q,%q): end", resourceGroupName, accountName)
}()
mc := newMetricContext("storage_account", "create", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("storage_account", "create", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.Create(ctx, resourceGroupName, accountName, parameters)
if err != nil {
return future.Response(), err
@ -1299,7 +1299,7 @@ func (az *azStorageAccountClient) Delete(ctx context.Context, resourceGroupName
klog.V(10).Infof("azStorageAccountClient.Delete(%q,%q): end", resourceGroupName, accountName)
}()
mc := newMetricContext("storage_account", "delete", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("storage_account", "delete", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Delete(ctx, resourceGroupName, accountName)
mc.Observe(err)
return
@ -1316,7 +1316,7 @@ func (az *azStorageAccountClient) ListKeys(ctx context.Context, resourceGroupNam
klog.V(10).Infof("azStorageAccountClient.ListKeys(%q,%q): end", resourceGroupName, accountName)
}()
mc := newMetricContext("storage_account", "list_keys", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("storage_account", "list_keys", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.ListKeys(ctx, resourceGroupName, accountName)
mc.Observe(err)
return
@ -1333,7 +1333,7 @@ func (az *azStorageAccountClient) ListByResourceGroup(ctx context.Context, resou
klog.V(10).Infof("azStorageAccountClient.ListByResourceGroup(%q): end", resourceGroupName)
}()
mc := newMetricContext("storage_account", "list_by_resource_group", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("storage_account", "list_by_resource_group", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.ListByResourceGroup(ctx, resourceGroupName)
mc.Observe(err)
return
@ -1350,7 +1350,7 @@ func (az *azStorageAccountClient) GetProperties(ctx context.Context, resourceGro
klog.V(10).Infof("azStorageAccountClient.GetProperties(%q,%q): end", resourceGroupName, accountName)
}()
mc := newMetricContext("storage_account", "get_properties", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("storage_account", "get_properties", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.GetProperties(ctx, resourceGroupName, accountName)
mc.Observe(err)
return
@ -1392,7 +1392,7 @@ func (az *azDisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName s
klog.V(10).Infof("azDisksClient.CreateOrUpdate(%q,%q): end", resourceGroupName, diskName)
}()
mc := newMetricContext("disks", "create_or_update", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("disks", "create_or_update", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.CreateOrUpdate(ctx, resourceGroupName, diskName, diskParameter)
if err != nil {
return future.Response(), mc.Observe(err)
@ -1414,7 +1414,7 @@ func (az *azDisksClient) Delete(ctx context.Context, resourceGroupName string, d
klog.V(10).Infof("azDisksClient.Delete(%q,%q): end", resourceGroupName, diskName)
}()
mc := newMetricContext("disks", "delete", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("disks", "delete", resourceGroupName, az.client.SubscriptionID, "")
future, err := az.client.Delete(ctx, resourceGroupName, diskName)
if err != nil {
return future.Response(), mc.Observe(err)
@ -1435,7 +1435,7 @@ func (az *azDisksClient) Get(ctx context.Context, resourceGroupName string, disk
klog.V(10).Infof("azDisksClient.Get(%q,%q): end", resourceGroupName, diskName)
}()
mc := newMetricContext("disks", "get", resourceGroupName, az.client.SubscriptionID)
mc := newMetricContext("disks", "get", resourceGroupName, az.client.SubscriptionID, "")
result, err = az.client.Get(ctx, resourceGroupName, diskName)
mc.Observe(err)
return
@ -1489,7 +1489,7 @@ func (az *azVirtualMachineSizesClient) List(ctx context.Context, location string
klog.V(10).Infof("azVirtualMachineSizesClient.List(%q): end", location)
}()
mc := newMetricContext("vmsizes", "list", "", az.client.SubscriptionID)
mc := newMetricContext("vmsizes", "list", "", az.client.SubscriptionID, "")
result, err = az.client.List(ctx, location)
mc.Observe(err)
return

View File

@ -84,7 +84,7 @@ func (as *availabilitySet) AttachDisk(isManagedDisk bool, diskName, diskURI stri
// Invalidate the cache right after updating
defer as.cloud.vmCache.Delete(vmName)
_, err = as.VirtualMachinesClient.CreateOrUpdate(ctx, nodeResourceGroup, vmName, newVM)
_, err = as.VirtualMachinesClient.CreateOrUpdate(ctx, nodeResourceGroup, vmName, newVM, "attach_disk")
if err != nil {
klog.Errorf("azureDisk - attach disk(%s, %s) failed, err: %v", diskName, diskURI, err)
detail := err.Error()
@ -151,7 +151,7 @@ func (as *availabilitySet) DetachDisk(diskName, diskURI string, nodeName types.N
// Invalidate the cache right after updating
defer as.cloud.vmCache.Delete(vmName)
return as.VirtualMachinesClient.CreateOrUpdate(ctx, nodeResourceGroup, vmName, newVM)
return as.VirtualMachinesClient.CreateOrUpdate(ctx, nodeResourceGroup, vmName, newVM, "detach_disk")
}
// GetDataDisks gets a list of data disks attached to the node.

View File

@ -89,7 +89,7 @@ func (ss *scaleSet) AttachDisk(isManagedDisk bool, diskName, diskURI string, nod
defer ss.vmssVMCache.Delete(key)
klog.V(2).Infof("azureDisk - update(%s): vm(%s) - attach disk(%s, %s)", nodeResourceGroup, nodeName, diskName, diskURI)
_, err = ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM)
_, err = ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM, "attach_disk")
if err != nil {
detail := err.Error()
if strings.Contains(detail, errLeaseFailed) || strings.Contains(detail, errDiskBlobNotFound) {
@ -159,7 +159,7 @@ func (ss *scaleSet) DetachDisk(diskName, diskURI string, nodeName types.NodeName
defer ss.vmssVMCache.Delete(key)
klog.V(2).Infof("azureDisk - update(%s): vm(%s) - detach disk(%s, %s)", nodeResourceGroup, nodeName, diskName, diskURI)
return ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM)
return ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM, "detach_disk")
}
// GetDataDisks gets a list of data disks attached to the node.

View File

@ -290,7 +290,7 @@ func newFakeAzureVirtualMachinesClient() *fakeAzureVirtualMachinesClient {
return fVMC
}
func (fVMC *fakeAzureVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine) (resp *http.Response, err error) {
func (fVMC *fakeAzureVirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters compute.VirtualMachine, source string) (resp *http.Response, err error) {
fVMC.mutex.Lock()
defer fVMC.mutex.Unlock()
@ -550,7 +550,7 @@ func (fVMC *fakeVirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Con
return result, nil
}
func (fVMC *fakeVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM) (resp *http.Response, err error) {
func (fVMC *fakeVirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters compute.VirtualMachineScaleSetVM, source string) (resp *http.Response, err error) {
fVMC.mutex.Lock()
defer fVMC.mutex.Unlock()

View File

@ -33,6 +33,7 @@ var (
"request", // API function that is being invoked
"resource_group", // Resource group of the resource being monitored
"subscription_id", // Subscription ID of the resource being monitored
"source", // Oeration source(optional)
}
apiMetrics = registerAPIMetrics(metricLabels...)
@ -43,10 +44,10 @@ type metricContext struct {
attributes []string
}
func newMetricContext(prefix, request, resourceGroup, subscriptionID string) *metricContext {
func newMetricContext(prefix, request, resourceGroup, subscriptionID, source string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{prefix + "_" + request, strings.ToLower(resourceGroup), subscriptionID},
attributes: []string{prefix + "_" + request, strings.ToLower(resourceGroup), subscriptionID, source},
}
}

View File

@ -23,12 +23,12 @@ import (
)
func TestAzureMetricLabelCardinality(t *testing.T) {
mc := newMetricContext("test", "create", "resource_group", "subscription_id")
mc := newMetricContext("test", "create", "resource_group", "subscription_id", "source")
assert.Len(t, mc.attributes, len(metricLabels), "cardinalities of labels and values must match")
}
func TestAzureMetricLabelPrefix(t *testing.T) {
mc := newMetricContext("prefix", "request", "resource_group", "subscription_id")
mc := newMetricContext("prefix", "request", "resource_group", "subscription_id", "source")
found := false
for _, attribute := range mc.attributes {
if attribute == "prefix_request" {

View File

@ -1108,7 +1108,7 @@ func getClusterResources(az *Cloud, vmCount int, availabilitySetCount int) (clus
vmCtx, vmCancel := getContextWithCancel()
defer vmCancel()
_, err := az.VirtualMachinesClient.CreateOrUpdate(vmCtx, az.Config.ResourceGroup, vmName, newVM)
_, err := az.VirtualMachinesClient.CreateOrUpdate(vmCtx, az.Config.ResourceGroup, vmName, newVM, "")
if err != nil {
}
// add to kubernetes

View File

@ -712,10 +712,10 @@ func (ss *scaleSet) EnsureHostInPool(service *v1.Service, nodeName types.NodeNam
ctx, cancel := getContextWithCancel()
defer cancel()
klog.V(2).Infof("EnsureHostInPool begins to update vmssVM(%s) with new backendPoolID %s", vmName, backendPoolID)
resp, err := ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM)
resp, err := ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM, "network_update")
if ss.CloudProviderBackoff && shouldRetryHTTPRequest(resp, err) {
klog.V(2).Infof("EnsureHostInPool update backing off vmssVM(%s) with new backendPoolID %s, err: %v", vmName, backendPoolID, err)
retryErr := ss.UpdateVmssVMWithRetry(nodeResourceGroup, ssName, instanceID, newVM)
retryErr := ss.UpdateVmssVMWithRetry(nodeResourceGroup, ssName, instanceID, newVM, "network_update")
if retryErr != nil {
err = retryErr
klog.Errorf("EnsureHostInPool update abort backoff vmssVM(%s) with new backendPoolID %s, err: %v", vmName, backendPoolID, err)
@ -841,10 +841,10 @@ func (ss *scaleSet) ensureBackendPoolDeletedFromNode(service *v1.Service, nodeNa
ctx, cancel := getContextWithCancel()
defer cancel()
klog.V(2).Infof("ensureBackendPoolDeletedFromNode begins to update vmssVM(%s) with backendPoolID %s", nodeName, backendPoolID)
resp, err := ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM)
resp, err := ss.VirtualMachineScaleSetVMsClient.Update(ctx, nodeResourceGroup, ssName, instanceID, newVM, "network_update")
if ss.CloudProviderBackoff && shouldRetryHTTPRequest(resp, err) {
klog.V(2).Infof("ensureBackendPoolDeletedFromNode update backing off vmssVM(%s) with backendPoolID %s, err: %v", nodeName, backendPoolID, err)
retryErr := ss.UpdateVmssVMWithRetry(nodeResourceGroup, ssName, instanceID, newVM)
retryErr := ss.UpdateVmssVMWithRetry(nodeResourceGroup, ssName, instanceID, newVM, "network_update")
if retryErr != nil {
err = retryErr
klog.Errorf("ensureBackendPoolDeletedFromNode update abort backoff vmssVM(%s) with backendPoolID %s, err: %v", nodeName, backendPoolID, err)