fix golint errors

This commit is contained in:
Tomas Kral
2017-01-05 10:31:11 +01:00
parent 502157a078
commit 4f176b847e
19 changed files with 159 additions and 114 deletions
+5 -2
View File
@@ -41,12 +41,15 @@ import (
)
const (
// DefaultComposeFile name of the file that kompose will use if no file is explicitly set
DefaultComposeFile = "docker-compose.yml"
DefaultProvider = "kubernetes"
// DefaultProvider - provider that will be used if there is no provider was explicitly set
DefaultProvider = "kubernetes"
)
var inputFormat = "compose"
// ValidateFlags validates all command line flags
func ValidateFlags(bundle string, args []string, cmd *cobra.Command, opt *kobject.ConvertOptions) {
// Check to see if the "file" has changed from the default flag value
@@ -125,7 +128,7 @@ func ValidateFlags(bundle string, args []string, cmd *cobra.Command, opt *kobjec
logrus.Fatal("Unknown Argument(s): ", strings.Join(args, ","))
}
if opt.GenerateJson && opt.GenerateYaml {
if opt.GenerateJSON && opt.GenerateYaml {
logrus.Fatalf("YAML and JSON format cannot be provided at the same time")
}
}
+2 -1
View File
@@ -27,6 +27,7 @@ type KomposeObject struct {
LoadedFrom string
}
// ConvertOptions holds all options that controls transformation process
type ConvertOptions struct {
ToStdout bool
CreateD bool
@@ -37,7 +38,7 @@ type ConvertOptions struct {
BuildBranch string
CreateChart bool
GenerateYaml bool
GenerateJson bool
GenerateJSON bool
EmptyVols bool
Replicas int
InputFiles []string
+3 -2
View File
@@ -31,6 +31,7 @@ import (
"github.com/kubernetes-incubator/kompose/pkg/kobject"
)
// Bundle is docker bundle file loader, implements Loader interface
type Bundle struct {
}
@@ -172,7 +173,7 @@ func loadPorts(service Service) ([]kobject.Ports, string) {
return ports, ""
}
// load dab file into KomposeObject
// LoadFile loads dab file into KomposeObject
func (b *Bundle) LoadFile(files []string) kobject.KomposeObject {
komposeObject := kobject.KomposeObject{
ServiceConfigs: make(map[string]kobject.ServiceConfig),
@@ -244,7 +245,7 @@ func loadFile(reader io.Reader) (*Bundlefile, error) {
jsonErr.Error())
case *json.UnmarshalTypeError:
return nil, fmt.Errorf(
"Unexpected type at byte %v. Expected %s but received %s.",
"unexpected type at byte %v. expected %s but received %s",
jsonErr.Offset,
jsonErr.Type,
jsonErr.Value)
+2 -1
View File
@@ -34,6 +34,7 @@ import (
"github.com/kubernetes-incubator/kompose/pkg/kobject"
)
// Compose is docker compose file loader, implements Loader interface
type Compose struct {
}
@@ -220,7 +221,7 @@ func loadPorts(composePorts []string) ([]kobject.Ports, error) {
return ports, nil
}
// load compose file into KomposeObject
// LoadFile loads compose file into KomposeObject
func (c *Compose) LoadFile(files []string) kobject.KomposeObject {
komposeObject := kobject.KomposeObject{
ServiceConfigs: make(map[string]kobject.ServiceConfig),
+2 -2
View File
@@ -17,7 +17,6 @@ limitations under the License.
package loader
import (
"errors"
"fmt"
"github.com/kubernetes-incubator/kompose/pkg/kobject"
@@ -25,6 +24,7 @@ import (
"github.com/kubernetes-incubator/kompose/pkg/loader/compose"
)
// Loader interface defines loader that loads files and converts it to kobject representation
type Loader interface {
LoadFile(files []string) kobject.KomposeObject
///Name() string
@@ -40,7 +40,7 @@ func GetLoader(format string) (Loader, error) {
case "compose":
l = new(compose.Compose)
default:
return nil, errors.New(fmt.Sprintf("Input file format %s is not supported", format))
return nil, fmt.Errorf("Input file format %s is not supported", format)
}
return l, nil
+8 -2
View File
@@ -8,10 +8,12 @@ import (
"testing"
)
// NewCommand TODO: comment
func NewCommand(cmd string) *exec.Cmd {
return exec.Command("sh", "-c", cmd)
}
// CreateLocalDirectory TODO: comment
func CreateLocalDirectory(t *testing.T) string {
dir, err := ioutil.TempDir(os.TempDir(), "kompose-test-")
if err != nil {
@@ -20,6 +22,7 @@ func CreateLocalDirectory(t *testing.T) string {
return dir
}
// CreateLocalGitDirectory TODO: comment
func CreateLocalGitDirectory(t *testing.T) string {
dir := CreateLocalDirectory(t)
cmd := NewCommand(
@@ -35,8 +38,9 @@ func CreateLocalGitDirectory(t *testing.T) string {
return dir
}
func SetGitRemote(t *testing.T, dir string, remote string, remoteUrl string) {
cmd := NewCommand(fmt.Sprintf("git remote add %s %s", remote, remoteUrl))
// SetGitRemote TODO: comment
func SetGitRemote(t *testing.T, dir string, remote string, remoteURL string) {
cmd := NewCommand(fmt.Sprintf("git remote add %s %s", remote, remoteURL))
cmd.Dir = dir
_, err := cmd.Output()
if err != nil {
@@ -45,6 +49,7 @@ func SetGitRemote(t *testing.T, dir string, remote string, remoteUrl string) {
}
}
// CreateGitRemoteBranch TODO: comment
func CreateGitRemoteBranch(t *testing.T, dir string, branch string, remote string) {
cmd := NewCommand(
fmt.Sprintf(`git checkout -b %s &&
@@ -60,6 +65,7 @@ func CreateGitRemoteBranch(t *testing.T, dir string, branch string, remote strin
}
}
// CreateSubdir TODO: comment
func CreateSubdir(t *testing.T, dir string, subdir string) {
cmd := NewCommand(fmt.Sprintf("mkdir -p %s", subdir))
cmd.Dir = dir
+21 -20
View File
@@ -186,11 +186,11 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error {
if err != nil {
return err
}
data, err := marshal(convertedList, opt.GenerateJson)
data, err := marshal(convertedList, opt.GenerateJSON)
if err != nil {
return fmt.Errorf("Error in marshalling the List: %v", err)
}
files = append(files, transformer.Print("", dirName, "", data, opt.ToStdout, opt.GenerateJson, f))
files = append(files, transformer.Print("", dirName, "", data, opt.ToStdout, opt.GenerateJSON, f))
} else {
var file string
// create a separate file for each provider
@@ -199,33 +199,33 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error {
if err != nil {
return err
}
data, err := marshal(versionedObject, opt.GenerateJson)
data, err := marshal(versionedObject, opt.GenerateJSON)
if err != nil {
return err
}
switch t := v.(type) {
case *api.ReplicationController:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *extensions.Deployment:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *extensions.DaemonSet:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *deployapi.DeploymentConfig:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *buildapi.BuildConfig:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *imageapi.ImageStream:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *api.Service:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *api.PersistentVolumeClaim:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *api.Pod:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *routeapi.Route:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
case *extensions.Ingress:
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJson, f)
file = transformer.Print(t.Name, dirName, strings.ToLower(t.Kind), data, opt.ToStdout, opt.GenerateJSON, f)
}
files = append(files, file)
@@ -270,16 +270,17 @@ func convertToVersion(obj runtime.Object, groupVersion unversioned.GroupVersion)
return convertedObject, nil
}
// PortsExist checks if service has ports defined
func (k *Kubernetes) PortsExist(name string, service kobject.ServiceConfig) bool {
if len(service.Port) == 0 {
logrus.Warningf("[%s] Service cannot be created because of missing port.", name)
return false
} else {
return true
}
return true
}
// create a k8s service
// CreateService creates a k8s service
func (k *Kubernetes) CreateService(name string, service kobject.ServiceConfig, objects []runtime.Object) *api.Service {
svc := k.InitSvc(name, service)
@@ -296,7 +297,7 @@ func (k *Kubernetes) CreateService(name string, service kobject.ServiceConfig, o
return svc
}
// load configurations to k8s objects
// UpdateKubernetesObjects loads configurations to k8s objects
func (k *Kubernetes) UpdateKubernetesObjects(name string, service kobject.ServiceConfig, objects *[]runtime.Object) {
// Configure the environment variables.
envs := k.ConfigEnvs(name, service)
@@ -376,7 +377,7 @@ func (k *Kubernetes) UpdateKubernetesObjects(name string, service kobject.Servic
}
}
// the objects that we get can be in any order this keeps services first
// SortServicesFirst - the objects that we get can be in any order this keeps services first
// according to best practice kubernetes services should be created first
// http://kubernetes.io/docs/user-guide/config-best-practices/
func (k *Kubernetes) SortServicesFirst(objs *[]runtime.Object) {
@@ -408,8 +409,8 @@ func (k *Kubernetes) findDependentVolumes(svcname string, komposeObject kobject.
return
}
// VolumesFrom creates volums and volumeMounts for volumes_from
func (k *Kubernetes) VolumesFrom(objects *[]runtime.Object, komposeObject kobject.KomposeObject) {
for _, obj := range *objects {
switch t := obj.(type) {
case *api.ReplicationController:
+5 -4
View File
@@ -20,11 +20,12 @@ import (
"strconv"
"testing"
"os"
"path/filepath"
"github.com/kubernetes-incubator/kompose/pkg/kobject"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/extensions"
"os"
"path/filepath"
)
/*
@@ -57,11 +58,11 @@ func TestCreateService(t *testing.T) {
}
// An example object generated via k8s runtime.Objects()
kompose_object := kobject.KomposeObject{
komposeObject := kobject.KomposeObject{
ServiceConfigs: map[string]kobject.ServiceConfig{"app": service},
}
k := Kubernetes{}
objects := k.Transform(kompose_object, kobject.ConvertOptions{CreateD: true, Replicas: 3})
objects := k.Transform(komposeObject, kobject.ConvertOptions{CreateD: true, Replicas: 3})
// Test the creation of the service
svc := k.CreateService("foo", service, objects)
+34 -29
View File
@@ -31,12 +31,14 @@ import (
deployapi "github.com/openshift/origin/pkg/deploy/api"
// install kubernetes api
"k8s.io/kubernetes/pkg/api"
_ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/extensions"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
@@ -46,12 +48,13 @@ import (
//"k8s.io/kubernetes/pkg/controller/daemon"
)
// Kubernetes implements Transformer interface and represents Kubernetes transformer
type Kubernetes struct {
// the user provided options from the command line
Opt kobject.ConvertOptions
}
// timeout is how long we'll wait for the termination of kubernetes resource to be successful
// TIMEOUT is how long we'll wait for the termination of kubernetes resource to be successful
// used when undeploying resources from kubernetes
const TIMEOUT = 300
@@ -64,7 +67,7 @@ var unsupportedKey = map[string]bool{
"Build": false,
}
// checkUnsupportedKey checks if given komposeObject contains
// CheckUnsupportedKey checks if given komposeObject contains
// keys that are not supported by this tranfomer.
// list of all unsupported keys are stored in unsupportedKey variable
// returns list of TODO: ....
@@ -101,7 +104,7 @@ func (k *Kubernetes) CheckUnsupportedKey(komposeObject *kobject.KomposeObject, u
return keysFound
}
// Init RC object
// InitRC initializes Kubernetes ReplicationController object
func (k *Kubernetes) InitRC(name string, service kobject.ServiceConfig, replicas int) *api.ReplicationController {
rc := &api.ReplicationController{
TypeMeta: unversioned.TypeMeta{
@@ -131,7 +134,7 @@ func (k *Kubernetes) InitRC(name string, service kobject.ServiceConfig, replicas
return rc
}
// Init Svc object
// InitSvc initializes Kubernets Service object
func (k *Kubernetes) InitSvc(name string, service kobject.ServiceConfig) *api.Service {
svc := &api.Service{
TypeMeta: unversioned.TypeMeta{
@@ -149,7 +152,7 @@ func (k *Kubernetes) InitSvc(name string, service kobject.ServiceConfig) *api.Se
return svc
}
// Init Deployment
// InitD initializes Kubernetes Deployment object
func (k *Kubernetes) InitD(name string, service kobject.ServiceConfig, replicas int) *extensions.Deployment {
dc := &extensions.Deployment{
TypeMeta: unversioned.TypeMeta{
@@ -176,7 +179,7 @@ func (k *Kubernetes) InitD(name string, service kobject.ServiceConfig, replicas
return dc
}
// Init DS object
// InitDS initializes Kubernetes DaemonSet object
func (k *Kubernetes) InitDS(name string, service kobject.ServiceConfig) *extensions.DaemonSet {
ds := &extensions.DaemonSet{
TypeMeta: unversioned.TypeMeta{
@@ -241,7 +244,7 @@ func (k *Kubernetes) initIngress(name string, service kobject.ServiceConfig, por
return ingress
}
// Initialize PersistentVolumeClaim
// CreatePVC initializes PersistentVolumeClaim
func (k *Kubernetes) CreatePVC(name string, mode string) *api.PersistentVolumeClaim {
size, err := resource.ParseQuantity("100Mi")
if err != nil {
@@ -273,7 +276,7 @@ func (k *Kubernetes) CreatePVC(name string, mode string) *api.PersistentVolumeCl
return pvc
}
// Configure the container ports.
// ConfigPorts configures the container ports.
func (k *Kubernetes) ConfigPorts(name string, service kobject.ServiceConfig) []api.ContainerPort {
ports := []api.ContainerPort{}
for _, port := range service.Port {
@@ -286,7 +289,7 @@ func (k *Kubernetes) ConfigPorts(name string, service kobject.ServiceConfig) []a
return ports
}
// Configure the container service ports.
// ConfigServicePorts configure the container service ports.
func (k *Kubernetes) ConfigServicePorts(name string, service kobject.ServiceConfig) []api.ServicePort {
servicePorts := []api.ServicePort{}
for _, port := range service.Port {
@@ -306,7 +309,7 @@ func (k *Kubernetes) ConfigServicePorts(name string, service kobject.ServiceConf
return servicePorts
}
// Configure the container volumes.
// ConfigVolumes configure the container volumes.
func (k *Kubernetes) ConfigVolumes(name string, service kobject.ServiceConfig) ([]api.VolumeMount, []api.Volume, []*api.PersistentVolumeClaim) {
volumeMounts := []api.VolumeMount{}
volumes := []api.Volume{}
@@ -368,14 +371,14 @@ func (k *Kubernetes) ConfigVolumes(name string, service kobject.ServiceConfig) (
return volumeMounts, volumes, PVCs
}
// helper function to create an EmptyDir api.VolumeSource
// ConfigEmptyVolumeSource is helper function to create an EmptyDir api.VolumeSource
func (k *Kubernetes) ConfigEmptyVolumeSource() *api.VolumeSource {
return &api.VolumeSource{
EmptyDir: &api.EmptyDirVolumeSource{},
}
}
// helper function to create an api.VolumeSource with a PVC
// ConfigPVCVolumeSource is helper function to create an api.VolumeSource with a PVC
func (k *Kubernetes) ConfigPVCVolumeSource(name string, readonly bool) *api.VolumeSource {
return &api.VolumeSource{
PersistentVolumeClaim: &api.PersistentVolumeClaimVolumeSource{
@@ -385,7 +388,7 @@ func (k *Kubernetes) ConfigPVCVolumeSource(name string, readonly bool) *api.Volu
}
}
// Configure the environment variables.
// ConfigEnvs configures the environment variables.
func (k *Kubernetes) ConfigEnvs(name string, service kobject.ServiceConfig) []api.EnvVar {
envs := []api.EnvVar{}
for _, v := range service.Environment {
@@ -398,7 +401,7 @@ func (k *Kubernetes) ConfigEnvs(name string, service kobject.ServiceConfig) []ap
return envs
}
// Generate a Kubernetes artifact for each input type service
// CreateKubernetesObjects generates a Kubernetes artifact for each input type service
func (k *Kubernetes) CreateKubernetesObjects(name string, service kobject.ServiceConfig, opt kobject.ConvertOptions) []runtime.Object {
var objects []runtime.Object
@@ -415,6 +418,7 @@ func (k *Kubernetes) CreateKubernetesObjects(name string, service kobject.Servic
return objects
}
// InitPod initializes Kubernetes Pod object
func (k *Kubernetes) InitPod(name string, service kobject.ServiceConfig) *api.Pod {
pod := api.Pod{
TypeMeta: unversioned.TypeMeta{
@@ -450,7 +454,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
// Need to ensure the kubernetes objects are in a consistent order
var sortedKeys []string
for name, _ := range komposeObject.ServiceConfigs {
for name := range komposeObject.ServiceConfigs {
sortedKeys = append(sortedKeys, name)
}
sort.Strings(sortedKeys)
@@ -487,7 +491,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
return allobjects
}
// Updates the given object with the given pod template update function and ObjectMeta update function
// UpdateController updates the given object with the given pod template update function and ObjectMeta update function
func (k *Kubernetes) UpdateController(obj runtime.Object, updateTemplate func(*api.PodTemplateSpec), updateMeta func(meta *api.ObjectMeta)) {
switch t := obj.(type) {
case *api.ReplicationController:
@@ -518,8 +522,8 @@ func (k *Kubernetes) UpdateController(obj runtime.Object, updateTemplate func(*a
}
}
// Creates the k8s Client, returns k8s client and namespace
func (o *Kubernetes) GetKubernetesClient() (*client.Client, string, error) {
// GetKubernetesClient creates the k8s Client, returns k8s client and namespace
func (k *Kubernetes) GetKubernetesClient() (*client.Client, string, error) {
// initialize Kubernetes client
factory := cmdutil.NewFactory(nil)
clientConfig, err := factory.ClientConfig()
@@ -536,7 +540,7 @@ func (o *Kubernetes) GetKubernetesClient() (*client.Client, string, error) {
return client, namespace, nil
}
// Submit deployment and svc to k8s endpoint
// Deploy submits deployment and svc to k8s endpoint
func (k *Kubernetes) Deploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {
//Convert komposeObject
objects := k.Transform(komposeObject, opt)
@@ -592,6 +596,7 @@ func (k *Kubernetes) Deploy(komposeObject kobject.KomposeObject, opt kobject.Con
return nil
}
// Undeploy deletes deployed objects from Kubernetes cluster
func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {
//Convert komposeObject
objects := k.Transform(komposeObject, opt)
@@ -613,9 +618,9 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
err = rpDeployment.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted Deployment: %s", t.Name)
}
logrus.Infof("Successfully deleted Deployment: %s", t.Name)
case *api.Service:
//delete svc
rpService, err := kubectl.ReaperFor(api.Kind("Service"), client)
@@ -626,17 +631,17 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
err = rpService.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted Service: %s", t.Name)
}
logrus.Infof("Successfully deleted Service: %s", t.Name)
case *api.PersistentVolumeClaim:
// delete pvc
err = client.PersistentVolumeClaims(namespace).Delete(t.Name)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name)
}
logrus.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name)
case *extensions.Ingress:
// delete ingress
ingDeleteOptions := &api.DeleteOptions{
@@ -648,9 +653,9 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
err = client.Ingress(namespace).Delete(t.Name, ingDeleteOptions)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted Ingress: %s", t.Name)
}
logrus.Infof("Successfully deleted Ingress: %s", t.Name)
}
}
return nil
@@ -76,14 +76,14 @@ func equalStringSlice(s1, s2 []string) bool {
return true
}
func equalEnv(kEnvs []kobject.EnvVar, k8sEnvs []api.EnvVar) bool {
if len(kEnvs) != len(k8sEnvs) {
func equalEnv(kobjectEnvs []kobject.EnvVar, k8sEnvs []api.EnvVar) bool {
if len(kobjectEnvs) != len(k8sEnvs) {
return false
}
for _, kEnv := range kEnvs {
for _, env := range kobjectEnvs {
found := false
for _, k8sEnv := range k8sEnvs {
if kEnv.Name == k8sEnv.Name && kEnv.Value == k8sEnv.Value {
if env.Name == k8sEnv.Name && env.Value == k8sEnv.Value {
found = true
}
}
@@ -94,16 +94,16 @@ func equalEnv(kEnvs []kobject.EnvVar, k8sEnvs []api.EnvVar) bool {
return true
}
func equalPorts(kPorts []kobject.Ports, k8sPorts []api.ContainerPort) bool {
if len(kPorts) != len(k8sPorts) {
func equalPorts(kobjectPorts []kobject.Ports, k8sPorts []api.ContainerPort) bool {
if len(kobjectPorts) != len(k8sPorts) {
return false
}
for _, kPort := range kPorts {
for _, port := range kobjectPorts {
found := false
for _, k8sPort := range k8sPorts {
// FIXME: HostPort should be copied to container port
//if kPort.HostPort == k8sPort.HostPort && kPort.Protocol == k8sPort.Protocol && kPort.ContainerPort == k8sPort.ContainerPort {
if kPort.Protocol == k8sPort.Protocol && kPort.ContainerPort == k8sPort.ContainerPort {
//if port.HostPort == k8sPort.HostPort && port.Protocol == k8sPort.Protocol && port.ContainerPort == k8sPort.ContainerPort {
if port.Protocol == k8sPort.Protocol && port.ContainerPort == k8sPort.ContainerPort {
found = true
}
// Name and HostIp shouldn't be set
+19 -16
View File
@@ -48,6 +48,7 @@ import (
"k8s.io/kubernetes/pkg/util/intstr"
)
// OpenShift implements Transformer interface and represents OpenShift transformer
type OpenShift struct {
// Anonymous field allows for inheritance. We are basically inheriting
// all of kubernetes.Kubernetes Methods and variables here. We'll overwite
@@ -55,7 +56,7 @@ type OpenShift struct {
kubernetes.Kubernetes
}
// timeout is how long we'll wait for the termination of OpenShift resource to be successful
// TIMEOUT is how long we'll wait for the termination of OpenShift resource to be successful
// used when undeploying resources from OpenShift
const TIMEOUT = 300
@@ -72,9 +73,9 @@ func getImageTag(image string) string {
p := strings.Split(image, ":")
if len(p) == 2 {
return p[1]
} else {
return "latest"
}
return "latest"
}
// hasGitBinary checks if the 'git' binary is available on the system
@@ -83,8 +84,8 @@ func hasGitBinary() bool {
return err == nil
}
// getGitCurrentRemoteUrl gets current git remote URI for the current git repo
func getGitCurrentRemoteUrl(composeFileDir string) (string, error) {
// getGitCurrentRemoteURL gets current git remote URI for the current git repo
func getGitCurrentRemoteURL(composeFileDir string) (string, error) {
cmd := exec.Command("git", "ls-remote", "--get-url")
cmd.Dir = composeFileDir
out, err := cmd.Output()
@@ -352,7 +353,7 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
if err != nil {
logrus.Fatalf("Buildconfig cannot be created because remote for current git branch couldn't be detected.")
}
buildRepo, err = getGitCurrentRemoteUrl(composeFileDir)
buildRepo, err = getGitCurrentRemoteURL(composeFileDir)
if err != nil {
logrus.Fatalf("Buildconfig cannot be created because git remote origin repo couldn't be detected.")
}
@@ -400,6 +401,7 @@ func (o *OpenShift) getOpenShiftClient() (*oclient.Client, error) {
return oclient, nil
}
// Deploy transofrms and deploys kobject to OpenShift
func (o *OpenShift) Deploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {
//Convert komposeObject
objects := o.Transform(komposeObject, opt)
@@ -470,6 +472,7 @@ func (o *OpenShift) Deploy(komposeObject kobject.KomposeObject, opt kobject.Conv
return nil
}
//Undeploy removes deployed artifacts from OpenShift cluster
func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {
//Convert komposeObject
objects := o.Transform(komposeObject, opt)
@@ -490,18 +493,18 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
err = oclient.ImageStreams(namespace).Delete(t.Name)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted ImageStream: %s", t.Name)
}
logrus.Infof("Successfully deleted ImageStream: %s", t.Name)
case *deployapi.DeploymentConfig:
// delete deploymentConfig
dcreaper := deploymentconfigreaper.NewDeploymentConfigReaper(oclient, kclient)
err := dcreaper.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted DeploymentConfig: %s", t.Name)
}
logrus.Infof("Successfully deleted DeploymentConfig: %s", t.Name)
case *api.Service:
//delete svc
rpService, err := kubectl.ReaperFor(api.Kind("Service"), kclient)
@@ -512,25 +515,25 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
err = rpService.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted service: %s", t.Name)
}
logrus.Infof("Successfully deleted service: %s", t.Name)
case *api.PersistentVolumeClaim:
// delete pvc
err = kclient.PersistentVolumeClaims(namespace).Delete(t.Name)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name)
}
logrus.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name)
case *routeapi.Route:
// delete route
err = oclient.Routes(namespace).Delete(t.Name)
if err != nil {
return err
} else {
logrus.Infof("Successfully deleted Route: %s", t.Name)
}
logrus.Infof("Successfully deleted Route: %s", t.Name)
}
}
return nil
+1 -1
View File
@@ -150,7 +150,7 @@ func TestGetGitRemote(t *testing.T) {
for name, test := range testCases {
t.Log("Test case: ", name)
output, err = getGitCurrentRemoteUrl(test.dir)
output, err = getGitCurrentRemoteURL(test.dir)
if test.expectError {
if err == nil {
+1
View File
@@ -21,6 +21,7 @@ import (
"k8s.io/kubernetes/pkg/runtime"
)
// Transformer interface defines transformer that is converting kobject to other resources
type Transformer interface {
// Transform converts KomposeObject to transformer specific objects.
Transform(kobject.KomposeObject, kobject.ConvertOptions) []runtime.Object
+12 -12
View File
@@ -28,10 +28,11 @@ import (
"github.com/ghodss/yaml"
"github.com/kubernetes-incubator/kompose/pkg/kobject"
"path/filepath"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/runtime"
"path/filepath"
)
const letterBytes = "abcdefghijklmnopqrstuvwxyz0123456789"
@@ -45,7 +46,7 @@ func RandStringBytes(n int) string {
return string(b)
}
// Create the file to write to if --out is specified
// CreateOutFile creates the file to write to if --out is specified
func CreateOutFile(out string) *os.File {
var f *os.File
var err error
@@ -58,7 +59,7 @@ func CreateOutFile(out string) *os.File {
return f
}
// parseVolume parse a given volume, which might be [name:][host:]container[:access_mode]
// ParseVolume parses a given volume, which might be [name:][host:]container[:access_mode]
func ParseVolume(volume string) (name, host, container, mode string, err error) {
separator := ":"
volumeStrings := strings.Split(volume, separator)
@@ -94,12 +95,12 @@ func isPath(substring string) bool {
return strings.Contains(substring, "/")
}
// Configure label
// ConfigLabels configures label
func ConfigLabels(name string) map[string]string {
return map[string]string{"service": name}
}
// Configure annotations
// ConfigAnnotations configures annotations
func ConfigAnnotations(service kobject.ServiceConfig) map[string]string {
annotations := map[string]string{}
for key, value := range service.Annotations {
@@ -109,8 +110,8 @@ func ConfigAnnotations(service kobject.ServiceConfig) map[string]string {
return annotations
}
// Transform data to json/yaml
func TransformData(obj runtime.Object, GenerateJson bool) ([]byte, error) {
// TransformData transforms data to json/yaml
func TransformData(obj runtime.Object, GenerateJSON bool) ([]byte, error) {
// Convert to versioned object
objectVersion := obj.GetObjectKind().GroupVersionKind()
version := unversioned.GroupVersion{Group: objectVersion.Group, Version: objectVersion.Version}
@@ -121,7 +122,7 @@ func TransformData(obj runtime.Object, GenerateJson bool) ([]byte, error) {
// convert data to json / yaml
data, err := yaml.Marshal(versionedObj)
if GenerateJson == true {
if GenerateJSON == true {
data, err = json.MarshalIndent(versionedObj, "", " ")
}
if err != nil {
@@ -131,11 +132,10 @@ func TransformData(obj runtime.Object, GenerateJson bool) ([]byte, error) {
return data, nil
}
// Either print to stdout or to file/s
func Print(name, path string, trailing string, data []byte, toStdout, generateJson bool, f *os.File) string {
// Print either prints to stdout or to file/s
func Print(name, path string, trailing string, data []byte, toStdout, generateJSON bool, f *os.File) string {
file := ""
if generateJson {
if generateJSON {
file = fmt.Sprintf("%s-%s.json", name, trailing)
} else {
file = fmt.Sprintf("%s-%s.yaml", name, trailing)