Skip to content

Commit 3309e18

Browse files
committed
feat: support custom userAgent in driver setting
1 parent 979f6f4 commit 3309e18

File tree

9 files changed

+68
-5
lines changed

9 files changed

+68
-5
lines changed

charts/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,10 @@ The following table lists the configurable parameters of the latest Azure Blob S
5959

6060
| Parameter | Description | Default |
6161
| ----------------------------------------------------- | ----------------------------------------------------- | -------------------------------------------------------------- |
62-
| `driver.name` | alternative driver name | `blob.csi.azure.com` |
63-
| `feature.enableFSGroupPolicy` | enable `fsGroupPolicy` on a k8s 1.20+ cluster | `false` |
62+
| `driver.name` | alternative driver name | `blob.csi.azure.com` |
63+
| `driver.customUserAgent` | custom userAgent | `` |
64+
| `driver.userAgentSuffix` | userAgent suffix | `` |
65+
| `feature.enableFSGroupPolicy` | enable `fsGroupPolicy` on a k8s 1.20+ cluster | `false` |
6466
| `image.blob.repository` | blob-csi-driver docker image | `mcr.microsoft.com/k8s/csi/blob-csi` |
6567
| `image.blob.tag` | blob-csi-driver docker image tag | `latest` |
6668
| `image.blob.pullPolicy` | blob-csi-driver image pull policy | `IfNotPresent` |
177 Bytes
Binary file not shown.

charts/latest/blob-csi-driver/templates/csi-blob-controller.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ spec:
7979
- "--endpoint=$(CSI_ENDPOINT)"
8080
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
8181
- "--drivername={{ .Values.driver.name }}"
82+
- "--custom-user-agent={{ .Values.driver.customUserAgent }}"
83+
- "--user-agent-suffix={{ .Values.driver.userAgentSuffix }}"
8284
- "--cloud-config-secret-name={{ .Values.controller.cloudConfigSecretName }}"
8385
- "--cloud-config-secret-namespace={{ .Values.controller.cloudConfigSecretNamespace }}"
8486
ports:

charts/latest/blob-csi-driver/templates/csi-blob-node.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ spec:
9999
- "--drivername={{ .Values.driver.name }}"
100100
- "--cloud-config-secret-name={{ .Values.node.cloudConfigSecretName }}"
101101
- "--cloud-config-secret-namespace={{ .Values.node.cloudConfigSecretNamespace }}"
102+
- "--custom-user-agent={{ .Values.driver.customUserAgent }}"
103+
- "--user-agent-suffix={{ .Values.driver.userAgentSuffix }}"
102104
ports:
103105
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
104106
name: healthz

charts/latest/blob-csi-driver/values.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ feature:
129129

130130
driver:
131131
name: blob.csi.azure.com
132+
customUserAgent: ""
133+
userAgentSuffix: ""
132134

133135
linux:
134136
kubelet: /var/lib/kubelet

