-
Notifications
You must be signed in to change notification settings - Fork 1k
Expand file tree
/
Copy pathstructure_validating_webhook_configuration.go
More file actions
124 lines (96 loc) · 3.23 KB
/
structure_validating_webhook_configuration.go
File metadata and controls
124 lines (96 loc) · 3.23 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Copyright IBM Corp. 2017, 2025
// SPDX-License-Identifier: MPL-2.0
package kubernetes
import (
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
"k8s.io/utils/ptr"
)
func flattenValidatingWebhook(in admissionregistrationv1.ValidatingWebhook) map[string]interface{} {
att := map[string]interface{}{}
att["admission_review_versions"] = in.AdmissionReviewVersions
att["client_config"] = flattenWebhookClientConfig(in.ClientConfig)
if in.FailurePolicy != nil {
att["failure_policy"] = *in.FailurePolicy
}
if in.MatchPolicy != nil {
att["match_policy"] = *in.MatchPolicy
}
att["name"] = in.Name
if in.NamespaceSelector != nil {
if in.NamespaceSelector.MatchExpressions != nil || in.NamespaceSelector.MatchLabels != nil {
att["namespace_selector"] = flattenLabelSelector(in.NamespaceSelector)
}
}
if in.ObjectSelector != nil {
if in.ObjectSelector.MatchExpressions != nil || in.ObjectSelector.MatchLabels != nil {
att["object_selector"] = flattenLabelSelector(in.ObjectSelector)
}
}
rules := []interface{}{}
for _, rule := range in.Rules {
rules = append(rules, flattenRuleWithOperations(rule))
}
att["rule"] = rules
if in.SideEffects != nil {
att["side_effects"] = *in.SideEffects
}
if in.TimeoutSeconds != nil {
att["timeout_seconds"] = *in.TimeoutSeconds
}
return att
}
func expandValidatingWebhook(in map[string]interface{}) admissionregistrationv1.ValidatingWebhook {
obj := admissionregistrationv1.ValidatingWebhook{}
if v, ok := in["admission_review_versions"].([]interface{}); ok {
obj.AdmissionReviewVersions = expandStringSlice(v)
}
if v, ok := in["client_config"].([]interface{}); ok {
obj.ClientConfig = expandWebhookClientConfig(v)
}
if v, ok := in["failure_policy"].(string); ok {
policy := admissionregistrationv1.FailurePolicyType(v)
obj.FailurePolicy = &policy
}
if v, ok := in["match_policy"].(string); ok {
policy := admissionregistrationv1.MatchPolicyType(v)
obj.MatchPolicy = &policy
}
if v, ok := in["name"].(string); ok {
obj.Name = v
}
if v, ok := in["namespace_selector"].([]interface{}); ok && len(v) != 0 {
obj.NamespaceSelector = expandLabelSelector(v)
}
if v, ok := in["object_selector"].([]interface{}); ok && len(v) != 0 {
obj.ObjectSelector = expandLabelSelector(v)
}
if v, ok := in["rule"].([]interface{}); ok {
rules := []admissionregistrationv1.RuleWithOperations{}
for _, r := range v {
rules = append(rules, expandRuleWithOperations(r.(map[string]interface{})))
}
obj.Rules = rules
}
if v, ok := in["side_effects"].(string); ok {
sideEffects := admissionregistrationv1.SideEffectClass(v)
obj.SideEffects = &sideEffects
}
if v, ok := in["timeout_seconds"].(int); ok {
obj.TimeoutSeconds = ptr.To(int32(v))
}
return obj
}
func expandValidatingWebhooks(in []interface{}) []admissionregistrationv1.ValidatingWebhook {
webhooks := []admissionregistrationv1.ValidatingWebhook{}
for _, h := range in {
webhooks = append(webhooks, expandValidatingWebhook(h.(map[string]interface{})))
}
return webhooks
}
func flattenValidatingWebhooks(in []admissionregistrationv1.ValidatingWebhook) []interface{} {
webhooks := []interface{}{}
for _, h := range in {
webhooks = append(webhooks, flattenValidatingWebhook(h))
}
return webhooks
}