model

package
v2.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PowerCapTaskTypeSnapshot = "snapshot"
	PowerCapTaskTypePatch    = "patch"
)
View Source
const (
	PowerCapTaskStatusNew        = "new"
	PowerCapTaskStatusInProgress = "in-progress"
	PowerCapTaskStatusCompleted  = "completed"
)
View Source
const (
	PowerCapOpStatusNew         = "new"
	PowerCapOpStatusInProgress  = "in-progress"
	PowerCapOpStatusFailed      = "failed"
	PowerCapOpStatusSucceeded   = "Succeeded"
	PowerCapOpStatusUnsupported = "Unsupported"
)
View Source
const (
	TransitionStatusNew           = "new"
	TransitionStatusInProgress    = "in-progress"
	TransitionStatusCompleted     = "completed"
	TransitionStatusAborted       = "aborted"
	TransitionStatusAbortSignaled = "abort-signaled"
)
View Source
const (
	TransitionTaskStatusNew         = "new"
	TransitionTaskStatusInProgress  = "in-progress"
	TransitionTaskStatusFailed      = "failed"
	TransitionTaskStatusSucceeded   = "succeeded"
	TransitionTaskStatusUnsupported = "unsupported"
)
View Source
const DefaultTaskDeadline = 5
View Source
const TransitionKeepAliveInterval = 10

Variables

This section is empty.

Functions

func Find

func Find(slice []string, val string) (int, bool)

func NewInvalidInputError

func NewInvalidInputError(Message string, CompIDs []string) (err error)

func StringSliceEquals

func StringSliceEquals(obj []string, other []string) bool

func UUIDSliceEquals

func UUIDSliceEquals(obj []uuid.UUID, other []uuid.UUID) bool

Types

type IDList

type IDList struct {
	IDs []uuid.UUID `json:"ids"`
}

type IDResp

type IDResp struct {
	ID uuid.UUID `json:"id"`
}

type LocationParameter

type LocationParameter struct {
	Xname     string `json:"xname"`
	DeputyKey string `json:"deputyKey,omitempty"`
}

type ManagementStateFilter

type ManagementStateFilter int
const (
	ManagementStateFilter_Nil         ManagementStateFilter = iota - 1
	ManagementStateFilter_available                         // available = 0
	ManagementStateFilter_unavailable                       //  1
	ManagementStateFilter_undefined                         //  2
)

func ToManagementStateFilter

func ToManagementStateFilter(msf string) (MSF ManagementStateFilter, err error)

func (ManagementStateFilter) String

func (msf ManagementStateFilter) String() string

type Operation

type Operation int

This pattern is from : https://yourbasic.org/golang/iota/ I think the only think we ever have to really worry about is ever changing the order of this (add/remove/re-order)

const (
	Operation_Nil         Operation = iota - 1
	Operation_On                    // On = 0
	Operation_Off                   // 1 GracfulShutdown/Off->ForceOff
	Operation_SoftRestart           // 2 GracefulRestart->ForceRestart Or GracfulShutdown/Off->ForceOff->On
	Operation_HardRestart           // 3 GracfulShutdown/Off->ForceOff->On
	Operation_Init                  // 4 GracfulShutdown/Off->ForceOff->On does not require the initial power state to be "on"
	Operation_ForceOff              // 5 ForceOff
	Operation_SoftOff               // 6 GracfulShutdown/Off
)

func ToOperationFilter

func ToOperationFilter(op string) (OP Operation, err error)

ToOperationFilter - Will return a valid Operation from string

func (Operation) EnumIndex

func (op Operation) EnumIndex() int

func (Operation) String

func (op Operation) String() string

type Passback

type Passback struct {
	StatusCode int
	Obj        interface{}
	Error      Problem7807
	IsError    bool
}

func BuildErrorPassback

func BuildErrorPassback(StatusCode int, Err error) (passback Passback)

func BuildSuccessPassback

func BuildSuccessPassback(StatusCode int, Obj interface{}) (passback Passback)

type PowerCapComponent

type PowerCapComponent struct {
	Xname          string             `json:"xname"`
	Error          string             `json:"error,omitempty"`
	Limits         *PowerCapabilities `json:"limits,omitempty"`
	PowerCapLimits []PowerCapControls `json:"powerCapLimits,omitempty"`
}

type PowerCapComponentParameter

type PowerCapComponentParameter struct {
	Xname    string                     `json:"xname"`
	Controls []PowerCapControlParameter `json:"controls"`
}

type PowerCapControlParameter

type PowerCapControlParameter struct {
	Name  string `json:"name"`
	Value int    `json:"value"` //TODO is this the right data type? can it be double?
}

type PowerCapControls

type PowerCapControls struct {
	Name         string `json:"name"`
	CurrentValue *int   `json:"currentValue,omitempty"`
	MaximumValue *int   `json:"maximumValue,omitempty"`
	MinimumValue *int   `json:"minimumValue,omitempty"`
}

type PowerCapOperation

type PowerCapOperation struct {
	OperationID uuid.UUID         `json:"operationID"`
	TaskID      uuid.UUID         `json:"taskID"`
	Type        string            `json:"type"`
	Status      string            `json:"status"`
	Component   PowerCapComponent `json:"Component"`

	// From HSM /Inventory/ComponentEndpoints
	RfFQDN                string                  `json:"RfFQDN"`
	PowerCapURI           string                  `json:"powerCapURI"`
	PowerCapTargetURI     string                  `json:"powerCapTargetURI"`
	PowerCapControlsCount int                     `json:"powerCapControlsCount"`
	PowerCapCtlInfoCount  int                     `json:"powerCapCtlInfoCount"`
	PowerCaps             map[string]hsm.PowerCap `json:"powerCap"`
}

func NewPowerCapOperation

func NewPowerCapOperation(taskID uuid.UUID, operationType string) PowerCapOperation

type PowerCapPatchParameter

type PowerCapPatchParameter struct {
	Components []PowerCapComponentParameter `json:"components"`
}

type PowerCapSnapshotParameter

type PowerCapSnapshotParameter struct {
	Xnames []string `json:"xnames"`
}

type PowerCapTask

type PowerCapTask struct {
	TaskID                  uuid.UUID                  `json:"taskID"`
	Type                    string                     `json:"type"`
	SnapshotParameters      *PowerCapSnapshotParameter `json:"snapshotParameters,omitempty"`
	PatchParameters         *PowerCapPatchParameter    `json:"patchParameters,omitempty"`
	TaskCreateTime          time.Time                  `json:"taskCreateTime"`
	AutomaticExpirationTime time.Time                  `json:"automaticExpirationTime"`
	TaskStatus              string                     `json:"taskStatus"`
	OperationIDs            []uuid.UUID

	// Only populated when the task is completed
	IsCompressed bool                `json:"isCompressed"`
	TaskCounts   PowerCapTaskCounts  `json:"taskCounts"`
	Components   []PowerCapComponent `json:"components,omitempty"`
}

func NewPowerCapPatchTask

func NewPowerCapPatchTask(parameters PowerCapPatchParameter, expirationTimeMins int) PowerCapTask

func NewPowerCapSnapshotTask

func NewPowerCapSnapshotTask(parameters PowerCapSnapshotParameter, expirationTimeMins int) PowerCapTask

type PowerCapTaskCounts

type PowerCapTaskCounts struct {
	Total       int `json:"total"`
	New         int `json:"new"`
	InProgress  int `json:"in-progress"`
	Failed      int `json:"failed"`
	Succeeded   int `json:"succeeded"`
	Unsupported int `json:"un-supported"`
}

type PowerCapTaskCreation

type PowerCapTaskCreation struct {
	TaskID uuid.UUID `json:"taskID"`
}

type PowerCapTaskResp

type PowerCapTaskResp struct {
	TaskID                  uuid.UUID           `json:"taskID"`
	Type                    string              `json:"type"`
	TaskCreateTime          time.Time           `json:"taskCreateTime"`
	AutomaticExpirationTime time.Time           `json:"automaticExpirationTime"`
	TaskStatus              string              `json:"taskStatus"`
	TaskCounts              PowerCapTaskCounts  `json:"taskCounts"`
	Components              []PowerCapComponent `json:"components,omitempty"`
}

func (*PowerCapTaskResp) Equals

func (a *PowerCapTaskResp) Equals(b PowerCapTaskResp) bool

type PowerCapTaskRespArray

type PowerCapTaskRespArray struct {
	Tasks []PowerCapTaskResp `json:"tasks"`
}

type PowerCapabilities

type PowerCapabilities struct {
	HostLimitMax *int `json:"hostLimitMax,omitempty"`
	HostLimitMin *int `json:"hostLimitMin,omitempty"`
	PowerupPower *int `json:"powerupPower,omitempty"`
}

type PowerStateFilter

type PowerStateFilter int

This pattern is from : https://yourbasic.org/golang/iota/ I think the only think we ever have to really worry about is ever changing the order of this (add/remove/re-order)

const (
	PowerStateFilter_Nil       PowerStateFilter = iota - 1
	PowerStateFilter_On                         // on = 0
	PowerStateFilter_Off                        //  1
	PowerStateFilter_Undefined                  // 2
)

func ToPowerStateFilter

func ToPowerStateFilter(psf string) (PSF PowerStateFilter, err error)

TODO need to sanitize input! READING -> http://brandonokert.com/articles/json-management-patterns-in-go/ ToPowerStateFilter - Will return a valid PowerStateFilter from string

func (PowerStateFilter) EnumIndex

func (psf PowerStateFilter) EnumIndex() int

func (PowerStateFilter) String

func (psf PowerStateFilter) String() string

type PowerStatus

type PowerStatus struct {
	Status []PowerStatusComponent `json:"status"`
}

type PowerStatusComponent

type PowerStatusComponent struct {
	XName                     string   `json:"xname"`
	PowerState                string   `json:"powerState"`
	ManagementState           string   `json:"managementState"`
	Error                     string   `json:"error"`
	SupportedPowerTransitions []string `json:"supportedPowerTransitions"`
	LastUpdated               string   `json:"lastUpdated"` //RFC3339Nano
}

type PowerStatusParameter

type PowerStatusParameter struct {
	Xnames                []string `json:"xname"`
	PowerStateFilter      string   `json:"powerStateFilter"`
	ManagementStateFilter string   `json:"managementStateFilter"`
}

type Problem7807

type Problem7807 struct {
	Type_    string `json:"type"`
	Detail   string `json:"detail,omitempty"`
	Instance string `json:"instance,omitempty"`
	Status   int    `json:"status,omitempty"`
	Title    string `json:"title,omitempty"`
}

RFC 7807 compliant error payload. All fields are optional except the 'type' field.

func GetFormattedErrorMessage

func GetFormattedErrorMessage(err error, code int) Problem7807

func (Problem7807) Equals

func (obj Problem7807) Equals(other Problem7807) (equal bool)

type TaskState

type TaskState int
const (
	TaskState_Nil        TaskState = iota - 1
	TaskState_GatherData           // GatherData = 0
	TaskState_Sending              // 1 Command MAY have been sent. Can't confirm it was received.
	TaskState_Waiting              // 2 Command received. Waiting to confirm power state
	TaskState_Confirmed            // 3 Power state confirmed
)

func (TaskState) EnumIndex

func (ts TaskState) EnumIndex() int

func (TaskState) String

func (ts TaskState) String() string

type Transition

