2022-08-09 06:01:54 +00:00
package clusterplugin
type Role string
func ( n * Role ) MarshalYAML ( ) ( interface { } , error ) {
return string ( * n ) , nil
}
func ( n * Role ) UnmarshalYAML ( unmarshal func ( interface { } ) error ) error {
var val string
if err := unmarshal ( & val ) ; err != nil {
return err
}
* n = Role ( val )
return nil
}
const (
// RoleInit denotes a special `RoleControlPlane` that can run special tasks to initialize the cluster. There will only ever be one node with this role in a cluster.
RoleInit = "init"
2022-08-12 13:49:41 +00:00
// RoleControlPlane denotes nodes that persist cluster information and host the kubernetes control plane.
2022-08-09 06:01:54 +00:00
RoleControlPlane = "controlplane"
2022-08-12 13:49:41 +00:00
// RoleWorker denotes a node that runs workloads in the cluster.
2022-08-09 06:01:54 +00:00
RoleWorker = "worker"
)
type Cluster struct {
2022-08-12 13:49:41 +00:00
// ClusterToken is a unique string that can be used to distinguish different clusters on networks with multiple clusters.
2022-08-09 06:01:54 +00:00
ClusterToken string ` yaml:"cluster_token,omitempty" `
2022-08-12 13:49:41 +00:00
// ControlPlaneHost is a host that all nodes can resolve and use for node registration.
2022-08-09 06:01:54 +00:00
ControlPlaneHost string ` yaml:"control_plane_host,omitempty" `
2022-08-12 13:49:41 +00:00
// Role informs the sdk what kind of installation to manage on this device.
2022-08-09 06:01:54 +00:00
Role Role ` yaml:"role,omitempty" `
2022-08-12 13:49:41 +00:00
// Options are arbitrary values the sdk may be interested in. These values are not validated by C3OS and are simply forwarded to the sdk.
2022-08-09 06:01:54 +00:00
Options string ` yaml:"config,omitempty" `
}
type Config struct {
Cluster * Cluster ` yaml:"cluster,omitempty" `
}