Adding --controller flag in up & down

To make `kompose up` & `kompose convert` equal in feature, This PR will
add `--controller` flag for `kompose up` as well as `kompose down`
so that user experience will be the same for `up` & `convert`
Resolves #798

since we are adding `--controller` to `up` and `down`, So respective code to deploy and undeploy also being added for `daemonset` and `replicationcontroller`

Added tests for `--controller`
This commit is contained in:
Suraj Narwade
2017-11-27 15:26:24 +05:30
parent a194e59651
commit 126d9820c4
4 changed files with 89 additions and 2 deletions
+7 -2
View File
@@ -17,6 +17,8 @@ limitations under the License.
package cmd package cmd
import ( import (
"strings"
"github.com/kubernetes/kompose/pkg/app" "github.com/kubernetes/kompose/pkg/app"
"github.com/kubernetes/kompose/pkg/kobject" "github.com/kubernetes/kompose/pkg/kobject"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@@ -24,8 +26,9 @@ import (
// TODO: comment // TODO: comment
var ( var (
DownNamespace string DownNamespace string
DownOpt kobject.ConvertOptions DownController string
DownOpt kobject.ConvertOptions
) )
var downCmd = &cobra.Command{ var downCmd = &cobra.Command{
@@ -39,6 +42,7 @@ var downCmd = &cobra.Command{
InputFiles: GlobalFiles, InputFiles: GlobalFiles,
Provider: GlobalProvider, Provider: GlobalProvider,
Namespace: DownNamespace, Namespace: DownNamespace,
Controller: strings.ToLower(DownController),
IsNamespaceFlag: cmd.Flags().Lookup("namespace").Changed, IsNamespaceFlag: cmd.Flags().Lookup("namespace").Changed,
} }
@@ -52,5 +56,6 @@ var downCmd = &cobra.Command{
func init() { func init() {
downCmd.Flags().StringVar(&DownNamespace, "namespace", "default", " Specify Namespace to deploy your application") downCmd.Flags().StringVar(&DownNamespace, "namespace", "default", " Specify Namespace to deploy your application")
downCmd.Flags().StringVar(&DownController, "controller", "", `Set the output controller ("deployment"|"daemonSet"|"replicationController")`)
RootCmd.AddCommand(downCmd) RootCmd.AddCommand(downCmd)
} }
+4
View File
@@ -22,6 +22,7 @@ import (
"github.com/kubernetes/kompose/pkg/app" "github.com/kubernetes/kompose/pkg/app"
"github.com/kubernetes/kompose/pkg/kobject" "github.com/kubernetes/kompose/pkg/kobject"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"strings"
) )
// TODO: comment // TODO: comment
@@ -35,6 +36,7 @@ var (
UpBuild string UpBuild string
UpBuildBranch string UpBuildBranch string
UpBuildRepo string UpBuildRepo string
UpController string
) )
var upCmd = &cobra.Command{ var upCmd = &cobra.Command{
@@ -60,6 +62,7 @@ var upCmd = &cobra.Command{
InsecureRepository: UpInsecureRepo, InsecureRepository: UpInsecureRepo,
BuildBranch: UpBuildBranch, BuildBranch: UpBuildBranch,
BuildRepo: UpBuildRepo, BuildRepo: UpBuildRepo,
Controller: strings.ToLower(UpController),
IsNamespaceFlag: cmd.Flags().Lookup("namespace").Changed, IsNamespaceFlag: cmd.Flags().Lookup("namespace").Changed,
} }
@@ -79,6 +82,7 @@ func init() {
upCmd.Flags().StringVar(&UpBuild, "build", "local", `Set the type of build ("local"|"build-config" (OpenShift only)|"none")`) upCmd.Flags().StringVar(&UpBuild, "build", "local", `Set the type of build ("local"|"build-config" (OpenShift only)|"none")`)
upCmd.Flags().StringVar(&UpBuildRepo, "build-repo", "", "Specify source repository for buildconfig (default remote origin)") upCmd.Flags().StringVar(&UpBuildRepo, "build-repo", "", "Specify source repository for buildconfig (default remote origin)")
upCmd.Flags().StringVar(&UpBuildBranch, "build-branch", "", "Specify repository branch to use for buildconfig (default master)") upCmd.Flags().StringVar(&UpBuildBranch, "build-branch", "", "Specify repository branch to use for buildconfig (default master)")
upCmd.Flags().StringVar(&UpController, "controller", "", `Set the output controller ("deployment"|"daemonSet"|"replicationController")`)
upCmd.Flags().MarkHidden("insecure-repository") upCmd.Flags().MarkHidden("insecure-repository")
upCmd.Flags().MarkHidden("build-repo") upCmd.Flags().MarkHidden("build-repo")
upCmd.Flags().MarkHidden("build-branch") upCmd.Flags().MarkHidden("build-branch")
+65
View File
@@ -805,6 +805,21 @@ func (k *Kubernetes) Deploy(komposeObject kobject.KomposeObject, opt kobject.Con
return err return err
} }
log.Infof("Successfully created Deployment: %s", t.Name) log.Infof("Successfully created Deployment: %s", t.Name)
case *extensions.DaemonSet:
_, err := client.DaemonSets(namespace).Create(t)
if err != nil {
return err
}
log.Infof("Successfully created DaemonSet: %s", t.Name)
case *api.ReplicationController:
_, err := client.ReplicationControllers(namespace).Create(t)
if err != nil {
return err
}
log.Infof("Successfully created ReplicationController: %s", t.Name)
case *api.Service: case *api.Service:
_, err := client.Services(namespace).Create(t) _, err := client.Services(namespace).Create(t)
if err != nil { if err != nil {
@@ -901,6 +916,56 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
} }
} }
case *extensions.DaemonSet:
//delete deployment
daemonset, err := client.DaemonSets(namespace).List(options)
if err != nil {
errorList = append(errorList, err)
break
}
for _, l := range daemonset.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) {
rpDaemonset, err := kubectl.ReaperFor(extensions.Kind("DaemonSet"), client)
if err != nil {
errorList = append(errorList, err)
break
}
//FIXME: gracePeriod is nil
err = rpDaemonset.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil {
errorList = append(errorList, err)
break
}
log.Infof("Successfully deleted DaemonSet: %s", t.Name)
}
}
case *api.ReplicationController:
//delete deployment
replicationController, err := client.ReplicationControllers(namespace).List(options)
if err != nil {
errorList = append(errorList, err)
break
}
for _, l := range replicationController.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) {
rpReplicationController, err := kubectl.ReaperFor(api.Kind("ReplicationController"), client)
if err != nil {
errorList = append(errorList, err)
break
}
//FIXME: gracePeriod is nil
err = rpReplicationController.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil {
errorList = append(errorList, err)
break
}
log.Infof("Successfully deleted ReplicationController: %s", t.Name)
}
}
case *api.Service: case *api.Service:
//delete svc //delete svc
svc, err := client.Services(namespace).List(options) svc, err := client.Services(namespace).List(options)
+13
View File
@@ -103,6 +103,19 @@ test_k8s() {
sleep 2 # Sleep for k8s to catch up to deployment sleep 2 # Sleep for k8s to catch up to deployment
echo -e "\n${RED}kompose down -f $f ${NC}\n" echo -e "\n${RED}kompose down -f $f ${NC}\n"
./kompose down -f $f ./kompose down -f $f
echo -e "\nTesting controller=daemonset key\n"
echo -e "\n${RED}kompose up -f $f --controller=daemonset ${NC}\n"
./kompose up -f $f --controller=daemonset
sleep 2 # Sleep for k8s to catch up to deployment
echo -e "\n${RED}kompose down -f $f --controller=daemonset ${NC}\n"
./kompose down -f $f --controller=daemonset
echo -e "\nTesting controller=replicationcontroller key\n"
echo -e "\n${RED}kompose up -f $f --controller=replicationcontroller ${NC}\n"
./kompose up -f $f --controller=replicationcontroller
sleep 2 # Sleep for k8s to catch up to deployment
echo -e "\n${RED}kompose down -f $f --controller=replicationcontroller ${NC}\n"
./kompose down -f $f --controller=replicationcontroller
done done
} }