Documentation ¶
Index ¶
- Variables
- type APILink
- type BatchFrameStat
- type BatchFrameSummary
- type BlockState
- type CNCIController
- type CNCIDetail
- type CiaoBatchFrameStat
- type CiaoCNCI
- type CiaoCNCIDetail
- type CiaoCNCISubnet
- type CiaoCNCIs
- type CiaoEvent
- type CiaoEvents
- type CiaoFrameStat
- type CiaoNode
- type CiaoNodeStatus
- type CiaoNodes
- type CiaoServerStats
- type CiaoServersAction
- type CiaoServersStats
- type CiaoTenantResources
- type CiaoTraceData
- type CiaoTraceSummary
- type CiaoTracesSummary
- type CiaoUsage
- type CiaoUsageHistory
- type ExternalIP
- type ExternalSubnet
- type FrameStat
- type Image
- type ImageState
- type Instance
- type Link
- type ListPoolsResponse
- type LogEntry
- type MapIPRequest
- type MappedIP
- type MappedIPShort
- type NewAddressRequest
- type NewIPAddressRequest
- type NewPoolRequest
- type Node
- type NodeStats
- type NodeStatusType
- type NodeSummary
- type Pool
- type PoolSummary
- type QuotaDetails
- type QuotaListResponse
- type QuotaUpdateRequest
- type SortedInstancesByID
- type SortedNodesByID
- type SourceType
- type StorageAttachment
- type StorageResource
- type Tenant
- type TenantCNCI
- type TenantConfig
- type TenantRequest
- type TenantSummary
- type TenantsListResponse
- type Visibility
- type Volume
- type Workload
- type WorkloadRequest
- type WorkloadResponse
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") // ErrDuplicateSubnet is returned when a subnet already exists ErrDuplicateSubnet = errors.New("Cannot add overlapping subnet") // ErrDuplicateIP is returned when a duplicate external IP is added ErrDuplicateIP = errors.New("Cannot add duplicated external IP") // ErrInvalidIP is returned when an IP cannot be parsed ErrInvalidIP = errors.New("The IP Address is not valid") // ErrSubnetTooSmall is returned when an invalid subnet is used ErrSubnetTooSmall = errors.New("Requested subnet is too small to be usable") // ErrPoolNotFound is returned when an external IP pool is not found ErrPoolNotFound = errors.New("Pool not found") // ErrPoolNotEmpty is returned when a pool is still in use ErrPoolNotEmpty = errors.New("Pool has mapped IPs") // ErrAddressNotFound is returned when an address isn't found. ErrAddressNotFound = errors.New("Address Not Found") // ErrInvalidPoolAddress is returned when an address isn't part of a pool ErrInvalidPoolAddress = errors.New("The Address is not found in this pool") // ErrBadRequest is returned when we have a malformed request ErrBadRequest = errors.New("Invalid Request") // ErrPoolEmpty is returned when a pool has no free IPs ErrPoolEmpty = errors.New("Pool has no Free IPs") // ErrDuplicatePoolName is returned when a duplicate pool name is used ErrDuplicatePoolName = errors.New("Pool by that name already exists") // ErrInstanceMapped is returned when an instance cannot be deleted // due to having an external IP assigned to it. ErrInstanceMapped = errors.New("Unmap the external IP prior to deletion") // ErrWorkloadNotFound is returned when a workload ID cannot be found ErrWorkloadNotFound = errors.New("Workload not found") // ErrWorkloadInUse is returned by DeleteWorkload when an instance of a workload is still active. ErrWorkloadInUse = errors.New("Workload definition still in use") // ErrBadName is returned when a name doesn't match the requirements ErrBadName = errors.New("Requested name doesn't match requirements") )
Functions ¶
This section is empty.
Types ¶
type APILink ¶
type APILink struct { Rel string `json:"rel"` Href string `json:"href"` Version string `json:"version"` MinVersion string `json:"minimum_version"` }
APILink provides information and links about a supported resource.
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 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 = "available" // Attaching means that the volume is in the process // of attaching to an instance. Attaching BlockState = "attaching" // InUse means that the volume has been successfully // attached to an instance. InUse BlockState = "in-use" // Detaching means that the volume is in process // of detaching. Detaching BlockState = "detaching" )
type CNCIController ¶
type CNCIController interface { CNCIAdded(ID string) error CNCIRemoved(ID string) error CNCIStopped(id string) error StartFailure(ID string) error Active(ID string) bool ScheduleRemoveSubnet(subnet string) error RemoveSubnet(subnet string) error WaitForActive(subnet string) error GetInstanceCNCI(InstanceID string) (*Instance, error) GetSubnetCNCI(subnet string) (*Instance, error) Shutdown() }
CNCIController is the interface for the cnci controller associated with each tenant
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 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 CiaoNode ¶
type CiaoNode struct { ID string `json:"id"` Hostname string `json:"hostname"` 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"` TotalFailures int `json:"total_failures"` StartFailures int `json:"start_failures"` AttachVolumeFailures int `json:"attach_failures"` DeleteFailures int `json:"delete_failures"` }
CiaoNode contains status and statistic information for an individual node.
type CiaoNodeStatus ¶
type CiaoNodeStatus struct {
Status NodeStatusType `json:"status"`
}
CiaoNodeStatus contains status information for an individual node.
type CiaoNodes ¶
type CiaoNodes struct {
Nodes []CiaoNode `json:"nodes"`
}
CiaoNodes 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 NewCiaoNodes ¶
func NewCiaoNodes() (nodes CiaoNodes)
NewCiaoNodes allocates a CiaoNodes 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 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 ExternalIP ¶
type ExternalIP struct { ID string `json:"id"` Address string `json:"address"` Links []Link `json:"links"` }
ExternalIP represents an External IP individual address.
type ExternalSubnet ¶
type ExternalSubnet struct { ID string `json:"id"` CIDR string `json:"subnet"` Links []Link `json:"links"` }
ExternalSubnet represents a subnet for External IPs.
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 Image ¶
type Image struct { ID string `json:"id"` State ImageState `json:"state"` TenantID string `json:"tenant_id"` Name string `json:"name"` CreateTime time.Time `json:"create_time"` Size uint64 `json:"size"` Visibility Visibility `json:"visibility"` }
Image contains the information that ciao will store about the image
type ImageState ¶
type ImageState string
ImageState represents the state of the image.
const ( // Created means that an empty image has been created Created ImageState = "created" // Saving means the image is being saved Saving ImageState = "saving" // Active means that the image is created, uploaded and ready to use. Active ImageState = "active" // Killed means that an image data upload error occurred. Killed ImageState = "killed" )
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"` VnicUUID string `json:"vnic_uuid"` Subnet string `json:"subnet"` IPAddress string `json:"ip_address"` SSHIP string `json:"ssh_ip"` SSHPort int `json:"ssh_port"` CNCI bool `json:"-"` CreateTime time.Time `json:"-"` Name string `json:"name"` StateLock sync.RWMutex `json:"-"` StateChange *sync.Cond `json:"-"` }
Instance contains information about an instance of a workload.
func (*Instance) TransitionInstanceState ¶
TransitionInstanceState safely sets thes state on an instance
type ListPoolsResponse ¶
type ListPoolsResponse struct {
Pools []PoolSummary `json:"pools"`
}
ListPoolsResponse respresents a summary list of all pools.
type LogEntry ¶
type LogEntry struct { Timestamp time.Time `json:"time_stamp"` TenantID string `json:"tenant_id"` NodeID string `json:"node_id"` EventType string `json:"type"` Message string `json:"message"` }
LogEntry stores information about events.
type MapIPRequest ¶
type MapIPRequest struct { PoolName *string `json:"pool_name"` InstanceID string `json:"instance_id"` }
MapIPRequest is used to request that an external IP be assigned from a pool to a particular instance.
type MappedIP ¶
type MappedIP struct { ID string `json:"mapping_id"` ExternalIP string `json:"external_ip"` InternalIP string `json:"internal_ip"` InstanceID string `json:"instance_id"` TenantID string `json:"tenant_id"` PoolID string `json:"pool_id"` PoolName string `json:"pool_name"` Links []Link `json:"links"` }
MappedIP represents a mapping of external IP -> instance IP.
type MappedIPShort ¶
type MappedIPShort struct { ID string `json:"mapping_id"` ExternalIP string `json:"external_ip"` InternalIP string `json:"internal_ip"` InstanceID string `json:"instance_id"` Links []Link `json:"links"` }
MappedIPShort is a summary version of a MappedIP.
type NewAddressRequest ¶
type NewAddressRequest struct { Subnet *string `json:"subnet"` IPs []NewIPAddressRequest `json:"ips"` }
NewAddressRequest is used to add a new IP or new subnet to a pool.
type NewIPAddressRequest ¶
type NewIPAddressRequest struct {
IP string `json:"ip"`
}
NewIPAddressRequest is used to add a new external IP to a pool.
type NewPoolRequest ¶
type NewPoolRequest struct { Name string `json:"name"` Subnet *string `json:"subnet"` IPs []struct { IP string `json:"ip"` } `json:"ips"` }
NewPoolRequest is used to create a new pool.
type Node ¶
type Node struct { ID string `json:"node_id"` IPAddr string `json:"ip_address"` Hostname string `json:"hostname"` TotalFailures int `json:"total_failures"` StartFailures int `json:"start_failures"` AttachVolumeFailures int `json:"attach_failures"` DeleteFailures int `json:"delete_failures"` NodeRole ssntp.Role `json:"role"` }
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 NodeStatusType ¶
type NodeStatusType string
NodeStatusType contains the valid values of a node's status
const ( // NodeStatusReady indicates that a node is ready to receive start // requests. NodeStatusReady NodeStatusType = "READY" // NodeStatusFull indicates that a node is full and cannot satisfy // start requests. NodeStatusFull NodeStatusType = "FULL" // NodeStatusMaintenance indicates that a node is in maintenance mode // and cannot satisfy start requests. NodeStatusMaintenance NodeStatusType = "MAINTENANCE" )
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"` TotalFailures int `json:"total_failures"` }
NodeSummary contains summary information for all nodes in the cluster.
type Pool ¶
type Pool struct { ID string `json:"id"` Name string `json:"name"` Free int `json:"free"` TotalIPs int `json:"total_ips"` Links []Link `json:"links"` Subnets []ExternalSubnet `json:"subnets"` IPs []ExternalIP `json:"ips"` }
Pool represents a pool of external IPs.
type PoolSummary ¶
type PoolSummary struct { ID string `json:"id"` Name string `json:"name"` Free *int `json:"free,omitempty"` TotalIPs *int `json:"total_ips,omitempty"` Links []Link `json:"links,omitempty"` }
PoolSummary is a short form of Pool.
type QuotaDetails ¶
QuotaDetails holds information for updating and querying quotas
func (*QuotaDetails) MarshalJSON ¶
func (qd *QuotaDetails) MarshalJSON() ([]byte, error)
MarshalJSON provides a custom marshaller for quota API
func (*QuotaDetails) UnmarshalJSON ¶
func (qd *QuotaDetails) UnmarshalJSON(data []byte) error
UnmarshalJSON provides a custom demarshaller for quota API
type QuotaListResponse ¶
type QuotaListResponse struct {
Quotas []QuotaDetails `json:"quotas"`
}
QuotaListResponse holds the layout for returning quotas in the API
type QuotaUpdateRequest ¶
type QuotaUpdateRequest struct {
Quotas []QuotaDetails `json:"quotas"`
}
QuotaUpdateRequest holds the layout for updating quota API
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 SortedNodesByID ¶
type SortedNodesByID []CiaoNode
SortedNodesByID implements sort.Interface for Node by ID string
func (SortedNodesByID) Len ¶
func (s SortedNodesByID) Len() int
func (SortedNodesByID) Less ¶
func (s SortedNodesByID) Less(i, j int) bool
func (SortedNodesByID) Swap ¶
func (s SortedNodesByID) 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 Boot bool // whether this is a boot device }
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 `json:"id"` // Bootable indicates whether should the resource be used for booting Bootable bool `json:"bootable"` // Ephemeral indicates whether the storage is temporary // TBD: do we bother to save info about temp storage? // does it count against quota? Ephemeral bool `json:"ephemeral"` // Size is the size of the storage to be created if new. Size int `json:"size"` // ImageType indicates whether we are making a new resource // based on an image or existing volume. // Needed only for new storage. SourceType SourceType `json:"source_type"` // Source represents the ID or name of either the image or the volume // that the storage resource is based on. Source string `json:"source_id"` // Tag is a piece of abitrary search/sort identifier text Tag string // Internal indicates whether this storage should be shown to the user Internal bool }
StorageResource defines a storage resource for a workload. TBD: should the workload support multiple of these?
type Tenant ¶
type Tenant struct { TenantConfig ID string CNCIctrl CNCIController }
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 TenantConfig ¶
type TenantConfig struct { Name string `json:"name"` SubnetBits int `json:"subnet_bits"` Permissions struct { PrivilegedContainers bool `json:"privileged_containers"` } `json:"permissions"` }
TenantConfig stores the configurable attributes of a tenant.
type TenantRequest ¶
type TenantRequest struct { ID string `json:"id"` Config TenantConfig `json:"config"` }
TenantRequest contains information for creating a new tenant.
type TenantSummary ¶
type TenantSummary struct { ID string `json:"id"` Name string `json:"name"` Links []Link `json:"links,omitempty"` }
TenantSummary is a short form of Tenant
type TenantsListResponse ¶
type TenantsListResponse struct {
Tenants []TenantSummary `json:"tenants"`
}
TenantsListResponse stores a list of tenants retrieved by listTenants
type Visibility ¶
type Visibility string
Visibility defines whether an image is per tenant or public.
const ( // Public indicates that the image can be used by anyone. Public Visibility = "public" // Private indicates that the image is only available to a tenant. Private Visibility = "private" // Internal indicates that an image is only for Ciao internal usage. Internal Visibility = "internal" )
type Volume ¶
type Volume struct { storage.BlockDevice TenantID string `json:"tenant_id"` // the tenant who owns this volume State BlockState `json:"state"` // status of CreateTime time.Time `json:"created"` // when we created the volume Name string `json:"name"` // a human readable name for this volume Description string `json:"description"` // some text to describe this volume. Internal bool `json:"internal"` // whether this storage should be shown to the user }
Volume 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 Workload ¶
type Workload struct { ID string `json:"id"` TenantID string `json:"-"` Description string `json:"description"` FWType string `json:"fw_type"` VMType payloads.Hypervisor `json:"vm_type"` ImageName string `json:"image_name"` Config string `json:"config"` Storage []StorageResource `json:"storage"` Visibility Visibility `json:"visibility"` Requirements payloads.WorkloadRequirements `json:"workload_requirements"` }
Workload contains resource and configuration information for a user workload.
type WorkloadRequest ¶
type WorkloadRequest struct { WorkloadID string TenantID string Instances int TraceLabel string Name string Subnet string }
WorkloadRequest contains resource and configuration for a user workload.
type WorkloadResponse ¶
WorkloadResponse will be returned from /workloads apis It provides details on the workload, and references for the client.