Skip to content

Commit 84c6ba8

Browse files
Sync claim status names with the spec (#197)
* Sync claim status names with the spec Synchronize the claim status names with recent spec changes from * cnabio/cnab-spec#344 * success -> succeeded * failure -> failed * cnabio/cnab-spec#345 * +cancelled * cnabio/cnab-spec#340 * +running Signed-off-by: Carolyn Van Slyck <carolyn.vanslyck@microsoft.com> * Match claim status const names with value Update the const names to match the new values, and deprecate StatusSuccess and StatusFailure. Signed-off-by: Carolyn Van Slyck <carolyn.vanslyck@microsoft.com>
1 parent eb7dfe1 commit 84c6ba8

11 files changed

+58
-29
lines changed

action/install.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ func (i *Install) Run(c *claim.Claim, creds credentials.Set, opCfgs ...Operation
3434
outputErrors := setOutputsOnClaim(c, opResult.Outputs)
3535

3636
if err != nil {
37-
c.Update(claim.ActionInstall, claim.StatusFailure)
37+
c.Update(claim.ActionInstall, claim.StatusFailed)
3838
c.Result.Message = err.Error()
3939
return err
4040
}
41-
c.Update(claim.ActionInstall, claim.StatusSuccess)
41+
c.Update(claim.ActionInstall, claim.StatusSucceeded)
4242

4343
return outputErrors
4444
}

action/install_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestInstall_Run(t *testing.T) {
3232
Error: nil,
3333
}}
3434
assert.NoError(t, inst.Run(c, mockSet, out))
35-
assert.Equal(t, claim.StatusSuccess, c.Result.Status)
35+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status)
3636
assert.Equal(t, claim.ActionInstall, c.Result.Action)
3737
assert.Equal(t, map[string]interface{}{"some-output": "SOME CONTENT"}, c.Outputs)
3838
})
@@ -87,7 +87,7 @@ func TestInstall_Run(t *testing.T) {
8787
},
8888
}
8989
assert.NoError(t, inst.Run(c, mockSet, out))
90-
assert.Equal(t, claim.StatusSuccess, c.Result.Status)
90+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status)
9191
assert.Equal(t, claim.ActionInstall, c.Result.Action)
9292
assert.Empty(t, c.Outputs)
9393
})
@@ -117,7 +117,7 @@ func TestInstall_Run(t *testing.T) {
117117
},
118118
}
119119
assert.Error(t, inst.Run(c, mockSet, out))
120-
assert.Equal(t, claim.StatusFailure, c.Result.Status)
120+
assert.Equal(t, claim.StatusFailed, c.Result.Status)
121121
assert.Equal(t, claim.ActionInstall, c.Result.Action)
122122
assert.Equal(t, map[string]interface{}{"some-output": "SOME CONTENT"}, c.Outputs)
123123
})

action/run_custom.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ func (i *RunCustom) Run(c *claim.Claim, creds credentials.Set, opCfgs ...Operati
6464
outputErrors := setOutputsOnClaim(c, opResult.Outputs)
6565

6666
if err != nil {
67-
c.Update(i.Action, claim.StatusFailure)
67+
c.Update(i.Action, claim.StatusFailed)
6868
c.Result.Message = err.Error()
6969
return err
7070
}
71-
c.Update(i.Action, claim.StatusSuccess)
71+
c.Update(i.Action, claim.StatusSucceeded)
7272

7373
return outputErrors
7474
}

action/run_custom_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func TestRunCustom(t *testing.T) {
3838
c := newClaim()
3939
err := rc.Run(c, mockSet, out)
4040
assert.NoError(t, err)
41-
assert.Equal(t, claim.StatusSuccess, c.Result.Status)
41+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status)
4242
assert.Equal(t, "test", c.Result.Action)
4343
assert.Equal(t, map[string]interface{}{"some-output": "SOME CONTENT"}, c.Outputs)
4444
})
@@ -92,7 +92,7 @@ func TestRunCustom(t *testing.T) {
9292
err := rc.Run(c, mockSet, out)
9393
assert.NoError(t, err)
9494
assert.NotEqual(t, c.Created, c.Modified, "Claim was not updated with modified timestamp after custom action")
95-
assert.Equal(t, claim.StatusSuccess, c.Result.Status)
95+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status)
9696
assert.Equal(t, "test", c.Result.Action)
9797
assert.Empty(t, c.Outputs)
9898
})
@@ -123,7 +123,7 @@ func TestRunCustom(t *testing.T) {
123123
assert.Error(t, err)
124124
assert.NotEqual(t, "", c.Result.Message, "Expected error message in claim result message")
125125
assert.Equal(t, "test", c.Result.Action)
126-
assert.Equal(t, claim.StatusFailure, c.Result.Status)
126+
assert.Equal(t, claim.StatusFailed, c.Result.Status)
127127
assert.Equal(t, map[string]interface{}{"some-output": "SOME CONTENT"}, c.Outputs)
128128
})
129129

