v1alpha1

package
v0.0.0-...-58c4550 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the metal3 v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=metal3.io

Package v1alpha1 contains API Schema definitions for the metal3 v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=metal3.io

Index

Constants

View Source
const (
	Byte     Capacity = 1
	KibiByte          = Byte * 1024
	KiloByte          = Byte * 1000
	MebiByte          = KibiByte * 1024
	MegaByte          = KiloByte * 1000
	GibiByte          = MebiByte * 1024
	GigaByte          = MegaByte * 1000
	TebiByte          = GibiByte * 1024
	TeraByte          = GigaByte * 1000
)

Capacity multipliers

View Source
const (
	// BareMetalHostFinalizer is the name of the finalizer added to
	// hosts to block delete operations until the physical host can be
	// deprovisioned.
	BareMetalHostFinalizer string = "baremetalhost.metal3.io"
)

Variables

View Source
var (
	// SchemeGroupVersion is group version used to register these objects
	SchemeGroupVersion = schema.GroupVersion{Group: "metal3.io", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}
)

Functions

func RegisterDefaults

func RegisterDefaults(scheme *runtime.Scheme) error

RegisterDefaults adds defaulters functions to the given scheme. Public to allow building arbitrary schemes. All generated defaulters are covering - they call all nested defaulters.

Types

type BIOS

type BIOS struct {
	// The release/build date for this BIOS
	Date string `json:"date"`

	// The vendor name for this BIOS
	Vendor string `json:"vendor"`

	// The version of the BIOS
	Version string `json:"version"`
}

BIOS describes the BIOS version on the host.

func (*BIOS) DeepCopy

func (in *BIOS) DeepCopy() *BIOS

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BIOS.

func (*BIOS) DeepCopyInto

func (in *BIOS) DeepCopyInto(out *BIOS)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BMCDetails

type BMCDetails struct {

	// Address holds the URL for accessing the controller on the
	// network.
	Address string `json:"address"`

	// The name of the secret containing the BMC credentials (requires
	// keys "username" and "password").
	CredentialsName string `json:"credentialsName"`
}

BMCDetails contains the information necessary to communicate with the bare metal controller module on host.

func (*BMCDetails) DeepCopy

func (in *BMCDetails) DeepCopy() *BMCDetails

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BMCDetails.

func (*BMCDetails) DeepCopyInto

func (in *BMCDetails) DeepCopyInto(out *BMCDetails)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BareMetalHost

type BareMetalHost struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   BareMetalHostSpec   `json:"spec,omitempty"`
	Status BareMetalHostStatus `json:"status,omitempty"`
}

BareMetalHost is the Schema for the baremetalhosts API +k8s:openapi-gen=true +kubebuilder:resource:shortName=bmh;bmhost +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.operationalStatus",description="Operational status" +kubebuilder:printcolumn:name="Provisioning Status",type="string",JSONPath=".status.provisioning.state",description="Provisioning status" +kubebuilder:printcolumn:name="Consumer",type="string",JSONPath=".spec.consumerRef.name",description="Consumer using this host" +kubebuilder:printcolumn:name="BMC",type="string",JSONPath=".spec.bmc.address",description="Address of management controller" +kubebuilder:printcolumn:name="Hardware Profile",type="string",JSONPath=".status.hardwareProfile",description="The type of hardware detected" +kubebuilder:printcolumn:name="Online",type="string",JSONPath=".spec.online",description="Whether the host is online or not" +kubebuilder:printcolumn:name="Error",type="string",JSONPath=".status.errorMessage",description="Most recent error"

func (*BareMetalHost) Available

func (host *BareMetalHost) Available() bool

Available returns true if the host is available to be provisioned.

func (*BareMetalHost) ClearError

func (host *BareMetalHost) ClearError() (dirty bool)

ClearError removes any existing error message.

func (*BareMetalHost) CredentialsKey

func (host *BareMetalHost) CredentialsKey() types.NamespacedName

CredentialsKey returns a NamespacedName suitable for loading the Secret containing the credentials associated with the host.

func (*BareMetalHost) DeepCopy

func (in *BareMetalHost) DeepCopy() *BareMetalHost

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BareMetalHost.

