Documentation
¶
Index ¶
- Constants
- Variables
- func Add(mgr manager.Manager) error
- func HyperVCredentials(secret *core.Secret) (username, password string)
- func SMBCredentials(secret *core.Secret) (username, password string)
- func SMBUrl(secret *core.Secret) string
- func WinRMPort(settings map[string]string) int
- type Builder
- func (r *Builder) Deployment(provider *api.Provider, secret *core.Secret, pvc *core.PersistentVolumeClaim) (deployment *appsv1.Deployment)
- func (r *Builder) PersistentVolume(provider *api.Provider, secret *core.Secret) (pv *core.PersistentVolume)
- func (r *Builder) PersistentVolumeClaim(provider *api.Provider, pv *core.PersistentVolume) (pvc *core.PersistentVolumeClaim)
- func (r *Builder) PodSpec(provider *api.Provider, secret *core.Secret, pvc *core.PersistentVolumeClaim) (spec core.PodSpec)
- func (r *Builder) ProviderServer(provider *api.Provider) (server *api.HyperVProviderServer)
- func (r *Builder) Service(provider *api.Provider) (svc *core.Service)
- type Deleter
- func (r *Deleter) Deployment(ctx context.Context, provider *api.Provider) (err error)
- func (r *Deleter) PersistentVolume(ctx context.Context, provider *api.Provider) (err error)
- func (r *Deleter) PersistentVolumeClaim(ctx context.Context, provider *api.Provider) (err error)
- func (r *Deleter) Service(ctx context.Context, provider *api.Provider) (err error)
- type Ensurer
- func (r *Ensurer) Deployment(ctx context.Context, deployment *appsv1.Deployment) (err error)
- func (r *Ensurer) PersistentVolume(ctx context.Context, pv *core.PersistentVolume) (out *core.PersistentVolume, err error)
- func (r *Ensurer) PersistentVolumeClaim(ctx context.Context, pvc *core.PersistentVolumeClaim) (out *core.PersistentVolumeClaim, err error)
- func (r *Ensurer) ProviderServer(ctx context.Context, server *api.HyperVProviderServer) (out *api.HyperVProviderServer, err error)
- func (r *Ensurer) Service(ctx context.Context, service *core.Service) (out *core.Service, err error)
- type Labeler
- type Reconciler
- func (r *Reconciler) AddFinalizer(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
- func (r *Reconciler) Deploy(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
- func (r *Reconciler) Reconcile(ctx context.Context, request reconcile.Request) (result reconcile.Result, err error)
- func (r *Reconciler) RemoveFinalizer(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
- func (r *Reconciler) Teardown(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
Constants ¶
const ( MainContainer = "main" SMBVolumeMountName = "smb" SMBVolumeMountPath = SMBMountPath QEMUGroup = 107 PVSize = "1Gi" SMBCSIDriver = "smb.csi.k8s.io" )
const ( LabelApp = "app" LabelSubapp = "subapp" LabelProvider = "provider" LabelProviderServer = "hyperv-server" SubappHyperVServer = "hyperv-server" AppForklift = "forklift" )
Labels
const ( SecretFieldUsername = "username" SecretFieldPassword = "password" SecretFieldSMBUrl = "smbUrl" SecretFieldSMBUser = "smbUser" SecretFieldSMBPassword = "smbPassword" )
Secret field names for HyperV provider. Required fields:
- username: Hyper-V host username (e.g., "Administrator")
- password: Hyper-V host password
- smbUrl: SMB share URL (e.g., "//192.168.1.100/VMShare")
Optional fields:
- smbUser: SMB username (defaults to Hyper-V username)
- smbPassword: SMB password (defaults to Hyper-V password)
const ( // SMBMountPath is the local mount point where SMB is mounted in the pod. SMBMountPath = "/hyperv" // StorageIDDefault is the ID of the single storage record. StorageIDDefault = "storage-0" )
Pod-internal constants (not user-configurable)
const (
Name = "hyperv-server"
)
const (
SettingWinRMPort = "winrmPort"
)
Variables ¶
var Settings = &settings.Settings
Functions ¶
func HyperVCredentials ¶
HyperVCredentials returns the HyperV/WinRM credentials from the secret.
func SMBCredentials ¶
SMBCredentials returns the SMB credentials from the secret. Falls back to HyperV credentials if dedicated SMB credentials are not set.
Types ¶
type Builder ¶
type Builder struct {
HyperVProviderServer *api.HyperVProviderServer
Labeler Labeler
}
func (*Builder) Deployment ¶
func (r *Builder) Deployment(provider *api.Provider, secret *core.Secret, pvc *core.PersistentVolumeClaim) (deployment *appsv1.Deployment)
Deployment builds a deployment for the SMB mount pod. The pod runs a minimal sleep binary that keeps the SMB CSI volume mounted.
func (*Builder) PersistentVolume ¶
func (r *Builder) PersistentVolume(provider *api.Provider, secret *core.Secret) (pv *core.PersistentVolume)
PersistentVolume builds a static PV for SMB CSI driver.
func (*Builder) PersistentVolumeClaim ¶
func (r *Builder) PersistentVolumeClaim(provider *api.Provider, pv *core.PersistentVolume) (pvc *core.PersistentVolumeClaim)
PersistentVolumeClaim builds a PVC that binds to the static PV.
func (*Builder) ProviderServer ¶
func (r *Builder) ProviderServer(provider *api.Provider) (server *api.HyperVProviderServer)
type Deleter ¶
type Deleter struct {
HyperVProviderServer *api.HyperVProviderServer
Labeler Labeler
Log logging.LevelLogger
k8sclient.Client
}
Deleter deletes resources.
func (*Deleter) Deployment ¶
Deployment deletes the Deployment.
func (*Deleter) PersistentVolume ¶
PersistentVolume deletes the static PV.
func (*Deleter) PersistentVolumeClaim ¶
PersistentVolumeClaim deletes the PVC.
type Ensurer ¶
type Ensurer struct {
client.Client
Log logging.LevelLogger
HyperVProviderServer *api.HyperVProviderServer
Labeler Labeler
}
Ensurer ensures resources exist.
func (*Ensurer) Deployment ¶
Deployment ensures the Deployment exists.
func (*Ensurer) PersistentVolume ¶
func (r *Ensurer) PersistentVolume(ctx context.Context, pv *core.PersistentVolume) (out *core.PersistentVolume, err error)
PersistentVolume ensures the static PV exists. Uses label selector to find existing PVs (supports GenerateName).
func (*Ensurer) PersistentVolumeClaim ¶
func (r *Ensurer) PersistentVolumeClaim(ctx context.Context, pvc *core.PersistentVolumeClaim) (out *core.PersistentVolumeClaim, err error)
PersistentVolumeClaim ensures the PVC exists. Uses label selector to find existing PVCs (supports GenerateName).
func (*Ensurer) ProviderServer ¶
func (r *Ensurer) ProviderServer(ctx context.Context, server *api.HyperVProviderServer) (out *api.HyperVProviderServer, err error)
ProviderServer ensures the HyperVProviderServer resource exists. Uses label selector to find existing servers (supports GenerateName).
type Reconciler ¶
type Reconciler struct {
base.Reconciler
}
func (*Reconciler) AddFinalizer ¶
func (r *Reconciler) AddFinalizer(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
func (*Reconciler) Deploy ¶
func (r *Reconciler) Deploy(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
Deploy creates the HyperV provider server deployment (SMB mount pod only).
func (*Reconciler) RemoveFinalizer ¶
func (r *Reconciler) RemoveFinalizer(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
func (*Reconciler) Teardown ¶
func (r *Reconciler) Teardown(ctx context.Context, hyperv *api.HyperVProviderServer) (err error)
Teardown deletes the HyperV provider server resources.