Skip to content

Commit

Permalink
feat: added DELETING microvm status (#322)
Browse files Browse the repository at this point in the history
Added a new microvm status (spec only) that is set when we send a
request to delete a microvm. This means that an subsequent gets (before
reconcile is run) we can see that the microvm has a status of deleting.

Signed-off-by: Richard Case <[email protected]>
  • Loading branch information
richardcase authored Dec 14, 2021
1 parent 19cc344 commit 79a648b
Show file tree
Hide file tree
Showing 10 changed files with 56 additions and 36 deletions.
3 changes: 2 additions & 1 deletion api/services/microvm/v1alpha1/microvms.swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,8 @@
"enum": [
"PENDING",
"CREATED",
"FAILED"
"FAILED",
"DELETING"
],
"default": "PENDING"
},
Expand Down
68 changes: 36 additions & 32 deletions api/types/microvm.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions api/types/microvm.proto
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ message MicroVMStatus {
PENDING = 0;
CREATED = 1;
FAILED = 2;
DELETING = 3;
}

// State stores information about the last known state of the vm and the spec.
Expand Down
1 change: 1 addition & 0 deletions core/application/app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ func TestApp_DeleteMicroVM(t *testing.T) {

expectedUpdatedSpec := createTestSpec("id1234", "default")
expectedUpdatedSpec.Spec.DeletedAt = frozenTime().Unix()
expectedUpdatedSpec.Status.State = models.DeletingState

rm.Save(
gomock.AssignableToTypeOf(context.Background()),
Expand Down
1 change: 1 addition & 0 deletions core/application/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ func (a *app) DeleteMicroVM(ctx context.Context, id, namespace string) error {
// Set the timestamp when the VMspec was deleted.
foundMvm.Spec.DeletedAt = a.ports.Clock().Unix()
foundMvm.Status.Retry = 0
foundMvm.Status.State = models.DeletingState

_, err = a.ports.Repo.Save(ctx, foundMvm)
if err != nil {
Expand Down
7 changes: 4 additions & 3 deletions core/models/microvm.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ package models
type MicroVMState string

const (
PendingState = "pending"
CreatedState = "created"
FailedState = "failed"
PendingState = "pending"
CreatedState = "created"
FailedState = "failed"
DeletingState = "deleting"
)

// MicroVM represents a microvm machine that is created via a provider.
Expand Down
5 changes: 5 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/subcommands v1.0.1 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-multierror v1.1.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
Expand All @@ -94,6 +95,7 @@ require (
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect
github.com/opencontainers/selinux v1.8.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.26.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect
Expand All @@ -104,9 +106,12 @@ require (
go.mongodb.org/mongo-driver v1.7.5 // indirect
go.opencensus.io v0.23.0 // indirect
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect
golang.org/x/mod v0.4.2 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf // indirect
golang.org/x/text v0.3.6 // indirect
golang.org/x/tools v0.1.5 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12 // indirect
gopkg.in/ini.v1 v1.63.2 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
Expand Down
3 changes: 3 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,7 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k=
github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
Expand Down Expand Up @@ -1029,6 +1030,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand Down Expand Up @@ -1298,6 +1300,7 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand Down
2 changes: 2 additions & 0 deletions infrastructure/grpc/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,8 @@ func convertModelToMicroVMStatus(mvm *models.MicroVM) *types.MicroVMStatus {
converted.State = types.MicroVMStatus_PENDING
case models.FailedState:
converted.State = types.MicroVMStatus_FAILED
case models.DeletingState:
converted.State = types.MicroVMStatus_DELETING
}

converted.Volumes = make(map[string]*types.VolumeStatus, len(mvm.Status.Volumes))
Expand Down
1 change: 1 addition & 0 deletions userdocs/docs/grpc/types/proto.md
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,7 @@ TODO: add CSI |
| PENDING | 0 | |
| CREATED | 1 | |
| FAILED | 2 | |
| DELETING | 3 | |



Expand Down

0 comments on commit 79a648b

Please sign in to comment.