in plugins/teststeps/sshcmd/sshcmd.go [277:323]
func (ts *SSHCmd) validateAndPopulate(params test.TestStepParameters) error {
var err error
ts.Host = params.GetOne("host")
if ts.Host.IsEmpty() {
return errors.New("invalid or missing 'host' parameter, must be exactly one string")
}
if params.GetOne("port").IsEmpty() {
ts.Port = test.NewParam(strconv.Itoa(defaultSSHPort))
} else {
var port int64
port, err = params.GetInt("port")
if err != nil {
return fmt.Errorf("invalid 'port' parameter, not an integer: %v", err)
}
if port < 0 || port > 0xffff {
return fmt.Errorf("invalid 'port' parameter: not in range 0-65535")
}
}
ts.User = params.GetOne("user")
if ts.User.IsEmpty() {
return errors.New("invalid or missing 'user' parameter, must be exactly one string")
}
ts.PrivateKeyFile = params.GetOne("private_key_file")
// do not fail if key file is empty, in such case it won't be used
ts.PrivateKeyFile = params.GetOne("private_key_file")
// do not fail if password is empty, in such case it won't be used
ts.Password = params.GetOne("password")
ts.Executable = params.GetOne("executable")
if ts.Executable.IsEmpty() {
return errors.New("invalid or missing 'executable' parameter, must be exactly one string")
}
ts.Args = params.Get("args")
ts.Expect = params.GetOne("expect")
if params.GetOne("timeout").IsEmpty() {
ts.Timeout = test.NewParam(defaultTimeoutParameter)
} else {
ts.Timeout = params.GetOne("timeout")
}
ts.SkipIfEmptyHost = params.GetOne("skip_if_empty_host")
return nil
}