type Transition struct {
	TransitionID            uuid.UUID           `json:"transitionID"`
	Operation               Operation           `json:"operation"`
	TaskDeadline            int                 `json:"taskDeadlineMinutes"`
	Location                []LocationParameter `json:"location"`
	CreateTime              time.Time           `json:"createTime"`
	LastActiveTime          time.Time           `json:"lastActiveTime"`
	AutomaticExpirationTime time.Time           `json:"automaticExpirationTime"`
	Status                  string              `json:"transitionStatus"`
	TaskIDs                 []uuid.UUID

	// Only populated when the task is completed
	IsCompressed bool                 `json:"isCompressed"`
	TaskCounts   TransitionTaskCounts `json:"taskCounts"`
	Tasks        []TransitionTaskResp `json:"tasks,omitempty"`
}

func CopyTransition

func CopyTransition(transition Transition) Transition

func ToTransition

func ToTransition(parameter TransitionParameter, expirationTimeMins int) (TR Transition, err error)

type TransitionAbortResp

type TransitionAbortResp struct {
	AbortStatus string `json:"abortStatus"`
}

type TransitionCreation

type TransitionCreation struct {
	TransitionID uuid.UUID `json:"transitionID"`
	Operation    string    `json:"operation"`
}

type TransitionPage

type TransitionPage struct {
	ID           string               `json:"ID"`
	TransitionID uuid.UUID            `json:"transitionID"`
	Index        int                  `json:"index"`
	Location     []LocationParameter  `json:"location"`
	Tasks        []TransitionTaskResp `json:"tasks,omitempty"`
	TaskIDs      []uuid.UUID
}

type TransitionParameter

type TransitionParameter struct {
	Operation    string              `json:"operation"`
	TaskDeadline *int                `json:"taskDeadlineMinutes"`
	Location     []LocationParameter `json:"location"`
}

type TransitionResp

type TransitionResp struct {
	TransitionID            uuid.UUID            `json:"transitionID"`
	Operation               string               `json:"operation"`
	CreateTime              time.Time            `json:"createTime"`
	AutomaticExpirationTime time.Time            `json:"automaticExpirationTime"`
	TransitionStatus        string               `json:"transitionStatus"`
	TaskCounts              TransitionTaskCounts `json:"taskCounts"`
	Tasks                   []TransitionTaskResp `json:"tasks,omitempty"`
}

func ToTransitionResp

func ToTransitionResp(transition Transition, tasks []TransitionTask, full bool) TransitionResp

Assembles a TransitionResp struct from a transition and an array of its tasks. If 'full' == true, full task information is included (xname, taskStatus, errors, etc).

type TransitionRespArray

type TransitionRespArray struct {
	Transitions []TransitionResp `json:"transitions"`
}

type TransitionTask

type TransitionTask struct {
	TaskID         uuid.UUID `json:"taskID"`
	TransitionID   uuid.UUID `json:"transitionID"`
	Operation      Operation `json:"operation"` // != Transition.Operation Tasks the redfish power command being issued (for recovery purposes)
	State          TaskState `json:"TaskState"`
	Xname          string    `json:"xname"`
	ReservationKey string    `json:"reservationKey,omitempty"`
	DeputyKey      string    `json:"deputyKey,omitempty"`
	Status         string    `json:"taskStatus"`
	StatusDesc     string    `json:"taskStatusDescription"`
	Error          string    `json:"error,omitempty"`
}

func NewTransitionTask

func NewTransitionTask(transitionID uuid.UUID, op Operation) TransitionTask

type TransitionTaskCounts

type TransitionTaskCounts struct {
	Total       int `json:"total"`
	New         int `json:"new"`
	InProgress  int `json:"in-progress"`
	Failed      int `json:"failed"`
	Succeeded   int `json:"succeeded"`
	Unsupported int `json:"un-supported"`
}

type TransitionTaskResp

type TransitionTaskResp struct {
	Xname          string `json:"xname"`
	TaskStatus     string `json:"taskStatus"`
	TaskStatusDesc string `json:"taskStatusDescription"`
	Error          string `json:"error,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL