mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-09 05:25:14 +09:00
A VMI name can be a 253-character DNS subdomain, and worker VMIs
named after Cluster API machines do grow long. Carried as a label
value it fails the 63-character limit, and with a suffix appended it
fails the name limit, so the webhook could not create the template
device at all. The mark is now a plain "true", and a name too long
for the suffix is shortened with a hash of the full VMI name.
The device-reference parser also refused nothing after the JSON list,
so a malformed annotation could pass as valid.
Fixes: a11737a2dd ("feat(gpu): fix the shared GPU keys, settings and binding contract")
Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <f@lex.la>
49 lines
1.7 KiB
Go
49 lines
1.7 KiB
Go
/*
|
|
Copyright 2026 The Cozystack Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package gpu
|
|
|
|
import "time"
|
|
|
|
// Config is the GPU feature configuration cozystack-controller takes from
|
|
// its flags.
|
|
type Config struct {
|
|
// Enabled turns on everything that watches KubeVirt objects: binder
|
|
// placement, the VMI and pod webhooks, VMI garbage collection. The
|
|
// gpu.cozystack.io lifecycle paths (finalizers, usage-record cleanup)
|
|
// run regardless, so disabling the feature never hangs a deletion.
|
|
Enabled bool
|
|
|
|
// ResourceNames is the hoster's gpu.resourceNames list. The effective
|
|
// set adds class and agent-reported names (model.ResourceNames).
|
|
ResourceNames []string
|
|
|
|
// RawResourceNames is the hoster's gpu.rawResourceNames; empty means
|
|
// RawNamesAllowed.
|
|
RawResourceNames RawNamesPolicy
|
|
|
|
// LostCapacityGrace is how long a device stays missing or unhealthy, or
|
|
// a node NotReady, before the node has lost capacity. kubelet reports
|
|
// zero allocatable after every restart, so it must outlast a plugin
|
|
// re-registration.
|
|
LostCapacityGrace time.Duration
|
|
|
|
// AttachmentGrace is how long an attachment, or a template device, may
|
|
// wait for its VMI to appear. It must exceed the API server request
|
|
// timeout.
|
|
AttachmentGrace time.Duration
|
|
}
|