github.com/braveheart12/insolar-09-08-19@v0.8.7/docker/genconfig/genconfig.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"os"
     7  
     8  	"gopkg.in/yaml.v2"
     9  
    10  	"github.com/insolar/insolar/configuration"
    11  )
    12  
    13  // getenv + default value
    14  func GetEnvDefault(key, defaultVal string) string {
    15  	val, ok := os.LookupEnv(key)
    16  	if !ok {
    17  		return defaultVal
    18  	}
    19  	return val
    20  }
    21  
    22  // Return '<host>:<port>' on public docker interface
    23  func getURI(port uint) string {
    24  	host := GetEnvDefault("IP", "127.0.0.1")
    25  	return fmt.Sprintf("%s:%d", host, port)
    26  }
    27  
    28  const (
    29  	defaultConfigPath            = "/etc/insolar/insolard.yaml"
    30  	defaultTranportListenPort    = 7900
    31  	defaultLogLevel              = "info"
    32  	defaultMetricsListenPort     = 8001
    33  	defaultRPCListenPort         = 18182
    34  	defaultInsgorundListenPort   = 18181
    35  	defaultAPIListenPort         = 19191
    36  	defaultJaegerEndpointPort    = 6831
    37  	defaultKeysPath              = "/etc/insolar/keys.json"
    38  	defaultCertPath              = "/etc/insolar/cert.json"
    39  	defaultDataDir               = "/var/lib/insolar/"
    40  	defaultTransportFixedAddress = ""
    41  )
    42  
    43  func main() {
    44  	hld := configuration.NewHolder()
    45  	err := hld.LoadFromFile(defaultConfigPath)
    46  	if err != nil {
    47  		fmt.Println("Failed to open configuration:")
    48  		fmt.Println(err.Error())
    49  		os.Exit(1)
    50  	}
    51  	cfg := hld.Configuration
    52  
    53  	insgorundListen := GetEnvDefault("INSGORUND_ENDPOINT", "insgorund:"+string(defaultInsgorundListenPort))
    54  
    55  	insolardMetricsListen := getURI(defaultMetricsListenPort)
    56  	insolardRPCListen := getURI(defaultRPCListenPort)
    57  	insolardAPIListen := getURI(defaultAPIListenPort)
    58  
    59  	insolardTransportListen := GetEnvDefault("INSOLARD_TRANSPORT_LISTEN", getURI(defaultTranportListenPort))
    60  	insolardLogLevel := GetEnvDefault("INSOLARD_LOG_LEVEL", defaultLogLevel)
    61  	insolardTracerEndpoint := GetEnvDefault("INSOLARD_JAEGER_ENDPOINT", getURI(defaultJaegerEndpointPort))
    62  	insolardTransportFixedAddress := GetEnvDefault("INSOLARD_TRANSPORT_FIXED_ADDRESS", defaultTransportFixedAddress)
    63  
    64  	fmt.Println("[debug] cfg->host->transport->address ==", insolardTransportListen)
    65  	fmt.Println("[debug] cfg->log->level ==", insolardLogLevel)
    66  	fmt.Println("[debug] cfg->log->formatter == json")
    67  	fmt.Println("[debug] cfg->metrics->listenaddress ==", insolardMetricsListen)
    68  	fmt.Println("[debug] cfg->logicrunner->rpclisten ==", insolardRPCListen)
    69  	fmt.Println("[debug] cfg->logicrunner->goplugin->runnerlisten ==", insgorundListen)
    70  	fmt.Println("[debug] cfg->apirunner->address ==", insolardAPIListen)
    71  	fmt.Println("[debug] cfg->tracer->jaeger->agentendpoint ==", insolardTracerEndpoint)
    72  
    73  	// transport related
    74  	cfg.Host.Transport.Address = insolardTransportListen
    75  	cfg.Host.Transport.FixedPublicAddress = insolardTransportFixedAddress
    76  	// logger related
    77  	cfg.Log.Level = insolardLogLevel
    78  	// metrics related
    79  	cfg.Metrics.ListenAddress = insolardMetricsListen
    80  	cfg.Log.Formatter = "json" // ??
    81  	// logic runner related
    82  	cfg.LogicRunner.RPCListen = insolardRPCListen
    83  	cfg.LogicRunner.GoPlugin.RunnerListen = insgorundListen
    84  	// api runner related
    85  	cfg.APIRunner.Address = insolardAPIListen
    86  	// with tracer
    87  	cfg.Tracer.Jaeger.AgentEndpoint = insolardTracerEndpoint
    88  	// unstructured
    89  	cfg.KeysPath = defaultKeysPath
    90  	cfg.CertificatePath = defaultCertPath
    91  	cfg.Ledger.Storage.DataDirectory = defaultDataDir
    92  
    93  	data, err := yaml.Marshal(cfg)
    94  	if err != nil {
    95  		fmt.Println("Failed to marshall configuration:")
    96  		fmt.Println(err.Error())
    97  		os.Exit(1)
    98  	}
    99  	err = ioutil.WriteFile(defaultConfigPath, data, 0666)
   100  	if err != nil {
   101  		fmt.Println("Failed to save configuration:")
   102  		fmt.Println(err.Error())
   103  		os.Exit(1)
   104  	}
   105  	os.Exit(0)
   106  }