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
}