1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Validate restart policy. Fixes #14351

Signed-off-by: Lei Jitang <leijitang@huawei.com>
This commit is contained in:
Lei Jitang 2015-07-03 17:33:33 +08:00
parent d7326bd787
commit f3faf59925
2 changed files with 7 additions and 8 deletions

View file

@ -428,12 +428,15 @@ func ParseRestartPolicy(policy string) (RestartPolicy, error) {
p.Name = name p.Name = name
switch name { switch name {
case "always": case "always":
if len(parts) == 2 { if len(parts) > 1 {
return p, fmt.Errorf("maximum restart count not valid with restart policy of \"always\"") return p, fmt.Errorf("maximum restart count not valid with restart policy of \"always\"")
} }
case "no": case "no":
// do nothing // do nothing
case "on-failure": case "on-failure":
if len(parts) > 2 {
return p, fmt.Errorf("restart count format is not valid, usage: 'on-failure:N' or 'on-failure'")
}
if len(parts) == 2 { if len(parts) == 2 {
count, err := strconv.Atoi(parts[1]) count, err := strconv.Atoi(parts[1])
if err != nil { if err != nil {

View file

@ -456,12 +456,13 @@ func TestParseRestartPolicy(t *testing.T) {
invalids := map[string]string{ invalids := map[string]string{
"something": "invalid restart policy something", "something": "invalid restart policy something",
"always:2": "maximum restart count not valid with restart policy of \"always\"", "always:2": "maximum restart count not valid with restart policy of \"always\"",
"always:2:3": "maximum restart count not valid with restart policy of \"always\"",
"on-failure:invalid": `strconv.ParseInt: parsing "invalid": invalid syntax`, "on-failure:invalid": `strconv.ParseInt: parsing "invalid": invalid syntax`,
"on-failure:2:5": "restart count format is not valid, usage: 'on-failure:N' or 'on-failure'",
} }
valids := map[string]RestartPolicy{ valids := map[string]RestartPolicy{
"": {}, "": {},
// FIXME This feels not right "always": {
"always:1:2": {
Name: "always", Name: "always",
MaximumRetryCount: 0, MaximumRetryCount: 0,
}, },
@ -469,11 +470,6 @@ func TestParseRestartPolicy(t *testing.T) {
Name: "on-failure", Name: "on-failure",
MaximumRetryCount: 1, MaximumRetryCount: 1,
}, },
// FIXME This doesn't feel right
"on-failure:1:2": {
Name: "on-failure",
MaximumRetryCount: 0,
},
} }
for restart, expectedError := range invalids { for restart, expectedError := range invalids {
if _, _, _, err := parseRun([]string{fmt.Sprintf("--restart=%s", restart), "img", "cmd"}); err == nil || err.Error() != expectedError { if _, _, _, err := parseRun([]string{fmt.Sprintf("--restart=%s", restart), "img", "cmd"}); err == nil || err.Error() != expectedError {