func()

in controllers/machines.go [68:99]


func (r *EtcdadmClusterReconciler) checkOwnedMachines(ctx context.Context, log logr.Logger, etcdadmCluster *etcdv1.EtcdadmCluster, cluster *clusterv1.Cluster) (etcdMachines, error) {
	ownedMachines, err := r.getCurrentOwnedMachines(ctx, etcdadmCluster, cluster)
	if err != nil {
		return nil, err
	}

	machines := make(etcdMachines, len(ownedMachines))
	for k, machine := range ownedMachines {
		m := etcdMachine{Machine: machine}
		endpoint := getMachineEtcdEndpoint(machine)
		if endpoint == "" {
			machines[k] = m
			continue
		}

		err := r.performEndpointHealthCheck(ctx, cluster, endpoint, true)
		// This is not ideal, performEndpointHealthCheck uses an error to signal both a not ready/unhealthy member
		// and also transient errors when performing such check.
		// Ideally we would separate these 2 so we can abort on error and mark as unhealthy separetly
		m.healthError = err
		if errors.Is(err, portNotOpenErr) {
			log.Info("Machine is not listening yet, this is probably transient, while etcd starts", "endpoint", endpoint)
		} else {
			m.endpoint = endpoint
			m.listening = true
		}

		machines[k] = m
	}

	return machines, nil
}