Fix linter

Signed-off-by: Guillaume Tardif <guillaume.tardif@docker.com>
This commit is contained in:
Guillaume Tardif 2020-02-21 17:54:01 +01:00 committed by aiordache
parent f1976eca07
commit 5306f38f70
6 changed files with 56 additions and 53 deletions

View File

@ -1,17 +1,17 @@
package compose package compose
const ( const (
LABEL_DOCKER_COMPOSE_PREFIX = "com.docker.compose" LabelDockerComposePrefix = "com.docker.compose"
LABEL_SERVICE = LABEL_DOCKER_COMPOSE_PREFIX + ".service" LabelService = LabelDockerComposePrefix + ".service"
LABEL_VERSION = LABEL_DOCKER_COMPOSE_PREFIX + ".version" LabelVersion = LabelDockerComposePrefix + ".version"
LABEL_CONTAINER_NUMBER = LABEL_DOCKER_COMPOSE_PREFIX + ".container-number" LabelContainerNumber = LabelDockerComposePrefix + ".container-number"
LABEL_ONE_OFF = LABEL_DOCKER_COMPOSE_PREFIX + ".oneoff" LabelOneOff = LabelDockerComposePrefix + ".oneoff"
LABEL_NETWORK = LABEL_DOCKER_COMPOSE_PREFIX + ".network" LabelNetwork = LabelDockerComposePrefix + ".network"
LABEL_SLUG = LABEL_DOCKER_COMPOSE_PREFIX + ".slug" LabelSlug = LabelDockerComposePrefix + ".slug"
LABEL_VOLUME = LABEL_DOCKER_COMPOSE_PREFIX + ".volume" LabelVolume = LabelDockerComposePrefix + ".volume"
LABEL_CONFIG_HASH = LABEL_DOCKER_COMPOSE_PREFIX + ".config-hash" LabelConfigHash = LabelDockerComposePrefix + ".config-hash"
LABEL_PROJECT = LABEL_DOCKER_COMPOSE_PREFIX + ".project" LabelProject = LabelDockerComposePrefix + ".project"
LABEL_WORKING_DIR = LABEL_DOCKER_COMPOSE_PREFIX + ".working_dir" LabelWorkingDir = LabelDockerComposePrefix + ".working_dir"
LABEL_CONFIG_FILES = LABEL_DOCKER_COMPOSE_PREFIX + ".config_files" LabelConfigFiles = LabelDockerComposePrefix + ".config_files"
LABEL_ENVIRONMENT_FILE = LABEL_DOCKER_COMPOSE_PREFIX + ".environment_file" LabelEnvironmentFile = LabelDockerComposePrefix + ".environment_file"
) )

View File

