mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-20 22:21:13 +02:00
Instead of passing around a struct, it is better if we pass around an interface that describes the behavior we want. The Runtime interface provides a common place to describe runtime specific parameters. This initial implementation offers the runtime mode, the platform specifics, and the config. Signed-off-by: Andrew Rynhard <andrew@andrewrynhard.com>
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package runtime
|
|
|
|
import (
|
|
"github.com/talos-systems/talos/pkg/config"
|
|
)
|
|
|
|
// Mode is a runtime mode.
|
|
type Mode int
|
|
|
|
const (
|
|
// Cloud represents a runtime mode.
|
|
Cloud Mode = iota
|
|
// Container represents a runtime mode.
|
|
Container
|
|
// Interactive represents a runtime mode.
|
|
Interactive
|
|
// Metal represents a runtime mode.
|
|
Metal
|
|
)
|
|
|
|
// String returns the string representation of a Mode.
|
|
func (m Mode) String() string {
|
|
return [...]string{"Cloud", "Container", "Interactive", "Metal"}[m]
|
|
}
|
|
|
|
// Runtime defines the runtime parameters.
|
|
type Runtime interface {
|
|
Platform() Platform
|
|
Config() config.Configurator
|
|
}
|
|
|
|
// NewRuntime initializes and returns the runtime interface.
|
|
func NewRuntime(p Platform, c config.Configurator) Runtime {
|
|
return &DefaultRuntime{
|
|
p: p,
|
|
c: c,
|
|
}
|
|
}
|
|
|
|
// DefaultRuntime implements the Runtime interface.
|
|
type DefaultRuntime struct {
|
|
p Platform
|
|
c config.Configurator
|
|
}
|
|
|
|
// Platform implements the Runtime interface.
|
|
func (d *DefaultRuntime) Platform() Platform {
|
|
return d.p
|
|
}
|
|
|
|
// Config implements the Runtime interface.
|
|
func (d *DefaultRuntime) Config() config.Configurator {
|
|
return d.c
|
|
}
|