func()

in pkg/operator/controllers/etchosts/cluster_controller.go [71:194]


func (r *EtcHostsClusterReconciler) Reconcile(ctx context.Context, request ctrl.Request) (ctrl.Result, error) {
	r.Log.Debugf("reconcile MachineConfig openshift-machine-api/%s", request.Name)
	instance, err := r.GetCluster(ctx)
	if err != nil {
		return reconcile.Result{}, err
	}

	if !instance.Spec.OperatorFlags.GetSimpleBoolean(operator.EtcHostsEnabled) {
		r.Log.Debug("controller is disabled")
		return reconcile.Result{}, nil
	}

	allowReconcile, err := r.AllowRebootCausingReconciliation(ctx, instance)
	if err != nil {
		r.Log.Error(err)
		r.SetDegraded(ctx, err)
		return reconcile.Result{}, err
	}

	// EtchostsManaged = false, remove machine configs
	if !instance.Spec.OperatorFlags.GetSimpleBoolean(operator.EtcHostsManaged) && allowReconcile {
		r.Log.Debug("etchosts managed is false, removing machine configs")
		err = r.removeMachineConfig(ctx, etchostsMasterMCMetadata)
		if kerrors.IsNotFound(err) {
			r.ClearDegraded(ctx)
			return reconcile.Result{}, nil
		}
		if err != nil {
			r.Log.Error(err)
			r.SetDegraded(ctx, err)
			return reconcile.Result{}, err
		}

		err = r.removeMachineConfig(ctx, etchostsWorkerMCMetadata)
		if kerrors.IsNotFound(err) {
			r.ClearDegraded(ctx)
			return reconcile.Result{}, nil
		}
		if err != nil {
			r.Log.Error(err)
			r.SetDegraded(ctx, err)
			return reconcile.Result{}, err
		}

		r.ClearConditions(ctx)
		r.Log.Debug("etchosts managed is false, machine configs removed")
		return reconcile.Result{}, nil
	}

	// EtchostsManaged = true, create machine configs if missing
	r.Log.Debug("running")
	// If 99-master-aro-etc-hosts-gateway-domains doesn't exist, create it
	mcp := &mcv1.MachineConfigPool{}
	mc := &mcv1.MachineConfig{}

	err = r.Client.Get(ctx, types.NamespacedName{Name: "master"}, mcp)
	if kerrors.IsNotFound(err) {
		r.Log.Debug(err)
		r.ClearDegraded(ctx)
		return reconcile.Result{}, nil
	}
	if err != nil {
		r.Log.Error(err)
		r.SetDegraded(ctx, err)
		return reconcile.Result{}, err
	}
	if mcp.GetDeletionTimestamp() != nil {
		return reconcile.Result{}, nil
	}

	err = r.Client.Get(ctx, types.NamespacedName{Name: "99-master-aro-etc-hosts-gateway-domains"}, mc)
	if kerrors.IsNotFound(err) {
		r.Log.Debug("99-master-aro-etc-hosts-gateway-domains not found, creating it")
		err = reconcileMachineConfigs(ctx, instance, "master", r.dh, allowReconcile, *mcp)
		if err != nil {
			r.Log.Error(err)
			r.SetDegraded(ctx, err)
			return reconcile.Result{}, err
		}
		r.ClearDegraded(ctx)
		return reconcile.Result{Requeue: true}, nil
	}
	if err != nil {
		r.Log.Error(err)
		r.SetDegraded(ctx, err)
		return reconcile.Result{}, err
	}

	// If 99-worker-aro-etc-hosts-gateway-domains doesn't exist, create it
	err = r.Client.Get(ctx, types.NamespacedName{Name: "worker"}, mcp)
	if kerrors.IsNotFound(err) {
		r.ClearDegraded(ctx)
		return reconcile.Result{}, nil
	}
	if err != nil {
		r.Log.Error(err)
		r.SetDegraded(ctx, err)
		return reconcile.Result{}, err
	}
	if mcp.GetDeletionTimestamp() != nil {
		return reconcile.Result{}, nil
	}

	err = r.Client.Get(ctx, types.NamespacedName{Name: "99-worker-aro-etc-hosts-gateway-domains"}, mc)
	if kerrors.IsNotFound(err) {
		r.Log.Debug("99-worker-aro-etc-hosts-gateway-domains not found, creating it")
		r.ClearDegraded(ctx)
		err = reconcileMachineConfigs(ctx, instance, "worker", r.dh, allowReconcile, *mcp)
		if err != nil {
			r.Log.Error(err)
			r.SetDegraded(ctx, err)
			return reconcile.Result{}, err
		}
		return reconcile.Result{Requeue: true}, nil
	}
	if err != nil {
		r.Log.Error(err)
		r.SetDegraded(ctx, err)
		return reconcile.Result{}, err
	}

	r.ClearConditions(ctx)
	return reconcile.Result{}, nil
}