 Documentation
      ¶
      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.