func (*BareMetalHost) DeepCopyInto

func (in *BareMetalHost) DeepCopyInto(out *BareMetalHost)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BareMetalHost) DeepCopyObject

func (in *BareMetalHost) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*BareMetalHost) HardwareProfile

func (host *BareMetalHost) HardwareProfile() string

HardwareProfile returns the hardware profile name for the host.

func (*BareMetalHost) HasError

func (host *BareMetalHost) HasError() bool

HasError returns a boolean indicating whether there is an error set for the host.

func (*BareMetalHost) NeedsDeprovisioning

func (host *BareMetalHost) NeedsDeprovisioning() bool

NeedsDeprovisioning compares the settings with the provisioning status and returns true when the host should be deprovisioned.

func (*BareMetalHost) NeedsHardwareInspection

func (host *BareMetalHost) NeedsHardwareInspection() bool

NeedsHardwareInspection looks at the state of the host to determine if hardware inspection should be run.

func (*BareMetalHost) NeedsHardwareProfile

func (host *BareMetalHost) NeedsHardwareProfile() bool

NeedsHardwareProfile returns true if the profile is not set

func (*BareMetalHost) NeedsProvisioning

func (host *BareMetalHost) NeedsProvisioning() bool

NeedsProvisioning compares the settings with the provisioning status and returns true when more work is needed or false otherwise.

func (*BareMetalHost) NewEvent

func (host *BareMetalHost) NewEvent(reason, message string) corev1.Event

NewEvent creates a new event associated with the object and ready to be published to the kubernetes API.

func (*BareMetalHost) OperationalStatus

func (host *BareMetalHost) OperationalStatus() OperationalStatus

OperationalStatus returns the contents of the OperationalStatus field.

func (*BareMetalHost) SetErrorMessage

func (host *BareMetalHost) SetErrorMessage(message string) (dirty bool)

SetErrorMessage updates the ErrorMessage in the host Status struct when necessary and returns true when a change is made or false when no change is made.

func (*BareMetalHost) SetHardwareProfile

func (host *BareMetalHost) SetHardwareProfile(name string) (dirty bool)

SetHardwareProfile updates the hardware profile name and returns true when a change is made or false when no change is made.

func (*BareMetalHost) SetOperationalStatus

func (host *BareMetalHost) SetOperationalStatus(status OperationalStatus) bool

SetOperationalStatus updates the OperationalStatus field and returns true when a change is made or false when no change is made.

func (*BareMetalHost) UpdateGoodCredentials

func (host *BareMetalHost) UpdateGoodCredentials(currentSecret corev1.Secret)

UpdateGoodCredentials modifies the GoodCredentials portion of the Status struct to record the details of the secret containing credentials known to work.

func (*BareMetalHost) UpdateTriedCredentials

func (host *BareMetalHost) UpdateTriedCredentials(currentSecret corev1.Secret)

UpdateTriedCredentials modifies the TriedCredentials portion of the Status struct to record the details of the secret containing credentials known to work.

func (*BareMetalHost) WasProvisioned

func (host *BareMetalHost) WasProvisioned() bool

WasProvisioned returns true when we think we have placed an image on the host.

type BareMetalHostList

type BareMetalHostList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []BareMetalHost `json:"items"`
}

BareMetalHostList contains a list of BareMetalHost

func (*BareMetalHostList) DeepCopy

func (in *BareMetalHostList) DeepCopy() *BareMetalHostList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BareMetalHostList.

func (*BareMetalHostList) DeepCopyInto

func (in *BareMetalHostList) DeepCopyInto(out *BareMetalHostList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BareMetalHostList) DeepCopyObject