pkg/blob/blob.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ type DriverOptions struct {
108108
DriverName string
109109
CloudConfigSecretName string
110110
CloudConfigSecretNamespace string
111+
CustomUserAgent string
112+
UserAgentSuffix string
111113
BlobfuseProxyEndpoint string
112114
EnableBlobfuseProxy bool
113115
BlobfuseProxyConnTimout int
@@ -120,6 +122,8 @@ type Driver struct {
120122
cloud *azure.Cloud
121123
cloudConfigSecretName string
122124
cloudConfigSecretNamespace string
125+
customUserAgent string
126+
userAgentSuffix string
123127
blobfuseProxyEndpoint string
124128
// enableBlobMockMount is only for testing, DO NOT set as true in non-testing scenario
125129
enableBlobMockMount bool
@@ -143,6 +147,8 @@ func NewDriver(options *DriverOptions) *Driver {
143147
volumeLocks: newVolumeLocks(),
144148
cloudConfigSecretName: options.CloudConfigSecretName,
145149
cloudConfigSecretNamespace: options.CloudConfigSecretNamespace,
150+
customUserAgent: options.CustomUserAgent,
151+
userAgentSuffix: options.UserAgentSuffix,
146152
blobfuseProxyEndpoint: options.BlobfuseProxyEndpoint,
147153
enableBlobfuseProxy: options.EnableBlobfuseProxy,
148154
blobfuseProxyConnTimout: options.BlobfuseProxyConnTimout,
@@ -162,7 +168,7 @@ func (d *Driver) Run(endpoint, kubeconfig string, testBool bool) {
162168
}
163169
klog.Infof("\nDRIVER INFORMATION:\n-------------------\n%s\n\nStreaming logs below:", versionMeta)
164170

165-
userAgent := GetUserAgent(d.Name)
171+
userAgent := GetUserAgent(d.Name, d.customUserAgent, d.userAgentSuffix)
166172
klog.V(2).Infof("driver userAgent: %s", userAgent)
167173
d.cloud, err = getCloudProvider(kubeconfig, d.NodeID, d.cloudConfigSecretName, d.cloudConfigSecretNamespace, userAgent)
168174
if err != nil {

pkg/blob/version.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ func GetVersionYAML(driverName string) (string, error) {
6767
}
6868

6969
// GetUserAgent returns user agent of the driver
70-
func GetUserAgent(driverName string) string {
71-
return fmt.Sprintf("%s/%s %s/%s (%s-%s) %s/%s", driverName, driverVersion, runtime.Compiler, runtime.Version(), runtime.GOARCH, runtime.GOOS, gitCommit, buildDate)
70+
func GetUserAgent(driverName, customUserAgent, userAgentSuffix string) string {
71+
customUserAgent = strings.TrimSpace(customUserAgent)
72+
userAgent := customUserAgent
73+
if customUserAgent == "" {
74+
userAgent = fmt.Sprintf("%s/%s %s/%s (%s-%s) %s/%s", driverName, driverVersion, runtime.Compiler, runtime.Version(), runtime.GOARCH, runtime.GOOS, gitCommit, buildDate)
75+
}
76+
77+
userAgentSuffix = strings.TrimSpace(userAgentSuffix)
78+
if userAgentSuffix != "" {
79+
userAgent = userAgent + " " + userAgentSuffix
80+
}
81+
return userAgent
7282
}

pkg/blob/version_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,38 @@ func TestGetVersionYAML(t *testing.T) {
6060
t.Fatalf("Unexpected error. \n Expected:%v\nFound:%v", expected, resp)
6161
}
6262
}
63+
64+
func TestGetUserAgent(t *testing.T) {
65+
tests := []struct {
66+
driverName string
67+
customUserAgent string
68+
userAgentSuffix string
69+
expectedResult string
70+
}{
71+
{
72+
driverName: "",
73+
customUserAgent: "",
74+
userAgentSuffix: "",
75+
expectedResult: fmt.Sprintf("%s/%s %s/%s (%s-%s) %s/%s", "", driverVersion, runtime.Compiler, runtime.Version(), runtime.GOARCH, runtime.GOOS, gitCommit, buildDate),
76+
},
77+
{
78+
driverName: "",
79+
customUserAgent: "customUserAgent",
80+
userAgentSuffix: "",
81+
expectedResult: "customUserAgent",
82+
},
83+
{
84+
driverName: "drivername",
85+
customUserAgent: "",
86+
userAgentSuffix: "suffix",
87+
expectedResult: fmt.Sprintf("%s/%s %s/%s (%s-%s) %s/%s suffix", "drivername", driverVersion, runtime.Compiler, runtime.Version(), runtime.GOARCH, runtime.GOOS, gitCommit, buildDate),
88+
},
89+
}
90+
91+
for _, test := range tests {
92+
result := GetUserAgent(test.driverName, test.customUserAgent, test.userAgentSuffix)
93+
if result != test.expectedResult {
94+
t.Errorf("Unexpected result: %v, expected result: %v", result, test.expectedResult)
95+
}
96+
}
97+
}

pkg/blobplugin/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ var (
4848
enableBlobMockMount = flag.Bool("enable-blob-mock-mount", false, "Whether enable mock mount(only for testing)")
4949
cloudConfigSecretName = flag.String("cloud-config-secret-name", "azure-cloud-provider", "secret name of cloud config")
5050
cloudConfigSecretNamespace = flag.String("cloud-config-secret-namespace", "kube-system", "secret namespace of cloud config")
51+
customUserAgent = flag.String("custom-user-agent", "", "custom userAgent")
52+
userAgentSuffix = flag.String("user-agent-suffix", "", "userAgent suffix")
5153
)
5254

5355
func main() {
@@ -77,6 +79,8 @@ func handle() {
7779
EnableBlobfuseProxy: *enableBlobfuseProxy,
7880
BlobfuseProxyConnTimout: *blobfuseProxyConnTimout,
7981
EnableBlobMockMount: *enableBlobMockMount,
82+
CustomUserAgent: *customUserAgent,
83+
UserAgentSuffix: *userAgentSuffix,
8084
}
8185
driver := blob.NewDriver(&driverOptions)
8286
if driver == nil {

0 commit comments

Comments
 (0)