Skip to content

Commit

Permalink
Fix stack v1beta2 does not need to marshal the Compose config.
Browse files Browse the repository at this point in the history
Signed-off-by: Silvin Lubecki <[email protected]>
  • Loading branch information
silvin-lubecki committed Mar 30, 2018
1 parent e89100b commit 92ba690
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 41 deletions.
16 changes: 16 additions & 0 deletions cli/command/stack/kubernetes/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,28 @@ import (
"strconv"
"strings"

"github.com/docker/cli/cli/compose/loader"
composeTypes "github.com/docker/cli/cli/compose/types"
composetypes "github.com/docker/cli/cli/compose/types"
"github.com/docker/cli/kubernetes/compose/v1beta1"
"github.com/docker/cli/kubernetes/compose/v1beta2"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func loadStackData(composefile string) (*composetypes.Config, error) {
parsed, err := loader.ParseYAML([]byte(composefile))
if err != nil {
return nil, err
}
return loader.Load(composetypes.ConfigDetails{
ConfigFiles: []composetypes.ConfigFile{
{
Config: parsed,
},
},
})
}

// Conversions from internal stack to different stack compose component versions.
func stackFromV1beta1(in *v1beta1.Stack) (stack, error) {
cfg, err := loadStackData(in.Spec.ComposeFile)
Expand Down
13 changes: 7 additions & 6 deletions cli/command/stack/kubernetes/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,26 @@ func RunDeploy(dockerCli *KubeCli, opts options.Deploy) error {
return errors.Errorf("Please specify only one compose file (with --compose-file).")
}

// Parse the compose file
cfg, err := loader.LoadComposefile(dockerCli, opts)
// Initialize clients
stacks, err := dockerCli.stacks()
if err != nil {
return err
}
stack, err := loadStack(opts.Namespace, *cfg)
composeClient, err := dockerCli.composeClient()
if err != nil {
return err
}

// Initialize clients
stacks, err := dockerCli.stacks()
// Parse the compose file
cfg, err := loader.LoadComposefile(dockerCli, opts)
if err != nil {
return err
}
composeClient, err := dockerCli.composeClient()
stack, err := stacks.FromCompose(opts.Namespace, *cfg)
if err != nil {
return err
}

configMaps := composeClient.ConfigMaps()
secrets := composeClient.Secrets()
services := composeClient.Services()
Expand Down
33 changes: 0 additions & 33 deletions cli/command/stack/kubernetes/loader.go

This file was deleted.

22 changes: 22 additions & 0 deletions cli/command/stack/kubernetes/stackclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package kubernetes
import (
"fmt"

composetypes "github.com/docker/cli/cli/compose/types"
composev1beta1 "github.com/docker/cli/kubernetes/client/clientset/typed/compose/v1beta1"
composev1beta2 "github.com/docker/cli/kubernetes/client/clientset/typed/compose/v1beta2"
"github.com/docker/cli/kubernetes/labels"
yaml "gopkg.in/yaml.v2"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
Expand All @@ -18,6 +20,7 @@ type stackClient interface {
Get(name string) (stack, error)
List(opts metav1.ListOptions) ([]stack, error)
IsColliding(servicesClient corev1.ServiceInterface, s stack) error
FromCompose(name string, cfg composetypes.Config) (stack, error)
}

// stackV1Beta1 implements stackClient interface and talks to compose component v1beta1.
Expand Down Expand Up @@ -100,6 +103,18 @@ func verify(services corev1.ServiceInterface, stackName string, service string)
return nil
}

func (s *stackV1Beta1) FromCompose(name string, cfg composetypes.Config) (stack, error) {
res, err := yaml.Marshal(cfg)
if err != nil {
return stack{}, err
}
return stack{
name: name,
composeFile: string(res),
spec: fromComposeConfig(&cfg),
}, nil
}

// stackV1Beta2 implements stackClient interface and talks to compose component v1beta2.
type stackV1Beta2 struct {
stacks composev1beta2.StackInterface
Expand Down Expand Up @@ -153,3 +168,10 @@ func (s *stackV1Beta2) List(opts metav1.ListOptions) ([]stack, error) {
func (s *stackV1Beta2) IsColliding(servicesClient corev1.ServiceInterface, st stack) error {
return nil
}

func (s *stackV1Beta2) FromCompose(name string, cfg composetypes.Config) (stack, error) {
return stack{
name: name,
spec: fromComposeConfig(&cfg),
}, nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import (
"github.com/gotestyourself/gotestyourself/assert"
)

func TestLoadStack(t *testing.T) {
s, err := loadStack("foo", composetypes.Config{
func TestFromCompose(t *testing.T) {
stackClient := &stackV1Beta1{}
s, err := stackClient.FromCompose("foo", composetypes.Config{
Version: "3.1",
Filename: "banana",
Services: []composetypes.ServiceConfig{
Expand Down

0 comments on commit 92ba690

Please sign in to comment.