func getInfoForScpArg(hostAndPath string, store persist.Store) (*host.Host, string, []string, error) { // TODO: What to do about colon in filepath? splitInfo := strings.Split(hostAndPath, ":") // Host path. e.g. "/tmp/foo" if len(splitInfo) == 1 { return nil, splitInfo[0], nil, nil } // Remote path. e.g. "machinename:/usr/bin/cmatrix" if len(splitInfo) == 2 { path := splitInfo[1] host, err := store.Load(splitInfo[0]) if err != nil { return nil, "", nil, fmt.Errorf("Error loading host: %s", err) } args := []string{ "-i", host.Driver.GetSSHKeyPath(), } return host, path, args, nil } return nil, "", nil, ErrMalformedInput }
func loadHost(store persist.Store, hostName string) (*host.Host, error) { h, err := store.Load(hostName) if err != nil { return nil, fmt.Errorf("Loading host from store failed: %s", err) } d, err := newPluginDriver(h.DriverName, h.RawDriver) if err != nil { return nil, fmt.Errorf("Error attempting to invoke binary for plugin: %s", err) } h.Driver = d return h, nil }
func loadHost(store persist.Store, hostName string, storePath string) (*host.Host, error) { h, err := store.Load(hostName) if err != nil { return nil, fmt.Errorf("Loading host from store failed: %s", err) } d, err := driverfactory.NewDriver(h.DriverName, h.Name, storePath) if err != nil { return nil, err } err = json.Unmarshal(h.RawDriver, &d) if err != nil { return nil, err } h.Driver = d return h, nil }
func getActiveHost(store persist.Store) (*host.Host, error) { hosts, err := store.List() if err != nil { return nil, err } hostListItems := getHostListItems(hosts) for _, item := range hostListItems { if item.Active { h, err := store.Load(item.Name) if err != nil { return nil, err } return h, nil } } return nil, errors.New("Active host not found") }