13497: Accept host key on command line.
authorTom Clegg <tclegg@veritasgenetics.com>
Thu, 14 Jun 2018 19:23:08 +0000 (15:23 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 14 Jun 2018 19:23:08 +0000 (15:23 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

lib/service/cmd.go
sdk/go/arvados/config.go

index e59ac486a89ac0131d20ddeb3ff5895f7a4e15a5..3447bfb16e2b7b0a6c085cb8af08e4f56da8376e 100644 (file)
@@ -53,6 +53,7 @@ func (c *command) RunCommand(prog string, args []string, stdin io.Reader, stdout
        flags := flag.NewFlagSet("", flag.ContinueOnError)
        flags.SetOutput(stderr)
        configFile := flags.String("config", arvados.DefaultConfigFile, "Site configuration `file`")
+       hostName := flags.String("host", "", "Host profile `name` to use in SystemNodes config (if blank, use hostname reported by OS)")
        err = flags.Parse(args)
        if err == flag.ErrHelp {
                err = nil
@@ -68,7 +69,7 @@ func (c *command) RunCommand(prog string, args []string, stdin io.Reader, stdout
        if err != nil {
                return 1
        }
-       node, err := cluster.GetThisSystemNode()
+       node, err := cluster.GetSystemNode(*hostName)
        if err != nil {
                return 1
        }
index 16d93362a22549de9f754733119bd7698faadc64..a74c6d8d635596bff576cda9d4ab85d3c7db65bf 100644 (file)
@@ -68,17 +68,21 @@ type InstanceType struct {
 // GetThisSystemNode returns a SystemNode for the node we're running
 // on right now.
 func (cc *Cluster) GetThisSystemNode() (*SystemNode, error) {
-       hostname, err := os.Hostname()
-       if err != nil {
-               return nil, err
-       }
-       return cc.GetSystemNode(hostname)
+       return cc.GetSystemNode("")
 }
 
 // GetSystemNode returns a SystemNode for the given hostname. An error
 // is returned if the appropriate configuration can't be determined
-// (e.g., this does not appear to be a system node).
+// (e.g., this does not appear to be a system node). If node is empty,
+// use the OS-reported hostname.
 func (cc *Cluster) GetSystemNode(node string) (*SystemNode, error) {
+       if node == "" {
+               hostname, err := os.Hostname()
+               if err != nil {
+                       return nil, err
+               }
+               node = hostname
+       }
        if cfg, ok := cc.SystemNodes[node]; ok {
                return &cfg, nil
        }