Merge lp:~axwalk/juju-core/juju-destroy-environment-log-force-usage into lp:~go-bot/juju-core/trunk

Proposed by Andrew Wilkins
Status: Merged
Approved by: Andrew Wilkins
Approved revision: no longer in the source branch.
Merged at revision: 2301
Proposed branch: lp:~axwalk/juju-core/juju-destroy-environment-log-force-usage
Merge into: lp:~go-bot/juju-core/trunk
Diff against target: 35 lines (+17/-1)
1 file modified
cmd/juju/destroyenvironment.go (+17/-1)
To merge this branch: bzr merge lp:~axwalk/juju-core/juju-destroy-environment-log-force-usage
Reviewer Review Type Date Requested Status
Juju Engineering Pending
Review via email: mp+204425@code.launchpad.net

Commit message

cmd/juju: log --force usage on failed destroy-env

If juju destroy-environment fails and --force has
not been specified, log an error message that informs
the user about the --force flag.

https://codereview.appspot.com/59580043/

Description of the change

cmd/juju: log --force usage on failed destroy-env

If juju destroy-environment fails and --force has
not been specified, log an error message that informs
the user about the --force flag.

https://codereview.appspot.com/59580043/

To post a comment you must log in.
Revision history for this message
Andrew Wilkins (axwalk) wrote :

Reviewers: mp+204425_code.launchpad.net,

Message:
Please take a look.

Description:
cmd/juju: log --force usage on failed destroy-env

If juju destroy-environment fails and --force has
not been specified, log an error message that informs
the user about the --force flag.

https://code.launchpad.net/~axwalk/juju-core/juju-destroy-environment-log-force-usage/+merge/204425

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/59580043/

Affected files (+19, -1 lines):
   A [revision details]
   M cmd/juju/destroyenvironment.go

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: tarmac-20140131160736-k5y5mbtsznmcmpci
+New revision: <email address hidden>

Index: cmd/juju/destroyenvironment.go
=== modified file 'cmd/juju/destroyenvironment.go'
--- cmd/juju/destroyenvironment.go 2014-01-28 11:25:18 +0000
+++ cmd/juju/destroyenvironment.go 2014-02-03 07:38:56 +0000
@@ -47,7 +47,7 @@
   f.StringVar(&c.envName, "environment", "", "juju environment to operate
in")
  }

