Documentation
¶
Overview ¶
Package consoleproxy implements a WebSocket proxy server that exposes KubeVirt VM subresource access (console, VNC) through OSAC ComputeInstance resources.
Index ¶
Constants ¶
const ( VMClusterModeRemote = "remote" VMClusterModeLocal = "local" VMClusterModeAuto = "auto" RemoteKubeconfigLabel = "osac.openshift.io/remote-cluster-kubeconfig" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AutoConfigResolver ¶
type AutoConfigResolver struct {
// contains filtered or unexported fields
}
AutoConfigResolver tries the remote resolver first. If no labeled Secret exists it falls back to the local in-cluster config. Any other remote error (API failures, malformed data) is returned without fallback to avoid masking real configuration problems.
func NewAutoConfigResolver ¶
func NewAutoConfigResolver(remote *RemoteConfigResolver, local *LocalConfigResolver, logger *slog.Logger) *AutoConfigResolver
func (*AutoConfigResolver) ResolveConfig ¶
type ConfigResolver ¶
type ConfigResolver interface {
ResolveConfig(ctx context.Context, namespace string) (*rest.Config, string, error)
}
ConfigResolver resolves the rest.Config used to connect to the cluster where KubeVirt VMs run. The namespace parameter scopes the lookup to the ComputeInstance's namespace.
type LocalConfigResolver ¶
type LocalConfigResolver struct {
// contains filtered or unexported fields
}
LocalConfigResolver returns the in-cluster rest.Config, meaning KubeVirt VMs are expected to run on the same cluster as the proxy.
func NewLocalConfigResolver ¶
func NewLocalConfigResolver(config *rest.Config, logger *slog.Logger) *LocalConfigResolver
func (*LocalConfigResolver) ResolveConfig ¶
type NoRemoteSecretError ¶
type NoRemoteSecretError struct {
Namespace string
}
NoRemoteSecretError signals that no remote kubeconfig Secret was found. AutoConfigResolver uses this to decide whether fallback to local is safe.
func (*NoRemoteSecretError) Error ¶
func (e *NoRemoteSecretError) Error() string
type RemoteConfigResolver ¶
type RemoteConfigResolver struct {
// contains filtered or unexported fields
}
RemoteConfigResolver looks up a Secret labeled with osac.openshift.io/remote-cluster-kubeconfig in the given namespace and parses the kubeconfig from it.
func NewRemoteConfigResolver ¶
func NewRemoteConfigResolver(c client.Client, logger *slog.Logger) *RemoteConfigResolver