plugin/commander/container/taskerrors/errorcode.go (124 lines of code) (raw):
package taskerrors
import (
"fmt"
)
type TaskError struct {
ErrorCode string
ErrorSubCode string
ErrorMessage string
}
const (
errCodeCommanderTask = "CommanderTaskError"
)
const (
errSubCodeInvalidContainerId = "InvalidContainerId"
errSubCodeInvalidContainerName = "InvalidContainerName"
errSubCodeUnsupportedContainerRuntime = "UnsupportedContainerRuntime"
errSubCodeContainerNameAndIdNotMatch = "ContainerNameAndIdNotMatch"
errSubCodeContainerNameDuplicated = "ContainerNameDuplicated"
errSubCodeContainerNotFound = "ContainerNotFound"
errSubCodeContainerStateAbnormal = "ContainerStateAbnormal"
errSubCodeContainerConnectFailed = "ContainerConnectFailed"
errSubCodeSubmissionInvalid = "SubmissionInvalid"
errSubCodeContainerRuntimeInternalError = "ContainerRuntimeInternalError"
errSubCodeContainerRuntimeTimeout = "ContainerRuntimeTimeout"
errSubCodeCreatePipeError = "CreatePipeError"
errSubCodeGeneralError = "GeneralError"
)
func (e *TaskError) Error() string {
return fmt.Sprintf("%s.%s: %s", e.ErrorCode, e.ErrorSubCode, e.ErrorMessage)
}
func (e *TaskError) String() string {
return fmt.Sprintf("%s.%s: %s", e.ErrorCode, e.ErrorSubCode, e.ErrorMessage)
}
func NewInvalidContainerIdError() *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeInvalidContainerId,
ErrorMessage: "The specified containerId is not valid.",
}
}
func NewInvalidContainerNameError() *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeInvalidContainerName,
ErrorMessage: "The specified containerName is not valid.",
}
}
func NewUnsupportedContainerRuntimeError() *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeUnsupportedContainerRuntime,
ErrorMessage: "The container runtime specified in the containerId is not supported.",
}
}
func NewContainerNameAndIdNotMatchError(containerId string, expectedName string) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeContainerNameAndIdNotMatch,
ErrorMessage: fmt.Sprintf("The container whose container ID is %s, the name is not %s.", containerId, expectedName),
}
}
func NewContainerNameDuplicatedError() *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeContainerNameDuplicated,
ErrorMessage: "The container for the command to be executed cannot be identified because the instance has a container with the same name.",
}
}
func NewContainerNotFoundError() *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeContainerNotFound,
ErrorMessage: "The specified container does not exist.",
}
}
func NewContainerStateAbnormalError(currentState string) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeContainerStateAbnormal,
ErrorMessage: fmt.Sprintf("The state of the specified container is abnormal. Current state is %s", currentState),
}
}
func NewContainerConnectError(cause error) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeContainerConnectFailed,
ErrorMessage: fmt.Sprintf("Unable to connect to container to invoke command. %v", cause),
}
}
func NewSubmissionInvalidError(message string) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeSubmissionInvalid,
ErrorMessage: message,
}
}
func NewContainerRuntimeInternalError(cause error) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeContainerRuntimeInternalError,
ErrorMessage: cause.Error(),
}
}
func NewContainerRuntimeTimeoutError(cause error) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeContainerRuntimeTimeout,
ErrorMessage: cause.Error(),
}
}
func NewCreatePipeError(cause error) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeCreatePipeError,
ErrorMessage: cause.Error(),
}
}
func NewGeneralExecutionError(cause error) *TaskError {
return &TaskError{
ErrorCode: errCodeCommanderTask,
ErrorSubCode: errSubCodeGeneralError,
ErrorMessage: cause.Error(),
}
}