-func (c *DestroyEnvironmentCommand) Run(ctx *cmd.Context) error {
+func (c *DestroyEnvironmentCommand) Run(ctx *cmd.Context) (result error) {
   store, err := configstore.Default()
   if err != nil {
    return fmt.Errorf("cannot open environment info storage: %v", err)
@@ -74,6 +74,22 @@
   // This is necessary to destroy broken environments, where the
   // API server is inaccessible or faulty.
   if !c.force {
+ defer func() {
+ if result == nil {
+ return
+ }
+ logger.Errorf(`failed to destroy environment %q
+
+If the environment is unusable, then you may run
+
+ juju destroy-environment --force
+
+to forcefully destroy the environment. Upon doing so, review
+your environment provider console for any resources that need
+to be cleaned up.
+
+`, c.envName)
+ }()
    conn, err := juju.NewAPIConn(environ, api.DefaultDialOpts())
    if err != nil {
     return err

Revision history for this message
John A Meinel (jameinel) wrote :

I'm not sure this is 100% perfect, but I think it is better than not
having it, so LGTM

https://codereview.appspot.com/59580043/

Revision history for this message
Go Bot (go-bot) wrote :
Download full text (259.2 KiB)

The attempt to merge lp:~axwalk/juju-core/juju-destroy-environment-log-force-usage into lp:juju-core failed. Below is the output from the failed tests.

ok launchpad.net/juju-core 0.017s
ok launchpad.net/juju-core/agent 1.270s
ok launchpad.net/juju-core/agent/tools 0.333s
ok launchpad.net/juju-core/bzr 6.463s
ok launchpad.net/juju-core/cert 2.922s
ok launchpad.net/juju-core/charm 0.494s
? launchpad.net/juju-core/charm/hooks [no test files]
? launchpad.net/juju-core/charm/testing [no test files]
ok launchpad.net/juju-core/cloudinit 0.029s
ok launchpad.net/juju-core/cloudinit/sshinit 1.039s
ok launchpad.net/juju-core/cmd 0.231s
ok launchpad.net/juju-core/cmd/charm-admin 0.867s
? launchpad.net/juju-core/cmd/charmd [no test files]
? launchpad.net/juju-core/cmd/charmload [no test files]
ok launchpad.net/juju-core/cmd/juju 213.772s
ok launchpad.net/juju-core/cmd/jujud 52.301s
ok launchpad.net/juju-core/cmd/plugins/juju-metadata 13.064s
? launchpad.net/juju-core/cmd/plugins/juju-restore [no test files]
ok launchpad.net/juju-core/constraints 0.026s
ok launchpad.net/juju-core/container 0.034s
ok launchpad.net/juju-core/container/factory 0.054s
ok launchpad.net/juju-core/container/kvm 0.312s
ok launchpad.net/juju-core/container/kvm/mock 0.048s
? launchpad.net/juju-core/container/kvm/testing [no test files]
ok launchpad.net/juju-core/container/lxc 0.293s
? launchpad.net/juju-core/container/lxc/mock [no test files]
? launchpad.net/juju-core/container/lxc/testing [no test files]
? launchpad.net/juju-core/container/testing [no test files]
ok launchpad.net/juju-core/downloader 5.257s
ok launchpad.net/juju-core/environs 2.992s
ok launchpad.net/juju-core/environs/bootstrap 4.563s
ok launchpad.net/juju-core/environs/cloudinit 0.643s
ok launchpad.net/juju-core/environs/config 1.919s
ok launchpad.net/juju-core/environs/configstore 0.037s
ok launchpad.net/juju-core/environs/filestorage 0.029s
ok launchpad.net/juju-core/environs/httpstorage 0.837s
ok launchpad.net/juju-core/environs/imagemetadata 0.604s
? launchpad.net/juju-core/environs/imagemetadata/testing [no test files]
ok launchpad.net/juju-core/environs/instances 0.059s
ok launchpad.net/juju-core/environs/jujutest 0.257s
ok launchpad.net/juju-core/environs/manual 8.498s
ok launchpad.net/juju-core/environs/simplestreams 0.324s
? launchpad.net/juju-core/environs/simplestreams/testing [no test files]
ok launchpad.net/juju-core/environs/sshstorage 1.011s
ok launchpad.net/juju-core/environs/storage 1.155s
ok launchpad.net/juju-core/environs/sync 31.328s
ok launchpad.net/juju-core/environs/testing 0.242s
ok launchpad.net/juju-core/environs/tools 6.823s
? launchpad.net/juju-core/environs/tools/testing [no test files]
ok launchpad.net/juju-core/errors 0.015s
ok launchpad.net/juju-core/instance 0.022s
? launchpad.net/juju-core/instance/testing [no test files]
ok launchpad.net/juju-core/juju 23.762s
ok launchpad.net/juju-core/juju/osenv 0.018s
? launchpad.net/juju-core/juju/testing [no test files]
ok launchpad.net/juju-core/log 0.014s
ok launchpad.net/juju-core/log/syslog 0.023s
ok launchp...

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cmd/juju/destroyenvironment.go'
2--- cmd/juju/destroyenvironment.go 2014-01-28 11:25:18 +0000
3+++ cmd/juju/destroyenvironment.go 2014-02-03 07:41:10 +0000
4@@ -47,7 +47,7 @@
5 f.StringVar(&c.envName, "environment", "", "juju environment to operate in")
6 }
7
8-func (c *DestroyEnvironmentCommand) Run(ctx *cmd.Context) error {
9+func (c *DestroyEnvironmentCommand) Run(ctx *cmd.Context) (result error) {
10 store, err := configstore.Default()
11 if err != nil {
12 return fmt.Errorf("cannot open environment info storage: %v", err)
13@@ -74,6 +74,22 @@
14 // This is necessary to destroy broken environments, where the
15 // API server is inaccessible or faulty.
16 if !c.force {
17+ defer func() {
18+ if result == nil {
19+ return
20+ }
21+ logger.Errorf(`failed to destroy environment %q
22+
23+If the environment is unusable, then you may run
24+
25+ juju destroy-environment --force
26+
27+to forcefully destroy the environment. Upon doing so, review
28+your environment provider console for any resources that need
29+to be cleaned up.
30+
31+`, c.envName)
32+ }()
33 conn, err := juju.NewAPIConn(environ, api.DefaultDialOpts())
34 if err != nil {
35 return err

Subscribers

People subscribed via source and target branches

to status/vote changes: