mirror of https://github.com/docker/cli.git
Make sure we marshall version too…
… otherwise the k8s controller might fail to parse the file as it will think it's version 1. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
This commit is contained in:
parent
bbe7f84540
commit
9f9f1c8515
|
@ -8,16 +8,30 @@ import (
|
|||
)
|
||||
|
||||
type versionedConfig struct {
|
||||
*composetypes.Config `yaml:",inline"`
|
||||
Version string
|
||||
composetypes.Config
|
||||
version string
|
||||
}
|
||||
|
||||
func (c versionedConfig) MarshalYAML() (interface{}, error) {
|
||||
services := map[string]composetypes.ServiceConfig{}
|
||||
for _, service := range c.Services {
|
||||
services[service.Name] = service
|
||||
}
|
||||
return map[string]interface{}{
|
||||
"services": services,
|
||||
"networks": c.Networks,
|
||||
"volumes": c.Volumes,
|
||||
"secrets": c.Secrets,
|
||||
"configs": c.Configs,
|
||||
"version": c.version,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// LoadStack loads a stack from a Compose config, with a given name.
|
||||
func LoadStack(name, version string, cfg composetypes.Config) (*apiv1beta1.Stack, error) {
|
||||
cfg.Filename = ""
|
||||
res, err := yaml.Marshal(versionedConfig{
|
||||
Version: version,
|
||||
Config: &cfg,
|
||||
version: version,
|
||||
Config: cfg,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -37,6 +37,7 @@ services:
|
|||
image: bar
|
||||
foo:
|
||||
image: foo
|
||||
version: "3.1"
|
||||
volumes: {}
|
||||
`),
|
||||
},
|
||||
|
|
|
@ -70,7 +70,7 @@ func (cd ConfigDetails) LookupEnv(key string) (string, bool) {
|
|||
|
||||
// Config is a full compose file configuration
|
||||
type Config struct {
|
||||
Filename string
|
||||
Filename string `yaml:"-"`
|
||||
Services []ServiceConfig
|
||||
Networks map[string]NetworkConfig
|
||||
Volumes map[string]VolumeConfig
|
||||
|
@ -80,24 +80,22 @@ type Config struct {
|
|||
|
||||
// MarshalYAML makes Config implement yaml.Marshaller
|
||||
func (c *Config) MarshalYAML() (interface{}, error) {
|
||||
m := map[string]interface{}{}
|
||||
services := map[string]ServiceConfig{}
|
||||
for _, service := range c.Services {
|
||||
s := service
|
||||
s.Name = ""
|
||||
services[service.Name] = s
|
||||
services[service.Name] = service
|
||||
}
|
||||
m["services"] = services
|
||||
m["networks"] = c.Networks
|
||||
m["volumes"] = c.Volumes
|
||||
m["secrets"] = c.Secrets
|
||||
m["configs"] = c.Configs
|
||||
return m, nil
|
||||
return map[string]interface{}{
|
||||
"services": services,
|
||||
"networks": c.Networks,
|
||||
"volumes": c.Volumes,
|
||||
"secrets": c.Secrets,
|
||||
"configs": c.Configs,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ServiceConfig is the configuration of one service
|
||||
type ServiceConfig struct {
|
||||
Name string `yaml:",omitempty"`
|
||||
Name string `yaml:"-"`
|
||||
|
||||
Build BuildConfig `yaml:",omitempty"`
|
||||
CapAdd []string `mapstructure:"cap_add" yaml:"cap_add,omitempty"`
|
||||
|
|
Loading…
Reference in New Issue