Merge lp:~axwalk/juju-core/lp1247152-destroy-jenv-failed-prepare 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: | 2320 |
Proposed branch: | lp:~axwalk/juju-core/lp1247152-destroy-jenv-failed-prepare |
Merge into: | lp:~go-bot/juju-core/trunk |
Diff against target: |
58 lines (+18/-10) 2 files modified
environs/open.go (+13/-9) environs/open_test.go (+5/-1) |
To merge this branch: | bzr merge lp:~axwalk/juju-core/lp1247152-destroy-jenv-failed-prepare |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Juju Engineering | Pending | ||
Review via email: mp+205678@code.launchpad.net |
Commit message
environs: destroy jenv if prepare fails
If Prepare fails mid-way, the .jenv file
can be left behind in some cases.
Fixes lp:1247152
Description of the change
environs: destroy jenv if prepare fails
If Prepare fails mid-way, the .jenv file
can be left behind in some cases.
Fixes lp:1247152
To post a comment you must log in.
Reviewers: mp+205678_ code.launchpad. net,
Message:
Please take a look.
Description:
environs: destroy jenv if prepare fails
If Prepare fails mid-way, the .jenv file
can be left behind in some cases.
Fixes lp:1247152
https:/ /code.launchpad .net/~axwalk/ juju-core/ lp1247152- destroy- jenv-failed- prepare/ +merge/ 205678
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/61470046/
Affected files (+20, -10 lines): open_test. go
A [revision details]
M environs/open.go
M environs/
Index: [revision details] 20140210125047- 3525mlq3garclj3 q
=== 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-
+New revision: <email address hidden>
Index: environs/open.go et(cfg) te(cfg) Warningf( "cannot destroy newly created environment info: %v",
=== modified file 'environs/open.go'
--- environs/open.go 2014-02-03 14:31:54 +0000
+++ environs/open.go 2014-02-11 02:50:17 +0000
@@ -175,15 +175,7 @@
if err != nil {
return nil, fmt.Errorf("cannot create new info for environment %q: %v",
cfg.Name(), err)
}
- cfg, err = ensureAdminSecr
- if err != nil {
- return nil, fmt.Errorf("cannot generate admin-secret: %v", err)
- }
- cfg, err = ensureCertifica
- if err != nil {
- return nil, fmt.Errorf("cannot ensure CA certificate: %v", err)
- }
- env, err := p.Prepare(cfg)
+ env, err := prepare(cfg, info, p)
if err != nil {
if err := info.Destroy(); err != nil {
logger.
err)
@@ -197,6 +189,18 @@
return env, nil
}
+func prepare(cfg *config.Config, info configstore. EnvironInfo, p et(cfg) te(cfg) et(cfg *config.Config) (*config.Config, error) {
EnvironProvider) (Environ, error) {
+ cfg, err := ensureAdminSecr
+ if err != nil {
+ return nil, fmt.Errorf("cannot generate admin-secret: %v", err)
+ }
+ cfg, err = ensureCertifica
+ if err != nil {
+ return nil, fmt.Errorf("cannot ensure CA certificate: %v", err)
+ }
+ return p.Prepare(cfg)
+}
+
// ensureAdminSecret returns a config with a non-empty admin-secret.
func ensureAdminSecr
if cfg.AdminSecret() != "" {
Index: environs/ open_test. go open_test. go' open_test. go 2013-12-20 02:38:56 +0000 open_test. go 2014-02-11 02:50:17 +0000 Prepare( cfg, configstore. NewMem( )) NewMem( ) Prepare( cfg, store) cfg.Name( )) IsNotFoundError )
=== modified file 'environs/
--- environs/
+++ environs/
@@ -245,9 +245,13 @@
},
))
c.Assert(err, gc.IsNil)
- env, err := environs.
+ store := configstore.
+ env, err := environs.
c.Assert(err, gc.ErrorMatches, "cannot ensure CA certificate: environment
configuration with a certificate but no CA private key")
c.Assert(env, gc.IsNil)
+ // Ensure that the config storage info is cleaned up.
+ _, err = store.ReadInfo(
+ c.Assert(err, jc.Satisfies, errors.
}
func (*OpenSuite) TestPrepareWith ExistingKeyPair (c *gc.C) {