github.com/midokura/kubeedge@v1.2.0-mido.0/tests/e2e/utils/test_setup.go (about) 1 /* 2 Copyright 2019 The KubeEdge Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package utils 18 19 import ( 20 "fmt" 21 "io/ioutil" 22 "os" 23 "os/exec" 24 "strings" 25 "time" 26 27 "sigs.k8s.io/yaml" 28 29 cloudcore "github.com/kubeedge/kubeedge/pkg/apis/cloudcore/v1alpha1" 30 edgecore "github.com/kubeedge/kubeedge/pkg/apis/edgecore/v1alpha1" 31 edgesite "github.com/kubeedge/kubeedge/pkg/apis/edgesite/v1alpha1" 32 "github.com/kubeedge/kubeedge/tests/e2e/constants" 33 ) 34 35 //GenerateCerts - Generates Cerificates for Edge and Cloud nodes copy to respective folders 36 func GenerateCerts() error { 37 cmd := exec.Command("bash", "-x", "scripts/generate_cert.sh") 38 if err := PrintCombinedOutput(cmd); err != nil { 39 return err 40 } 41 return nil 42 } 43 44 func StartCloudCore() error { 45 catConfigCmd := exec.Command("sh", "-c", constants.CatCloudCoreConfigFile) 46 Infof("===========> Executing: %s\n", strings.Join(catConfigCmd.Args, " ")) 47 bytes, _ := catConfigCmd.CombinedOutput() 48 Infof("cloudcore, config:\n %v", string(bytes)) 49 50 //Run ./cloudcore binary 51 cmd := exec.Command("sh", "-c", constants.RunCloudcore) 52 if err := PrintCombinedOutput(cmd); err != nil { 53 Errorf("start cloudcore error %v", err) 54 return err 55 } 56 //Expect(err).Should(BeNil()) 57 time.Sleep(5 * time.Second) 58 59 checkcmd := exec.Command("sh", "-c", constants.CheckCloudcore) 60 if err := PrintCombinedOutput(checkcmd); err != nil { 61 catcmd := exec.Command("sh", "-c", constants.CatCloudcoreLog) 62 Infof("===========> Executing: %s\n", strings.Join(catcmd.Args, " ")) 63 lbytes, _ := catcmd.CombinedOutput() 64 Errorf("cloudcore, log:\n %v", string(lbytes)) 65 Errorf("cloudcore start error %v", err) 66 os.Exit(1) 67 } 68 return nil 69 } 70 71 func StartEdgeCore() error { 72 catConfig := exec.Command("sh", "-c", constants.CatEdgeCoreConfigFile) 73 Infof("===========> Executing: %s\n", strings.Join(catConfig.Args, " ")) 74 cbytes, _ := catConfig.CombinedOutput() 75 Infof("edgecore config :\n %v", string(cbytes)) 76 77 //Run ./edgecore after node registration 78 cmd := exec.Command("sh", "-c", constants.RunEdgecore) 79 if err := PrintCombinedOutput(cmd); err != nil { 80 Errorf("start edgecore error %v", err) 81 return err 82 } 83 //Expect(err).Should(BeNil()) 84 time.Sleep(5 * time.Second) 85 86 checkcmd := exec.Command("sh", "-c", constants.CheckEdgecore) 87 if err := PrintCombinedOutput(checkcmd); err != nil { 88 catcmd := exec.Command("sh", "-c", constants.CatEdgecoreLog) 89 Infof("===========> Executing: %s\n", strings.Join(catcmd.Args, " ")) 90 bytes, _ := catcmd.CombinedOutput() 91 Errorf("edgecore log:\n %v", string(bytes)) 92 Errorf("edgecore start error %v", err) 93 os.Exit(1) 94 } 95 return nil 96 } 97 98 func StartEdgeSite() error { 99 catConfig := exec.Command("sh", "-c", constants.CatEdgeSiteConfigFile) 100 Infof("===========> Executing: %s\n", strings.Join(catConfig.Args, " ")) 101 cbytes, _ := catConfig.CombinedOutput() 102 Infof("edgesite config:\n%v", string(cbytes)) 103 104 //Run ./edgecore after node registration 105 cmd := exec.Command("sh", "-c", constants.RunEdgeSite) 106 if err := PrintCombinedOutput(cmd); err != nil { 107 Infof("start edgesite error %v", err) 108 return err 109 } 110 //Expect(err).Should(BeNil()) 111 time.Sleep(5 * time.Second) 112 113 checkcmd := exec.Command("sh", "-c", constants.CheckEdgesite) 114 if err := PrintCombinedOutput(checkcmd); err != nil { 115 catcmd := exec.Command("sh", "-c", constants.CatEdgeSiteLog) 116 Infof("===========> Executing: %s\n", strings.Join(catcmd.Args, " ")) 117 bytes, _ := catcmd.CombinedOutput() 118 Errorf("edgesite log:\n %v", string(bytes)) 119 Errorf("edgesite start error %v", err) 120 os.Exit(1) 121 } 122 return nil 123 } 124 125 func DeploySetup(ctx *TestContext, nodeName, setupType string) error { 126 // TODO change as constants or delete this function @kadisi 127 switch setupType { 128 case "deployment": 129 createCloudCoreConfigFile(ctx.Cfg.KubeConfigPath) 130 createEdgeCoreConfigFile(nodeName) 131 case "edgesite": 132 createEdgeSiteConfigFile(ctx.Cfg.K8SMasterForKubeEdge, nodeName) 133 } 134 //Expect(err).Should(BeNil()) 135 time.Sleep(1 * time.Second) 136 return nil 137 } 138 139 func CleanUp(setupType string) error { 140 fmt.Println("**********************************", setupType) 141 cmd := exec.Command("bash", "-x", "scripts/cleanup.sh", setupType) 142 if err := PrintCombinedOutput(cmd); err != nil { 143 return err 144 } 145 time.Sleep(2 * time.Second) 146 return nil 147 } 148 149 func createCloudCoreConfigFile(kubeConfigPath string) { 150 c := cloudcore.NewDefaultCloudCoreConfig() 151 c.KubeAPIConfig.KubeConfig = kubeConfigPath 152 c.KubeAPIConfig.Master = "" 153 // TODO change ca file path @kadisi 154 c.Modules.CloudHub.TLSCAFile = "/tmp/cloudcore/rootCA.crt" 155 c.Modules.CloudHub.TLSCertFile = "/tmp/cloudcore/kubeedge.crt" 156 c.Modules.CloudHub.TLSPrivateKeyFile = "/tmp/cloudcore/kubeedge.key" 157 158 data, err := yaml.Marshal(c) 159 if err != nil { 160 fmt.Printf("Marshal cloudcore config to yaml error %v\n", err) 161 os.Exit(1) 162 } 163 if err := ioutil.WriteFile(constants.CloudCoreConfigFile, data, os.ModePerm); err != nil { 164 fmt.Printf("Create cloudcore config file %v error %v\n", constants.CloudCoreConfigFile, err) 165 os.Exit(1) 166 } 167 } 168 169 func createEdgeCoreConfigFile(nodeName string) { 170 c := edgecore.NewDefaultEdgeCoreConfig() 171 // TODO change ca file path @kadisi 172 c.Modules.EdgeHub.TLSCAFile = "/tmp/edgecore/rootCA.crt" 173 c.Modules.EdgeHub.TLSCertFile = "/tmp/edgecore/kubeedge.crt" 174 c.Modules.EdgeHub.TLSPrivateKeyFile = "/tmp/edgecore/kubeedge.key" 175 c.Modules.Edged.HostnameOverride = nodeName 176 c.DataBase.DataSource = "/tmp/edgecore/edgecore.db" 177 178 data, err := yaml.Marshal(c) 179 if err != nil { 180 fmt.Printf("Marshal edgecore config to yaml error %v\n", err) 181 os.Exit(1) 182 } 183 if err := ioutil.WriteFile(constants.EdgeCoreConfigFile, data, os.ModePerm); err != nil { 184 fmt.Printf("Create edgecore config file %v error %v\n", constants.EdgeCoreConfigFile, err) 185 os.Exit(1) 186 } 187 } 188 189 func createEdgeSiteConfigFile(kubeMaster, nodeName string) { 190 c := edgesite.NewDefaultEdgeSiteConfig() 191 // TODO change ca file path @kadisi 192 c.Modules.Edged.HostnameOverride = nodeName 193 c.KubeAPIConfig.Master = kubeMaster 194 c.KubeAPIConfig.KubeConfig = "" 195 c.DataBase.DataSource = "/tmp/edgesite/edgesite.db" 196 197 data, err := yaml.Marshal(c) 198 if err != nil { 199 fmt.Printf("Marshal edgesite config to yaml error %v\n", err) 200 os.Exit(1) 201 } 202 if err := ioutil.WriteFile(constants.EdgeSiteConfigFile, data, os.ModePerm); err != nil { 203 fmt.Printf("Create edgesite config file %v error %v\n", constants.EdgeSiteConfigFile, err) 204 os.Exit(1) 205 } 206 }