@@ -46,6 +46,9 @@ import (
46
46
api "k8s.io/kubernetes/pkg/apis/core"
47
47
"k8s.io/kubernetes/pkg/apis/core/validation"
48
48
49
+ // "k8s.io/kubernetes/pkg/apis/flowcontrol"
50
+ // flowcontrol_validation "k8s.io/kubernetes/pkg/apis/flowcontrol/validation"
51
+
49
52
"k8s.io/kubernetes/pkg/apis/networking"
50
53
networking_validation "k8s.io/kubernetes/pkg/apis/networking/validation"
51
54
@@ -253,11 +256,31 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
253
256
t .Namespace = api .NamespaceDefault
254
257
}
255
258
errors = apps_validation .ValidateStatefulSet (t , podValidationOptions )
259
+ case * apps.DaemonSet :
260
+ if t .Namespace == "" {
261
+ t .Namespace = api .NamespaceDefault
262
+ }
263
+ errors = apps_validation .ValidateDaemonSet (t , podValidationOptions )
264
+ case * apps.Deployment :
265
+ if t .Namespace == "" {
266
+ t .Namespace = api .NamespaceDefault
267
+ }
268
+ errors = apps_validation .ValidateDeployment (t , podValidationOptions )
269
+ case * apps.ReplicaSet :
270
+ if t .Namespace == "" {
271
+ t .Namespace = api .NamespaceDefault
272
+ }
273
+ errors = apps_validation .ValidateReplicaSet (t , podValidationOptions )
256
274
case * autoscaling.HorizontalPodAutoscaler :
257
275
if t .Namespace == "" {
258
276
t .Namespace = api .NamespaceDefault
259
277
}
260
278
errors = autoscaling_validation .ValidateHorizontalPodAutoscaler (t )
279
+ case * batch.CronJob :
280
+ if t .Namespace == "" {
281
+ t .Namespace = api .NamespaceDefault
282
+ }
283
+ errors = batch_validation .ValidateCronJobCreate (t , podValidationOptions )
261
284
case * batch.Job :
262
285
if t .Namespace == "" {
263
286
t .Namespace = api .NamespaceDefault
@@ -269,50 +292,23 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
269
292
t .ObjectMeta .Name = "skip-for-good"
270
293
}
271
294
errors = job .Strategy .Validate (nil , t )
272
- case * apps.DaemonSet :
273
- if t .Namespace == "" {
274
- t .Namespace = api .NamespaceDefault
275
- }
276
- errors = apps_validation .ValidateDaemonSet (t , podValidationOptions )
277
- case * apps.Deployment :
278
- if t .Namespace == "" {
279
- t .Namespace = api .NamespaceDefault
280
- }
281
- errors = apps_validation .ValidateDeployment (t , podValidationOptions )
295
+ // case *flowcontrol.FlowSchema:
296
+ // TODO: This is still failing
297
+ // errors = flowcontrol_validation.ValidateFlowSchema(t)
282
298
case * networking.Ingress :
283
299
if t .Namespace == "" {
284
300
t .Namespace = api .NamespaceDefault
285
301
}
286
302
errors = networking_validation .ValidateIngressCreate (t )
287
303
case * networking.IngressClass :
288
- /*
289
- if t.Namespace == "" {
290
- t.Namespace = api.NamespaceDefault
291
- }
292
- gv := schema.GroupVersion{
293
- Group: networking.GroupName,
294
- Version: legacyscheme.Scheme.PrioritizedVersionsForGroup(networking.GroupName)[0].Version,
295
- }
296
- */
297
304
errors = networking_validation .ValidateIngressClass (t )
298
-
299
- case * policy.PodSecurityPolicy :
300
- errors = policy_validation .ValidatePodSecurityPolicy (t )
301
- case * apps.ReplicaSet :
302
- if t .Namespace == "" {
303
- t .Namespace = api .NamespaceDefault
304
- }
305
- errors = apps_validation .ValidateReplicaSet (t , podValidationOptions )
306
- case * batch.CronJob :
307
- if t .Namespace == "" {
308
- t .Namespace = api .NamespaceDefault
309
- }
310
- errors = batch_validation .ValidateCronJobCreate (t , podValidationOptions )
311
305
case * networking.NetworkPolicy :
312
306
if t .Namespace == "" {
313
307
t .Namespace = api .NamespaceDefault
314
308
}
315
309
errors = networking_validation .ValidateNetworkPolicy (t , netValidationOptions )
310
+ case * policy.PodSecurityPolicy :
311
+ errors = policy_validation .ValidatePodSecurityPolicy (t )
316
312
case * policy.PodDisruptionBudget :
317
313
if t .Namespace == "" {
318
314
t .Namespace = api .NamespaceDefault
@@ -391,6 +387,14 @@ func TestExampleObjectSchemas(t *testing.T) {
391
387
392
388
// Please help maintain the alphabeta order in the map
393
389
cases := map [string ]map [string ][]runtime.Object {
390
+ "access" : {
391
+ "endpoints-aggregated" : {& rbac.ClusterRole {}},
392
+ },
393
+ "access/certificate-signing-request" : {
394
+ "clusterrole-approve" : {& rbac.ClusterRole {}},
395
+ "clusterrole-create" : {& rbac.ClusterRole {}},
396
+ "clusterrole-sign" : {& rbac.ClusterRole {}},
397
+ },
394
398
"admin" : {
395
399
"namespace-dev" : {& api.Namespace {}},
396
400
"namespace-prod" : {& api.Namespace {}},
@@ -404,6 +408,7 @@ func TestExampleObjectSchemas(t *testing.T) {
404
408
"dns-horizontal-autoscaler" : {& api.ServiceAccount {}, & rbac.ClusterRole {}, & rbac.ClusterRoleBinding {}, & apps.Deployment {}},
405
409
"dnsutils" : {& api.Pod {}},
406
410
},
411
+ // TODO: "admin/konnectivity" is not include yet.
407
412
"admin/logging" : {
408
413
"fluentd-sidecar-config" : {& api.ConfigMap {}},
409
414
"two-files-counter-pod" : {& api.Pod {}},
@@ -482,10 +487,6 @@ func TestExampleObjectSchemas(t *testing.T) {
482
487
"application/hpa" : {
483
488
"php-apache" : {& autoscaling.HorizontalPodAutoscaler {}},
484
489
},
485
- "application/nginx" : {
486
- "nginx-deployment" : {& apps.Deployment {}},
487
- "nginx-svc" : {& api.Service {}},
488
- },
489
490
"application/job" : {
490
491
"cronjob" : {& batch.CronJob {}},
491
492
"job-tmpl" : {& batch.Job {}},
@@ -500,13 +501,26 @@ func TestExampleObjectSchemas(t *testing.T) {
500
501
"redis-pod" : {& api.Pod {}},
501
502
"redis-service" : {& api.Service {}},
502
503
},
504
+ "application/mongodb" : {
505
+ "mongo-deployment" : {& apps.Deployment {}},
506
+ "mongo-service" : {& api.Service {}},
507
+ },
503
508
"application/mysql" : {
504
509
"mysql-configmap" : {& api.ConfigMap {}},
505
510
"mysql-deployment" : {& api.Service {}, & apps.Deployment {}},
506
511
"mysql-pv" : {& api.PersistentVolume {}, & api.PersistentVolumeClaim {}},
507
512
"mysql-services" : {& api.Service {}, & api.Service {}},
508
513
"mysql-statefulset" : {& apps.StatefulSet {}},
509
514
},
515
+ "application/nginx" : {
516
+ "nginx-deployment" : {& apps.Deployment {}},
517
+ "nginx-svc" : {& api.Service {}},
518
+ },
519
+ "application/ssa" : {
520
+ "nginx-deployment" : {& apps.Deployment {}},
521
+ "nginx-deployment-no-replicas" : {& apps.Deployment {}},
522
+ "nginx-deployment-replicas-only" : {& apps.Deployment {}},
523
+ },
510
524
"application/web" : {
511
525
"web" : {& api.Service {}, & apps.StatefulSet {}},
512
526
"web-parallel" : {& api.Service {}, & apps.StatefulSet {}},
@@ -518,6 +532,11 @@ func TestExampleObjectSchemas(t *testing.T) {
518
532
"application/zookeeper" : {
519
533
"zookeeper" : {& api.Service {}, & api.Service {}, & policy.PodDisruptionBudget {}, & apps.StatefulSet {}},
520
534
},
535
+ "concepts/policy/limit-range" : {
536
+ "example-conflict-with-limitrange-cpu" : {& api.Pod {}},
537
+ "problematic-limit-range" : {& api.LimitRange {}},
538
+ "example-no-conflict-with-limitrange-cpu" : {& api.Pod {}},
539
+ },
521
540
"configmap" : {
522
541
"configmaps" : {& api.ConfigMap {}, & api.ConfigMap {}},
523
542
"configmap-multikeys" : {& api.ConfigMap {}},
@@ -635,6 +654,11 @@ func TestExampleObjectSchemas(t *testing.T) {
635
654
"pv-volume" : {& api.PersistentVolume {}},
636
655
"redis" : {& api.Pod {}},
637
656
},
657
+ "pods/topology-spread-constraints" : {
658
+ "one-constraint" : {& api.Pod {}},
659
+ "one-constraint-with-nodeaffinity" : {& api.Pod {}},
660
+ "two-constraints" : {& api.Pod {}},
661
+ },
638
662
"policy" : {
639
663
"baseline-psp" : {& policy.PodSecurityPolicy {}},
640
664
"example-psp" : {& policy.PodSecurityPolicy {}},
@@ -644,6 +668,19 @@ func TestExampleObjectSchemas(t *testing.T) {
644
668
"zookeeper-pod-disruption-budget-maxunavailable" : {& policy.PodDisruptionBudget {}},
645
669
"zookeeper-pod-disruption-budget-minavailable" : {& policy.PodDisruptionBudget {}},
646
670
},
671
+ /* TODO: This doesn't work yet.
672
+ "priority-and-fairness": {
673
+ "health-for-strangers": {&flowcontrol.FlowSchema{}},
674
+ },
675
+ */
676
+ "secret/serviceaccount" : {
677
+ "mysecretname" : {& api.Secret {}},
678
+ },
679
+ "security" : {
680
+ "podsecurity-baseline" : {& api.Namespace {}},
681
+ "podsecurity-privileged" : {& api.Namespace {}},
682
+ "podsecurity-restricted" : {& api.Namespace {}},
683
+ },
647
684
"service" : {
648
685
"nginx-service" : {& api.Service {}},
649
686
"load-balancer-example" : {& apps.Deployment {}},
0 commit comments