blob: c453a0991f15ab0d1606ac175f804495c214f643 [file] [log] [blame]
package drivers
import (
"gerrit.mcp.mirantis.net/debian/gophercloud.git"
"gerrit.mcp.mirantis.net/debian/gophercloud.git/pagination"
)
type driverResult struct {
gophercloud.Result
}
// Extract interprets any driverResult as a Driver, if possible.
func (r driverResult) Extract() (*Driver, error) {
var s Driver
err := r.ExtractInto(&s)
return &s, err
}
func (r driverResult) ExtractInto(v interface{}) error {
return r.Result.ExtractIntoStructPtr(v, "")
}
func ExtractDriversInto(r pagination.Page, v interface{}) error {
return r.(DriverPage).Result.ExtractIntoSlicePtr(v, "drivers")
}
// Driver represents a driver in the OpenStack Bare Metal API.
type Driver struct {
// Name and Identifier of the driver
Name string `json:"name"`
// A list of active hosts that support this driver
Hosts []string `json:"hosts"`
// Type of this driver (“classic” or “dynamic”)
Type string `json:"type"`
// The default bios interface used for a node with a dynamic driver,
// if no bios interface is specified for the node.
DefaultBiosInterface string `json:"default_bios_interface"`
// The default boot interface used for a node with a dynamic driver,
// if no boot interface is specified for the node.
DefaultBootInterface string `json:"default_boot_interface"`
// The default console interface used for a node with a dynamic driver,
// if no console interface is specified for the node.
DefaultConsoleInterface string `json:"default_console_interface"`
// The default deploy interface used for a node with a dynamic driver,
// if no deploy interface is specified for the node.
DefaultDeployInterface string `json:"default_deploy_interface"`
// The default inspection interface used for a node with a dynamic driver,
// if no inspection interface is specified for the node.
DefaultInspectInterface string `json:"default_inspect_interface"`
// The default management interface used for a node with a dynamic driver,
// if no management interface is specified for the node.
DefaultManagementInterface string `json:"default_management_interface"`
// The default network interface used for a node with a dynamic driver,
// if no network interface is specified for the node.
DefaultNetworkInterface string `json:"default_network_interface"`
// The default power interface used for a node with a dynamic driver,
// if no power interface is specified for the node.
DefaultPowerInterface string `json:"default_power_interface"`
// The default RAID interface used for a node with a dynamic driver,
// if no RAID interface is specified for the node.
DefaultRaidInterface string `json:"default_raid_interface"`
// The default rescue interface used for a node with a dynamic driver,
// if no rescue interface is specified for the node.
DefaultRescueInterface string `json:"default_rescue_interface"`
// The default storage interface used for a node with a dynamic driver,
// if no storage interface is specified for the node.
DefaultStorageInterface string `json:"default_storage_interface"`
// The default vendor interface used for a node with a dynamic driver,
// if no vendor interface is specified for the node.
DefaultVendorInterface string `json:"default_vendor_interface"`
// The enabled bios interfaces for this driver.
EnabledBiosInterfaces []string `json:"enabled_bios_interfaces"`
// The enabled boot interfaces for this driver.
EnabledBootInterfaces []string `json:"enabled_boot_interfaces"`
// The enabled console interfaces for this driver.
EnabledConsoleInterface []string `json:"enabled_console_interfaces"`
// The enabled deploy interfaces for this driver.
EnabledDeployInterfaces []string `json:"enabled_deploy_interfaces"`
// The enabled inspection interfaces for this driver.
EnabledInspectInterfaces []string `json:"enabled_inspect_interfaces"`
// The enabled management interfaces for this driver.
EnabledManagementInterfaces []string `json:"enabled_management_interfaces"`
// The enabled network interfaces for this driver.
EnabledNetworkInterfaces []string `json:"enabled_network_interfaces"`
// The enabled power interfaces for this driver.
EnabledPowerInterfaces []string `json:"enabled_power_interfaces"`
// The enabled rescue interfaces for this driver.
EnabledRescueInterfaces []string `json:"enabled_rescue_interfaces"`
// The enabled RAID interfaces for this driver.
EnabledRaidInterfaces []string `json:"enabled_raid_interfaces"`
// The enabled storage interfaces for this driver.
EnabledStorageInterfaces []string `json:"enabled_storage_interfaces"`
// The enabled vendor interfaces for this driver.
EnabledVendorInterfaces []string `json:"enabled_vendor_interfaces"`
//A list of relative links. Includes the self and bookmark links.
Links []interface{} `json:"links"`
// A list of links to driver properties.
Properties []interface{} `json:"properties"`
}
// DriverPage abstracts the raw results of making a ListDrivers() request
// against the API.
type DriverPage struct {
pagination.LinkedPageBase
}
// IsEmpty returns true if a page contains no Driver results.
func (r DriverPage) IsEmpty() (bool, error) {
s, err := ExtractDrivers(r)
return len(s) == 0, err
}
// NextPageURL uses the response's embedded link reference to navigate to the
// next page of results.
func (r DriverPage) NextPageURL() (string, error) {
var s struct {
Links []gophercloud.Link `json:"drivers_links"`
}
err := r.ExtractInto(&s)
if err != nil {
return "", err
}
return gophercloud.ExtractNextURL(s.Links)
}
// ExtractDrivers interprets the results of a single page from ListDrivers()
// call, producing a slice of Driver entities.
func ExtractDrivers(r pagination.Page) ([]Driver, error) {
var s []Driver
err := ExtractDriversInto(r, &s)
return s, err
}
// GetDriverResult is the response from a Get operation.
// Call its Extract method to interpret it as a Driver.
type GetDriverResult struct {
driverResult
}
// DriverProperties represents driver properties in the OpenStack Bare Metal API.
type DriverProperties map[string]interface{}
// Extract interprets any GetPropertiesResult as DriverProperties, if possible.
func (r GetPropertiesResult) Extract() (*DriverProperties, error) {
var s DriverProperties
err := r.ExtractInto(&s)
return &s, err
}
// GetPropertiesResult is the response from a GetDriverProperties operation.
// Call its Extract method to interpret it as DriverProperties.
type GetPropertiesResult struct {
gophercloud.Result
}
// DiskProperties represents driver disk properties in the OpenStack Bare Metal API.
type DiskProperties map[string]interface{}
// Extract interprets any GetDiskPropertiesResult as DiskProperties, if possible.
func (r GetDiskPropertiesResult) Extract() (*DiskProperties, error) {
var s DiskProperties
err := r.ExtractInto(&s)
return &s, err
}
// GetDiskPropertiesResult is the response from a GetDriverDiskProperties operation.
// Call its Extract method to interpret it as DiskProperties.
type GetDiskPropertiesResult struct {
gophercloud.Result
}