@ -2,6 +2,9 @@ package convert
import ( import (
"fmt" "fmt"
"strings"
"time"
"github.com/compose-spec/compose-go/types" "github.com/compose-spec/compose-go/types"
"github.com/docker/helm-prototype/pkg/compose" "github.com/docker/helm-prototype/pkg/compose"
apps "k8s.io/api/apps/v1" apps "k8s.io/api/apps/v1"
@ -9,13 +12,11 @@ import (
meta "k8s.io/apimachinery/pkg/apis/meta/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"strings"
"time"
) )
func MapToKubernetesObjects(model *compose.Project) (map[string]runtime.Object, error) { func MapToKubernetesObjects(model *compose.Project) (map[string]runtime.Object, error) {
objects := map[string]runtime.Object{} objects := map[string]runtime.Object{}
for _, service := range model.Services { for _, service := range model.Services {
objects[fmt.Sprintf("%s-service.yaml", service.Name)] = mapToService(model, service) objects[fmt.Sprintf("%s-service.yaml", service.Name)] = mapToService(model, service)
if service.Deploy != nil && service.Deploy.Mode == "global" { if service.Deploy != nil && service.Deploy.Mode == "global" {
daemonset, err := mapToDaemonset(service, model) daemonset, err := mapToDaemonset(service, model)
@ -94,13 +95,13 @@ func mapToDeployment(service types.ServiceConfig, model *compose.Project) (*apps
return &apps.Deployment{ return &apps.Deployment{
ObjectMeta: meta.ObjectMeta{ ObjectMeta: meta.ObjectMeta{
Name: service.Name, Name: service.Name,
Labels: labels, Labels: labels,
}, },
Spec: apps.DeploymentSpec{ Spec: apps.DeploymentSpec{
Replicas: toReplicas(service.Deploy), Replicas: toReplicas(service.Deploy),
Strategy: toDeploymentStrategy(service.Deploy), Strategy: toDeploymentStrategy(service.Deploy),
Template: podTemplate, Template: podTemplate,
}, },
}, nil }, nil
} }
@ -126,7 +127,6 @@ func mapToDaemonset(service types.ServiceConfig, model *compose.Project) (*apps.
}, nil }, nil
} }
func toReplicas(deploy *types.DeployConfig) *int32 { func toReplicas(deploy *types.DeployConfig) *int32 {
v := int32(1) v := int32(1)
if deploy != nil { if deploy != nil {
@ -156,11 +156,11 @@ func toDeploymentStrategy(deploy *types.DeployConfig) apps.DeploymentStrategy {
func mapToPVC(service types.ServiceConfig, vol types.ServiceVolumeConfig) runtime.Object { func mapToPVC(service types.ServiceConfig, vol types.ServiceVolumeConfig) runtime.Object {
return &core.PersistentVolumeClaim{ return &core.PersistentVolumeClaim{
ObjectMeta: meta.ObjectMeta{ ObjectMeta: meta.ObjectMeta{
Name: vol.Source, Name: vol.Source,
Labels: map[string]string{"com.docker.compose.service": service.Name}, Labels: map[string]string{"com.docker.compose.service": service.Name},
}, },
Spec: core.PersistentVolumeClaimSpec{ Spec: core.PersistentVolumeClaimSpec{
VolumeName: vol.Source, VolumeName: vol.Source,
}, },
} }
} }

View File

@ -2,14 +2,15 @@ package convert
import ( import (
"fmt" "fmt"
"github.com/compose-spec/compose-go/types"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/helm-prototype/pkg/compose"
"sort" "sort"
"strconv" "strconv"
"strings" "strings"
"time" "time"
"github.com/compose-spec/compose-go/types"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/helm-prototype/pkg/compose"
"github.com/pkg/errors" "github.com/pkg/errors"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
@ -31,14 +32,14 @@ func toPodTemplate(serviceConfig types.ServiceConfig, labels map[string]string,
return apiv1.PodTemplateSpec{}, err return apiv1.PodTemplateSpec{}, err
} }
var limits apiv1.ResourceList = nil var limits apiv1.ResourceList
if serviceConfig.Deploy != nil && serviceConfig.Deploy.Resources.Limits != nil { if serviceConfig.Deploy != nil && serviceConfig.Deploy.Resources.Limits != nil {
limits, err = toResource(serviceConfig.Deploy.Resources.Limits) limits, err = toResource(serviceConfig.Deploy.Resources.Limits)
if err != nil { if err != nil {
return apiv1.PodTemplateSpec{}, err return apiv1.PodTemplateSpec{}, err
} }
} }
var requests apiv1.ResourceList = nil var requests apiv1.ResourceList
if serviceConfig.Deploy != nil && serviceConfig.Deploy.Resources.Reservations != nil { if serviceConfig.Deploy != nil && serviceConfig.Deploy.Resources.Reservations != nil {
requests, err = toResource(serviceConfig.Deploy.Resources.Reservations) requests, err = toResource(serviceConfig.Deploy.Resources.Reservations)
if err != nil { if err != nil {
@ -54,10 +55,10 @@ func toPodTemplate(serviceConfig types.ServiceConfig, labels map[string]string,
if err != nil { if err != nil {
return apiv1.PodTemplateSpec{}, err return apiv1.PodTemplateSpec{}, err
} }
/* pullPolicy, err := toImagePullPolicy(serviceConfig.Image, x-kubernetes-pull-policy) /* pullPolicy, err := toImagePullPolicy(serviceConfig.Image, x-kubernetes-pull-policy)
if err != nil { if err != nil {
return apiv1.PodTemplateSpec{}, err return apiv1.PodTemplateSpec{}, err
} */ } */
tpl.ObjectMeta = metav1.ObjectMeta{ tpl.ObjectMeta = metav1.ObjectMeta{
Labels: labels, Labels: labels,
Annotations: serviceConfig.Labels, Annotations: serviceConfig.Labels,

View File

@ -2,15 +2,16 @@ package convert
import ( import (
"fmt" "fmt"
"os"
"runtime"
"testing"
"github.com/compose-spec/compose-go/loader" "github.com/compose-spec/compose-go/loader"
"github.com/compose-spec/compose-go/types" "github.com/compose-spec/compose-go/types"
"github.com/docker/helm-prototype/pkg/compose" "github.com/docker/helm-prototype/pkg/compose"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
"os"
"runtime"
"testing"
) )
func loadYAML(yaml string) (*compose.Project, error) { func loadYAML(yaml string) (*compose.Project, error) {
@ -256,7 +257,7 @@ services:
assert.Len(t, podTemplate.Spec.Containers[0].VolumeMounts, 2) assert.Len(t, podTemplate.Spec.Containers[0].VolumeMounts, 2)
} }
func /*FIXME Test*/ToPodWithRelativeVolumes(t *testing.T) { func /*FIXME Test*/ ToPodWithRelativeVolumes(t *testing.T) {
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
t.Skip("on windows, source path validation is broken (and actually, source validation for windows workload is broken too). Skip it for now, as we don't support it yet") t.Skip("on windows, source path validation is broken (and actually, source validation for windows workload is broken too). Skip it for now, as we don't support it yet")
return return
@ -401,7 +402,7 @@ services:
assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0]) assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0])
} }
func /*FIXME Test*/ToPodWithFileBasedSecret(t *testing.T) { func /*FIXME Test*/ ToPodWithFileBasedSecret(t *testing.T) {
podTemplate := podTemplate(t, ` podTemplate := podTemplate(t, `
version: "3" version: "3"
services: services:
@ -442,7 +443,7 @@ secrets:
assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0]) assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0])
} }
func /*FIXME Test*/ToPodWithTwoFileBasedSecrets(t *testing.T) { func /*FIXME Test*/ ToPodWithTwoFileBasedSecrets(t *testing.T) {
podTemplate := podTemplate(t, ` podTemplate := podTemplate(t, `
version: "3" version: "3"
services: services:
@ -603,7 +604,7 @@ services:
assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0]) assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0])
} }
func /*FIXME Test*/ToPodWithFileBasedConfig(t *testing.T) { func /*FIXME Test*/ ToPodWithFileBasedConfig(t *testing.T) {
podTemplate := podTemplate(t, ` podTemplate := podTemplate(t, `
version: "3" version: "3"
services: services:
@ -653,7 +654,7 @@ configs:
assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0]) assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0])
} }
func /*FIXME Test*/ToPodWithTargetlessFileBasedConfig(t *testing.T) { func /*FIXME Test*/ ToPodWithTargetlessFileBasedConfig(t *testing.T) {
podTemplate := podTemplate(t, ` podTemplate := podTemplate(t, `
version: "3" version: "3"
services: services:
@ -746,7 +747,7 @@ configs:
assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0]) assert.Equal(t, expectedMount, podTemplate.Spec.Containers[0].VolumeMounts[0])
} }
func /*FIXME Test*/ToPodWithTwoConfigsSameMountPoint(t *testing.T) { func /*FIXME Test*/ ToPodWithTwoConfigsSameMountPoint(t *testing.T) {
podTemplate := podTemplate(t, ` podTemplate := podTemplate(t, `
version: "3" version: "3"
services: services:
@ -897,7 +898,7 @@ configs:
assert.Equal(t, expectedMounts, podTemplate.Spec.Containers[0].VolumeMounts) assert.Equal(t, expectedMounts, podTemplate.Spec.Containers[0].VolumeMounts)
} }
func /*FIXME Test*/ToPodWithPullSecret(t *testing.T) { func /*FIXME Test*/ ToPodWithPullSecret(t *testing.T) {
podTemplateWithSecret := podTemplate(t, ` podTemplateWithSecret := podTemplate(t, `
version: "3" version: "3"
services: services:
@ -919,7 +920,7 @@ services:
assert.Nil(t, podTemplateNoSecret.Spec.ImagePullSecrets) assert.Nil(t, podTemplateNoSecret.Spec.ImagePullSecrets)
} }
func /*FIXME Test*/ToPodWithPullPolicy(t *testing.T) { func /*FIXME Test*/ ToPodWithPullPolicy(t *testing.T) {
cases := []struct { cases := []struct {
name string name string
stack string stack string

View File

@ -2,12 +2,13 @@ package convert
import ( import (
"fmt" "fmt"
"github.com/compose-spec/compose-go/types"
"github.com/docker/helm-prototype/pkg/compose"
"path" "path"
"path/filepath" "path/filepath"
"strings" "strings"
"github.com/compose-spec/compose-go/types"
"github.com/docker/helm-prototype/pkg/compose"
"github.com/pkg/errors" "github.com/pkg/errors"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
) )

View File

@ -3,16 +3,17 @@ package helm
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"gopkg.in/yaml.v3"
"html/template" "html/template"
"io/ioutil" "io/ioutil"
"k8s.io/apimachinery/pkg/runtime"
"os" "os"
"path/filepath" "path/filepath"
"gopkg.in/yaml.v3"
"k8s.io/apimachinery/pkg/runtime"
) )
func Write(project string, objects map[string]runtime.Object, target string) error { func Write(project string, objects map[string]runtime.Object, target string) error {
out := Outputer{ target } out := Outputer{target}
if err := out.Write("README.md", []byte("This chart was created by converting a Compose file")); err != nil { if err := out.Write("README.md", []byte("This chart was created by converting a Compose file")); err != nil {
return err return err
@ -38,7 +39,6 @@ home:
var chartData bytes.Buffer var chartData bytes.Buffer
_ = t.Execute(&chartData, ChartDetails{project}) _ = t.Execute(&chartData, ChartDetails{project})
if err := out.Write("Chart.yaml", chartData.Bytes()); err != nil { if err := out.Write("Chart.yaml", chartData.Bytes()); err != nil {
return err return err
} }
@ -93,4 +93,4 @@ func jsonToYaml(j []byte, spaces int) ([]byte, error) {
// Marshal this object into YAML. // Marshal this object into YAML.
// return yaml.Marshal(jsonObj) // return yaml.Marshal(jsonObj)
} }