package commands import ( "errors" "fmt" "time" "github.com/docker/machine/libmachine" "github.com/docker/machine/libmachine/persist" "github.com/docker/machine/libmachine/state" ) const ( activeDefaultTimeout = 10 ) var ( errNoActiveHost = errors.New("No active host found") errActiveTimeout = errors.New("Error getting active host: timeout") ) func cmdActive(c CommandLine, api libmachine.API) error { if len(c.Args()) > 0 { return ErrTooManyArguments } hosts, hostsInError, err := persist.LoadAllHosts(api) if err != nil { return fmt.Errorf("Error getting active host: %s", err) } timeout := time.Duration(c.Int("timeout")) * time.Second items := getHostListItems(hosts, hostsInError, timeout) active, err := activeHost(items) if err != nil { return err } fmt.Println(active.Name) return nil } func activeHost(items []HostListItem) (HostListItem, error) { timeout := false for _, item := range items { if item.ActiveHost || item.ActiveSwarm { return item, nil } if item.State == state.Timeout { timeout = true } } if timeout { return HostListItem{}, errActiveTimeout } return HostListItem{}, errNoActiveHost }