Skip to content

Commit 0d45f36

Browse files
Merge pull request #5036 from pmtk/gen-dev-plug/init
USHIFT-5795: Generic Device Plugin
2 parents 880568a + a15538e commit 0d45f36

File tree

44 files changed

+4185
-10
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+4185
-10
lines changed

cmd/generate-config/config/config-openapi-spec.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"debugging",
66
"dns",
77
"etcd",
8+
"genericDevicePlugin",
89
"ingress",
910
"kubelet",
1011
"manifests",
@@ -159,6 +160,34 @@
159160
}
160161
}
161162
},
163+
"genericDevicePlugin": {
164+
"type": "object",
165+
"required": [
166+
"devices",
167+
"domain",
168+
"status"
169+
],
170+
"properties": {
171+
"devices": {
172+
"description": "Devices configuration"
173+
},
174+
"domain": {
175+
"description": "Domain with which devices will be present in the cluster,\ne.g. device.microshift.io/serial.",
176+
"type": "string",
177+
"default": "device.microshift.io"
178+
},
179+
"status": {
180+
"description": "Generic Device Plugin status, can be Enabled or Disabled",
181+
"type": "string",
182+
"default": "Disabled",
183+
"enum": [
184+
"Enabled",
185+
"Disabled",
186+
""
187+
]
188+
}
189+
}
190+
},
162191
"ingress": {
163192
"type": "object",
164193
"required": [

docs/user/howto_config.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ dns:
2828
baseDomain: ""
2929
etcd:
3030
memoryLimitMB: 0
31+
genericDevicePlugin:
32+
devices:
33+
domain: ""
34+
status: ""
3135
ingress:
3236
accessLogging:
3337
destination:
@@ -151,6 +155,10 @@ dns:
151155
baseDomain: example.com
152156
etcd:
153157
memoryLimitMB: 0
158+
genericDevicePlugin:
159+
devices:
160+
domain: device.microshift.io
161+
status: Disabled
154162
ingress:
155163
accessLogging:
156164
destination:

go.mod

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,15 @@ require (
3131
github.com/coreos/go-systemd/v22 v22.5.0
3232
github.com/evanphx/json-patch v4.12.0+incompatible
3333
github.com/fsnotify/fsnotify v1.8.0
34+
github.com/go-kit/kit v0.9.0
3435
github.com/gogo/protobuf v1.3.2
3536
github.com/golang/snappy v0.0.4
3637
github.com/openshift/route-controller-manager v0.0.0-20241218160919-bc97534a12a7
38+
github.com/prometheus/client_golang v1.21.0-rc.0
3739
github.com/prometheus/client_model v0.6.1
3840
github.com/prometheus/common v0.62.0
3941
github.com/prometheus/prometheus v0.302.1
42+
github.com/squat/generic-device-plugin v0.0.0-20250313105706-6475ff5d0927
4043
gopkg.in/yaml.v2 v2.4.0
4144
k8s.io/api v1.32.5
4245
k8s.io/apiextensions-apiserver v1.32.5
@@ -85,8 +88,15 @@ require (
8588
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
8689
github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect
8790
github.com/go-ldap/ldap/v3 v3.4.3 // indirect
91+
github.com/go-logfmt/logfmt v0.5.1 // indirect
8892
github.com/go-logr/logr v1.4.2 // indirect
8993
github.com/go-logr/stdr v1.2.2 // indirect
94+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
95+
github.com/go-openapi/jsonreference v0.21.0 // indirect
96+
github.com/go-openapi/swag v0.23.0 // indirect
97+
github.com/go-stack/stack v1.8.1 // indirect
98+
github.com/godbus/dbus/v5 v5.1.0 // indirect
99+
github.com/golang/protobuf v1.5.4 // indirect
90100
github.com/google/btree v1.0.1 // indirect
91101
github.com/google/cadvisor v0.51.0 // indirect
92102
github.com/google/cel-go v0.22.0 // indirect
@@ -112,13 +122,16 @@ require (
112122
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
113123
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
114124
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
125+
github.com/oklog/run v1.1.0 // indirect
115126
github.com/opencontainers/go-digest v1.0.0 // indirect
116127
github.com/opencontainers/runc v1.2.1 // indirect
117128
github.com/opencontainers/runtime-spec v1.2.0 // indirect
118129
github.com/opencontainers/selinux v1.11.1 // indirect
119130
github.com/openshift/apiserver-library-go v0.0.0-20250127121756-dc9a973f14ce // indirect
120131
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
121132
github.com/pquerna/cachecontrol v0.1.0 // indirect
133+
github.com/prometheus/procfs v0.15.1 // indirect
134+
github.com/robfig/cron v1.2.0 // indirect
122135
github.com/robfig/cron/v3 v3.0.1 // indirect
123136
github.com/russross/blackfriday/v2 v2.1.0 // indirect
124137
github.com/stoewer/go-strcase v1.3.0 // indirect
@@ -174,11 +187,6 @@ require (
174187
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
175188
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
176189
github.com/go-errors/errors v1.4.2 // indirect
177-
github.com/go-openapi/jsonpointer v0.21.0 // indirect
178-
github.com/go-openapi/jsonreference v0.21.0 // indirect
179-
github.com/go-openapi/swag v0.23.0 // indirect
180-
github.com/godbus/dbus/v5 v5.1.0 // indirect
181-
github.com/golang/protobuf v1.5.4 // indirect
182190
github.com/google/gnostic-models v0.6.8 // indirect
183191
github.com/google/gofuzz v1.2.0 // indirect
184192
github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect
@@ -191,9 +199,6 @@ require (
191199
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
192200
github.com/pkg/profile v1.7.0 // indirect
193201
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
194-
github.com/prometheus/client_golang v1.21.0-rc.0 // indirect
195-
github.com/prometheus/procfs v0.15.1 // indirect
196-
github.com/robfig/cron v1.2.0 // indirect
197202
github.com/sirupsen/logrus v1.9.3 // indirect
198203
github.com/vishvananda/netns v0.0.4 // indirect
199204
go.etcd.io/etcd/api/v3 v3.5.21 // indirect

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,12 @@ github.com/go-asn1-ber/asn1-ber v1.5.4 h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF
105105
github.com/go-asn1-ber/asn1-ber v1.5.4/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
106106
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
107107
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
108+
github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk=
109+
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
108110
github.com/go-ldap/ldap/v3 v3.4.3 h1:JCKUtJPIcyOuG7ctGabLKMgIlKnGumD/iGjuWeEruDI=
109111
github.com/go-ldap/ldap/v3 v3.4.3/go.mod h1:7LdHfVt6iIOESVEe3Bs4Jp2sHEKgDeduAhgM1/f9qmo=
112+
github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
113+
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
110114
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
111115
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
112116
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
@@ -120,6 +124,8 @@ github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF
120124
github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
121125
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
122126
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
127+
github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw=
128+
github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4=
123129
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
124130
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
125131
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
@@ -232,6 +238,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
232238
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
233239
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
234240
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
241+
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
242+
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
235243
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
236244
github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
237245
github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
@@ -309,6 +317,8 @@ github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
309317
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
310318
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
311319
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
320+
github.com/squat/generic-device-plugin v0.0.0-20250313105706-6475ff5d0927 h1:ku27KO9QGKiPvTSVrOP2qUzvM3v+TDdvPmyB6vGl678=
321+
github.com/squat/generic-device-plugin v0.0.0-20250313105706-6475ff5d0927/go.mod h1:rFRt0GxGw04yGcbfSqoUENZH0p+1oL6IziAVQ31NAVw=
312322
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
313323
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
314324
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=

packaging/microshift/config.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ etcd:
5151
# Set a memory limit on the etcd process; etcd will begin paging
5252
# memory when it gets to this value. 0 means no limit.
5353
memoryLimitMB: 0
54+
genericDevicePlugin:
55+
# Devices configuration
56+
devices:
57+
# Domain with which devices will be present in the cluster,
58+
# e.g. device.microshift.io/serial.
59+
domain: device.microshift.io
60+
# Generic Device Plugin status, can be Enabled or Disabled
61+
status: Disabled
5462
ingress:
5563
# accessLogging describes how the client requests should be logged.
5664
accessLogging:

pkg/cmd/run.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/openshift/microshift/pkg/admin/prerun"
1717
"github.com/openshift/microshift/pkg/config"
1818
"github.com/openshift/microshift/pkg/controllers"
19+
"github.com/openshift/microshift/pkg/gdp"
1920
"github.com/openshift/microshift/pkg/kustomize"
2021
"github.com/openshift/microshift/pkg/loadbalancerservice"
2122
"github.com/openshift/microshift/pkg/mdns"
@@ -214,6 +215,7 @@ func RunMicroshift(cfg *config.Config) error {
214215
util.Must(m.AddService(controllers.NewKubeStorageVersionMigrator(cfg)))
215216
util.Must(m.AddService(controllers.NewClusterID(cfg)))
216217
util.Must(m.AddService(controllers.NewTelemetryManager(cfg)))
218+
util.Must(m.AddService(gdp.NewGenericDevicePlugin(cfg)))
217219

218220
// Storing and clearing the env, so other components don't send the READY=1 until MicroShift is fully ready
219221
notifySocket := os.Getenv("NOTIFY_SOCKET")

pkg/config/config.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ type Config struct {
6060
// +kubebuilder:validation:Schemaless
6161
Kubelet map[string]any `json:"kubelet"`
6262

63+
GenericDevicePlugin GenericDevicePlugin `json:"genericDevicePlugin"`
64+
6365
// Internal-only fields
6466
userSettings *Config `json:"-"` // the values read from the config file
6567

@@ -181,6 +183,7 @@ func (c *Config) fillDefaults() error {
181183
}
182184
c.MultiNode.Enabled = false
183185
c.Kubelet = nil
186+
c.GenericDevicePlugin = genericDevicePluginDefaults()
184187
c.Telemetry = telemetryDefaults()
185188

186189
return nil
@@ -314,6 +317,8 @@ func (c *Config) incorporateUserSettings(u *Config) {
314317
c.Kubelet = u.Kubelet
315318
}
316319

320+
u.GenericDevicePlugin.incorporateUserSettings(c)
321+
317322
if u.Ingress.TuningOptions.HeaderBufferBytes > 0 {
318323
c.Ingress.TuningOptions.HeaderBufferBytes = u.Ingress.TuningOptions.HeaderBufferBytes
319324
}
@@ -632,6 +637,10 @@ func (c *Config) validate() error {
632637
return fmt.Errorf("error validating telemetry: %v", err)
633638
}
634639

640+
if err := c.GenericDevicePlugin.validate(); err != nil {
641+
return fmt.Errorf("error validating Generic Device Plugin configuration: %v", err)
642+
}
643+
635644
return nil
636645
}
637646

0 commit comments

Comments
 (0)