func NewInstall(consulClient *consul.Client, marathon *marathon.Marathon, mesos *mesos.Mesos, zkHosts []string) (*Install, error) { apiConfig = map[string]interface{}{ "mantl": map[string]interface{}{ "zookeeper": map[string]interface{}{ "hosts": strings.Join(zkHosts, ","), }, }, } if mesos != nil { mesosAuthRequired, err := mesos.RequiresAuthentication() if err != nil { return nil, err } mesosConfig := map[string]interface{}{ "principal": mesos.Principal, "secret": mesos.Secret, "secret-path": mesos.SecretPath, "authentication-enabled": mesosAuthRequired, } mantlConfig := apiConfig["mantl"].(map[string]interface{}) mantlConfig["mesos"] = mesosConfig } zookeeper := zookeeper.NewZookeeper(zkHosts) return &Install{consulClient, consulClient.KV(), marathon, mesos, zookeeper}, nil }
func start() { client := consulClient() marathonUrl := viper.GetString("marathon") if marathonUrl == "" { marathonUrl = NewDiscovery(client, "marathon", "", "http", marathonUrl).discoveredUrl } marathonClient, err := marathon.NewMarathon( marathonUrl, viper.GetString("marathon-user"), viper.GetString("marathon-password"), viper.GetBool("marathon-no-verify-ssl"), ) if err != nil { log.Fatalf("Could not create marathon client: %v", err) } mesosUrl := viper.GetString("mesos") if mesosUrl == "" { mesosUrl = NewDiscovery(client, "mesos", "leader", "http", "http://localhost:5050").discoveredUrl } mesosClient, err := mesos.NewMesos( mesosUrl, viper.GetString("mesos-principal"), viper.GetString("mesos-secret"), viper.GetBool("mesos-no-verify-ssl"), ) if err != nil { log.Fatalf("Could not create mesos client: %v", err) } zkUrls := viper.GetString("zookeeper") if zkUrls == "" { zkUrls = NewDiscovery(client, "zookeeper", "", "", "localhost:2181").discoveredUrl } zkServers := strings.Split(zkUrls, ",") zk := zookeeper.NewZookeeper(zkServers) inst, err := install.NewInstall(client, marathonClient, mesosClient, zk) if err != nil { log.Fatalf("Could not create install client: %v", err) } // sync sources to consul sync(inst, viper.GetBool("force-sync")) // start listener api.NewApi(viper.GetString("listen"), inst).Start() }