From de71bd470815b81c81e71abc8c90625613a77afa Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Fri, 9 Aug 2019 13:38:06 +0100 Subject: [PATCH] Refactor how additional cluster config tasks are handled --- pkg/ctl/create/cluster.go | 4 +--- pkg/eks/tasks.go | 44 +++++++++++++++++++++++++++++++++++++++ pkg/eks/update.go | 38 ++------------------------------- 3 files changed, 47 insertions(+), 39 deletions(-) create mode 100644 pkg/eks/tasks.go diff --git a/pkg/ctl/create/cluster.go b/pkg/ctl/create/cluster.go index cd2807d030..9b57d37e4d 100644 --- a/pkg/ctl/create/cluster.go +++ b/pkg/ctl/create/cluster.go @@ -276,9 +276,7 @@ func doCreateCluster(cmd *cmdutils.Cmd, params *createClusterCmdParams) error { } logger.Info("if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=%s --name=%s'", meta.Region, meta.Name) tasks := stackManager.NewTasksToCreateClusterWithNodeGroups(ngSubset) - if updateClusterTasks := ctl.GetUpdateClusterConfigTasks(cfg); updateClusterTasks != nil { - tasks.Append(updateClusterTasks) - } + ctl.AppendExtraClusterConfigTasks(cfg, tasks) logger.Info(tasks.Describe()) if errs := tasks.DoAllSync(); len(errs) > 0 { diff --git a/pkg/eks/tasks.go b/pkg/eks/tasks.go new file mode 100644 index 0000000000..c344f5347e --- /dev/null +++ b/pkg/eks/tasks.go @@ -0,0 +1,44 @@ +package eks + +import ( + "github.com/kris-nova/logger" + + api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5" + "github.com/weaveworks/eksctl/pkg/cfn/manager" +) + +type clusterConfigTask struct { + info string + spec *api.ClusterConfig + call func(*api.ClusterConfig) error +} + +func (t *clusterConfigTask) Describe() string { return t.info } + +func (t *clusterConfigTask) Do(errs chan error) error { + err := t.call(t.spec) + close(errs) + return err +} + +// AppendExtraClusterConfigTasks returns all tasks for updating cluster configuration or nil if there are no tasks +func (c *ClusterProvider) AppendExtraClusterConfigTasks(cfg *api.ClusterConfig, tasks *manager.TaskTree) { + newTasks := &manager.TaskTree{ + Parallel: false, + IsSubTask: true, + } + if !cfg.HasClusterCloudWatchLogging() { + logger.Info("CloudWatch logging will not be enabled for cluster %q in %q", cfg.Metadata.Name, cfg.Metadata.Region) + logger.Info("you can enable it with 'eksctl utils update-cluster-logging --region=%s --name=%s'", cfg.Metadata.Region, cfg.Metadata.Name) + + } else { + newTasks.Append(&clusterConfigTask{ + info: "update CloudWatch logging configuration", + spec: cfg, + call: c.UpdateClusterConfigForLogging, + }) + } + if newTasks.Len() > 0 { + tasks.Append(newTasks) + } +} diff --git a/pkg/eks/update.go b/pkg/eks/update.go index 813978dba7..dd9e55d3ff 100644 --- a/pkg/eks/update.go +++ b/pkg/eks/update.go @@ -4,34 +4,17 @@ import ( "fmt" "strings" - "github.com/kris-nova/logger" - "github.com/pkg/errors" - "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/request" awseks "github.com/aws/aws-sdk-go/service/eks" - + "github.com/kris-nova/logger" + "github.com/pkg/errors" "k8s.io/apimachinery/pkg/util/sets" api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5" - "github.com/weaveworks/eksctl/pkg/cfn/manager" "github.com/weaveworks/eksctl/pkg/utils/waiters" ) -type updateClusterConfigTask struct { - info string - spec *api.ClusterConfig - call func(*api.ClusterConfig) error -} - -func (t *updateClusterConfigTask) Describe() string { return t.info } - -func (t *updateClusterConfigTask) Do(errs chan error) error { - err := t.call(t.spec) - close(errs) - return err -} - // GetCurrentClusterConfigForLogging fetches current cluster logging configuration as two sets - enabled and disabled types func (c *ClusterProvider) GetCurrentClusterConfigForLogging(cl *api.ClusterMeta) (sets.String, sets.String, error) { enabled := sets.NewString() @@ -109,23 +92,6 @@ func (c *ClusterProvider) UpdateClusterConfigForLogging(cfg *api.ClusterConfig) return nil } -// GetUpdateClusterConfigTasks returns all tasks for updating cluster configuration or nil if there are no tasks -func (c *ClusterProvider) GetUpdateClusterConfigTasks(cfg *api.ClusterConfig) *manager.TaskTree { - if !cfg.HasClusterCloudWatchLogging() { - logger.Info("CloudWatch logging will not be enabled for cluster %q in %q", cfg.Metadata.Name, cfg.Metadata.Region) - logger.Info("you can enable it with 'eksctl utils update-cluster-logging --region=%s --name=%s'", cfg.Metadata.Region, cfg.Metadata.Name) - return nil - } - - loggingTasks := &manager.TaskTree{Parallel: false} - loggingTasks.Append(&updateClusterConfigTask{ - info: "update CloudWatch logging configuration", - spec: cfg, - call: c.UpdateClusterConfigForLogging, - }) - return loggingTasks -} - // UpdateClusterVersion calls eks.UpdateClusterVersion and updates to cfg.Metadata.Version, // it will return update ID along with an error (if it occurs) func (c *ClusterProvider) UpdateClusterVersion(cfg *api.ClusterConfig) (*awseks.Update, error) {