diff --git a/internal/helm/plan.go b/internal/helm/plan.go index ea184f3..3dc4ce2 100644 --- a/internal/helm/plan.go +++ b/internal/helm/plan.go @@ -60,7 +60,7 @@ func determineSteps(cfg Config) *func(Config) []Step { case "upgrade": return &upgrade case "delete": - panic("not implemented") + return &del case "lint": panic("not implemented") case "help": @@ -69,6 +69,8 @@ func determineSteps(cfg Config) *func(Config) []Step { switch cfg.DroneEvent { case "push", "tag", "deployment", "pull_request", "promote", "rollback": return &upgrade + case "delete": + return &del default: panic("not implemented") } @@ -116,6 +118,23 @@ var upgrade = func(cfg Config) []Step { return steps } +var del = func(cfg Config) []Step { + return []Step{ + &run.InitKube{ + SkipTLSVerify: cfg.SkipTLSVerify, + Certificate: cfg.Certificate, + APIServer: cfg.APIServer, + ServiceAccount: cfg.ServiceAccount, + Token: cfg.KubeToken, + TemplateFile: kubeConfigTemplate, + }, + &run.Delete{ + Release: cfg.Release, + DryRun: cfg.DryRun, + }, + } +} + var help = func(cfg Config) []Step { help := &run.Help{} return []Step{help} diff --git a/internal/helm/plan_test.go b/internal/helm/plan_test.go index 716a27c..b975504 100644 --- a/internal/helm/plan_test.go +++ b/internal/helm/plan_test.go @@ -137,6 +137,43 @@ func (suite *PlanTestSuite) TestUpgrade() { suite.Equal(expected, upgrade) } +func (suite *PlanTestSuite) TestDel() { + cfg := Config{ + KubeToken: "b2YgbXkgYWZmZWN0aW9u", + SkipTLSVerify: true, + Certificate: "cHJvY2xhaW1zIHdvbmRlcmZ1bCBmcmllbmRzaGlw", + APIServer: "98.765.43.21", + ServiceAccount: "greathelm", + DryRun: true, + Timeout: "think about what you did", + Release: "jetta_id_love_to_change_the_world", + } + + steps := del(cfg) + suite.Require().Equal(2, len(steps), "del should return 2 steps") + + suite.Require().IsType(&run.InitKube{}, steps[0]) + init, _ := steps[0].(*run.InitKube) + var expected Step = &run.InitKube{ + SkipTLSVerify: true, + Certificate: "cHJvY2xhaW1zIHdvbmRlcmZ1bCBmcmllbmRzaGlw", + APIServer: "98.765.43.21", + ServiceAccount: "greathelm", + Token: "b2YgbXkgYWZmZWN0aW9u", + TemplateFile: kubeConfigTemplate, + } + + suite.Equal(expected, init) + + suite.Require().IsType(&run.Delete{}, steps[1]) + actual, _ := steps[1].(*run.Delete) + expected = &run.Delete{ + Release: "jetta_id_love_to_change_the_world", + DryRun: true, + } + suite.Equal(expected, actual) +} + func (suite *PlanTestSuite) TestDeterminePlanUpgradeCommand() { cfg := Config{ Command: "upgrade", @@ -156,6 +193,22 @@ func (suite *PlanTestSuite) TestDeterminePlanUpgradeFromDroneEvent() { } } +func (suite *PlanTestSuite) TestDeterminePlanDeleteCommand() { + cfg := Config{ + Command: "delete", + } + stepsMaker := determineSteps(cfg) + suite.Same(&del, stepsMaker) +} + +func (suite *PlanTestSuite) TestDeterminePlanDeleteFromDroneEvent() { + cfg := Config{ + DroneEvent: "delete", + } + stepsMaker := determineSteps(cfg) + suite.Same(&del, stepsMaker) +} + func (suite *PlanTestSuite) TestDeterminePlanHelpCommand() { cfg := Config{ Command: "help",