~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
126 lines · 2.8 KB Raw History
package v1alpha1

import (
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

	commonv1 "github.com/johnandersen777/socialweb-computer-kcp/api/common/v1alpha1"
)

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

	Spec   FirecrackerVMSpec   `json:"spec,omitempty"`
	Status FirecrackerVMStatus `json:"status,omitempty"`
}

type FirecrackerVMList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`

	Items []FirecrackerVM `json:"items"`
}

type FirecrackerVMSpec struct {
	Owner ComputeVMOwner `json:"owner"`

	Vcpu int32 `json:"vcpu"`

	Mem string `json:"mem"`

	Disk string `json:"disk"`

	Image *ComputeVMImageRequest `json:"image,omitempty"`

	UserData ComputeVMUserData `json:"userData"`

	StopGraceSeconds int32 `json:"stopGraceSeconds,omitempty"`

	HostPorts []int32 `json:"hostPorts,omitempty" apigen:"listType=set"`

	GuestNetwork *GuestNetworkOptions `json:"guestNetwork,omitempty"`
}

type FirecrackerVMNetwork struct {
	GuestIP string `json:"guestIP,omitempty"`

	HostAddress string `json:"hostAddress,omitempty"`

	Prefix int32 `json:"prefix,omitempty"`

	MAC string `json:"mac,omitempty"`

	Tap string `json:"tap,omitempty"`
}

type FirecrackerVMImage struct {
	Ref string `json:"ref,omitempty"`

	Sha256 string `json:"sha256,omitempty"`

	Hypervisor string `json:"hypervisor,omitempty"`
}

type FirecrackerVMRuntime struct {
	Backend string `json:"backend,omitempty"`

	Hypervisor string `json:"hypervisor,omitempty"`

	Unit string `json:"unit,omitempty"`

	InvocationID string `json:"invocationID,omitempty"`

	Pid int64 `json:"pid,omitempty"`

	StartTicks int64 `json:"startTicks,omitempty"`

	StartTime string `json:"startTime,omitempty"`

	HostBootID string `json:"hostBootID,omitempty"`

	Manager string `json:"manager,omitempty"`

	VMMID string `json:"vmmID,omitempty"`

	VMMUID int64 `json:"vmmUID,omitempty"`

	Slot int32 `json:"slot,omitempty"`

	Socket string `json:"socket,omitempty"`
}

type FirecrackerVMStatus struct {
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	Phase ComputeVMPhase `json:"phase,omitempty"`

	LostReason ComputeVMLostReason `json:"lostReason,omitempty"`

	Network *FirecrackerVMNetwork `json:"network,omitempty"`

	Image *FirecrackerVMImage `json:"image,omitempty"`

	Runtime *FirecrackerVMRuntime `json:"runtime,omitempty"`

	WorkDir string `json:"workDir,omitempty"`

	BootedAt string `json:"bootedAt,omitempty"`

	Message string `json:"message,omitempty"`

	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

const FieldManagerFirecrackerVM = "socialweb.computer/firecrackervm"

const FinalizerFirecrackerVM = "firecrackervm.socialweb.computer/release"

const (
	FirecrackerVMConditionReady = commonv1.ConditionReady

	ConditionPrepared = "Prepared"

	ConditionStarted = "Started"

	ConditionRuntimeObserved = "RuntimeObserved"
)