func start(flagSet *flag.FlagSet, path string, controller confab.Controller, agentClient *agent.Client) { timeout := confab.NewTimeout(time.After(time.Duration(controller.Config.Confab.TimeoutInSeconds) * time.Second)) _, err := os.Stat(controller.Config.Path.ConsulConfigDir) if err != nil { printUsageAndExit(fmt.Sprintf("\"consul_config_dir\" %q could not be found", controller.Config.Path.ConsulConfigDir), flagSet) } if len(agentClient.ExpectedMembers) == 0 { printUsageAndExit("at least one \"expected-member\" must be provided", flagSet) } err = controller.WriteConsulConfig() if err != nil { stderr.Printf("error writing consul config file: %s", err) os.Exit(1) } err = controller.WriteServiceDefinitions() if err != nil { stderr.Printf("error writing service definitions: %s", err) os.Exit(1) } err = controller.BootAgent(timeout) if err != nil { stderr.Printf("error booting consul agent: %s", err) exit(controller, 1) } if controller.Config.Consul.Agent.Mode == "server" { configureServer(controller, agentClient, timeout) } else { configureClient(controller) } }
} }) Describe("WriteConsulConfig", func() { var configDir string BeforeEach(func() { var err error configDir, err = ioutil.TempDir("", "") Expect(err).NotTo(HaveOccurred()) controller.Config.Path.ConsulConfigDir = configDir }) It("writes a config file to the consul_config dir", func() { err := controller.WriteConsulConfig() Expect(err).NotTo(HaveOccurred()) buf, err := ioutil.ReadFile(filepath.Join(configDir, "config.json")) Expect(err).NotTo(HaveOccurred()) Expect(buf).To(MatchJSON(`{ "server": false, "domain": "cf.internal", "datacenter": "", "data_dir": "/var/vcap/store/consul_agent", "log_level": "", "node_name": "node-0", "ports": { "dns": 53 }, "rejoin_after_leave": true,