From cb9fd7c5748e693fd1a044588b9711996c293a45 Mon Sep 17 00:00:00 2001 From: Rickard von Essen Date: Tue, 14 Mar 2017 20:47:40 +0100 Subject: [PATCH] builder/openstack: validate ssh key name/file This is a port for OpenStack of PR #4665 --- builder/openstack/run_config.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/builder/openstack/run_config.go b/builder/openstack/run_config.go index 06fd0ea7333..eddbae1ed56 100644 --- a/builder/openstack/run_config.go +++ b/builder/openstack/run_config.go @@ -56,6 +56,15 @@ func (c *RunConfig) Prepare(ctx *interpolate.Context) []error { // Validation errs := c.Comm.Prepare(ctx) + + if c.SSHKeyPairName != "" { + if c.Comm.Type == "winrm" && c.Comm.WinRMPassword == "" && c.Comm.SSHPrivateKey == "" { + errs = append(errs, errors.New("A private_key_file must be provided to retrieve the winrm password when using ssh_keypair_name.")) + } else if c.Comm.SSHPrivateKey == "" && !c.Comm.SSHAgentAuth { + errs = append(errs, errors.New("A private_key_file must be provided or ssh_agent_auth enabled when ssh_keypair_name is specified.")) + } + } + if c.SourceImage == "" && c.SourceImageName == "" { errs = append(errs, errors.New("Either a source_image or a source_image_name must be specified")) } else if len(c.SourceImage) > 0 && len(c.SourceImageName) > 0 {