dev-tools/v2tool/server/serve.go (59 lines of code) (raw):

// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License; // you may not use this file except in compliance with the Elastic License. package server import ( "flag" "fmt" "github.com/elastic/elastic-agent-client/v7/dev-tools/v2tool/manager" "github.com/elastic/elastic-agent-libs/logp" ) const ( defaultConfigName = "./v2-config.yml" ) var ( configPath string configFilePath string defaultDebugLevel = false ) func init() { fs := flag.CommandLine fs.StringVar(&configFilePath, "c", defaultConfigName, "Configuration file, relative to path.config") fs.BoolVar(&defaultDebugLevel, "d", false, "enable debug-level logging") } func setupLogger() error { logConfig := logp.DefaultConfig(logp.DefaultEnvironment) logConfig.Beat = "v2-tool" logConfig.ToStderr = true logConfig.ToFiles = false if defaultDebugLevel == true { logConfig.Level = logp.DebugLevel } else { logConfig.Level = logp.InfoLevel } err := logp.Configure(logConfig) if err != nil { return fmt.Errorf("could not initialise logger: %w", err) } return nil } // Run starts and runs the v2tool func Run(clientPath string) error { err := setupLogger() if err != nil { return fmt.Errorf("error in logger setup: %w", err) } log := logp.L() // Generate a config object for the tool and user unit config manager, err := manager.InputManagerFromCfg(configFilePath) // Start the supplied V2 client process err = manager.StartInputProcess(clientPath) if err != nil { return fmt.Errorf("error starting client: %s", err) } log.Debugf("Started client process") // start a server instance srv, err := NewToolServer(manager) if err != nil { return fmt.Errorf("error creating v2tool server: %s", err) } // start the V2 server instance err = srv.StartServer() if err != nil { return fmt.Errorf("error starting v2tool server: %s", err) } manager.WaitForClientClose() return nil }