@@ -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,17 @@ func newApp() *cli.App {
120126 return fmt .Errorf ("invalid device profile %q, valid profiles are %q" , flags .profile , validProfiles )
121127 }
122128
129+ driverName := flags .driverName
130+ if driverName == "" {
131+ driverName = flags .profile + ".example.com"
132+ }
133+
123134 if err := sb .AddToScheme (configScheme ); err != nil {
124135 return fmt .Errorf ("create config scheme: %w" , err )
125136 }
126137
127138 server := & http.Server {
128- Handler : newMux (newConfigDecoder (), validate ),
139+ Handler : newMux (newConfigDecoder (), validate , flags . driverName ),
129140 Addr : fmt .Sprintf (":%d" , flags .port ),
130141 }
131142 klog .Info ("starting webhook server on" , server .Addr )
@@ -148,9 +159,9 @@ func newConfigDecoder() runtime.Decoder {
148159 )
149160}
150161
151- func newMux (configDecoder runtime.Decoder , validate validator ) * http.ServeMux {
162+ func newMux (configDecoder runtime.Decoder , validate validator , driverName string ) * http.ServeMux {
152163 mux := http .NewServeMux ()
153- mux .HandleFunc ("/validate-resource-claim-parameters" , serveResourceClaim (configDecoder , validate ))
164+ mux .HandleFunc ("/validate-resource-claim-parameters" , serveResourceClaim (configDecoder , validate , driverName ))
154165 mux .HandleFunc ("/readyz" , func (w http.ResponseWriter , req * http.Request ) {
155166 _ , err := w .Write ([]byte ("ok" ))
156167 if err != nil {
@@ -161,9 +172,9 @@ func newMux(configDecoder runtime.Decoder, validate validator) *http.ServeMux {
161172 return mux
162173}
163174
164- func serveResourceClaim (configDecoder runtime.Decoder , validate validator ) func (http.ResponseWriter , * http.Request ) {
175+ func serveResourceClaim (configDecoder runtime.Decoder , validate validator , driverName string ) func (http.ResponseWriter , * http.Request ) {
165176 return func (w http.ResponseWriter , r * http.Request ) {
166- serve (w , r , admitResourceClaimParameters (configDecoder , validate ))
177+ serve (w , r , admitResourceClaimParameters (configDecoder , validate , driverName ))
167178 }
168179}
169180
@@ -238,7 +249,7 @@ func readAdmissionReview(data []byte) (*admissionv1.AdmissionReview, error) {
238249
239250// admitResourceClaimParameters accepts both ResourceClaims and ResourceClaimTemplates and validates their
240251// opaque device configuration parameters for this driver.
241- func admitResourceClaimParameters (configDecoder runtime.Decoder , validate validator ) func (ar admissionv1.AdmissionReview ) * admissionv1.AdmissionResponse {
252+ func admitResourceClaimParameters (configDecoder runtime.Decoder , validate validator , driverName string ) func (ar admissionv1.AdmissionReview ) * admissionv1.AdmissionResponse {
242253 return func (ar admissionv1.AdmissionReview ) * admissionv1.AdmissionResponse {
243254 klog .V (2 ).Info ("admitting resource claim parameters" )
244255
@@ -292,7 +303,7 @@ func admitResourceClaimParameters(configDecoder runtime.Decoder, validate valida
292303
293304 var errs []error
294305 for configIndex , config := range deviceConfigs {
295- if config .Opaque == nil || config .Opaque .Driver != consts . DriverName {
306+ if config .Opaque == nil || config .Opaque .Driver != driverName {
296307 continue
297308 }
298309
0 commit comments