mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-06-20 04:04:21 -04:00
cli: remove unnecessary check from QEMU rollbacker (#2489)
Signed-off-by: Daniel Weiße <dw@edgeless.systems>
This commit is contained in:
parent
9c89b75a53
commit
d154703c9a
3 changed files with 17 additions and 29 deletions
|
@ -232,7 +232,7 @@ type qemuCreateOptions struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Creator) createQEMU(ctx context.Context, cl tfResourceClient, lv libvirtRunner, opts qemuCreateOptions) (tfOutput state.Infrastructure, retErr error) {
|
func (c *Creator) createQEMU(ctx context.Context, cl tfResourceClient, lv libvirtRunner, opts qemuCreateOptions) (tfOutput state.Infrastructure, retErr error) {
|
||||||
qemuRollbacker := &rollbackerQEMU{client: cl, libvirt: lv, createdWorkspace: false}
|
qemuRollbacker := &rollbackerQEMU{client: cl, libvirt: lv}
|
||||||
defer rollbackOnError(c.out, &retErr, qemuRollbacker, opts.TFLogLevel)
|
defer rollbackOnError(c.out, &retErr, qemuRollbacker, opts.TFLogLevel)
|
||||||
|
|
||||||
// TODO(malt3): render progress bar
|
// TODO(malt3): render progress bar
|
||||||
|
@ -288,9 +288,6 @@ func (c *Creator) createQEMU(ctx context.Context, cl tfResourceClient, lv libvir
|
||||||
return state.Infrastructure{}, fmt.Errorf("prepare workspace: %w", err)
|
return state.Infrastructure{}, fmt.Errorf("prepare workspace: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow rollback of QEMU Terraform workspace from this point on
|
|
||||||
qemuRollbacker.createdWorkspace = true
|
|
||||||
|
|
||||||
tfOutput, err = cl.ApplyCluster(ctx, opts.Provider, opts.TFLogLevel)
|
tfOutput, err = cl.ApplyCluster(ctx, opts.Provider, opts.TFLogLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return state.Infrastructure{}, fmt.Errorf("create cluster: %w", err)
|
return state.Infrastructure{}, fmt.Errorf("create cluster: %w", err)
|
||||||
|
|
|
@ -50,19 +50,17 @@ func (r *rollbackerTerraform) rollback(ctx context.Context, w io.Writer, logLeve
|
||||||
}
|
}
|
||||||
|
|
||||||
type rollbackerQEMU struct {
|
type rollbackerQEMU struct {
|
||||||
client tfResourceClient
|
client tfResourceClient
|
||||||
libvirt libvirtRunner
|
libvirt libvirtRunner
|
||||||
createdWorkspace bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *rollbackerQEMU) rollback(ctx context.Context, w io.Writer, logLevel terraform.LogLevel) (retErr error) {
|
func (r *rollbackerQEMU) rollback(ctx context.Context, w io.Writer, logLevel terraform.LogLevel) error {
|
||||||
if r.createdWorkspace {
|
tfErr := r.client.Destroy(ctx, logLevel)
|
||||||
retErr = r.client.Destroy(ctx, logLevel)
|
libvirtErr := r.libvirt.Stop(ctx)
|
||||||
}
|
if err := errors.Join(tfErr, libvirtErr); err != nil {
|
||||||
if retErr := errors.Join(retErr, r.libvirt.Stop(ctx)); retErr != nil {
|
|
||||||
fmt.Fprintf(w, "Could not destroy the resources. Please delete the %q directory manually if no resources were created\n",
|
fmt.Fprintf(w, "Could not destroy the resources. Please delete the %q directory manually if no resources were created\n",
|
||||||
constants.TerraformWorkingDir)
|
constants.TerraformWorkingDir)
|
||||||
return retErr
|
return err
|
||||||
}
|
}
|
||||||
return r.client.CleanUpWorkspace()
|
return r.client.CleanUpWorkspace()
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,16 +70,14 @@ func TestRollbackQEMU(t *testing.T) {
|
||||||
someErr := errors.New("failed")
|
someErr := errors.New("failed")
|
||||||
|
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
libvirt *stubLibvirtRunner
|
libvirt *stubLibvirtRunner
|
||||||
tfClient *stubTerraformClient
|
tfClient *stubTerraformClient
|
||||||
createdWorkspace bool
|
wantDestroyErr bool
|
||||||
wantDestroyErr bool
|
wantErr bool
|
||||||
wantErr bool
|
|
||||||
}{
|
}{
|
||||||
"success": {
|
"success": {
|
||||||
libvirt: &stubLibvirtRunner{},
|
libvirt: &stubLibvirtRunner{},
|
||||||
tfClient: &stubTerraformClient{},
|
tfClient: &stubTerraformClient{},
|
||||||
createdWorkspace: true,
|
|
||||||
},
|
},
|
||||||
"stop libvirt error": {
|
"stop libvirt error": {
|
||||||
libvirt: &stubLibvirtRunner{stopErr: someErr},
|
libvirt: &stubLibvirtRunner{stopErr: someErr},
|
||||||
|
@ -103,9 +101,8 @@ func TestRollbackQEMU(t *testing.T) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
|
|
||||||
rollbacker := &rollbackerQEMU{
|
rollbacker := &rollbackerQEMU{
|
||||||
libvirt: tc.libvirt,
|
libvirt: tc.libvirt,
|
||||||
client: tc.tfClient,
|
client: tc.tfClient,
|
||||||
createdWorkspace: tc.createdWorkspace,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
destroyClusterErrOutput := &bytes.Buffer{}
|
destroyClusterErrOutput := &bytes.Buffer{}
|
||||||
|
@ -125,11 +122,7 @@ func TestRollbackQEMU(t *testing.T) {
|
||||||
}
|
}
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.True(tc.libvirt.stopCalled)
|
assert.True(tc.libvirt.stopCalled)
|
||||||
if tc.createdWorkspace {
|
assert.True(tc.tfClient.destroyCalled)
|
||||||
assert.True(tc.tfClient.destroyCalled)
|
|
||||||
} else {
|
|
||||||
assert.False(tc.tfClient.destroyCalled)
|
|
||||||
}
|
|
||||||
assert.True(tc.tfClient.cleanUpWorkspaceCalled)
|
assert.True(tc.tfClient.cleanUpWorkspaceCalled)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue