// waiter holds the apiclient.Waiter implementation of choice, responsible for querying the API server in various ways and waiting for conditions to be fulfilled
// waiter holds the apiclient.Waiter implementation of choice, responsible for querying the API server in various ways and waiting for conditions to be fulfilled
waiter:=getWaiter(i.dryRun,client)
waiter:=getWaiter(i.dryRun,client)
fmt.Printf("[init] Waiting for the kubelet to boot up the control plane as Static Pods from directory %q\n",kubeadmconstants.GetStaticPodDirectory())
iferr:=waitForAPIAndKubelet(waiter);err!=nil{
fmt.Println("[init] This process often takes about a minute to perform or longer if the control plane images have to be pulled...")
ctx:=map[string]string{
// TODO: Adjust this timeout or start polling the kubelet API
"Error":fmt.Sprintf("%v",err),
// TODO: Make this timeout more realistic when we do create some more complex logic about the interaction with the kubelet