mirror of https://github.com/docker/cli.git
Add support for `template_driver` in composefiles
This maps the `--template-driver` flag on secret and config creation. Signed-off-by: Vincent Demeester <vincent@sbr.pm> Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
8c3a619d13
commit
7764101a54
|
@ -110,7 +110,13 @@ func Secrets(namespace Namespace, secrets map[string]composetypes.SecretConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
result = append(result, swarm.SecretSpec{Annotations: obj.Annotations, Data: obj.Data})
|
spec := swarm.SecretSpec{Annotations: obj.Annotations, Data: obj.Data}
|
||||||
|
if secret.TemplateDriver != "" {
|
||||||
|
spec.Templating = &swarm.Driver{
|
||||||
|
Name: secret.TemplateDriver,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = append(result, spec)
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
@ -127,7 +133,13 @@ func Configs(namespace Namespace, configs map[string]composetypes.ConfigObjConfi
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
result = append(result, swarm.ConfigSpec{Annotations: obj.Annotations, Data: obj.Data})
|
spec := swarm.ConfigSpec{Annotations: obj.Annotations, Data: obj.Data}
|
||||||
|
if config.TemplateDriver != "" {
|
||||||
|
spec.Templating = &swarm.Driver{
|
||||||
|
Name: config.TemplateDriver,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = append(result, spec)
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1484,3 +1484,64 @@ func TestTransform(t *testing.T) {
|
||||||
|
|
||||||
assert.Check(t, is.DeepEqual(samplePortsConfig, ports))
|
assert.Check(t, is.DeepEqual(samplePortsConfig, ports))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLoadTemplateDriver(t *testing.T) {
|
||||||
|
config, err := loadYAML(`
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
hello-world:
|
||||||
|
image: redis:alpine
|
||||||
|
secrets:
|
||||||
|
- secret
|
||||||
|
configs:
|
||||||
|
- config
|
||||||
|
|
||||||
|
configs:
|
||||||
|
config:
|
||||||
|
name: config
|
||||||
|
external: true
|
||||||
|
template_driver: config-driver
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
secret:
|
||||||
|
name: secret
|
||||||
|
external: true
|
||||||
|
template_driver: secret-driver
|
||||||
|
`)
|
||||||
|
assert.NilError(t, err)
|
||||||
|
expected := &types.Config{
|
||||||
|
Filename: "filename.yml",
|
||||||
|
Version: "3.8",
|
||||||
|
Services: types.Services{
|
||||||
|
{
|
||||||
|
Name: "hello-world",
|
||||||
|
Image: "redis:alpine",
|
||||||
|
Configs: []types.ServiceConfigObjConfig{
|
||||||
|
{
|
||||||
|
Source: "config",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Secrets: []types.ServiceSecretConfig{
|
||||||
|
{
|
||||||
|
Source: "secret",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Configs: map[string]types.ConfigObjConfig{
|
||||||
|
"config": {
|
||||||
|
Name: "config",
|
||||||
|
External: types.External{External: true},
|
||||||
|
TemplateDriver: "config-driver",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Secrets: map[string]types.SecretConfig{
|
||||||
|
"secret": {
|
||||||
|
Name: "secret",
|
||||||
|
External: types.External{External: true},
|
||||||
|
TemplateDriver: "secret-driver",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
assert.DeepEqual(t, config, expected, cmpopts.EquateEmpty())
|
||||||
|
}
|
||||||
|
|
|
@ -510,45 +510,45 @@ bnBpPlHfjORjkTRf1wyAwiYqMXd9/G6313QfoXs6/sbZ66r6e179PwAA//8ZL3SpvkUAAA==
|
||||||
|
|
||||||
"/data/config_schema_v3.8.json": {
|
"/data/config_schema_v3.8.json": {
|
||||||
local: "data/config_schema_v3.8.json",
|
local: "data/config_schema_v3.8.json",
|
||||||
size: 17912,
|
size: 18006,
|
||||||
modtime: 1518458244,
|
modtime: 1518458244,
|
||||||
compressed: `
|
compressed: `
|
||||||
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
|
||||||
yYJltPhFAAA=
|
jmPjVfX3tPpvAAAA//+mJNa5VkYAAA==
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -537,7 +537,8 @@
|
||||||
"name": {"type": "string"}
|
"name": {"type": "string"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"labels": {"$ref": "#/definitions/list_or_dict"}
|
"labels": {"$ref": "#/definitions/list_or_dict"},
|
||||||
|
"template_driver": {"type": "string"}
|
||||||
},
|
},
|
||||||
"patternProperties": {"^x-": {}},
|
"patternProperties": {"^x-": {}},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
@ -555,7 +556,8 @@
|
||||||
"name": {"type": "string"}
|
"name": {"type": "string"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"labels": {"$ref": "#/definitions/list_or_dict"}
|
"labels": {"$ref": "#/definitions/list_or_dict"},
|
||||||
|
"template_driver": {"type": "string"}
|
||||||
},
|
},
|
||||||
"patternProperties": {"^x-": {}},
|
"patternProperties": {"^x-": {}},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
|
|
@ -503,11 +503,12 @@ type CredentialSpecConfig struct {
|
||||||
|
|
||||||
// FileObjectConfig is a config type for a file used by a service
|
// FileObjectConfig is a config type for a file used by a service
|
||||||
type FileObjectConfig struct {
|
type FileObjectConfig struct {
|
||||||
Name string `yaml:",omitempty" json:"name,omitempty"`
|
Name string `yaml:",omitempty" json:"name,omitempty"`
|
||||||
File string `yaml:",omitempty" json:"file,omitempty"`
|
File string `yaml:",omitempty" json:"file,omitempty"`
|
||||||
External External `yaml:",omitempty" json:"external,omitempty"`
|
External External `yaml:",omitempty" json:"external,omitempty"`
|
||||||
Labels Labels `yaml:",omitempty" json:"labels,omitempty"`
|
Labels Labels `yaml:",omitempty" json:"labels,omitempty"`
|
||||||
Extras map[string]interface{} `yaml:",inline" json:"-"`
|
Extras map[string]interface{} `yaml:",inline" json:"-"`
|
||||||
|
TemplateDriver string `mapstructure:"template_driver" yaml:"template_driver,omitempty" json:"template_driver,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SecretConfig for a secret
|
// SecretConfig for a secret
|
||||||
|
|
Loading…
Reference in New Issue