/
degraded_webhook_admission.go
76 lines (71 loc) · 2.84 KB
/
degraded_webhook_admission.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package webhooksupportabilitycontroller
import (
"context"
operatorv1 "github.com/openshift/api/operator/v1"
"github.com/openshift/library-go/pkg/operator/v1helpers"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
v1 "k8s.io/api/admissionregistration/v1"
"k8s.io/apimachinery/pkg/labels"
)
func (c *webhookSupportabilityController) updateMutatingAdmissionWebhookConfigurationDegraded(ctx context.Context) v1helpers.UpdateStatusFunc {
condition := operatorv1.OperatorCondition{
Type: MutatingAdmissionWebhookConfigurationDegradedType,
Status: operatorv1.ConditionUnknown,
}
webhookConfigurations, err := c.mutatingWebhookLister.List(labels.Everything())
if err != nil {
condition.Message = err.Error()
return v1helpers.UpdateConditionFn(condition)
}
var webhookInfos []webhookInfo
for _, webhookConfiguration := range webhookConfigurations {
for _, webhook := range webhookConfiguration.Webhooks {
info := webhookInfo{
Name: webhook.Name,
CABundle: webhook.ClientConfig.CABundle,
FailurePolicyIsIgnore: webhook.FailurePolicy != nil && *webhook.FailurePolicy == admissionregistrationv1.Ignore,
TimeoutSeconds: webhook.TimeoutSeconds,
}
if webhook.ClientConfig.Service != nil {
info.Service = &serviceReference{
Namespace: webhook.ClientConfig.Service.Namespace,
Name: webhook.ClientConfig.Service.Name,
Port: webhook.ClientConfig.Service.Port,
}
}
webhookInfos = append(webhookInfos, info)
}
}
return c.updateWebhookConfigurationDegraded(ctx, condition, webhookInfos)
}
func (c *webhookSupportabilityController) updateValidatingAdmissionWebhookConfigurationDegradedStatus(ctx context.Context) v1helpers.UpdateStatusFunc {
condition := operatorv1.OperatorCondition{
Type: ValidatingAdmissionWebhookConfigurationDegradedType,
Status: operatorv1.ConditionUnknown,
}
webhookConfigurations, err := c.validatingWebhookLister.List(labels.Everything())
if err != nil {
condition.Message = err.Error()
return v1helpers.UpdateConditionFn(condition)
}
var webhookInfos []webhookInfo
for _, webhookConfiguration := range webhookConfigurations {
for _, webhook := range webhookConfiguration.Webhooks {
info := webhookInfo{
Name: webhook.Name,
CABundle: webhook.ClientConfig.CABundle,
FailurePolicyIsIgnore: webhook.FailurePolicy != nil && (*webhook.FailurePolicy == v1.Ignore),
TimeoutSeconds: webhook.TimeoutSeconds,
}
if webhook.ClientConfig.Service != nil {
info.Service = &serviceReference{
Namespace: webhook.ClientConfig.Service.Namespace,
Name: webhook.ClientConfig.Service.Name,
Port: webhook.ClientConfig.Service.Port,
}
}
webhookInfos = append(webhookInfos, info)
}
}
return c.updateWebhookConfigurationDegraded(ctx, condition, webhookInfos)
}