func main() { validateSettings() if err := setupLogger(); err != nil { fatal(err) } var ( err error group = &sync.WaitGroup{} ) plugins, err = newRuntime(pluginFile) if err != nil { fatal(err) } if dockerClient, err = docker.NewClient(pathToSocket); err != nil { log.Logf(log.FATAL, "error connecting to docker: %s", err) fatal(err) } if skydnsContainerName != "" { container, err := dockerClient.FetchContainer(skydnsContainerName, "") if err != nil { log.Logf(log.FATAL, "error retrieving skydns container '%s': %s", skydnsContainerName, err) fatal(err) } skydnsUrl = "http://" + container.NetworkSettings.IpAddress + ":8080" } log.Logf(log.INFO, "skydns URL: %s", skydnsUrl) if skydns, err = client.NewClient(skydnsUrl, secret, domain, "172.17.42.1:53"); err != nil { log.Logf(log.FATAL, "error connecting to skydns: %s", err) fatal(err) } log.Logf(log.DEBUG, "starting restore of containers") if err := restoreContainers(); err != nil { log.Logf(log.FATAL, "error restoring containers: %s", err) fatal(err) } events := dockerClient.GetEvents() group.Add(numberOfHandlers) // Start event handlers for i := 0; i < numberOfHandlers; i++ { go eventHandler(events, group) } log.Logf(log.DEBUG, "starting main process") group.Wait() log.Logf(log.DEBUG, "stopping cleanly via EOF") }
func newClientFromContext(c *cli.Context) (*client.Client, error) { var ( base = c.GlobalString("host") dns = c.GlobalString("dns") domain = c.GlobalString("domain") secret = c.GlobalString("secret") ) s, e := client.NewClient(base, secret, domain, dns) if e == nil { s.DNS = c.Bool("d") // currently only defined when listing services } return s, e }