run

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 1, 2020 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Cmd = &cobra.Command{
	Use:     "run",
	Example: "run --config ./config/vigie.toml",
	Short:   "Start Tests",
	PreRun: func(cmd *cobra.Command, args []string) {
		//
		// Create Vigie Instance
		//
		var err error

		vigieInstance, err = vigie.NewVigie()
		if err != nil {
			utils.Log.WithFields(logrus.Fields{"component": "vigie", "status": "error", "error": "Vigie cannot start"}).Fatal(err)
			os.Exit(1)
		}

	},
	Run: func(cmd *cobra.Command, args []string) {

		vigieConf := loadVigieConfigFile(configfile)

		utils.InitLogger(vigieConf.Log)

		vigieConf.Host.AddHostSytemInfo()
		vigieInstance.HostInfo = vigieConf.Host

		_, errValidate := govalidator.ValidateStruct(vigieConf)
		if errValidate != nil {
			utils.Log.WithFields(logrus.Fields{"component": "configfile", "status": "invalid", "error": "Vigie Config File is invalid"}).Fatal(errValidate)
			os.Exit(1)
		}

		utils.Log.WithFields(logrus.Fields{
			"version":    version.LdVersion,
			"goruntime":  runtime.Version(),
			"arch":       fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH),
			"builddate":  version.LdBuildDate,
			"configfile": configfile,
		}).Infof("Vigie")

		if vigieConf.API.Enable {
			errWebAPI := webapi.InitWebAPI(vigieConf.API, vigieInstance)
			if errWebAPI != nil {
				utils.Log.WithFields(logrus.Fields{"component": "api", "status": "failed", "error": errWebAPI}).Fatal("[ConfWebAPI] has failed to start")
				os.Exit(1)
			}
		}

		if vigieConf.InfluxDB.Enable {
			errInflux := tsdb.LoadInfluxDB(vigieConf.InfluxDB)
			if errInflux != nil {
				utils.Log.Fatal("Vigie failed to connect with InfluxDB:", errInflux)
				os.Exit(1)
			}
		}

		if vigieConf.Prometheus.Enable {
			go promexporter.InitPromExporter(vigieConf.Prometheus)
		}

		if vigieConf.Alerting.Enable {

			go alertmanager.InitAlertManager(vigieConf.Alerting, vigieInstance.HostInfo.Name, vigieInstance.HostInfo.URL)
		}

		if vigieConf.Git.Clone {
			errGit := load.CloneGitRepo(vigieConf.Git)
			if errGit != nil {
				utils.Log.Fatal("Failed to clone : ", errGit)
			}
		}

		//
		// Loading Conf to Vigie Instance
		//
		var errImportFile error
		vigieInstance.TestsFiles, vigieInstance.VarsFiles, errImportFile = load.ImportFileandVars(vigieConf.Testfiles, vigieConf.Variables)
		if errImportFile != nil {
			utils.Log.Fatalf("Failed to import tests from %q: %s", vigieConf.Testfiles.Included, errImportFile.Error())
			os.Exit(1)
		} else {
			utils.Log.Infof("Files detected from %s : %s", vigieConf.Testfiles.Included, vigieInstance.TestsFiles)
		}

		utils.CACHEDDNSRESOLVER, _ = dnscache.NewCachedResolver()

		err := vigieInstance.Start()
		if err != nil {
			utils.Log.Fatal("Vigie failed to launch: ", err)
			os.Exit(1)
		}

	},
}

Cmd run

Functions

This section is empty.

Types

type VigieConf

type VigieConf struct {
	ApiVersion  float32
	Environment string // Production, Dev
	Host        vigie.HostInfo
	Git         load.ConfGit
	Testfiles   load.ConfTestfiles
	Variables   load.ConfVariables
	API         webapi.ConfWebAPI
	Prometheus  promexporter.ConfPrometheus
	InfluxDB    tsdb.ConfInfluxDB
	Alerting    alertmanager.ConfAlerting
	Log         utils.LogConf
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL