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  }