Skip to content

Commit 7d41d18

Browse files
author
Vincent Demeester
authored
Merge pull request docker#890 from silvin-lubecki/fix-kube-stack-marshaling
Fix stack marshaling for Kubernetes
2 parents e34ca97 + 9b27e92 commit 7d41d18

File tree

3 files changed

+50
-5
lines changed

3 files changed

+50
-5
lines changed

cli/command/stack/kubernetes/deploy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func RunDeploy(dockerCli *KubeCli, opts options.Deploy) error {
2626
if err != nil {
2727
return err
2828
}
29-
stack, err := LoadStack(opts.Namespace, version, cfg)
29+
stack, err := LoadStack(opts.Namespace, version, *cfg)
3030
if err != nil {
3131
return err
3232
}

cli/command/stack/kubernetes/loader.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ import (
88
)
99

1010
type versionedConfig struct {
11-
composetypes.Config
12-
Version string
11+
*composetypes.Config `yaml:",inline"`
12+
Version string
1313
}
1414

1515
// LoadStack loads a stack from a Compose config, with a given name.
16-
func LoadStack(name, version string, cfg *composetypes.Config) (*apiv1beta1.Stack, error) {
16+
func LoadStack(name, version string, cfg composetypes.Config) (*apiv1beta1.Stack, error) {
17+
cfg.Filename = ""
1718
res, err := yaml.Marshal(versionedConfig{
1819
Version: version,
19-
Config: *cfg,
20+
Config: &cfg,
2021
})
2122
if err != nil {
2223
return nil, err
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package kubernetes
2+
3+
import (
4+
"testing"
5+
6+
composetypes "github.com/docker/cli/cli/compose/types"
7+
apiv1beta1 "github.com/docker/cli/kubernetes/compose/v1beta1"
8+
"github.com/stretchr/testify/require"
9+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10+
)
11+
12+
func TestLoadStack(t *testing.T) {
13+
s, err := LoadStack("foo", "3.1", composetypes.Config{
14+
Filename: "banana",
15+
Services: []composetypes.ServiceConfig{
16+
{
17+
Name: "foo",
18+
Image: "foo",
19+
},
20+
{
21+
Name: "bar",
22+
Image: "bar",
23+
},
24+
},
25+
})
26+
require.NoError(t, err)
27+
require.Equal(t, &apiv1beta1.Stack{
28+
ObjectMeta: metav1.ObjectMeta{
29+
Name: "foo",
30+
},
31+
Spec: apiv1beta1.StackSpec{
32+
ComposeFile: string(`configs: {}
33+
networks: {}
34+
secrets: {}
35+
services:
36+
bar:
37+
image: bar
38+
foo:
39+
image: foo
40+
volumes: {}
41+
`),
42+
},
43+
}, s)
44+
}

0 commit comments

Comments
 (0)