traefik/vendor/github.com/exoscale/egoscale/request_type.go
2019-03-14 11:04:04 +01:00

185 lines
6.3 KiB
Go

package egoscale
import (
"net/url"
)
// Command represents a generic request
type Command interface {
Response() interface{}
}
// AsyncCommand represents a async request
type AsyncCommand interface {
Command
AsyncResponse() interface{}
}
// ListCommand represents a listing request
type ListCommand interface {
Listable
Command
// SetPage defines the current pages
SetPage(int)
// SetPageSize defines the size of the page
SetPageSize(int)
// Each reads the data from the response and feeds channels, and returns true if we are on the last page
Each(interface{}, IterateItemFunc)
}
// onBeforeHook represents an action to be done on the params before sending them
//
// This little took helps with issue of relying on JSON serialization logic only.
// `omitempty` may make sense in some cases but not all the time.
type onBeforeHook interface {
onBeforeSend(params url.Values) error
}
// CommandInfo represents the meta data related to a Command
type CommandInfo struct {
Name string
Description string
RootOnly bool
}
// JobStatusType represents the status of a Job
type JobStatusType int
//go:generate stringer -type JobStatusType
const (
// Pending represents a job in progress
Pending JobStatusType = iota
// Success represents a successfully completed job
Success
// Failure represents a job that has failed to complete
Failure
)
// ErrorCode represents the CloudStack ApiErrorCode enum
//
// See: https://github.com/apache/cloudstack/blob/master/api/src/main/java/org/apache/cloudstack/api/ApiErrorCode.java
type ErrorCode int
//go:generate stringer -type ErrorCode
const (
// Unauthorized represents ... (TODO)
Unauthorized ErrorCode = 401
// MethodNotAllowed represents ... (TODO)
MethodNotAllowed ErrorCode = 405
// UnsupportedActionError represents ... (TODO)
UnsupportedActionError ErrorCode = 422
// APILimitExceeded represents ... (TODO)
APILimitExceeded ErrorCode = 429
// MalformedParameterError represents ... (TODO)
MalformedParameterError ErrorCode = 430
// ParamError represents ... (TODO)
ParamError ErrorCode = 431
// InternalError represents a server error
InternalError ErrorCode = 530
// AccountError represents ... (TODO)
AccountError ErrorCode = 531
// AccountResourceLimitError represents ... (TODO)
AccountResourceLimitError ErrorCode = 532
// InsufficientCapacityError represents ... (TODO)
InsufficientCapacityError ErrorCode = 533
// ResourceUnavailableError represents ... (TODO)
ResourceUnavailableError ErrorCode = 534
// ResourceAllocationError represents ... (TODO)
ResourceAllocationError ErrorCode = 535
// ResourceInUseError represents ... (TODO)
ResourceInUseError ErrorCode = 536
// NetworkRuleConflictError represents ... (TODO)
NetworkRuleConflictError ErrorCode = 537
)
// CSErrorCode represents the CloudStack CSExceptionErrorCode enum
//
// See: https://github.com/apache/cloudstack/blob/master/utils/src/main/java/com/cloud/utils/exception/CSExceptionErrorCode.java
type CSErrorCode int
//go:generate stringer -type CSErrorCode
const (
// CloudRuntimeException ... (TODO)
CloudRuntimeException CSErrorCode = 4250
// ExecutionException ... (TODO)
ExecutionException CSErrorCode = 4260
// HypervisorVersionChangedException ... (TODO)
HypervisorVersionChangedException CSErrorCode = 4265
// CloudException ... (TODO)
CloudException CSErrorCode = 4275
// AccountLimitException ... (TODO)
AccountLimitException CSErrorCode = 4280
// AgentUnavailableException ... (TODO)
AgentUnavailableException CSErrorCode = 4285
// CloudAuthenticationException ... (TODO)
CloudAuthenticationException CSErrorCode = 4290
// ConcurrentOperationException ... (TODO)
ConcurrentOperationException CSErrorCode = 4300
// ConflictingNetworksException ... (TODO)
ConflictingNetworkSettingsException CSErrorCode = 4305
// DiscoveredWithErrorException ... (TODO)
DiscoveredWithErrorException CSErrorCode = 4310
// HAStateException ... (TODO)
HAStateException CSErrorCode = 4315
// InsufficientAddressCapacityException ... (TODO)
InsufficientAddressCapacityException CSErrorCode = 4320
// InsufficientCapacityException ... (TODO)
InsufficientCapacityException CSErrorCode = 4325
// InsufficientNetworkCapacityException ... (TODO)
InsufficientNetworkCapacityException CSErrorCode = 4330
// InsufficientServerCapaticyException ... (TODO)
InsufficientServerCapacityException CSErrorCode = 4335
// InsufficientStorageCapacityException ... (TODO)
InsufficientStorageCapacityException CSErrorCode = 4340
// InternalErrorException ... (TODO)
InternalErrorException CSErrorCode = 4345
// InvalidParameterValueException ... (TODO)
InvalidParameterValueException CSErrorCode = 4350
// ManagementServerException ... (TODO)
ManagementServerException CSErrorCode = 4355
// NetworkRuleConflictException ... (TODO)
NetworkRuleConflictException CSErrorCode = 4360
// PermissionDeniedException ... (TODO)
PermissionDeniedException CSErrorCode = 4365
// ResourceAllocationException ... (TODO)
ResourceAllocationException CSErrorCode = 4370
// ResourceInUseException ... (TODO)
ResourceInUseException CSErrorCode = 4375
// ResourceUnavailableException ... (TODO)
ResourceUnavailableException CSErrorCode = 4380
// StorageUnavailableException ... (TODO)
StorageUnavailableException CSErrorCode = 4385
// UnsupportedServiceException ... (TODO)
UnsupportedServiceException CSErrorCode = 4390
// VirtualMachineMigrationException ... (TODO)
VirtualMachineMigrationException CSErrorCode = 4395
// AsyncCommandQueued ... (TODO)
AsyncCommandQueued CSErrorCode = 4540
// RequestLimitException ... (TODO)
RequestLimitException CSErrorCode = 4545
// ServerAPIException ... (TODO)
ServerAPIException CSErrorCode = 9999
)
// ErrorResponse represents the standard error response
type ErrorResponse struct {
CSErrorCode CSErrorCode `json:"cserrorcode"`
ErrorCode ErrorCode `json:"errorcode"`
ErrorText string `json:"errortext"`
UUIDList []UUIDItem `json:"uuidList,omitempty"` // uuid*L*ist is not a typo
}
// UUIDItem represents an item of the UUIDList part of an ErrorResponse
type UUIDItem struct {
Description string `json:"description,omitempty"`
SerialVersionUID int64 `json:"serialVersionUID,omitempty"`
UUID string `json:"uuid"`
}
// BooleanResponse represents a boolean response (usually after a deletion)
type BooleanResponse struct {
DisplayText string `json:"displaytext,omitempty"`
Success bool `json:"success"`
}