penguin/monok8s

k8s image for Mono Gateway Dev Kit

clitools/pkg/bootstrap/registry.go

raw ยท 2447 bytes

package bootstrap

import (
	"fmt"

	"undecided.project/monok8s/pkg/node"
)

type Registry struct {
	steps map[string]node.Step
}

func NewRegistry(ctx *node.NodeContext) *Registry {
	netCfg := node.NetworkConfig{
		MgmtIface:   ctx.Config.Spec.Network.ManagementIface,
		MgmtAddress: ctx.Config.Spec.Network.ManagementCIDR,
		MgmtGateway: ctx.Config.Spec.Network.ManagementGW,
	}

	return &Registry{
		steps: map[string]node.Step{
			"check_prereqs":                         node.CheckPrereqs,
			"validate_network_requirements":         node.ValidateNetworkRequirements,
			"install_cni_if_requested":              node.InstallCNIIfRequested,
			"start_crio":                            node.StartCRIO,
			"check_crio_running":                    node.CheckCRIORunning,
			"wait_for_existing_cluster_if_needed":   node.WaitForExistingClusterIfNeeded,
			"decide_bootstrap_action":               node.DecideBootstrapAction,
			"check_required_images":                 node.CheckRequiredImages,
			"generate_kubeadm_config":               node.GenerateKubeadmConfig,
			"run_kubeadm_init":                      node.RunKubeadmInit,
			"restart_kubelet":                       node.RestartKubelet,
			"apply_local_node_metadata_if_possible": node.ApplyLocalNodeMetadataIfPossible,
			"allow_single_node_scheduling":          node.AllowSingleNodeScheduling,
			"ensure_ip_forward":                     node.EnsureIPForward,
			"configure_mgmt_interface":              node.ConfigureMgmtInterface(netCfg),
			"configure_dns":                         node.ConfigureDNS,
			"set_hostname_if_needed":                node.SetHostnameIfNeeded,
			"print_summary":                         node.PrintSummary,
			"reconcile_control_plane":               node.ReconcileControlPlane,
			"check_upgrade_prereqs":                 node.CheckUpgradePrereqs,
			"run_kubeadm_upgrade_apply":             node.RunKubeadmUpgradeApply,
			"run_kubeadm_join":                      node.RunKubeadmJoin,
			"reconcile_node":                        node.ReconcileNode,
			"run_kubeadm_upgrade_node":              node.RunKubeadmUpgradeNode,
		},
	}
}

func (r *Registry) MustGet(name string) node.Step {
	step, ok := r.steps[name]
	if !ok {
		panic(fmt.Sprintf("unknown step %q", name))
	}
	return step
}

func (r *Registry) Get(name string) (node.Step, error) {
	step, ok := r.steps[name]
	if !ok {
		return nil, fmt.Errorf("unknown step %q", name)
	}
	return step, nil
}