You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
watchtower/pkg/session/container_status.go

61 lines
1.1 KiB
Go

package session
import (
wt "github.com/containrrr/watchtower/pkg/types"
"strings"
)
// State indicates what the current state is of the container
type State int
// State enum values
const (
// UnknownState is only used to represent an uninitialized State value
UnknownState State = iota
SkippedState
ScannedState
UpdatedState
FailedState
FreshState
StaleState
)
// ContainerStatus contains the container state during a session
type ContainerStatus struct {
ID wt.ContainerID
Name string
OldImageID wt.ImageID
NewImageID wt.ImageID
ImageName string
Error error
State State
}
func (state State) String() string {
switch state {
case SkippedState:
return "Skipped"
case ScannedState:
return "Scanned"
case UpdatedState:
return "Updated"
case FailedState:
return "Failed"
case FreshState:
return "Fresh"
case StaleState:
return "Stale"
default:
return "Unknown"
}
}
// MarshalJSON marshals State as a string
func (state State) MarshalJSON() ([]byte, error) {
sb := strings.Builder{}
sb.WriteString(`"`)
sb.WriteString(state.String())
sb.WriteString(`"`)
return []byte(sb.String()), nil
}