action/uninstall.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ func (u *Uninstall) Run(c *claim.Claim, creds credentials.Set, opCfgs ...Operati
3232
outputErrors := setOutputsOnClaim(c, opResult.Outputs)
3333

3434
if err != nil {
35-
c.Update(claim.ActionUninstall, claim.StatusFailure)
35+
c.Update(claim.ActionUninstall, claim.StatusFailed)
3636
c.Result.Message = err.Error()
3737
return err
3838
}
39-
c.Update(claim.ActionUninstall, claim.StatusSuccess)
39+
c.Update(claim.ActionUninstall, claim.StatusSucceeded)
4040

4141
return outputErrors
4242
}

action/uninstall_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestUninstall_Run(t *testing.T) {
3737
assert.NoError(t, err)
3838
assert.NotEqual(t, c.Created, c.Modified, "Claim was not updated with modified time stamp during uninstall after uninstall action")
3939
assert.Equal(t, claim.ActionUninstall, c.Result.Action, "Claim result action not successfully updated.")
40-
assert.Equal(t, claim.StatusSuccess, c.Result.Status, "Claim result status not successfully updated.")
40+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status, "Claim result status not successfully updated.")
4141
assert.Equal(t, map[string]interface{}{"some-output": "SOME CONTENT"}, c.Outputs)
4242
})
4343

@@ -93,7 +93,7 @@ func TestUninstall_Run(t *testing.T) {
9393
assert.NoError(t, err)
9494
assert.NotEqual(t, c.Created, c.Modified, "Claim was not updated with modified time stamp during uninstall after uninstall action")
9595
assert.Equal(t, claim.ActionUninstall, c.Result.Action, "Claim result action not successfully updated.")
96-
assert.Equal(t, claim.StatusSuccess, c.Result.Status, "Claim result status not successfully updated.")
96+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status, "Claim result status not successfully updated.")
9797
assert.Empty(t, c.Outputs)
9898
})
9999

@@ -123,7 +123,7 @@ func TestUninstall_Run(t *testing.T) {
123123
assert.Error(t, err)
124124
assert.NotEqual(t, "", c.Result.Message, "Expected error message in claim result message")
125125
assert.Equal(t, claim.ActionUninstall, c.Result.Action)
126-
assert.Equal(t, claim.StatusFailure, c.Result.Status)
126+
assert.Equal(t, claim.StatusFailed, c.Result.Status)
127127
assert.Equal(t, map[string]interface{}{"some-output": "SOME CONTENT"}, c.Outputs)
128128
})
129129
}

action/upgrade.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ func (u *Upgrade) Run(c *claim.Claim, creds credentials.Set, opCfgs ...Operation
3232
outputErrors := setOutputsOnClaim(c, opResult.Outputs)
3333

3434
if err != nil {
35-
c.Update(claim.ActionUpgrade, claim.StatusFailure)
35+
c.Update(claim.ActionUpgrade, claim.StatusFailed)
3636
c.Result.Message = err.Error()
3737
return err
3838
}
39-
c.Update(claim.ActionUpgrade, claim.StatusSuccess)
39+
c.Update(claim.ActionUpgrade, claim.StatusSucceeded)
4040

4141
return outputErrors
4242
}

action/upgrade_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func TestUpgrade_Run(t *testing.T) {
3535
assert.NoError(t, err)
3636
assert.NotEqual(t, c.Created, c.Modified, "Claim was not updated with modified time stamp during upgrade action")
3737
assert.Equal(t, claim.ActionUpgrade, c.Result.Action)
38-
assert.Equal(t, claim.StatusSuccess, c.Result.Status)
38+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status)
3939
assert.Equal(t, map[string]interface{}{"some-output": "SOME CONTENT"}, c.Outputs)
4040
})
4141

@@ -89,7 +89,7 @@ func TestUpgrade_Run(t *testing.T) {
8989
assert.NoError(t, err)
9090
assert.NotEqual(t, c.Created, c.Modified, "Claim was not updated with modified time stamp during upgrade action")
9191
assert.Equal(t, claim.ActionUpgrade, c.Result.Action)
92-
assert.Equal(t, claim.StatusSuccess, c.Result.Status)
92+
assert.Equal(t, claim.StatusSucceeded, c.Result.Status)
9393
assert.Empty(t, c.Outputs)
9494
})
9595

