mirror of
https://github.com/kyverno/kyverno.git
synced 2024-12-15 17:51:20 +00:00
fix: policy status reconciliation (#10032)
* fix: get latest policy object before updating status Signed-off-by: ShutingZhao <shuting@nirmata.com> * chore: remove debug code Signed-off-by: ShutingZhao <shuting@nirmata.com> --------- Signed-off-by: ShutingZhao <shuting@nirmata.com>
This commit is contained in:
parent
7c83ca189c
commit
3e7a7ac244
3 changed files with 22 additions and 8 deletions
|
@ -487,9 +487,14 @@ func (c *controller) updatePolicyStatuses(ctx context.Context) error {
|
|||
}
|
||||
for _, policy := range policies {
|
||||
if policy.GetNamespace() == "" {
|
||||
_, err := controllerutils.UpdateStatus(
|
||||
p, err := c.kyvernoClient.KyvernoV1().ClusterPolicies().Get(ctx, policy.GetName(), metav1.GetOptions{})
|
||||
if err != nil {
|
||||
logger.Error(err, "failed to get latest clusterpolicy for status reconciliation", "policy", policy.GetName())
|
||||
continue
|
||||
}
|
||||
_, err = controllerutils.UpdateStatus(
|
||||
ctx,
|
||||
policy.(*kyvernov1.ClusterPolicy),
|
||||
p,
|
||||
c.kyvernoClient.KyvernoV1().ClusterPolicies(),
|
||||
func(policy *kyvernov1.ClusterPolicy) error {
|
||||
return updateStatusFunc(policy)
|
||||
|
@ -499,9 +504,14 @@ func (c *controller) updatePolicyStatuses(ctx context.Context) error {
|
|||
return err
|
||||
}
|
||||
} else {
|
||||
_, err := controllerutils.UpdateStatus(
|
||||
p, err := c.kyvernoClient.KyvernoV1().Policies(policy.GetNamespace()).Get(ctx, policy.GetName(), metav1.GetOptions{})
|
||||
if err != nil {
|
||||
logger.Error(err, "failed to get latest policy for status reconciliation", "namespace", policy.GetNamespace, "policy", policy.GetName())
|
||||
continue
|
||||
}
|
||||
_, err = controllerutils.UpdateStatus(
|
||||
ctx,
|
||||
policy.(*kyvernov1.Policy),
|
||||
p,
|
||||
c.kyvernoClient.KyvernoV1().Policies(policy.GetNamespace()),
|
||||
func(policy *kyvernov1.Policy) error {
|
||||
return updateStatusFunc(policy)
|
||||
|
|
|
@ -1243,7 +1243,7 @@ ZDGRs55xuoeLDJ/ZRFf9bI+IaCUd1YrfYcHIl3G87Av+r49YVwqRDT0VDV7uLgqn
|
|||
// expectedResult: map[string]interface{}{},
|
||||
// }
|
||||
}
|
||||
for i, tc := range testCases {
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.jmesPath, func(t *testing.T) {
|
||||
jp, err := jmespathInterface.Query(tc.jmesPath)
|
||||
assert.NilError(t, err)
|
||||
|
@ -1255,7 +1255,6 @@ ZDGRs55xuoeLDJ/ZRFf9bI+IaCUd1YrfYcHIl3G87Av+r49YVwqRDT0VDV7uLgqn
|
|||
|
||||
res, ok := result.(map[string]interface{})
|
||||
assert.Assert(t, ok)
|
||||
fmt.Println("======i", i)
|
||||
assert.DeepEqual(t, res, tc.expectedResult)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -149,9 +149,14 @@ func Update[T interface {
|
|||
func UpdateStatus[T interface {
|
||||
metav1.Object
|
||||
DeepCopy[T]
|
||||
}, S StatusClient[T]](ctx context.Context, obj T, setter S, build func(T) error,
|
||||
}, S ObjectStatusClient[T]](ctx context.Context, obj T, setter S, build func(T) error,
|
||||
) (T, error) {
|
||||
mutated := obj.DeepCopy()
|
||||
var objNew T
|
||||
objNew, err := setter.Get(ctx, obj.GetName(), metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return objNew, err
|
||||
}
|
||||
mutated := objNew.DeepCopy()
|
||||
if err := build(mutated); err != nil {
|
||||
var d T
|
||||
return d, err
|
||||
|
|
Loading…
Reference in a new issue