@@ -61,6 +61,9 @@ import (
61
61
"k8s.io/kubernetes/pkg/apis/rbac"
62
62
rbac_validation "k8s.io/kubernetes/pkg/apis/rbac/validation"
63
63
64
+ "k8s.io/kubernetes/pkg/apis/resource"
65
+ resource_validation "k8s.io/kubernetes/pkg/apis/resource/validation"
66
+
64
67
"k8s.io/kubernetes/pkg/apis/storage"
65
68
storage_validation "k8s.io/kubernetes/pkg/apis/storage/validation"
66
69
@@ -75,6 +78,7 @@ import (
75
78
_ "k8s.io/kubernetes/pkg/apis/networking/install"
76
79
_ "k8s.io/kubernetes/pkg/apis/policy/install"
77
80
_ "k8s.io/kubernetes/pkg/apis/rbac/install"
81
+ _ "k8s.io/kubernetes/pkg/apis/resource/install"
78
82
_ "k8s.io/kubernetes/pkg/apis/storage/install"
79
83
)
80
84
@@ -113,6 +117,7 @@ func initGroups() {
113
117
networking .GroupName ,
114
118
policy .GroupName ,
115
119
rbac .GroupName ,
120
+ resource .GroupName ,
116
121
storage .GroupName ,
117
122
}
118
123
@@ -174,6 +179,8 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
174
179
errors = admreg_validation .ValidateValidatingWebhookConfiguration (t )
175
180
case * admissionregistration.ValidatingAdmissionPolicy :
176
181
errors = admreg_validation .ValidateValidatingAdmissionPolicy (t )
182
+ case * admissionregistration.ValidatingAdmissionPolicyBinding :
183
+ errors = admreg_validation .ValidateValidatingAdmissionPolicyBinding (t )
177
184
case * api.ConfigMap :
178
185
if t .Namespace == "" {
179
186
t .Namespace = api .NamespaceDefault
@@ -241,7 +248,7 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
241
248
if len (t .Spec .ClusterIP ) > 0 && len (t .Spec .ClusterIPs ) == 0 {
242
249
t .Spec .ClusterIPs = []string {t .Spec .ClusterIP }
243
250
}
244
- errors = validation .ValidateService (t )
251
+ errors = validation .ValidateServiceCreate (t )
245
252
case * api.ServiceAccount :
246
253
if t .Namespace == "" {
247
254
t .Namespace = api .NamespaceDefault
@@ -272,10 +279,11 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
272
279
}
273
280
errors = apps_validation .ValidateReplicaSet (t , podValidationOptions )
274
281
case * autoscaling.HorizontalPodAutoscaler :
282
+ opts := autoscaling_validation.HorizontalPodAutoscalerSpecValidationOptions {}
275
283
if t .Namespace == "" {
276
284
t .Namespace = api .NamespaceDefault
277
285
}
278
- errors = autoscaling_validation .ValidateHorizontalPodAutoscaler (t )
286
+ errors = autoscaling_validation .ValidateHorizontalPodAutoscaler (t , opts )
279
287
case * batch.CronJob :
280
288
if t .Namespace == "" {
281
289
t .Namespace = api .NamespaceDefault
@@ -333,11 +341,28 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
333
341
case * rbac.ClusterRole :
334
342
// clusterole does not accept namespace
335
343
errors = rbac_validation .ValidateClusterRole (t , clusterroleValidationOptions )
344
+ case * rbac.Role :
345
+ if t .Namespace == "" {
346
+ t .Namespace = api .NamespaceDefault
347
+ }
348
+ errors = rbac_validation .ValidateRole (t )
336
349
case * rbac.ClusterRoleBinding :
337
350
// clusterolebinding does not accept namespace
338
351
errors = rbac_validation .ValidateClusterRoleBinding (t )
339
352
case * rbac.RoleBinding :
340
353
errors = rbac_validation .ValidateRoleBinding (t )
354
+ case * resource.DeviceClass :
355
+ errors = resource_validation .ValidateDeviceClass (t )
356
+ case * resource.ResourceClaim :
357
+ if t .Namespace == "" {
358
+ t .Namespace = api .NamespaceDefault
359
+ }
360
+ errors = resource_validation .ValidateResourceClaim (t )
361
+ case * resource.ResourceClaimTemplate :
362
+ if t .Namespace == "" {
363
+ t .Namespace = api .NamespaceDefault
364
+ }
365
+ errors = resource_validation .ValidateResourceClaimTemplate (t )
341
366
case * storage.StorageClass :
342
367
// storageclass does not accept namespace
343
368
errors = storage_validation .ValidateStorageClass (t )
@@ -409,6 +434,11 @@ func TestExampleObjectSchemas(t *testing.T) {
409
434
"deployment-replicas-policy" : {& admissionregistration.ValidatingAdmissionPolicy {}},
410
435
"endpoints-aggregated" : {& rbac.ClusterRole {}},
411
436
"image-matches-namespace-environment.policy" : {& admissionregistration.ValidatingAdmissionPolicy {}},
437
+ "simple-clusterrole" : {& rbac.ClusterRole {}},
438
+ "simple-clusterrolebinding" : {& rbac.ClusterRoleBinding {}},
439
+ "simple-role" : {& rbac.Role {}},
440
+ "simple-rolebinding-with-clusterrole" : {& rbac.RoleBinding {}},
441
+ "simple-rolebinding-with-role" : {& rbac.RoleBinding {}},
412
442
"validating-admission-policy-audit-annotation" : {& admissionregistration.ValidatingAdmissionPolicy {}},
413
443
"validating-admission-policy-match-conditions" : {& admissionregistration.ValidatingAdmissionPolicy {}},
414
444
},
@@ -482,6 +512,7 @@ func TestExampleObjectSchemas(t *testing.T) {
482
512
"pod3" : {& api.Pod {}},
483
513
},
484
514
"application" : {
515
+ "basic-daemonset" : {& apps.DaemonSet {}},
485
516
"deployment" : {& apps.Deployment {}},
486
517
"deployment-patch" : {& apps.Deployment {}},
487
518
"deployment-retainkeys" : {& apps.Deployment {}},
@@ -571,24 +602,25 @@ func TestExampleObjectSchemas(t *testing.T) {
571
602
"new-immutable-configmap" : {& api.ConfigMap {}},
572
603
},
573
604
"controllers" : {
574
- "daemonset" : {& apps.DaemonSet {}},
575
- "daemonset-label-selector" : {& apps.DaemonSet {}},
576
- "fluentd-daemonset" : {& apps.DaemonSet {}},
577
- "fluentd-daemonset-update" : {& apps.DaemonSet {}},
578
- "frontend" : {& apps.ReplicaSet {}},
579
- "hpa-rs" : {& autoscaling.HorizontalPodAutoscaler {}},
580
- "job" : {& batch.Job {}},
581
- "job-backoff-limit-per-index-example" : {& batch.Job {}},
582
- "job-pod-failure-policy-config-issue" : {& batch.Job {}},
583
- "job-pod-failure-policy-example" : {& batch.Job {}},
584
- "job-pod-failure-policy-failjob" : {& batch.Job {}},
585
- "job-pod-failure-policy-ignore" : {& batch.Job {}},
586
- "job-success-policy" : {& batch.Job {}},
587
- "replicaset" : {& apps.ReplicaSet {}},
588
- "replication" : {& api.ReplicationController {}},
589
- "replication-nginx-1.14.2" : {& api.ReplicationController {}},
590
- "replication-nginx-1.16.1" : {& api.ReplicationController {}},
591
- "nginx-deployment" : {& apps.Deployment {}},
605
+ "daemonset" : {& apps.DaemonSet {}},
606
+ "daemonset-label-selector" : {& apps.DaemonSet {}},
607
+ "fluentd-daemonset" : {& apps.DaemonSet {}},
608
+ "fluentd-daemonset-update" : {& apps.DaemonSet {}},
609
+ "frontend" : {& apps.ReplicaSet {}},
610
+ "hpa-rs" : {& autoscaling.HorizontalPodAutoscaler {}},
611
+ "job" : {& batch.Job {}},
612
+ "job-backoff-limit-per-index-example" : {& batch.Job {}},
613
+ "job-backoff-limit-per-index-failindex" : {& batch.Job {}},
614
+ "job-pod-failure-policy-config-issue" : {& batch.Job {}},
615
+ "job-pod-failure-policy-example" : {& batch.Job {}},
616
+ "job-pod-failure-policy-failjob" : {& batch.Job {}},
617
+ "job-pod-failure-policy-ignore" : {& batch.Job {}},
618
+ "job-success-policy" : {& batch.Job {}},
619
+ "replicaset" : {& apps.ReplicaSet {}},
620
+ "replication" : {& api.ReplicationController {}},
621
+ "replication-nginx-1.14.2" : {& api.ReplicationController {}},
622
+ "replication-nginx-1.16.1" : {& api.ReplicationController {}},
623
+ "nginx-deployment" : {& apps.Deployment {}},
592
624
},
593
625
"debug" : {
594
626
"counter-pod" : {& api.Pod {}},
@@ -601,14 +633,15 @@ func TestExampleObjectSchemas(t *testing.T) {
601
633
"termination" : {& api.Pod {}},
602
634
},
603
635
"dra" : {
604
- "deviceclass" : {& resource.DeviceClass {}},
605
- "resourceclaim" : {& resource.ResourceClaim {}},
606
- "resourceclaimtemplate" : {& resource.ResourceClaimTemplate {}},
607
- "dra-example-job" : {& batch.Job {}},
636
+ "deviceclass" : {& resource.DeviceClass {}},
637
+ "resourceclaim" : {& resource.ResourceClaim {}},
638
+ "resourceclaimtemplate" : {& resource.ResourceClaimTemplate {}},
639
+ "dra-example-job" : {& batch.Job {}},
608
640
},
609
641
"pods" : {
610
642
"commands" : {& api.Pod {}},
611
643
"image-volumes" : {& api.Pod {}},
644
+ "image-volumes-subpath" : {& api.Pod {}},
612
645
"init-containers" : {& api.Pod {}},
613
646
"lifecycle-events" : {& api.Pod {}},
614
647
"pod-configmap-env-var-valueFrom" : {& api.Pod {}},
@@ -646,6 +679,7 @@ func TestExampleObjectSchemas(t *testing.T) {
646
679
"dapi-volume-resources" : {& api.Pod {}},
647
680
"dependent-envars" : {& api.Pod {}},
648
681
"envars" : {& api.Pod {}},
682
+ "envars-file-container" : {& api.Pod {}},
649
683
"pod-multiple-secret-env-variable" : {& api.Pod {}},
650
684
"pod-secret-envFrom" : {& api.Pod {}},
651
685
"pod-single-secret-env-variable" : {& api.Pod {}},
@@ -679,6 +713,7 @@ func TestExampleObjectSchemas(t *testing.T) {
679
713
"pod-level-cpu-request-limit" : {& api.Pod {}},
680
714
"pod-level-memory-request-limit" : {& api.Pod {}},
681
715
"pod-level-resources" : {& api.Pod {}},
716
+ "pod-resize" : {& api.Pod {}},
682
717
},
683
718
"pods/security" : {
684
719
"hello-apparmor" : {& api.Pod {}},
@@ -691,6 +726,7 @@ func TestExampleObjectSchemas(t *testing.T) {
691
726
},
692
727
"pods/storage" : {
693
728
"projected" : {& api.Pod {}},
729
+ "projected-podcertificate" : {& api.Pod {}},
694
730
"projected-secret-downwardapi-configmap" : {& api.Pod {}},
695
731
"projected-secrets-nondefault-permission-mode" : {& api.Pod {}},
696
732
"projected-service-account-token" : {& api.Pod {}},
@@ -707,7 +743,12 @@ func TestExampleObjectSchemas(t *testing.T) {
707
743
"two-constraints" : {& api.Pod {}},
708
744
},
709
745
"policy" : {
710
- "priority-class-resourcequota" : {& api.ResourceQuota {}},
746
+ "gold-vac-pvc" : {& api.PersistentVolumeClaim {}},
747
+ "high-priority-pod" : {& api.Pod {}},
748
+ "priority-class-resourcequota" : {& api.ResourceQuota {}},
749
+ "quota" : {& api.ResourceQuota {}, & api.ResourceQuota {}, & api.ResourceQuota {}},
750
+ "quota-vac" : {& api.ResourceQuota {}, & api.ResourceQuota {}, & api.ResourceQuota {}},
751
+ "service-cluster-cidr-address-range" : {& admissionregistration.ValidatingAdmissionPolicy {}, & admissionregistration.ValidatingAdmissionPolicyBinding {}},
711
752
"zookeeper-pod-disruption-budget-maxunavailable" : {& policy.PodDisruptionBudget {}},
712
753
"zookeeper-pod-disruption-budget-minavailable" : {& policy.PodDisruptionBudget {}},
713
754
},
@@ -726,10 +767,11 @@ func TestExampleObjectSchemas(t *testing.T) {
726
767
"podsecurity-restricted" : {& api.Namespace {}},
727
768
},
728
769
"service" : {
729
- "nginx-service" : {& api.Service {}},
770
+ "explore-graceful-termination-nginx" : {& api.Service {}},
730
771
"load-balancer-example" : {& apps.Deployment {}},
772
+ "nginx-service" : {& api.Service {}},
731
773
"pod-with-graceful-termination" : {& apps.Deployment {}},
732
- "explore-graceful-termination-nginx" : {& api.Service {}},
774
+ "simple-service" : {& api.Service {}},
733
775
},
734
776
"service/access" : {
735
777
"backend-deployment" : {& apps.Deployment {}},
0 commit comments