Files
docker-cli/cli/command/service/internal/genericresource/helpers.go
Sebastiaan van Stijn 774f1d60a1 cli/command/service: parse generic resources without protobufs
This code was using swarmkit's genericresource package as intermediate;
add a local copy of that code that skips the protobufs as intermediate.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-11-05 12:26:02 +01:00

49 lines
1.2 KiB
Go

package genericresource
import (
api "github.com/moby/moby/api/types/swarm"
)
// NewSet creates a set object
func NewSet(key string, vals ...string) []api.GenericResource {
rs := make([]api.GenericResource, 0, len(vals))
for _, v := range vals {
rs = append(rs, NewString(key, v))
}
return rs
}
// NewString creates a String resource
func NewString(kind, value string) api.GenericResource {
return api.GenericResource{
NamedResourceSpec: &api.NamedGenericResource{
Kind: kind,
Value: value,
},
}
}
// NewDiscrete creates a Discrete resource
func NewDiscrete(key string, val int64) api.GenericResource {
return api.GenericResource{
DiscreteResourceSpec: &api.DiscreteGenericResource{
Kind: key,
Value: val,
},
}
}
// GetResource returns resources from the "resources" parameter matching the kind key
func GetResource(kind string, resources []api.GenericResource) []api.GenericResource {
var res []api.GenericResource
for _, r := range resources {
switch {
case r.DiscreteResourceSpec != nil && r.DiscreteResourceSpec.Kind == kind:
res = append(res, r)
case r.NamedResourceSpec != nil && r.NamedResourceSpec.Kind == kind:
res = append(res, r)
}
}
return res
}