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{ Hostname: ctx.Config.Spec.Network.Hostname, MgmtIface: ctx.Config.Spec.Network.ManagementIface, MgmtAddress: ctx.Config.Spec.Network.ManagementCIDR, MgmtGateway: ctx.Config.Spec.Network.ManagementGW, DNSNameservers: ctx.Config.Spec.Network.DNSNameservers, DNSSearchDomains: ctx.Config.Spec.Network.DNSSearchDomains, } return &Registry{ steps: map[string]node.Step{ "validate_network_requirements": node.ValidateNetworkRequirements, "detect_local_cluster_state": node.DetectLocalClusterState, "classify_bootstrap_action": node.ClassifyBootstrapAction, "configure_default_cni": node.ConfigureDefaultCNI, "start_crio": node.StartCRIO, "wait_for_existing_cluster_if_needed": node.WaitForExistingClusterIfNeeded, "validate_required_images": node.ValidateRequiredImagesPresent, "generate_kubeadm_config": node.GenerateKubeadmConfig, "run_kubeadm_init": node.RunKubeadmInit, "apply_local_node_metadata_if_possible": node.ApplyLocalNodeMetadataIfPossible, "allow_single_node_scheduling": node.AllowSingleNodeScheduling, "ensure_ip_forward": node.EnsureIPForward, "configure_hostname": node.ConfigureHostname(netCfg), "configure_mgmt_interface": node.ConfigureMgmtInterface(netCfg), "configure_dns": node.ConfigureDNS(netCfg), "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 }