func findAddressInRunningUnits(r *registry.Registry, lookup string) (string, bool) { js := r.GetJobState(lookup) if js == nil { return "", false } return fmt.Sprintf("%s:22", js.MachineState.PublicIP), true }
func printUnitStatus(c *cli.Context, r *registry.Registry, jobName string) { js := r.GetJobState(jobName) if js == nil { fmt.Printf("%s does not appear to be running\n", jobName) syscall.Exit(1) } addr := fmt.Sprintf("%s:22", js.MachineState.PublicIP) var err error var sshClient *gossh.ClientConn if tun := getTunnelFlag(c); tun != "" { sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr) } else { sshClient, err = ssh.NewSSHClient("core", addr) } if err != nil { log.Fatalf("Unable to establish SSH connection: %v", err) } defer sshClient.Close() cmd := fmt.Sprintf("systemctl status -l %s", jobName) stdout, err := ssh.Execute(sshClient, cmd) if err != nil { log.Fatalf("Unable to execute command over SSH: %s", err.Error()) } for true { bytes, prefix, err := stdout.ReadLine() if err != nil { break } print(string(bytes)) if !prefix { print("\n") } } }