full diff: 616e8db4c3...6068d1894d
a replace rule was needed (similar as in github.com/docker/docker) to fix some
dependency issues;
github.com/docker/cli/cli/trust imports
github.com/theupdateframework/notary/trustpinning tested by
github.com/theupdateframework/notary/trustpinning.test imports
github.com/cloudflare/cfssl/helpers imports
github.com/google/certificate-transparency-go imports
go.etcd.io/etcd/v3 imports
go.etcd.io/etcd/tests/v3/integration imports
go.etcd.io/etcd/server/v3/embed imports
go.opentelemetry.io/otel/semconv: module go.opentelemetry.io/otel@latest found (v1.7.0), but does not contain package go.opentelemetry.io/otel/semconv
github.com/docker/cli/cli/trust imports
github.com/theupdateframework/notary/trustpinning tested by
github.com/theupdateframework/notary/trustpinning.test imports
github.com/cloudflare/cfssl/helpers imports
github.com/google/certificate-transparency-go imports
go.etcd.io/etcd/v3 imports
go.etcd.io/etcd/tests/v3/integration imports
go.etcd.io/etcd/server/v3/embed imports
go.opentelemetry.io/otel/exporters/otlp imports
go.opentelemetry.io/otel/sdk/metric/controller/basic imports
go.opentelemetry.io/otel/metric/registry: module go.opentelemetry.io/otel/metric@latest found (v0.30.0), but does not contain package go.opentelemetry.io/otel/metric/registry
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package genericresource
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/moby/swarmkit/v2/api"
|
|
)
|
|
|
|
func discreteToString(d *api.GenericResource_DiscreteResourceSpec) string {
|
|
return strconv.FormatInt(d.DiscreteResourceSpec.Value, 10)
|
|
}
|
|
|
|
// Kind returns the kind key as a string
|
|
func Kind(res *api.GenericResource) string {
|
|
switch r := res.Resource.(type) {
|
|
case *api.GenericResource_DiscreteResourceSpec:
|
|
return r.DiscreteResourceSpec.Kind
|
|
case *api.GenericResource_NamedResourceSpec:
|
|
return r.NamedResourceSpec.Kind
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// Value returns the value key as a string
|
|
func Value(res *api.GenericResource) string {
|
|
switch res := res.Resource.(type) {
|
|
case *api.GenericResource_DiscreteResourceSpec:
|
|
return discreteToString(res)
|
|
case *api.GenericResource_NamedResourceSpec:
|
|
return res.NamedResourceSpec.Value
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// EnvFormat returns the environment string version of the resource
|
|
func EnvFormat(res []*api.GenericResource, prefix string) []string {
|
|
envs := make(map[string][]string)
|
|
for _, v := range res {
|
|
key := Kind(v)
|
|
val := Value(v)
|
|
envs[key] = append(envs[key], val)
|
|
}
|
|
|
|
env := make([]string, 0, len(res))
|
|
for k, v := range envs {
|
|
k = strings.ToUpper(prefix + "_" + k)
|
|
env = append(env, k+"="+strings.Join(v, ","))
|
|
}
|
|
|
|
return env
|
|
}
|