@@ -34,17 +34,17 @@ import (
3434 "k8s.io/klog/v2"
3535
3636 "sigs.k8s.io/dra-example-driver/internal/profiles/gpu"
37- "sigs.k8s.io/dra-example-driver/pkg/consts"
3837 "sigs.k8s.io/dra-example-driver/pkg/flags"
3938)
4039
4140type Flags struct {
4241 loggingConfig * flags.LoggingConfig
4342
44- certFile string
45- keyFile string
46- port int
47- profile string
43+ certFile string
44+ keyFile string
45+ port int
46+ profile string
47+ driverName string
4848}
4949
5050var configScheme = runtime .NewScheme ()
@@ -92,6 +92,12 @@ func newApp() *cli.App {
9292 Destination : & flags .profile ,
9393 EnvVars : []string {"DEVICE_PROFILE" },
9494 },
95+ & cli.StringFlag {
96+ Name : "driver-name" ,
97+ Usage : "Name of the DRA driver. Its default is derived from the device profile." ,
98+ Destination : & flags .driverName ,
99+ EnvVars : []string {"DRIVER_NAME" },
100+ },
95101 }
96102 cliFlags = append (cliFlags , flags .loggingConfig .Flags ()... )
97103
@@ -120,12 +126,16 @@ func newApp() *cli.App {
120126 return fmt .Errorf ("invalid device profile %q, valid profiles are %q" , flags .profile , validProfiles )
121127 }
122128
129+ if flags .driverName == "" {
130+ flags .driverName = flags .profile + ".example.com"
131+ }
132+
123133 if err := sb .AddToScheme (configScheme ); err != nil {
124134 return fmt .Errorf ("create config scheme: %w" , err )
125135 }
126136
127137 server := & http.Server {
128- Handler : newMux (newConfigDecoder (), validate ),
138+ Handler : newMux (newConfigDecoder (), validate , flags . driverName ),
129139 Addr : fmt .Sprintf (":%d" , flags .port ),
130140 }
131141 klog .Info ("starting webhook server on" , server .Addr )
@@ -148,9 +158,9 @@ func newConfigDecoder() runtime.Decoder {
148158 )
149159}
150160
151- func newMux (configDecoder runtime.Decoder , validate validator ) * http.ServeMux {
161+ func newMux (configDecoder runtime.Decoder , validate validator , driverName string ) * http.ServeMux {
152162 mux := http .NewServeMux ()
153- mux .HandleFunc ("/validate-resource-claim-parameters" , serveResourceClaim (configDecoder , validate ))
163+ mux .HandleFunc ("/validate-resource-claim-parameters" , serveResourceClaim (configDecoder , validate , driverName ))
154164 mux .HandleFunc ("/readyz" , func (w http.ResponseWriter , req * http.Request ) {
155165 _ , err := w .Write ([]byte ("ok" ))
156166 if err != nil {
@@ -161,9 +171,9 @@ func newMux(configDecoder runtime.Decoder, validate validator) *http.ServeMux {
161171 return mux
162172}
163173
164- func serveResourceClaim (configDecoder runtime.Decoder , validate validator ) func (http.ResponseWriter , * http.Request ) {
174+ func serveResourceClaim (configDecoder runtime.Decoder , validate validator , driverName string ) func (http.ResponseWriter , * http.Request ) {
165175 return func (w http.ResponseWriter , r * http.Request ) {
166- serve (w , r , admitResourceClaimParameters (configDecoder , validate ))
176+ serve (w , r , admitResourceClaimParameters (configDecoder , validate , driverName ))
167177 }
168178}
169179
@@ -238,7 +248,7 @@ func readAdmissionReview(data []byte) (*admissionv1.AdmissionReview, error) {
238248
239249// admitResourceClaimParameters accepts both ResourceClaims and ResourceClaimTemplates and validates their
240250// opaque device configuration parameters for this driver.
241- func admitResourceClaimParameters (configDecoder runtime.Decoder , validate validator ) func (ar admissionv1.AdmissionReview ) * admissionv1.AdmissionResponse {
251+ func admitResourceClaimParameters (configDecoder runtime.Decoder , validate validator , driverName string ) func (ar admissionv1.AdmissionReview ) * admissionv1.AdmissionResponse {
242252 return func (ar admissionv1.AdmissionReview ) * admissionv1.AdmissionResponse {
243253 klog .V (2 ).Info ("admitting resource claim parameters" )
244254
@@ -292,7 +302,7 @@ func admitResourceClaimParameters(configDecoder runtime.Decoder, validate valida
292302
293303 var errs []error
294304 for configIndex , config := range deviceConfigs {
295- if config .Opaque == nil || config .Opaque .Driver != consts . DriverName {
305+ if config .Opaque == nil || config .Opaque .Driver != driverName {
296306 continue
297307 }
298308
0 commit comments