func (in *BareMetalHostList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type BareMetalHostSpec

type BareMetalHostSpec struct {

	// Taints is the full, authoritative list of taints to apply to
	// the corresponding Machine. This list will overwrite any
	// modifications made to the Machine on an ongoing basis.
	// +optional
	Taints []corev1.Taint `json:"taints,omitempty"`

	// How do we connect to the BMC?
	BMC BMCDetails `json:"bmc,omitempty"`

	// What is the name of the hardware profile for this host? It
	// should only be necessary to set this when inspection cannot
	// automatically determine the profile.
	HardwareProfile string `json:"hardwareProfile,omitempty"`

	// Which MAC address will PXE boot? This is optional for some
	// types, but required for libvirt VMs driven by vbmc.
	// +kubebuilder:validation:Pattern=[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}
	BootMACAddress string `json:"bootMACAddress,omitempty"`

	// Should the server be online?
	Online bool `json:"online"`

	// ConsumerRef can be used to store information about something
	// that is using a host. When it is not empty, the host is
	// considered "in use".
	ConsumerRef *corev1.ObjectReference `json:"consumerRef,omitempty"`

	// Image holds the details of the image to be provisioned.
	Image *Image `json:"image,omitempty"`

	// UserData holds the reference to the Secret containing the user
	// data to be passed to the host before it boots.
	UserData *corev1.SecretReference `json:"userData,omitempty"`

	// Description is a human-entered text used to help identify the host
	Description string `json:"description,omitempty"`

	// ExternallyProvisioned means something else is managing the
	// image running on the host and the operator should only manage
	// the power status and hardware inventory inspection. If the
	// Image field is filled in, this field is ignored.
	ExternallyProvisioned bool `json:"externallyProvisioned,omitempty"`
}

BareMetalHostSpec defines the desired state of BareMetalHost

func (*BareMetalHostSpec) DeepCopy

func (in *BareMetalHostSpec) DeepCopy() *BareMetalHostSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BareMetalHostSpec.

func (*BareMetalHostSpec) DeepCopyInto

func (in *BareMetalHostSpec) DeepCopyInto(out *BareMetalHostSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BareMetalHostStatus

type BareMetalHostStatus struct {

	// OperationalStatus holds the status of the host
	OperationalStatus OperationalStatus `json:"operationalStatus"`

	// LastUpdated identifies when this status was last observed.
	// +optional
	LastUpdated *metav1.Time `json:"lastUpdated,omitempty"`

	// The name of the profile matching the hardware details.
	HardwareProfile string `json:"hardwareProfile"`

	// The hardware discovered to exist on the host.
	HardwareDetails *HardwareDetails `json:"hardware,omitempty"`

	// Information tracked by the provisioner.
	Provisioning ProvisionStatus `json:"provisioning"`

	// the last credentials we were able to validate as working
	GoodCredentials CredentialsStatus `json:"goodCredentials"`

	// the last credentials we sent to the provisioning backend
	TriedCredentials CredentialsStatus `json:"triedCredentials"`

	// the last error message reported by the provisioning subsystem
	ErrorMessage string `json:"errorMessage"`

	// indicator for whether or not the host is powered on
	PoweredOn bool `json:"poweredOn"`
}

BareMetalHostStatus defines the observed state of BareMetalHost

func (*BareMetalHostStatus) DeepCopy

func (in *BareMetalHostStatus) DeepCopy() *BareMetalHostStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BareMetalHostStatus.

func (*BareMetalHostStatus) DeepCopyInto

func (in *BareMetalHostStatus) DeepCopyInto(out *BareMetalHostStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CPU

type CPU struct {
	Arch           string     `json:"arch"`
	Model          string     `json:"model"`
	ClockMegahertz ClockSpeed `json:"clockMegahertz"`
	Flags          []string   `json:"flags"`
	Count          int        `json:"count"`
}

CPU describes one processor on the host.

func (*CPU) DeepCopy

func (in *CPU) DeepCopy() *CPU

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CPU.

func (*CPU) DeepCopyInto

func (in *CPU) DeepCopyInto(out *CPU)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Capacity

type Capacity int64

Capacity is a disk size in Bytes

type ClockSpeed

type ClockSpeed float64

ClockSpeed is a clock speed in MHz

const (
	MegaHertz ClockSpeed = 1.0
	GigaHertz            = 1000 * MegaHertz
)

ClockSpeed multipliers

type CredentialsStatus

type CredentialsStatus struct {
	Reference *corev1.SecretReference `json:"credentials,omitempty"`
	Version   string                  `json:"credentialsVersion,omitempty"`
}

CredentialsStatus contains the reference and version of the last set of BMC credentials the controller was able to validate.

func (*CredentialsStatus) DeepCopy

func (in *CredentialsStatus) DeepCopy() *CredentialsStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialsStatus.

func (*CredentialsStatus) DeepCopyInto

func (in *CredentialsStatus) DeepCopyInto(out *CredentialsStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (CredentialsStatus) Match

func (cs CredentialsStatus) Match(secret corev1.Secret) bool

Match compares the saved status information with the name and content of a secret object.

type Firmware

type Firmware struct {
	// The BIOS for this firmware
	BIOS BIOS `json:"bios"`
}

Firmware describes the firmware on the host.

func (*Firmware) DeepCopy

func (in *Firmware) DeepCopy() *Firmware

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Firmware.

func (*Firmware) DeepCopyInto

func (in *Firmware) DeepCopyInto(out *Firmware)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HardwareDetails

type HardwareDetails struct {
	SystemVendor HardwareSystemVendor `json:"systemVendor"`
	Firmware     Firmware             `json:"firmware"`
	RAMMebibytes int                  `json:"ramMebibytes"`
	NIC          []NIC                `json:"nics"`
	Storage      []Storage            `json:"storage"`
	CPU          CPU                  `json:"cpu"`
	Hostname     string               `json:"hostname"`
}

HardwareDetails collects all of the information about hardware discovered on the host.

func (*HardwareDetails) DeepCopy

func (in *HardwareDetails) DeepCopy() *HardwareDetails

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HardwareDetails.

func (*HardwareDetails) DeepCopyInto

func (in *HardwareDetails) DeepCopyInto(out *HardwareDetails)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HardwareSystemVendor

type HardwareSystemVendor struct {
	Manufacturer string `json:"manufacturer"`
	ProductName  string `json:"productName"`
	SerialNumber string `json:"serialNumber"`
}

HardwareSystemVendor stores details about the whole hardware system.

func (*HardwareSystemVendor) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HardwareSystemVendor.

func (*HardwareSystemVendor) DeepCopyInto

func (in *HardwareSystemVendor) DeepCopyInto(out *HardwareSystemVendor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Image

type Image struct {
	// URL is a location of an image to deploy.
	URL string `json:"url"`

	// Checksum is the checksum for the image.
	Checksum string `json:"checksum"`
}

Image holds the details of an image either to provisioned or that has been provisioned.

func (*Image) DeepCopy

func (in *Image) DeepCopy() *Image

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image.

func (*Image) DeepCopyInto

func (in *Image) DeepCopyInto(out *Image)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NIC

type NIC struct {
	// The name of the NIC, e.g. "nic-1"
	Name string `json:"name"`

	// The name of the model, e.g. "virt-io"
	Model string `json:"model"`

	// The device MAC addr
	// +kubebuilder:validation:Pattern=[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}
	MAC string `json:"mac"`

	// The IP address of the device
	IP string `json:"ip"`

	// The speed of the device
	SpeedGbps int `json:"speedGbps"`

	// The VLANs available
	VLANs []VLAN `json:"vlans,omitempty"`

	// The untagged VLAN ID
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=4094
	VLANID VLANID `json:"vlanId"`

	// Whether the NIC is PXE Bootable
	PXE bool `json:"pxe"`
}

NIC describes one network interface on the host.

func (*NIC) DeepCopy

func (in *NIC) DeepCopy() *NIC

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NIC.

func (*NIC) DeepCopyInto

func (in *NIC) DeepCopyInto(out *NIC)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OperationalStatus

type OperationalStatus string

OperationalStatus represents the state of the host

const (
	// OperationalStatusOK is the status value for when the host is
	// configured correctly and is manageable.
	OperationalStatusOK OperationalStatus = "OK"

	// OperationalStatusDiscovered is the status value for when the
	// host is only partially configured, such as when when the BMC
	// address is known but the login credentials are not.
	OperationalStatusDiscovered OperationalStatus = "discovered"

	// OperationalStatusError is the status value for when the host
	// has any sort of error.
	OperationalStatusError OperationalStatus = "error"
)

type ProvisionStatus

type ProvisionStatus struct {
	// An indiciator for what the provisioner is doing with the host.
	State ProvisioningState `json:"state"`

	// The machine's UUID from the underlying provisioning tool
	ID string `json:"ID"`

	// Image holds the details of the last image successfully
	// provisioned to the host.
	Image Image `json:"image,omitempty"`
}

ProvisionStatus holds the state information for a single target.

func (*ProvisionStatus) DeepCopy

func (in *ProvisionStatus) DeepCopy() *ProvisionStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionStatus.

func (*ProvisionStatus) DeepCopyInto

func (in *ProvisionStatus) DeepCopyInto(out *ProvisionStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProvisioningState

type ProvisioningState string

ProvisioningState defines the states the provisioner will report the host has having.

const (
	// StateNone means the state is unknown
	StateNone ProvisioningState = ""

	// StateRegistrationError means there was an error registering the
	// host with the backend
	StateRegistrationError ProvisioningState = "registration error"

	// StateRegistering means we are telling the backend about the host
	StateRegistering ProvisioningState = "registering"

	// StateMatchProfile means we are comparing the discovered details
	// against known hardware profiles
	StateMatchProfile ProvisioningState = "match profile"

	// StateReady means the host can be consumed
	StateReady ProvisioningState = "ready"

	// StateValidationError means the provisioning instructions had an
	// error
	StateValidationError ProvisioningState = "validation error"

	// StateProvisioning means we are writing an image to the host's
	// disk(s)
	StateProvisioning ProvisioningState = "provisioning"

	// StateProvisioningError means we are writing an image to the
	// host's disk(s)
	StateProvisioningError ProvisioningState = "provisioning error"

	// StateProvisioned means we have written an image to the host's
	// disk(s)
	StateProvisioned ProvisioningState = "provisioned"

	// StateExternallyProvisioned means something else is managing the
	// image on the host
	StateExternallyProvisioned ProvisioningState = "externally provisioned"

	// StateDeprovisioning means we are removing an image from the
	// host's disk(s)
	StateDeprovisioning ProvisioningState = "deprovisioning"

	// StateInspecting means we are running the agent on the host to
	// learn about the hardware components available there
	StateInspecting ProvisioningState = "inspecting"

	// StatePowerManagementError means something went wrong trying to
	// power the server on or off.
	StatePowerManagementError ProvisioningState = "power management error"
)

type Storage

type Storage struct {
	// A name for the disk, e.g. "disk 1 (boot)"
	Name string `json:"name"`

	// Whether this disk represents rotational storage
	Rotational bool `json:"rotational"`

	// The size of the disk in Bytes
	SizeBytes Capacity `json:"sizeBytes"`

	// The name of the vendor of the device
	Vendor string `json:"vendor,omitempty"`

	// Hardware model
	Model string `json:"model,omitempty"`

	// The serial number of the device
	SerialNumber string `json:"serialNumber"`

	// The WWN of the device
	WWN string `json:"wwn,omitempty"`

	// The WWN Vendor extension of the device
	WWNVendorExtension string `json:"wwnVendorExtension,omitempty"`

	// The WWN with the extension
	WWNWithExtension string `json:"wwnWithExtension,omitempty"`

	// The SCSI location of the device
	HCTL string `json:"hctl,omitempty"`
}

Storage describes one storage device (disk, SSD, etc.) on the host.

func (*Storage) DeepCopy

func (in *Storage) DeepCopy() *Storage

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Storage.

func (*Storage) DeepCopyInto

func (in *Storage) DeepCopyInto(out *Storage)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VLAN

type VLAN struct {
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=4094
	ID VLANID `json:"id"`

	Name string `json:"name,omitempty"`
}

VLAN represents the name and ID of a VLAN

func (*VLAN) DeepCopy

func (in *VLAN) DeepCopy() *VLAN

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VLAN.

func (*VLAN) DeepCopyInto

func (in *VLAN) DeepCopyInto(out *VLAN)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VLANID

type VLANID int32

VLANID is a 12-bit 802.1Q VLAN identifier

Jump to

Keyboard shortcuts

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