Skip to content

Add error logs #96

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions controllers/propagator/policy_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ func (r *PolicyReconciler) Reconcile(ctx context.Context, request ctrl.Request)
},
})
if err != nil {
log.Error(err, "Failure during replicated policy cleanup")

return reconcile.Result{}, err
}

Expand All @@ -158,6 +160,8 @@ func (r *PolicyReconciler) Reconcile(ctx context.Context, request ctrl.Request)
if !inClusterNs {
err := r.handleRootPolicy(instance)
if err != nil {
log.Error(err, "Failure during root policy handling")

propagationFailureMetric.WithLabelValues(instance.GetName(), instance.GetNamespace()).Inc()
}

Expand Down
33 changes: 18 additions & 15 deletions controllers/propagator/propagation.go
Original file line number Diff line number Diff line change
Expand Up @@ -435,12 +435,12 @@ func (r *PolicyReconciler) handleDecisions(
// decisions. If the cluster exists in the status but doesn't exist in the input placement
// decisions, then it's considered stale and will be removed.
func (r *PolicyReconciler) cleanUpOrphanedRplPolicies(
instance *policiesv1.Policy, oldStatus []*policiesv1.CompliancePerClusterStatus, allDecisions decisionSet,
instance *policiesv1.Policy, allDecisions decisionSet,
) error {
log := log.WithValues("policyName", instance.GetName(), "policyNamespace", instance.GetNamespace())
successful := true

for _, cluster := range oldStatus {
for _, cluster := range instance.Status.Status {
key := appsv1.PlacementDecision{
ClusterName: cluster.ClusterNamespace,
ClusterNamespace: cluster.ClusterNamespace,
Expand Down Expand Up @@ -527,28 +527,31 @@ func (r *PolicyReconciler) handleRootPolicy(instance *policiesv1.Policy) error {
return errors.New("c" + msg[1:])
}

cpcs, _ := r.calculatePerClusterStatus(instance, allDecisions, failedClusters)
// Clean up before the status update in case the status update fails
err = r.cleanUpOrphanedRplPolicies(instance, allDecisions)
if err != nil {
log.Error(err, "Failed to delete orphaned replicated policies")

oldStatus := instance.Status.Status
instance.Status.Status = cpcs
instance.Status.ComplianceState = CalculateRootCompliance(cpcs)
return err
}

log.V(1).Info("Updating the root policy status")

cpcs, _ := r.calculatePerClusterStatus(instance, allDecisions, failedClusters)

// looped through all pb, update status.placement
// loop through all pb, update status.placement
sort.Slice(placements, func(i, j int) bool {
return placements[i].PlacementBinding < placements[j].PlacementBinding
})

instance.Status.Placement = placements

// Clean up before the status update in case the status update fails
err = r.cleanUpOrphanedRplPolicies(instance, oldStatus, allDecisions)
err = r.Get(context.TODO(), types.NamespacedName{Namespace: instance.Namespace, Name: instance.Name}, instance)
if err != nil {
log.Error(err, "Failed to delete orphaned replicated policies")

return err
log.Error(err, "Failed to refresh the cached policy. Will use existing policy.")
}

log.V(1).Info("Updating the root policy status")
instance.Status.Status = cpcs
instance.Status.ComplianceState = CalculateRootCompliance(cpcs)
instance.Status.Placement = placements

err = r.Status().Update(context.TODO(), instance, &client.UpdateOptions{})
if err != nil {
Expand Down
5 changes: 5 additions & 0 deletions controllers/rootpolicystatus/root_policy_status_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,11 @@ func (r *RootPolicyStatusReconciler) Reconcile(ctx context.Context, request ctrl

updatedStatus := false

err = r.Get(ctx, types.NamespacedName{Namespace: request.Namespace, Name: request.Name}, rootPolicy)
if err != nil {
log.Error(err, "Failed to refresh the cached policy. Will use existing policy.")
}

for _, status := range rootPolicy.Status.Status {
replicatedPolicy := clusterToReplicatedPolicy[status.ClusterNamespace]
if replicatedPolicy == nil {
Expand Down