@@ -2,17 +2,18 @@ package deploy
22
33import (
44 "context"
5- "github.com/loft-sh/devspace/pkg/devspace/kubectl"
6- "os"
7- "path/filepath"
8-
95 "github.com/loft-sh/devspace/cmd"
106 "github.com/loft-sh/devspace/cmd/flags"
117 "github.com/loft-sh/devspace/e2e/framework"
128 "github.com/loft-sh/devspace/e2e/kube"
9+ "github.com/loft-sh/devspace/pkg/devspace/kubectl"
1310 "github.com/loft-sh/devspace/pkg/util/factory"
1411 "github.com/onsi/ginkgo"
12+ "io/ioutil"
1513 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14+ "os"
15+ "path/filepath"
16+ "strings"
1617)
1718
1819var _ = DevSpaceDescribe ("deploy" , func () {
@@ -38,6 +39,87 @@ var _ = DevSpaceDescribe("deploy", func() {
3839 // TODO
3940 })
4041
42+ ginkgo .It ("should deploy multiple namespaces" , func () {
43+ tempDir , err := framework .CopyToTempDir ("tests/deploy/testdata/different_namespaces" )
44+ framework .ExpectNoError (err )
45+ defer framework .CleanupTempDir (initialDir , tempDir )
46+
47+ ns , err := kubeClient .CreateNamespace ("deploy" )
48+ framework .ExpectNoError (err )
49+ defer func () {
50+ err := kubeClient .DeleteNamespace (ns )
51+ framework .ExpectNoError (err )
52+ }()
53+
54+ ns2 , err := kubeClient .CreateNamespace ("deploy" )
55+ framework .ExpectNoError (err )
56+ defer func () {
57+ err := kubeClient .DeleteNamespace (ns2 )
58+ framework .ExpectNoError (err )
59+ }()
60+
61+ // exchange kube manifests
62+ manifests := filepath .Join (tempDir , "kube" , "service1.yaml" )
63+ out , err := ioutil .ReadFile (manifests )
64+ framework .ExpectNoError (err )
65+
66+ data := strings .Replace (string (out ), "###NAMESPACE1###" , ns , - 1 )
67+ data = strings .Replace (data , "###NAMESPACE2###" , ns2 , - 1 )
68+
69+ err = ioutil .WriteFile (manifests , []byte (data ), 0777 )
70+ framework .ExpectNoError (err )
71+
72+ // create a new deploy command
73+ deployCmd := & cmd.RunPipelineCmd {
74+ GlobalFlags : & flags.GlobalFlags {
75+ NoWarn : true ,
76+ Namespace : ns ,
77+ Vars : []string {
78+ "NAMESPACE1=" + ns ,
79+ "NAMESPACE2=" + ns2 ,
80+ },
81+ },
82+ Pipeline : "deploy" ,
83+ }
84+
85+ // run the command
86+ err = deployCmd .RunDefault (f )
87+ framework .ExpectNoError (err )
88+
89+ // check if services are there
90+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns ).Get (context .TODO (), "service1" , metav1.GetOptions {})
91+ framework .ExpectNoError (err )
92+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns ).Get (context .TODO (), "service2" , metav1.GetOptions {})
93+ framework .ExpectNoError (err )
94+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns2 ).Get (context .TODO (), "service1" , metav1.GetOptions {})
95+ framework .ExpectNoError (err )
96+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns2 ).Get (context .TODO (), "service2" , metav1.GetOptions {})
97+ framework .ExpectNoError (err )
98+
99+ // create a new purge command
100+ purgeCmd := & cmd.RunPipelineCmd {
101+ GlobalFlags : & flags.GlobalFlags {
102+ NoWarn : true ,
103+ Namespace : ns ,
104+ },
105+ Pipeline : "purge" ,
106+ }
107+
108+ // run the command
109+ err = purgeCmd .RunDefault (f )
110+ framework .ExpectNoError (err )
111+
112+ // check if services are there
113+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns ).Get (context .TODO (), "service1" , metav1.GetOptions {})
114+ framework .ExpectError (err )
115+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns ).Get (context .TODO (), "service2" , metav1.GetOptions {})
116+ framework .ExpectError (err )
117+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns2 ).Get (context .TODO (), "service1" , metav1.GetOptions {})
118+ framework .ExpectError (err )
119+ _ , err = kubeClient .RawClient ().CoreV1 ().Services (ns2 ).Get (context .TODO (), "service2" , metav1.GetOptions {})
120+ framework .ExpectError (err )
121+ })
122+
41123 ginkgo .It ("should deploy concurrent deployments" , func () {
42124 tempDir , err := framework .CopyToTempDir ("tests/deploy/testdata/helm_concurrent_new" )
43125 framework .ExpectNoError (err )
0 commit comments