@@ -41,6 +41,7 @@ import (
4141 "k8s.io/apimachinery/pkg/util/wait"
4242 "k8s.io/klog/v2"
4343 "k8s.io/utils/ptr"
44+ csiMetrics "sigs.k8s.io/azurefile-csi-driver/pkg/metrics"
4445 azcache "sigs.k8s.io/cloud-provider-azure/pkg/cache"
4546 "sigs.k8s.io/cloud-provider-azure/pkg/metrics"
4647 "sigs.k8s.io/cloud-provider-azure/pkg/provider/storage"
@@ -515,6 +516,15 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
515516 requestName = "controller_create_volume_from_volume"
516517 }
517518 }
519+
520+ csiMC := csiMetrics .NewCSIMetricContext (requestName )
521+ isOperationSucceeded := false
522+ defer func () {
523+ csiMC .ObserveWithLabels (isOperationSucceeded ,
524+ "protocol" , string (shareProtocol ),
525+ "storage_account_type" , sku )
526+ }()
527+
518528 if sourceID != "" {
519529 _ , srcAccountName , _ , _ , _ , _ , err = GetFileShareInfo (sourceID ) //nolint:dogsled
520530 if err != nil {
@@ -558,7 +568,6 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
558568 }
559569
560570 mc := metrics .NewMetricContext (azureFileCSIDriverName , requestName , d .cloud .ResourceGroup , subsID , d .Name )
561- isOperationSucceeded := false
562571 defer func () {
563572 mc .ObserveOperationWithResult (isOperationSucceeded , VolumeID , volumeID )
564573 }()
@@ -781,7 +790,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
781790}
782791
783792// DeleteVolume delete an azure file
784- func (d * Driver ) DeleteVolume (ctx context.Context , req * csi.DeleteVolumeRequest ) (* csi.DeleteVolumeResponse , error ) {
793+ func (d * Driver ) DeleteVolume (ctx context.Context , req * csi.DeleteVolumeRequest ) (resp * csi.DeleteVolumeResponse , returnedErr error ) {
794+ requestName := "controller_delete_volume"
795+ csiMC := csiMetrics .NewCSIMetricContext (requestName )
796+ defer func () {
797+ csiMC .Observe (returnedErr == nil )
798+ }()
799+
785800 volumeID := req .GetVolumeId ()
786801 if len (volumeID ) == 0 {
787802 return nil , status .Error (codes .InvalidArgument , "Volume ID missing in request" )
@@ -826,10 +841,9 @@ func (d *Driver) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest)
826841 secret = createStorageAccountSecret (accountName , accountKey )
827842 }
828843
829- mc := metrics .NewMetricContext (azureFileCSIDriverName , "controller_delete_volume" , resourceGroupName , subsID , d .Name )
830- isOperationSucceeded := false
844+ mc := metrics .NewMetricContext (azureFileCSIDriverName , requestName , resourceGroupName , subsID , d .Name )
831845 defer func () {
832- mc .ObserveOperationWithResult (isOperationSucceeded , VolumeID , volumeID )
846+ mc .ObserveOperationWithResult (returnedErr == nil , VolumeID , volumeID )
833847 }()
834848
835849 if err := d .DeleteFileShare (ctx , subsID , resourceGroupName , accountName , fileShareName , secret , useDataPlaneAPI ); err != nil {
@@ -840,7 +854,6 @@ func (d *Driver) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest)
840854 klog .Warningf ("RemoveStorageAccountTag(%s) under rg(%s) account(%s) failed with %v" , storage .SkipMatchingTag , resourceGroupName , accountName , err )
841855 }
842856
843- isOperationSucceeded = true
844857 return & csi.DeleteVolumeResponse {}, nil
845858}
846859
@@ -936,7 +949,13 @@ func (d *Driver) ControllerUnpublishVolume(_ context.Context, _ *csi.ControllerU
936949}
937950
938951// CreateSnapshot create a snapshot
939- func (d * Driver ) CreateSnapshot (ctx context.Context , req * csi.CreateSnapshotRequest ) (* csi.CreateSnapshotResponse , error ) {
952+ func (d * Driver ) CreateSnapshot (ctx context.Context , req * csi.CreateSnapshotRequest ) (resp * csi.CreateSnapshotResponse , returnedErr error ) {
953+ requestName := "controller_create_snapshot"
954+ csiMC := csiMetrics .NewCSIMetricContext (requestName )
955+ defer func () {
956+ csiMC .Observe (returnedErr == nil )
957+ }()
958+
940959 sourceVolumeID := req .GetSourceVolumeId ()
941960 snapshotName := req .Name
942961 if len (snapshotName ) == 0 {
@@ -974,10 +993,9 @@ func (d *Driver) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequ
974993 useDataPlaneAPI = d .useDataPlaneAPI (ctx , sourceVolumeID , accountName )
975994 }
976995
977- mc := metrics .NewMetricContext (azureFileCSIDriverName , "controller_create_snapshot" , rgName , subsID , d .Name )
978- isOperationSucceeded := false
996+ mc := metrics .NewMetricContext (azureFileCSIDriverName , requestName , rgName , subsID , d .Name )
979997 defer func () {
980- mc .ObserveOperationWithResult (isOperationSucceeded , SourceResourceID , sourceVolumeID , SnapshotName , snapshotName )
998+ mc .ObserveOperationWithResult (returnedErr == nil , SourceResourceID , sourceVolumeID , SnapshotName , snapshotName )
981999 }()
9821000
9831001 exists , itemSnapshot , itemSnapshotTime , itemSnapshotQuota , err := d .snapshotExists (ctx , sourceVolumeID , snapshotName , req .GetSecrets (), useDataPlaneAPI )
@@ -1071,7 +1089,7 @@ func (d *Driver) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequ
10711089 }
10721090 }
10731091
1074- createResp : = & csi.CreateSnapshotResponse {
1092+ resp = & csi.CreateSnapshotResponse {
10751093 Snapshot : & csi.Snapshot {
10761094 SizeBytes : util .GiBToBytes (int64 (itemSnapshotQuota )),
10771095 SnapshotId : sourceVolumeID + "#" + itemSnapshot + "#" + subsID ,
@@ -1082,12 +1100,18 @@ func (d *Driver) CreateSnapshot(ctx context.Context, req *csi.CreateSnapshotRequ
10821100 },
10831101 }
10841102
1085- isOperationSucceeded = true
1086- return createResp , nil
1103+ return resp , nil
10871104}
10881105
10891106// DeleteSnapshot delete a snapshot (todo)
10901107func (d * Driver ) DeleteSnapshot (ctx context.Context , req * csi.DeleteSnapshotRequest ) (* csi.DeleteSnapshotResponse , error ) {
1108+ requestName := "controller_delete_snapshot"
1109+ csiMC := csiMetrics .NewCSIMetricContext (requestName )
1110+ isOperationSucceeded := false
1111+ defer func () {
1112+ csiMC .Observe (isOperationSucceeded )
1113+ }()
1114+
10911115 if len (req .SnapshotId ) == 0 {
10921116 return nil , status .Error (codes .InvalidArgument , "Snapshot ID must be provided" )
10931117 }
@@ -1109,8 +1133,7 @@ func (d *Driver) DeleteSnapshot(ctx context.Context, req *csi.DeleteSnapshotRequ
11091133 subsID = d .cloud .SubscriptionID
11101134 }
11111135
1112- mc := metrics .NewMetricContext (azureFileCSIDriverName , "controller_delete_snapshot" , rgName , subsID , d .Name )
1113- isOperationSucceeded := false
1136+ mc := metrics .NewMetricContext (azureFileCSIDriverName , requestName , rgName , subsID , d .Name )
11141137 defer func () {
11151138 mc .ObserveOperationWithResult (isOperationSucceeded , SnapshotID , req .SnapshotId )
11161139 }()
@@ -1280,6 +1303,13 @@ func (d *Driver) execAzcopyCopy(srcPath, dstPath string, azcopyCopyOptions, auth
12801303
12811304// ControllerExpandVolume controller expand volume
12821305func (d * Driver ) ControllerExpandVolume (ctx context.Context , req * csi.ControllerExpandVolumeRequest ) (* csi.ControllerExpandVolumeResponse , error ) {
1306+ requestName := "controller_expand_volume"
1307+ csiMC := csiMetrics .NewCSIMetricContext (requestName )
1308+ isOperationSucceeded := false
1309+ defer func () {
1310+ csiMC .Observe (isOperationSucceeded )
1311+ }()
1312+
12831313 volumeID := req .GetVolumeId ()
12841314 if len (volumeID ) == 0 {
12851315 return nil , status .Error (codes .InvalidArgument , "Volume ID missing in request" )
@@ -1318,8 +1348,7 @@ func (d *Driver) ControllerExpandVolume(ctx context.Context, req *csi.Controller
13181348 }
13191349 }
13201350
1321- mc := metrics .NewMetricContext (azureFileCSIDriverName , "controller_expand_volume" , resourceGroupName , subsID , d .Name )
1322- isOperationSucceeded := false
1351+ mc := metrics .NewMetricContext (azureFileCSIDriverName , requestName , resourceGroupName , subsID , d .Name )
13231352 defer func () {
13241353 mc .ObserveOperationWithResult (isOperationSucceeded , VolumeID , volumeID )
13251354 }()
@@ -1402,9 +1431,6 @@ func (d *Driver) snapshotExists(ctx context.Context, sourceVolumeID, snapshotNam
14021431
14031432 // List share snapshots.
14041433 listSnapshot := serviceURL .NewListSharesPager (& service.ListSharesOptions {Include : service.ListSharesInclude {Metadata : true , Snapshots : true }})
1405- if err != nil {
1406- return false , "" , time.Time {}, 0 , err
1407- }
14081434 for listSnapshot .More () {
14091435 response , err := listSnapshot .NextPage (ctx )
14101436 if err != nil {
0 commit comments