@@ -114,7 +114,7 @@ func TestUpgrade_Run(t *testing.T) {
114114
assert.Error(t, err)
115115
assert.NotEmpty(t, c.Result.Message, "Expected error message in claim result message")
116116
assert.Equal(t, claim.ActionUpgrade, c.Result.Action)
117-
assert.Equal(t, claim.StatusFailure, c.Result.Status)
117+
assert.Equal(t, claim.StatusFailed, c.Result.Status)
118118
assert.Empty(t, c.Outputs)
119119
})
120120
}

claim/claim.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,18 @@ const DefaultSchemaVersion = schemaversion.SchemaVersion("v1.0.0-WD")
1919

2020
// Status constants define the CNAB status fields on a Result.
2121
const (
22-
StatusSuccess = "success"
23-
StatusFailure = "failure"
24-
StatusPending = "pending"
25-
StatusUnknown = "unknown"
22+
StatusSucceeded = "succeeded"
23+
StatusCanceled = "canceled"
24+
StatusFailed = "failed"
25+
StatusRunning = "running"
26+
StatusPending = "pending"
27+
StatusUnknown = "unknown"
28+
29+
// Deprecated: StatusSuccess has been replaced by StatusSucceeded.
30+
StatusSuccess = StatusSucceeded
31+
32+
// Deprecated: StatusFailure has been replaced by StatusFailed.
33+
StatusFailure = StatusFailed
2634
)
2735

2836
// Action constants define the CNAB action to be taken
@@ -103,7 +111,7 @@ func (r Result) Validate() error {
103111
}
104112

105113
switch r.Status {
106-
case StatusFailure, StatusPending, StatusSuccess, StatusUnknown:
114+
case StatusCanceled, StatusFailed, StatusPending, StatusRunning, StatusSucceeded, StatusUnknown:
107115
return nil
108116
}
109117
return fmt.Errorf("invalid status: %s", r.Status)

claim/claim_test.go

+24-3
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ func TestUpdate(t *testing.T) {
3939

4040
time.Sleep(1 * time.Millisecond) // Force the Update to happen at a new time. For those of us who remembered to press the Turbo button.
4141

42-
claim.Update(ActionInstall, StatusSuccess)
42+
claim.Update(ActionInstall, StatusSucceeded)
4343

4444
is := assert.New(t)
4545
is.NotEqual(oldMod, claim.Modified)
4646
is.NotEqual(oldUlid, claim.Revision)
4747
is.Equal("install", claim.Result.Action)
48-
is.Equal("success", claim.Result.Status)
48+
is.Equal("succeeded", claim.Result.Status)
4949
}
5050

5151
func TestValidName(t *testing.T) {
@@ -136,6 +136,27 @@ func TestValidateExampleClaim(t *testing.T) {
136136
`claim validation failed: invalid schema version "not-semver": Invalid Semantic Version`)
137137
}
138138

139+
func TestResult_Validate_ValidStatus(t *testing.T) {
140+
validStatuses := []string{
141+
StatusCanceled,
142+
StatusRunning,
143+
StatusFailed,
144+
StatusPending,
145+
StatusSucceeded,
146+
StatusUnknown,
147+
}
148+
for _, status := range validStatuses {
149+
t.Run(status+" status", func(t *testing.T) {
150+
result := Result{
151+
Action: ActionInstall,
152+
Status: status,
153+
}
154+
err := result.Validate()
155+
assert.NoError(t, err, "%s is a valid claim status", status)
156+
})
157+
}
158+
}
159+
139160
func TestValidate_InvalidResult(t *testing.T) {
140161
claim := exampleClaim
141162

@@ -147,7 +168,7 @@ func TestValidate_InvalidResult(t *testing.T) {
147168

148169
t.Run("if result has empty action, validation should fail", func(t *testing.T) {
149170
claim.Result = Result{
150-
Status: StatusSuccess,
171+
Status: StatusSucceeded,
151172
}
152173
err := claim.Validate()
153174
assert.EqualError(t, err, "claim validation failed: the action must be provided")

claim/claimstore_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func TestCanUpdate(t *testing.T) {
6565
require.NoError(t, err)
6666

6767
time.Sleep(1 * time.Millisecond)
68-
claim.Update(ActionInstall, StatusSuccess)
68+
claim.Update(ActionInstall, StatusSucceeded)
6969

7070
err = store.Save(*claim)
7171
is.NoError(err, "Failed to update")

0 commit comments

Comments
 (0)