Documentation ¶
Index ¶
- Variables
- type BatchFrameStat
- type BatchFrameSummary
- type BlockData
- type BlockState
- type CNCIDetail
- type CiaoBatchFrameStat
- type CiaoCNCI
- type CiaoCNCIDetail
- type CiaoCNCISubnet
- type CiaoCNCIs
- type CiaoClusterStatus
- type CiaoComputeNode
- type CiaoComputeNodes
- type CiaoComputeTenants
- type CiaoEvent
- type CiaoEvents
- type CiaoFrameStat
- type CiaoServerStats
- type CiaoServersAction
- type CiaoServersStats
- type CiaoTenantResources
- type CiaoTraceData
- type CiaoTraceSummary
- type CiaoTracesSummary
- type CiaoUsage
- type CiaoUsageHistory
- type FrameStat
- type Instance
- type LogEntry
- type Node
- type NodeStats
- type NodeSummary
- type Resource
- type SortedComputeNodesByID
- type SortedInstancesByID
- type SourceType
- type StorageAttachment
- type StorageResource
- type Tenant
- type TenantCNCI
- type Workload
Constants ¶
This section is empty.
Variables ¶
var ( // ErrQuota is returned when a resource limit is exceeded. ErrQuota = errors.New("Over Quota") // ErrTenantNotFound is returned when a tenant ID is unknown. ErrTenantNotFound = errors.New("Tenant not found") // ErrInstanceNotFound is returned when an instance is not found. ErrInstanceNotFound = errors.New("Instance not found") // ErrInstanceNotAssigned is returned when an instance is not assigned to a node. ErrInstanceNotAssigned = errors.New("Cannot perform operation: instance not assigned to Node") )
Functions ¶
This section is empty.
Types ¶
type BatchFrameStat ¶
type BatchFrameStat struct { NumInstances int `json:"num_instances"` TotalElapsed float64 `json:"total_elapsed"` AverageElapsed float64 `json:"average_elapsed"` AverageControllerElapsed float64 `json:"average_controller_elapsed"` AverageLauncherElapsed float64 `json:"average_launcher_elapsed"` AverageSchedulerElapsed float64 `json:"average_scheduler_elapsed"` VarianceController float64 `json:"controller_variance"` VarianceLauncher float64 `json:"launcher_variance"` VarianceScheduler float64 `json:"scheduler_variance"` }
BatchFrameStat contains tracing information for a group of start requests by label.
type BatchFrameSummary ¶
type BatchFrameSummary struct { BatchID string `json:"batch_id"` NumInstances int `json:"num_instances"` }
BatchFrameSummary provides summary information on tracing per label.
type BlockData ¶
type BlockData struct { storage.BlockDevice TenantID string // the tenant who owns this volume Size int // size in GB State BlockState // status of CreateTime time.Time // when we created the volume Name string // a human readable name for this volume Description string // some text to describe this volume. }
BlockData respresents the attributes of this block device. TBD - do we really need to store this as actual data, or can we use a set of interfaces to get the info?
type BlockState ¶
type BlockState string
BlockState represents the state of the block device in the controller datastore. This is a subset of the openstack status type.
const ( // Available means that the volume is ok for attaching. Available BlockState = BlockState(block.Available) // Attaching means that the volume is in the process // of attaching to an instance. Attaching BlockState = BlockState(block.Attaching) // InUse means that the volume has been successfully // attached to an instance. InUse BlockState = BlockState(block.InUse) // Detaching means that the volume is in process // of detaching. Detaching BlockState = "detaching" )
type CNCIDetail ¶
type CNCIDetail struct {
IPv4 string `json:"IPv4"`
}
CNCIDetail stores the IPv4 for a CNCI Agent.
type CiaoBatchFrameStat ¶
type CiaoBatchFrameStat struct { NumInstances int `json:"num_instances"` TotalElapsed float64 `json:"total_elapsed"` AverageElapsed float64 `json:"average_elapsed"` AverageControllerElapsed float64 `json:"average_controller_elapsed"` AverageLauncherElapsed float64 `json:"average_launcher_elapsed"` AverageSchedulerElapsed float64 `json:"average_scheduler_elapsed"` VarianceController float64 `json:"controller_variance"` VarianceLauncher float64 `json:"launcher_variance"` VarianceScheduler float64 `json:"scheduler_variance"` }
CiaoBatchFrameStat contains frame statisitics for a ciao cluster.
type CiaoCNCI ¶
type CiaoCNCI struct { ID string `json:"id"` TenantID string `json:"tenant_id"` IPv4 string `json:"IPv4"` Geography string `json:"geography"` Subnets []CiaoCNCISubnet `json:"subnets"` }
CiaoCNCI contains information about an individual CNCI.
type CiaoCNCIDetail ¶
type CiaoCNCIDetail struct {
CiaoCNCI `json:"cnci"`
}
CiaoCNCIDetail represents the unmarshalled version of the contents of a v2.1/cncis/{cnci}/detail response. It contains information about a CNCI.
type CiaoCNCISubnet ¶
type CiaoCNCISubnet struct {
Subnet string `json:"subnet_cidr"`
}
CiaoCNCISubnet contains subnet information for a CNCI.
type CiaoCNCIs ¶
type CiaoCNCIs struct {
CNCIs []CiaoCNCI `json:"cncis"`
}
CiaoCNCIs represents the unmarshalled version of the contents of a v2.1/cncis response. It contains information about all the CNCIs in the ciao cluster.
func NewCiaoCNCIs ¶
func NewCiaoCNCIs() (cncis CiaoCNCIs)
NewCiaoCNCIs allocates a CiaoCNCIs structure. It allocates the CNCIs slice as well so that the marshalled JSON is an empty array and not a nil pointer, as specified by the OpenStack APIs.
type CiaoClusterStatus ¶
type CiaoClusterStatus struct { Status struct { TotalNodes int `json:"total_nodes"` TotalNodesReady int `json:"total_nodes_ready"` TotalNodesFull int `json:"total_nodes_full"` TotalNodesOffline int `json:"total_nodes_offline"` TotalNodesMaintenance int `json:"total_nodes_maintenance"` } `json:"cluster"` }
CiaoClusterStatus represents the unmarshalled version of the contents of a v2.1/nodes/summary response. It contains information about the nodes that make up a ciao cluster.
type CiaoComputeNode ¶
type CiaoComputeNode struct { ID string `json:"id"` Timestamp time.Time `json:"updated"` Status string `json:"status"` MemTotal int `json:"ram_total"` MemAvailable int `json:"ram_available"` DiskTotal int `json:"disk_total"` DiskAvailable int `json:"disk_available"` Load int `json:"load"` OnlineCPUs int `json:"online_cpus"` TotalInstances int `json:"total_instances"` TotalRunningInstances int `json:"total_running_instances"` TotalPendingInstances int `json:"total_pending_instances"` TotalPausedInstances int `json:"total_paused_instances"` }
CiaoComputeNode contains status and statistic information for an individual node.
type CiaoComputeNodes ¶
type CiaoComputeNodes struct {
Nodes []CiaoComputeNode `json:"nodes"`
}
CiaoComputeNodes represents the unmarshalled version of the contents of a /v2.1/nodes response. It contains status and statistics information for a set of nodes.
func NewCiaoComputeNodes ¶
func NewCiaoComputeNodes() (nodes CiaoComputeNodes)
NewCiaoComputeNodes allocates a CiaoComputeNodes structure. It allocates the Nodes slice as well so that the marshalled JSON is an empty array and not a nil pointer, as specified by the OpenStack APIs.
type CiaoComputeTenants ¶
type CiaoComputeTenants struct { Tenants []struct { ID string `json:"id"` Name string `json:"name"` } `json:"tenants"` }
CiaoComputeTenants represents the unmarshalled version of the contents of a /v2.1/tenants response. It contains information about the tenants in a ciao cluster.
func NewCiaoComputeTenants ¶
func NewCiaoComputeTenants() (tenants CiaoComputeTenants)
NewCiaoComputeTenants allocates a CiaoComputeTenants structure. It allocates the Tenants slice as well so that the marshalled JSON is an empty array and not a nil pointer, as specified by the OpenStack APIs.
type CiaoEvent ¶
type CiaoEvent struct { Timestamp time.Time `json:"time_stamp"` TenantID string `json:"tenant_id"` EventType string `json:"type"` Message string `json:"message"` }
CiaoEvent contains information about an individual event generated in a ciao cluster.
type CiaoEvents ¶
type CiaoEvents struct {
Events []CiaoEvent `json:"events"`
}
CiaoEvents represents the unmarshalled version of the response to a v2.1/{tenant}/event or v2.1/event request.
func NewCiaoEvents ¶
func NewCiaoEvents() (events CiaoEvents)
NewCiaoEvents allocates a CiaoEvents structure. It allocates the Events slice as well so that the marshalled JSON is an empty array and not a nil pointer, as specified by the OpenStack APIs.
type CiaoFrameStat ¶
type CiaoFrameStat struct { ID string `json:"node_id"` TotalElapsedTime float64 `json:"total_elapsed_time"` ControllerTime float64 `json:"total_controller_time"` LauncherTime float64 `json:"total_launcher_time"` SchedulerTime float64 `json:"total_scheduler_time"` }
CiaoFrameStat contains the elapsed time statistics for a frame.
type CiaoServerStats ¶
type CiaoServerStats struct { ID string `json:"id"` NodeID string `json:"node_id"` Timestamp time.Time `json:"updated"` Status string `json:"status"` TenantID string `json:"tenant_id"` IPv4 string `json:"IPv4"` VCPUUsage int `json:"cpus_usage"` MemUsage int `json:"ram_usage"` DiskUsage int `json:"disk_usage"` }
CiaoServerStats contains status information about a CN or a NN.
type CiaoServersAction ¶
CiaoServersAction represents the unmarshalled version of the contents of a v2.1/servers/action request. It contains an action to be performed on one or more instances.
type CiaoServersStats ¶
type CiaoServersStats struct { TotalServers int `json:"total_servers"` Servers []CiaoServerStats `json:"servers"` }
CiaoServersStats represents the unmarshalled version of the contents of a v2.1/nodes/{node}/servers/detail response. It contains general information about a group of instances.
func NewCiaoServersStats ¶
func NewCiaoServersStats() (servers CiaoServersStats)
NewCiaoServersStats allocates a CiaoServersStats structure. It allocates the Servers slice as well so that the marshalled JSON is an empty array and not a nil pointer, as specified by the OpenStack APIs.
type CiaoTenantResources ¶
type CiaoTenantResources struct { ID string `json:"id"` Timestamp time.Time `json:"updated"` InstanceLimit int `json:"instances_limit"` InstanceUsage int `json:"instances_usage"` VCPULimit int `json:"cpus_limit"` VCPUUsage int `json:"cpus_usage"` MemLimit int `json:"ram_limit"` MemUsage int `json:"ram_usage"` DiskLimit int `json:"disk_limit"` DiskUsage int `json:"disk_usage"` }
CiaoTenantResources represents the unmarshalled version of the contents of a /v2.1/{tenant}/quotas response. It contains the current resource usage information for a tenant.
type CiaoTraceData ¶
type CiaoTraceData struct { Summary CiaoBatchFrameStat `json:"summary"` FramesStat []CiaoFrameStat `json:"frames"` }
CiaoTraceData represents the unmarshalled version of the response to a v2.1/traces/{label} request. It contains statistics computed from the trace information of SSNTP commands sent within a ciao cluster.
type CiaoTraceSummary ¶
CiaoTraceSummary contains information about a specific SSNTP Trace label.
type CiaoTracesSummary ¶
type CiaoTracesSummary struct {
Summaries []CiaoTraceSummary `json:"summaries"`
}
CiaoTracesSummary represents the unmarshalled version of the response to a v2.1/traces request. It contains a list of all trace labels and the number of instances associated with them.
type CiaoUsage ¶
type CiaoUsage struct { VCPU int `json:"cpus_usage"` Memory int `json:"ram_usage"` Disk int `json:"disk_usage"` Timestamp time.Time `json:"timestamp"` }
CiaoUsage contains a snapshot of resource consumption for a tenant.
type CiaoUsageHistory ¶
type CiaoUsageHistory struct {
Usages []CiaoUsage `json:"usage"`
}
CiaoUsageHistory represents the unmarshalled version of the contents of a /v2.1/{tenant}/resources response. It contains snapshots of usage information for a given tenant over a given period of time.
type FrameStat ¶
type FrameStat struct { ID string `json:"node_id"` TotalElapsedTime float64 `json:"total_elapsed_time"` ControllerTime float64 `json:"total_controller_time"` LauncherTime float64 `json:"total_launcher_time"` SchedulerTime float64 `json:"total_scheduler_time"` }
FrameStat contains tracing information per node.
type Instance ¶
type Instance struct { ID string `json:"instance_id"` TenantID string `json:"tenant_id"` State string `json:"instance_state"` WorkloadID string `json:"workload_id"` NodeID string `json:"node_id"` MACAddress string `json:"mac_address"` IPAddress string `json:"ip_address"` SSHIP string `json:"ssh_ip"` SSHPort int `json:"ssh_port"` CNCI bool `json:"-"` Usage map[string]int `json:"-"` Attachments []StorageAttachment `json:"-"` CreateTime time.Time `json:"-"` }
Instance contains information about an instance of a workload.
type LogEntry ¶
type LogEntry struct { Timestamp time.Time `json:"time_stamp"` TenantID string `json:"tenant_id"` EventType string `json:"type"` Message string `json:"message"` }
LogEntry stores information about events.
type Node ¶
type Node struct { ID string `json:"node_id"` IPAddr string `json:"ip_address"` Hostname string `json:"hostname"` }
Node contains information about a physical node in the cluster.
type NodeStats ¶
type NodeStats struct { NodeID string `json:"node_id"` Timestamp time.Time `json:"time_stamp"` Load int `json:"load"` MemTotalMB int `json:"mem_total_mb"` MemAvailableMB int `json:"mem_available_mb"` DiskTotalMB int `json:"disk_total_mb"` DiskAvailableMB int `json:"disk_available_mb"` CpusOnline int `json:"cpus_online"` }
NodeStats stores statistics for individual nodes in the cluster.
type NodeSummary ¶
type NodeSummary struct { NodeID string `json:"node_id"` TotalInstances int `json:"total_instances"` TotalRunningInstances int `json:"total_running_instances"` TotalPendingInstances int `json:"total_pending_instances"` TotalPausedInstances int `json:"total_paused_instances"` }
NodeSummary contains summary information for all nodes in the cluster.
type SortedComputeNodesByID ¶
type SortedComputeNodesByID []CiaoComputeNode
SortedComputeNodesByID implements sort.Interface for Node by ID string
func (SortedComputeNodesByID) Len ¶
func (s SortedComputeNodesByID) Len() int
func (SortedComputeNodesByID) Less ¶
func (s SortedComputeNodesByID) Less(i, j int) bool
func (SortedComputeNodesByID) Swap ¶
func (s SortedComputeNodesByID) Swap(i, j int)
type SortedInstancesByID ¶
type SortedInstancesByID []*Instance
SortedInstancesByID implements sort.Interface for Instance by ID string
func (SortedInstancesByID) Len ¶
func (s SortedInstancesByID) Len() int
func (SortedInstancesByID) Less ¶
func (s SortedInstancesByID) Less(i, j int) bool
func (SortedInstancesByID) Swap ¶
func (s SortedInstancesByID) Swap(i, j int)
type SourceType ¶
type SourceType string
SourceType contains the valid values of the storage source.
const ( // ImageService indicates the source comes from the image service. ImageService SourceType = "image" // VolumeService indicates the source comes from the volume service. VolumeService SourceType = "volume" // Empty indicates that there is no source for the storage source Empty SourceType = "empty" )
type StorageAttachment ¶
type StorageAttachment struct { ID string // a uuid InstanceID string // the instance this volume is attached to BlockID string // the ID of the block device Ephemeral bool // whether the storage should be deleted on Cleanup }
StorageAttachment represents a link between a block device and an instance.
type StorageResource ¶
type StorageResource struct { // ID indicates a volumeID. If ID is blank, then it needs to be created. ID string // Bootable indicates whether should the resource be used for booting Bootable bool // Persistent indicates whether the storage is temporary // TBD: do we bother to save info about temp storage? // does it count against quota? Persistent bool // Size is the size of the storage to be created if new. Size int // ImageType indicates whether we are making a new resource // based on an image or existing volume. // Needed only for new storage. SourceType SourceType // SourceID represents the ID of either the image or the volume // that the storage resource is based on. SourceID string }
StorageResource defines a storage resource for a workload. TBD: should the workload support multiple of these?
type Tenant ¶
type Tenant struct { ID string Name string CNCIID string CNCIMAC string CNCIIP string Resources []*Resource }
Tenant contains information about a tenant or project.
type TenantCNCI ¶
type TenantCNCI struct { TenantID string `json:"tenant_id"` IPAddress string `json:"ip_address"` MACAddress string `json:"mac_address"` InstanceID string `json:"instance_id"` Subnets []string `json:"subnets"` }
TenantCNCI contains information about the CNCI instance for a tenant.
type Workload ¶
type Workload struct { ID string `json:"id"` Description string `json:"description"` FWType string `json:"-"` VMType payloads.Hypervisor `json:"-"` ImageID string `json:"-"` ImageName string `json:"-"` Config string `json:"-"` Defaults []payloads.RequestedResource `json:"-"` Storage *StorageResource `json:"-"` }
Workload contains resource and configuration information for a user workload.