From 6da9802a33d98b71f17e93bfbf1b3fa070687757 Mon Sep 17 00:00:00 2001 From: Kent Wang Date: Sun, 11 Jun 2017 16:01:09 +0800 Subject: [PATCH] builder/alicloud-ecs: Fix chooseNetworkType * Choose VpcNet when KeyPairName is set * Code cleanup --- builder/alicloud/ecs/builder.go | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/builder/alicloud/ecs/builder.go b/builder/alicloud/ecs/builder.go index de56c0cab..af40c92fc 100644 --- a/builder/alicloud/ecs/builder.go +++ b/builder/alicloud/ecs/builder.go @@ -211,13 +211,31 @@ func (b *Builder) Cancel() { } func (b *Builder) chooseNetworkType() InstanceNetWork { - //Alicloud userdata require vpc network and public key require userdata, so besides user specific vpc network, - //choose vpc networks in those cases - if b.config.RunConfig.Comm.SSHPrivateKey != "" || b.config.UserData != "" || b.config.UserDataFile != "" || - b.config.VpcId != "" || b.config.VSwitchId != "" || b.config.TemporaryKeyPairName != "" { + if b.isVpcNetRequired() { return VpcNet } else { return ClassicNet } +} + +func (b *Builder) isVpcNetRequired() bool { + // UserData and KeyPair only works in VPC + return b.isVpcSpecified() || b.isUserDataNeeded() || b.isKeyPairNeeded() +} + +func (b *Builder) isVpcSpecified() bool { + return b.config.VpcId != "" || b.config.VSwitchId != "" +} + +func (b *Builder) isUserDataNeeded() bool { + // Public key setup requires userdata + if b.config.RunConfig.Comm.SSHPrivateKey != "" { + return true + } + + return b.config.UserData != "" || b.config.UserDataFile != "" +} +func (b *Builder) isKeyPairNeeded() bool { + return b.config.SSHKeyPairName != "" || b.config.TemporaryKeyPairName != "" }