From 04bfe4f91d8a1438ae5bb462989d15bcfd70ce82 Mon Sep 17 00:00:00 2001 From: dmitriy kalinin Date: Wed, 13 Sep 2017 07:55:57 -0700 Subject: [PATCH] add --recreate to create-env --- cmd/create_env.go | 2 +- cmd/create_env_test.go | 18 ++++++++++++++++++ cmd/deployment_preparer.go | 4 ++-- cmd/opts.go | 1 + cmd/opts_test.go | 6 ++++++ 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/cmd/create_env.go b/cmd/create_env.go index 9235c86d4..f9eeefb66 100644 --- a/cmd/create_env.go +++ b/cmd/create_env.go @@ -22,5 +22,5 @@ func (c *CreateEnvCmd) Run(stage boshui.Stage, opts CreateEnvOpts) error { depPreparer := c.envProvider( opts.Args.Manifest.Path, opts.StatePath, opts.VarFlags.AsVariables(), opts.OpsFlags.AsOp()) - return depPreparer.PrepareDeployment(stage) + return depPreparer.PrepareDeployment(stage, opts.Recreate) } diff --git a/cmd/create_env_test.go b/cmd/create_env_test.go index fb029cb87..6b11233cc 100644 --- a/cmd/create_env_test.go +++ b/cmd/create_env_test.go @@ -697,6 +697,15 @@ var _ = Describe("CreateEnvCmd", func() { Expect(err).NotTo(HaveOccurred()) Expect(stdOut).To(gbytes.Say("No deployment, stemcell or release changes. Skipping deploy.")) }) + + It("deploys if recreate flag is specified", func() { + expectDeploy.Times(1) + + defaultCreateEnvOpts.Recreate = true + + err := command.Run(fakeStage, defaultCreateEnvOpts) + Expect(err).NotTo(HaveOccurred()) + }) }) Context("when parsing the cpi deployment manifest fails", func() { @@ -893,6 +902,15 @@ var _ = Describe("CreateEnvCmd", func() { Expect(err).NotTo(HaveOccurred()) Expect(stdOut).To(gbytes.Say("No deployment, stemcell or release changes. Skipping deploy.")) }) + + It("deploys if recreate flag is specified", func() { + expectDeploy.Times(1) + + defaultCreateEnvOpts.Recreate = true + + err := command.Run(fakeStage, defaultCreateEnvOpts) + Expect(err).NotTo(HaveOccurred()) + }) }) }) diff --git a/cmd/deployment_preparer.go b/cmd/deployment_preparer.go index f4fc6bfe2..29bd59218 100644 --- a/cmd/deployment_preparer.go +++ b/cmd/deployment_preparer.go @@ -101,7 +101,7 @@ type DeploymentPreparer struct { targetProvider biinstall.TargetProvider } -func (c *DeploymentPreparer) PrepareDeployment(stage biui.Stage) (err error) { +func (c *DeploymentPreparer) PrepareDeployment(stage biui.Stage, recreate bool) (err error) { c.ui.BeginLinef("Deployment state: '%s'\n", c.deploymentStateService.Path()) if !c.deploymentStateService.Exists() { @@ -184,7 +184,7 @@ func (c *DeploymentPreparer) PrepareDeployment(stage biui.Stage) (err error) { return bosherr.WrapError(err, "Checking if deployment has changed") } - if isDeployed { + if isDeployed && !recreate { c.ui.BeginLinef("No deployment, stemcell or release changes. Skipping deploy.\n") return nil } diff --git a/cmd/opts.go b/cmd/opts.go index d48dac5b6..9cc43ab30 100644 --- a/cmd/opts.go +++ b/cmd/opts.go @@ -169,6 +169,7 @@ type CreateEnvOpts struct { VarFlags OpsFlags StatePath string `long:"state" value-name:"PATH" description:"State file path"` + Recreate bool `long:"recreate" description:"Recreate VM in deployment"` cmd } diff --git a/cmd/opts_test.go b/cmd/opts_test.go index f1759a0d7..89edd68c9 100644 --- a/cmd/opts_test.go +++ b/cmd/opts_test.go @@ -750,6 +750,12 @@ var _ = Describe("Opts", func() { `long:"state" value-name:"PATH" description:"State file path"`, )) }) + + It("has --recreate", func() { + Expect(getStructTagForName("Recreate", opts)).To(Equal( + `long:"recreate" description:"Recreate VM in deployment"`, + )) + }) }) Describe("CreateEnvArgs", func() {