From aeef9dc6ebbba72c087be30586184af18505056c Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Sun, 18 Dec 2016 23:56:36 -0500 Subject: [PATCH] A few real-world fixes to create-cluster around initialization --- cmd/kops/create_cluster.go | 29 +++++++++++++++-------------- pkg/apis/kops/channel.go | 1 + pkg/apis/kops/validation.go | 3 ++- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/cmd/kops/create_cluster.go b/cmd/kops/create_cluster.go index 07f61413ec..a501460998 100644 --- a/cmd/kops/create_cluster.go +++ b/cmd/kops/create_cluster.go @@ -82,6 +82,7 @@ func (o *CreateClusterOptions) InitDefaults() { func NewCmdCreateCluster(f *util.Factory, out io.Writer) *cobra.Command { options := &CreateClusterOptions{} + options.InitDefaults() cmd := &cobra.Command{ Use: "cluster", @@ -454,25 +455,25 @@ func RunCreateCluster(f *util.Factory, out io.Writer, c *CreateClusterOptions) e cluster.Spec.Subnets[i].Type = api.SubnetTypePrivate } + var utilitySubnets []api.ClusterSubnetSpec + for _, s := range cluster.Spec.Subnets { + if s.Type == api.SubnetTypeUtility { + continue + } + subnet := api.ClusterSubnetSpec{ + SubnetName: "utility-" + s.SubnetName, + Zone: s.Zone, + Type: api.SubnetTypeUtility, + } + utilitySubnets = append(utilitySubnets, subnet) + } + cluster.Spec.Subnets = append(cluster.Spec.Subnets, utilitySubnets...) + if c.Bastion { bastionGroup := &api.InstanceGroup{} bastionGroup.Spec.Role = api.InstanceGroupRoleBastion bastionGroup.ObjectMeta.Name = "bastions" instanceGroups = append(instanceGroups, bastionGroup) - - var bastionSubnets []api.ClusterSubnetSpec - for _, s := range cluster.Spec.Subnets { - if s.Type == api.SubnetTypeUtility { - continue - } - subnet := api.ClusterSubnetSpec{ - SubnetName: "utility-" + s.SubnetName, - Zone: s.Zone, - Type: api.SubnetTypeUtility, - } - bastionSubnets = append(bastionSubnets, subnet) - } - cluster.Spec.Subnets = append(cluster.Spec.Subnets, bastionSubnets...) } default: diff --git a/pkg/apis/kops/channel.go b/pkg/apis/kops/channel.go index 77cc095f55..e03df0152a 100644 --- a/pkg/apis/kops/channel.go +++ b/pkg/apis/kops/channel.go @@ -62,6 +62,7 @@ func LoadChannel(location string) (*Channel, error) { if err != nil { return nil, fmt.Errorf("invalid base channel location: %q", DefaultChannelBase) } + glog.V(4).Infof("resolving %q against default channel location %q", location, DefaultChannelBase) u = base.ResolveReference(u) } diff --git a/pkg/apis/kops/validation.go b/pkg/apis/kops/validation.go index f6a4012d70..2e9d7b37eb 100644 --- a/pkg/apis/kops/validation.go +++ b/pkg/apis/kops/validation.go @@ -330,10 +330,11 @@ func (c *Cluster) Validate(strict bool) error { } if c.Spec.Topology.Bastion != nil { + bastion := c.Spec.Topology.Bastion if c.Spec.Topology.Masters == TopologyPublic || c.Spec.Topology.Nodes == TopologyPublic { return fmt.Errorf("Bastion supports only Private Masters and Nodes") } - if fi.Int64Value(c.Spec.Topology.Bastion.IdleTimeout) <= int64(0) { + if bastion.IdleTimeout != nil && *bastion.IdleTimeout <= 0 { return fmt.Errorf("Bastion IdleTimeout should be greater than zero") } }