From d925d71ed79325b74444145883062399a95a39ae Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Tue, 26 Feb 2019 21:22:03 +0100 Subject: [PATCH] feat(k8s): refactor defaults --- k8s/default.nix | 78 ++++++++++++----- k8s/generated/v1.10.nix | 175 +++++++++++++++++++------------------ k8s/generated/v1.11.nix | 177 ++++++++++++++++++++------------------ k8s/generated/v1.12.nix | 181 ++++++++++++++++++++------------------- k8s/generated/v1.13.nix | 185 +++++++++++++++++++++------------------- k8s/generated/v1.7.nix | 127 ++++++++++++++------------- k8s/generated/v1.8.nix | 153 +++++++++++++++++---------------- k8s/generated/v1.9.nix | 169 ++++++++++++++++++------------------ k8s/generator.nix | 21 +++-- tests/k8s/crd.nix | 2 +- 10 files changed, 682 insertions(+), 586 deletions(-) diff --git a/k8s/default.nix b/k8s/default.nix index 60aab69..f3846df 100644 --- a/k8s/default.nix +++ b/k8s/default.nix @@ -5,6 +5,14 @@ with lib; let removeKubenixOptions = filterAttrs (name: attr: name != "kubenix"); + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.kubernetes.api.defaults); + moduleToAttrs = value: if isAttrs value then mapAttrs (n: v: moduleToAttrs v) (filterAttrs (n: v: !(hasPrefix "_" n) && v != null) value) @@ -35,32 +43,64 @@ let }; defaults = mkOption { - description = "Kubernetes defaults"; - type = types.attrsOf (types.coercedTo types.unspecified (value: [value]) (types.listOf types.unspecified)); - default = {}; + description = "Kubernetes defaults to apply to resources"; + type = types.listOf (types.submodule ({config, ...}: { + options = { + resource = mkOption { + description = "Resource to apply default to (all by default)"; + type = types.nullOr types.str; + default = null; + }; + + group = mkOption { + description = "Group to apply default to (all by default)"; + type = types.nullOr types.str; + default = null; + }; + + version = mkOption { + description = "Version to apply default to (all by default)"; + type = types.nullOr types.str; + default = null; + }; + + kind = mkOption { + description = "Kind to apply default to (all by default)"; + type = types.nullOr types.str; + default = null; + }; + + default = mkOption { + description = "Default to apply"; + type = types.unspecified; + default = {}; + }; + }; + })); + default = []; }; resources = mkOption { type = types.listOf (types.submodule { options = { group = mkOption { - description = "Group name"; + description = "Resoruce group"; type = types.str; }; version = mkOption { - description = "Version name"; + description = "Resoruce version"; type = types.str; }; kind = mkOption { - description = "kind name"; + description = "Resource kind"; type = types.str; }; - plural = mkOption { - description = "Plural name"; - type = types.str; + resource = mkOption { + description = "Resource name"; + type = type.str; }; }; }); @@ -113,8 +153,7 @@ in { apiVersion = mkOptionDefault "${cr.group}/${cr.version}"; kind = mkOptionDefault cr.kind; metadata.name = mkOptionDefault name; - }] - ++ (config.kubernetes.defaults.all or [])); + }] ++ (getDefaults cr.resource cr.group cr.version cr.kind)); })); default = {}; }; @@ -125,36 +164,37 @@ in { options.kubernetes.customResources = mkOption { default = []; + description = "List of custom resource definitions to make API for"; type = types.listOf (types.submodule ({config, ...}: { options = { group = mkOption { - description = "CRD group"; + description = "Custom resource definition group"; type = types.str; }; version = mkOption { - description = "CRD version"; + description = "Custom resource definition version"; type = types.str; }; kind = mkOption { - description = "CRD kind"; + description = "Custom resource definition kind"; type = types.str; }; - plural = mkOption { - description = "CRD plural name"; + resource = mkOption { + description = "Custom resource definition resource name"; type = types.str; }; description = mkOption { - description = "CRD description"; + description = "Custom resource definition description"; type = types.str; default = ""; }; module = mkOption { - description = "CRD module"; + description = "Custom resource definition module"; default = types.unspecified; }; }; @@ -162,7 +202,7 @@ in { }; config.kubernetes.api.resources = map (cr: { - inherit (cr) group version kind plural; + inherit (cr) group version kind resource; }) config.kubernetes.customResources; options.kubernetes.objects = mkOption { diff --git a/k8s/generated/v1.10.nix b/k8s/generated/v1.10.nix index 6d5d171..99b4844 100644 --- a/k8s/generated/v1.10.nix +++ b/k8s/generated/v1.10.nix @@ -4,6 +4,14 @@ with lib; let + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = "str"; @@ -80,8 +88,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -29576,412 +29583,412 @@ in { group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "InitializerConfiguration"; - plural = "initializerconfigurations"; + resource = "initializerconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "MutatingWebhookConfiguration"; - plural = "mutatingwebhookconfigurations"; + resource = "mutatingwebhookconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "ValidatingWebhookConfiguration"; - plural = "validatingwebhookconfigurations"; + resource = "validatingwebhookconfigurations"; }{ group = "apps"; version = "apps/v1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "apps"; version = "apps/v1beta1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta2"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1beta1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "autoscaling"; version = "autoscaling/v1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "batch"; version = "batch/v1"; kind = "Job"; - plural = "jobs"; + resource = "jobs"; }{ group = "batch"; version = "batch/v1beta1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "batch"; version = "batch/v2alpha1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "certificates.k8s.io"; version = "certificates.k8s.io/v1beta1"; kind = "CertificateSigningRequest"; - plural = "certificatesigningrequests"; + resource = "certificatesigningrequests"; }{ group = "core"; version = "v1"; kind = "Binding"; - plural = "bindings"; + resource = "bindings"; }{ group = "core"; version = "v1"; kind = "ConfigMap"; - plural = "configmaps"; + resource = "configmaps"; }{ group = "core"; version = "v1"; kind = "Endpoints"; - plural = "endpoints"; + resource = "endpoints"; }{ group = "core"; version = "v1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "core"; version = "v1"; kind = "LimitRange"; - plural = "limitranges"; + resource = "limitranges"; }{ group = "core"; version = "v1"; kind = "Namespace"; - plural = "namespaces"; + resource = "namespaces"; }{ group = "core"; version = "v1"; kind = "Node"; - plural = "nodes"; + resource = "nodes"; }{ group = "core"; version = "v1"; kind = "PersistentVolume"; - plural = "persistentvolumes"; + resource = "persistentvolumes"; }{ group = "core"; version = "v1"; kind = "PersistentVolumeClaim"; - plural = "persistentvolumeclaims"; + resource = "persistentvolumeclaims"; }{ group = "core"; version = "v1"; kind = "Pod"; - plural = "pods"; + resource = "pods"; }{ group = "core"; version = "v1"; kind = "PodTemplate"; - plural = "podtemplates"; + resource = "podtemplates"; }{ group = "core"; version = "v1"; kind = "ReplicationController"; - plural = "replicationcontrollers"; + resource = "replicationcontrollers"; }{ group = "core"; version = "v1"; kind = "ResourceQuota"; - plural = "resourcequotas"; + resource = "resourcequotas"; }{ group = "core"; version = "v1"; kind = "Secret"; - plural = "secrets"; + resource = "secrets"; }{ group = "core"; version = "v1"; kind = "Service"; - plural = "services"; + resource = "services"; }{ group = "core"; version = "v1"; kind = "ServiceAccount"; - plural = "serviceaccounts"; + resource = "serviceaccounts"; }{ group = "events.k8s.io"; version = "events.k8s.io/v1beta1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Ingress"; - plural = "ingresses"; + resource = "ingresses"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "networking.k8s.io"; version = "networking.k8s.io/v1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "policy"; version = "policy/v1beta1"; kind = "Eviction"; - plural = "eviction"; + resource = "eviction"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodDisruptionBudget"; - plural = "poddisruptionbudgets"; + resource = "poddisruptionbudgets"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1alpha1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "settings.k8s.io"; version = "settings.k8s.io/v1alpha1"; kind = "PodPreset"; - plural = "podpresets"; + resource = "podpresets"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1alpha1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "apiextensions.k8s.io"; version = "apiextensions.k8s.io/v1beta1"; kind = "CustomResourceDefinition"; - plural = "customresourcedefinitions"; + resource = "customresourcedefinitions"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1beta1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }]; }; } diff --git a/k8s/generated/v1.11.nix b/k8s/generated/v1.11.nix index b5d36cb..469057b 100644 --- a/k8s/generated/v1.11.nix +++ b/k8s/generated/v1.11.nix @@ -4,6 +4,14 @@ with lib; let + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = "str"; @@ -80,8 +88,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -30109,417 +30116,417 @@ in { group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "InitializerConfiguration"; - plural = "initializerconfigurations"; + resource = "initializerconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "MutatingWebhookConfiguration"; - plural = "mutatingwebhookconfigurations"; + resource = "mutatingwebhookconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "ValidatingWebhookConfiguration"; - plural = "validatingwebhookconfigurations"; + resource = "validatingwebhookconfigurations"; }{ group = "apps"; version = "apps/v1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "apps"; version = "apps/v1beta1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta2"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1beta1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "autoscaling"; version = "autoscaling/v1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "batch"; version = "batch/v1"; kind = "Job"; - plural = "jobs"; + resource = "jobs"; }{ group = "batch"; version = "batch/v1beta1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "batch"; version = "batch/v2alpha1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "certificates.k8s.io"; version = "certificates.k8s.io/v1beta1"; kind = "CertificateSigningRequest"; - plural = "certificatesigningrequests"; + resource = "certificatesigningrequests"; }{ group = "core"; version = "v1"; kind = "Binding"; - plural = "bindings"; + resource = "bindings"; }{ group = "core"; version = "v1"; kind = "ConfigMap"; - plural = "configmaps"; + resource = "configmaps"; }{ group = "core"; version = "v1"; kind = "Endpoints"; - plural = "endpoints"; + resource = "endpoints"; }{ group = "core"; version = "v1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "core"; version = "v1"; kind = "LimitRange"; - plural = "limitranges"; + resource = "limitranges"; }{ group = "core"; version = "v1"; kind = "Namespace"; - plural = "namespaces"; + resource = "namespaces"; }{ group = "core"; version = "v1"; kind = "Node"; - plural = "nodes"; + resource = "nodes"; }{ group = "core"; version = "v1"; kind = "PersistentVolume"; - plural = "persistentvolumes"; + resource = "persistentvolumes"; }{ group = "core"; version = "v1"; kind = "PersistentVolumeClaim"; - plural = "persistentvolumeclaims"; + resource = "persistentvolumeclaims"; }{ group = "core"; version = "v1"; kind = "Pod"; - plural = "pods"; + resource = "pods"; }{ group = "core"; version = "v1"; kind = "PodTemplate"; - plural = "podtemplates"; + resource = "podtemplates"; }{ group = "core"; version = "v1"; kind = "ReplicationController"; - plural = "replicationcontrollers"; + resource = "replicationcontrollers"; }{ group = "core"; version = "v1"; kind = "ResourceQuota"; - plural = "resourcequotas"; + resource = "resourcequotas"; }{ group = "core"; version = "v1"; kind = "Secret"; - plural = "secrets"; + resource = "secrets"; }{ group = "core"; version = "v1"; kind = "Service"; - plural = "services"; + resource = "services"; }{ group = "core"; version = "v1"; kind = "ServiceAccount"; - plural = "serviceaccounts"; + resource = "serviceaccounts"; }{ group = "events.k8s.io"; version = "events.k8s.io/v1beta1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Ingress"; - plural = "ingresses"; + resource = "ingresses"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "networking.k8s.io"; version = "networking.k8s.io/v1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "policy"; version = "policy/v1beta1"; kind = "Eviction"; - plural = "eviction"; + resource = "eviction"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodDisruptionBudget"; - plural = "poddisruptionbudgets"; + resource = "poddisruptionbudgets"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1alpha1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1beta1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "settings.k8s.io"; version = "settings.k8s.io/v1alpha1"; kind = "PodPreset"; - plural = "podpresets"; + resource = "podpresets"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1alpha1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "apiextensions.k8s.io"; version = "apiextensions.k8s.io/v1beta1"; kind = "CustomResourceDefinition"; - plural = "customresourcedefinitions"; + resource = "customresourcedefinitions"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1beta1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }]; }; } diff --git a/k8s/generated/v1.12.nix b/k8s/generated/v1.12.nix index 64e3c75..aa890db 100644 --- a/k8s/generated/v1.12.nix +++ b/k8s/generated/v1.12.nix @@ -4,6 +4,14 @@ with lib; let + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = "str"; @@ -80,8 +88,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -30908,427 +30915,427 @@ in { group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "InitializerConfiguration"; - plural = "initializerconfigurations"; + resource = "initializerconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "MutatingWebhookConfiguration"; - plural = "mutatingwebhookconfigurations"; + resource = "mutatingwebhookconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "ValidatingWebhookConfiguration"; - plural = "validatingwebhookconfigurations"; + resource = "validatingwebhookconfigurations"; }{ group = "apps"; version = "apps/v1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "apps"; version = "apps/v1beta1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta2"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1beta1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "autoscaling"; version = "autoscaling/v1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta2"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "batch"; version = "batch/v1"; kind = "Job"; - plural = "jobs"; + resource = "jobs"; }{ group = "batch"; version = "batch/v1beta1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "batch"; version = "batch/v2alpha1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "certificates.k8s.io"; version = "certificates.k8s.io/v1beta1"; kind = "CertificateSigningRequest"; - plural = "certificatesigningrequests"; + resource = "certificatesigningrequests"; }{ group = "coordination.k8s.io"; version = "coordination.k8s.io/v1beta1"; kind = "Lease"; - plural = "leases"; + resource = "leases"; }{ group = "core"; version = "v1"; kind = "Binding"; - plural = "bindings"; + resource = "bindings"; }{ group = "core"; version = "v1"; kind = "ConfigMap"; - plural = "configmaps"; + resource = "configmaps"; }{ group = "core"; version = "v1"; kind = "Endpoints"; - plural = "endpoints"; + resource = "endpoints"; }{ group = "core"; version = "v1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "core"; version = "v1"; kind = "LimitRange"; - plural = "limitranges"; + resource = "limitranges"; }{ group = "core"; version = "v1"; kind = "Namespace"; - plural = "namespaces"; + resource = "namespaces"; }{ group = "core"; version = "v1"; kind = "Node"; - plural = "nodes"; + resource = "nodes"; }{ group = "core"; version = "v1"; kind = "PersistentVolume"; - plural = "persistentvolumes"; + resource = "persistentvolumes"; }{ group = "core"; version = "v1"; kind = "PersistentVolumeClaim"; - plural = "persistentvolumeclaims"; + resource = "persistentvolumeclaims"; }{ group = "core"; version = "v1"; kind = "Pod"; - plural = "pods"; + resource = "pods"; }{ group = "core"; version = "v1"; kind = "PodTemplate"; - plural = "podtemplates"; + resource = "podtemplates"; }{ group = "core"; version = "v1"; kind = "ReplicationController"; - plural = "replicationcontrollers"; + resource = "replicationcontrollers"; }{ group = "core"; version = "v1"; kind = "ResourceQuota"; - plural = "resourcequotas"; + resource = "resourcequotas"; }{ group = "core"; version = "v1"; kind = "Secret"; - plural = "secrets"; + resource = "secrets"; }{ group = "core"; version = "v1"; kind = "Service"; - plural = "services"; + resource = "services"; }{ group = "core"; version = "v1"; kind = "ServiceAccount"; - plural = "serviceaccounts"; + resource = "serviceaccounts"; }{ group = "events.k8s.io"; version = "events.k8s.io/v1beta1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Ingress"; - plural = "ingresses"; + resource = "ingresses"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "networking.k8s.io"; version = "networking.k8s.io/v1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "policy"; version = "policy/v1beta1"; kind = "Eviction"; - plural = "eviction"; + resource = "eviction"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodDisruptionBudget"; - plural = "poddisruptionbudgets"; + resource = "poddisruptionbudgets"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1alpha1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1beta1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "settings.k8s.io"; version = "settings.k8s.io/v1alpha1"; kind = "PodPreset"; - plural = "podpresets"; + resource = "podpresets"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1alpha1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "apiextensions.k8s.io"; version = "apiextensions.k8s.io/v1beta1"; kind = "CustomResourceDefinition"; - plural = "customresourcedefinitions"; + resource = "customresourcedefinitions"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1beta1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }]; }; } diff --git a/k8s/generated/v1.13.nix b/k8s/generated/v1.13.nix index b0539e4..60f945d 100644 --- a/k8s/generated/v1.13.nix +++ b/k8s/generated/v1.13.nix @@ -4,6 +4,14 @@ with lib; let + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = "str"; @@ -80,8 +88,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -31528,437 +31535,437 @@ in { group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "InitializerConfiguration"; - plural = "initializerconfigurations"; + resource = "initializerconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "MutatingWebhookConfiguration"; - plural = "mutatingwebhookconfigurations"; + resource = "mutatingwebhookconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "ValidatingWebhookConfiguration"; - plural = "validatingwebhookconfigurations"; + resource = "validatingwebhookconfigurations"; }{ group = "apps"; version = "apps/v1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "apps"; version = "apps/v1beta1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta2"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "auditregistration.k8s.io"; version = "auditregistration.k8s.io/v1alpha1"; kind = "AuditSink"; - plural = "auditsinks"; + resource = "auditsinks"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1beta1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "autoscaling"; version = "autoscaling/v1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta2"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "batch"; version = "batch/v1"; kind = "Job"; - plural = "jobs"; + resource = "jobs"; }{ group = "batch"; version = "batch/v1beta1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "batch"; version = "batch/v2alpha1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "certificates.k8s.io"; version = "certificates.k8s.io/v1beta1"; kind = "CertificateSigningRequest"; - plural = "certificatesigningrequests"; + resource = "certificatesigningrequests"; }{ group = "coordination.k8s.io"; version = "coordination.k8s.io/v1beta1"; kind = "Lease"; - plural = "leases"; + resource = "leases"; }{ group = "core"; version = "v1"; kind = "Binding"; - plural = "bindings"; + resource = "bindings"; }{ group = "core"; version = "v1"; kind = "ConfigMap"; - plural = "configmaps"; + resource = "configmaps"; }{ group = "core"; version = "v1"; kind = "Endpoints"; - plural = "endpoints"; + resource = "endpoints"; }{ group = "core"; version = "v1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "core"; version = "v1"; kind = "LimitRange"; - plural = "limitranges"; + resource = "limitranges"; }{ group = "core"; version = "v1"; kind = "Namespace"; - plural = "namespaces"; + resource = "namespaces"; }{ group = "core"; version = "v1"; kind = "Node"; - plural = "nodes"; + resource = "nodes"; }{ group = "core"; version = "v1"; kind = "PersistentVolume"; - plural = "persistentvolumes"; + resource = "persistentvolumes"; }{ group = "core"; version = "v1"; kind = "PersistentVolumeClaim"; - plural = "persistentvolumeclaims"; + resource = "persistentvolumeclaims"; }{ group = "core"; version = "v1"; kind = "Pod"; - plural = "pods"; + resource = "pods"; }{ group = "core"; version = "v1"; kind = "PodTemplate"; - plural = "podtemplates"; + resource = "podtemplates"; }{ group = "core"; version = "v1"; kind = "ReplicationController"; - plural = "replicationcontrollers"; + resource = "replicationcontrollers"; }{ group = "core"; version = "v1"; kind = "ResourceQuota"; - plural = "resourcequotas"; + resource = "resourcequotas"; }{ group = "core"; version = "v1"; kind = "Secret"; - plural = "secrets"; + resource = "secrets"; }{ group = "core"; version = "v1"; kind = "Service"; - plural = "services"; + resource = "services"; }{ group = "core"; version = "v1"; kind = "ServiceAccount"; - plural = "serviceaccounts"; + resource = "serviceaccounts"; }{ group = "events.k8s.io"; version = "events.k8s.io/v1beta1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Ingress"; - plural = "ingresses"; + resource = "ingresses"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "networking.k8s.io"; version = "networking.k8s.io/v1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "policy"; version = "policy/v1beta1"; kind = "Eviction"; - plural = "eviction"; + resource = "eviction"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodDisruptionBudget"; - plural = "poddisruptionbudgets"; + resource = "poddisruptionbudgets"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1alpha1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1beta1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "settings.k8s.io"; version = "settings.k8s.io/v1alpha1"; kind = "PodPreset"; - plural = "podpresets"; + resource = "podpresets"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1alpha1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "apiextensions.k8s.io"; version = "apiextensions.k8s.io/v1beta1"; kind = "CustomResourceDefinition"; - plural = "customresourcedefinitions"; + resource = "customresourcedefinitions"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1beta1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }]; }; } diff --git a/k8s/generated/v1.7.nix b/k8s/generated/v1.7.nix index f63ba03..6c3b9f1 100644 --- a/k8s/generated/v1.7.nix +++ b/k8s/generated/v1.7.nix @@ -4,6 +4,14 @@ with lib; let + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = "str"; @@ -80,8 +88,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -12700,292 +12707,292 @@ in { group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1beta1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }{ group = "core"; version = "v1"; kind = "Binding"; - plural = "bindings"; + resource = "bindings"; }{ group = "core"; version = "v1"; kind = "ConfigMap"; - plural = "configmaps"; + resource = "configmaps"; }{ group = "core"; version = "v1"; kind = "Endpoints"; - plural = "endpoints"; + resource = "endpoints"; }{ group = "core"; version = "v1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "core"; version = "v1"; kind = "LimitRange"; - plural = "limitranges"; + resource = "limitranges"; }{ group = "core"; version = "v1"; kind = "Namespace"; - plural = "namespaces"; + resource = "namespaces"; }{ group = "core"; version = "v1"; kind = "Node"; - plural = "nodes"; + resource = "nodes"; }{ group = "core"; version = "v1"; kind = "PersistentVolume"; - plural = "persistentvolumes"; + resource = "persistentvolumes"; }{ group = "core"; version = "v1"; kind = "PersistentVolumeClaim"; - plural = "persistentvolumeclaims"; + resource = "persistentvolumeclaims"; }{ group = "core"; version = "v1"; kind = "Pod"; - plural = "pods"; + resource = "pods"; }{ group = "core"; version = "v1"; kind = "PodTemplate"; - plural = "podtemplates"; + resource = "podtemplates"; }{ group = "core"; version = "v1"; kind = "ReplicationController"; - plural = "replicationcontrollers"; + resource = "replicationcontrollers"; }{ group = "core"; version = "v1"; kind = "ResourceQuota"; - plural = "resourcequotas"; + resource = "resourcequotas"; }{ group = "core"; version = "v1"; kind = "Secret"; - plural = "secrets"; + resource = "secrets"; }{ group = "core"; version = "v1"; kind = "Service"; - plural = "services"; + resource = "services"; }{ group = "core"; version = "v1"; kind = "ServiceAccount"; - plural = "serviceaccounts"; + resource = "serviceaccounts"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "ExternalAdmissionHookConfiguration"; - plural = "externaladmissionhookconfigurations"; + resource = "externaladmissionhookconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "InitializerConfiguration"; - plural = "initializerconfigurations"; + resource = "initializerconfigurations"; }{ group = "apps"; version = "apps/v1beta1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "apps"; version = "apps/v1beta1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1beta1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "autoscaling"; version = "autoscaling/v1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2alpha1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "batch"; version = "batch/v1"; kind = "Job"; - plural = "jobs"; + resource = "jobs"; }{ group = "batch"; version = "batch/v2alpha1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "certificates.k8s.io"; version = "certificates.k8s.io/v1beta1"; kind = "CertificateSigningRequest"; - plural = "certificatesigningrequests"; + resource = "certificatesigningrequests"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Ingress"; - plural = "ingresses"; + resource = "ingresses"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ThirdPartyResource"; - plural = "thirdpartyresources"; + resource = "thirdpartyresources"; }{ group = "networking.k8s.io"; version = "networking.k8s.io/v1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "policy"; version = "policy/v1beta1"; kind = "Eviction"; - plural = "eviction"; + resource = "eviction"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodDisruptionBudget"; - plural = "poddisruptionbudgets"; + resource = "poddisruptionbudgets"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "settings.k8s.io"; version = "settings.k8s.io/v1alpha1"; kind = "PodPreset"; - plural = "podpresets"; + resource = "podpresets"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }]; }; } diff --git a/k8s/generated/v1.8.nix b/k8s/generated/v1.8.nix index 7579e6d..57f2672 100644 --- a/k8s/generated/v1.8.nix +++ b/k8s/generated/v1.8.nix @@ -4,6 +4,14 @@ with lib; let + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = "str"; @@ -80,8 +88,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -26385,357 +26392,357 @@ in { group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "ExternalAdmissionHookConfiguration"; - plural = "externaladmissionhookconfigurations"; + resource = "externaladmissionhookconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "InitializerConfiguration"; - plural = "initializerconfigurations"; + resource = "initializerconfigurations"; }{ group = "apps"; version = "apps/v1beta1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "apps"; version = "apps/v1beta1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta2"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1beta1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "autoscaling"; version = "autoscaling/v1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "batch"; version = "batch/v1"; kind = "Job"; - plural = "jobs"; + resource = "jobs"; }{ group = "batch"; version = "batch/v1beta1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "batch"; version = "batch/v2alpha1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "certificates.k8s.io"; version = "certificates.k8s.io/v1beta1"; kind = "CertificateSigningRequest"; - plural = "certificatesigningrequests"; + resource = "certificatesigningrequests"; }{ group = "core"; version = "v1"; kind = "Binding"; - plural = "bindings"; + resource = "bindings"; }{ group = "core"; version = "v1"; kind = "ConfigMap"; - plural = "configmaps"; + resource = "configmaps"; }{ group = "core"; version = "v1"; kind = "Endpoints"; - plural = "endpoints"; + resource = "endpoints"; }{ group = "core"; version = "v1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "core"; version = "v1"; kind = "LimitRange"; - plural = "limitranges"; + resource = "limitranges"; }{ group = "core"; version = "v1"; kind = "Namespace"; - plural = "namespaces"; + resource = "namespaces"; }{ group = "core"; version = "v1"; kind = "Node"; - plural = "nodes"; + resource = "nodes"; }{ group = "core"; version = "v1"; kind = "PersistentVolume"; - plural = "persistentvolumes"; + resource = "persistentvolumes"; }{ group = "core"; version = "v1"; kind = "PersistentVolumeClaim"; - plural = "persistentvolumeclaims"; + resource = "persistentvolumeclaims"; }{ group = "core"; version = "v1"; kind = "Pod"; - plural = "pods"; + resource = "pods"; }{ group = "core"; version = "v1"; kind = "PodTemplate"; - plural = "podtemplates"; + resource = "podtemplates"; }{ group = "core"; version = "v1"; kind = "ReplicationController"; - plural = "replicationcontrollers"; + resource = "replicationcontrollers"; }{ group = "core"; version = "v1"; kind = "ResourceQuota"; - plural = "resourcequotas"; + resource = "resourcequotas"; }{ group = "core"; version = "v1"; kind = "Secret"; - plural = "secrets"; + resource = "secrets"; }{ group = "core"; version = "v1"; kind = "Service"; - plural = "services"; + resource = "services"; }{ group = "core"; version = "v1"; kind = "ServiceAccount"; - plural = "serviceaccounts"; + resource = "serviceaccounts"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Ingress"; - plural = "ingresses"; + resource = "ingresses"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "networking.k8s.io"; version = "networking.k8s.io/v1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "policy"; version = "policy/v1beta1"; kind = "Eviction"; - plural = "eviction"; + resource = "eviction"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodDisruptionBudget"; - plural = "poddisruptionbudgets"; + resource = "poddisruptionbudgets"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1alpha1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "settings.k8s.io"; version = "settings.k8s.io/v1alpha1"; kind = "PodPreset"; - plural = "podpresets"; + resource = "podpresets"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "apiextensions.k8s.io"; version = "apiextensions.k8s.io/v1beta1"; kind = "CustomResourceDefinition"; - plural = "customresourcedefinitions"; + resource = "customresourcedefinitions"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1beta1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }]; }; } diff --git a/k8s/generated/v1.9.nix b/k8s/generated/v1.9.nix index b13befb..897c8ac 100644 --- a/k8s/generated/v1.9.nix +++ b/k8s/generated/v1.9.nix @@ -4,6 +4,14 @@ with lib; let + getDefaults = resource: group: version: kind: + catAttrs "default" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = "str"; @@ -80,8 +88,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -28578,397 +28585,397 @@ in { group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1alpha1"; kind = "InitializerConfiguration"; - plural = "initializerconfigurations"; + resource = "initializerconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "MutatingWebhookConfiguration"; - plural = "mutatingwebhookconfigurations"; + resource = "mutatingwebhookconfigurations"; }{ group = "admissionregistration.k8s.io"; version = "admissionregistration.k8s.io/v1beta1"; kind = "ValidatingWebhookConfiguration"; - plural = "validatingwebhookconfigurations"; + resource = "validatingwebhookconfigurations"; }{ group = "apps"; version = "apps/v1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta1"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "apps"; version = "apps/v1beta1"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ControllerRevision"; - plural = "controllerrevisions"; + resource = "controllerrevisions"; }{ group = "apps"; version = "apps/v1beta2"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "apps"; version = "apps/v1beta2"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "apps"; version = "apps/v1beta2"; kind = "StatefulSet"; - plural = "statefulsets"; + resource = "statefulsets"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authentication.k8s.io"; version = "authentication.k8s.io/v1beta1"; kind = "TokenReview"; - plural = "tokenreviews"; + resource = "tokenreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "LocalSubjectAccessReview"; - plural = "localsubjectaccessreviews"; + resource = "localsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectAccessReview"; - plural = "selfsubjectaccessreviews"; + resource = "selfsubjectaccessreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SelfSubjectRulesReview"; - plural = "selfsubjectrulesreviews"; + resource = "selfsubjectrulesreviews"; }{ group = "authorization.k8s.io"; version = "authorization.k8s.io/v1beta1"; kind = "SubjectAccessReview"; - plural = "subjectaccessreviews"; + resource = "subjectaccessreviews"; }{ group = "autoscaling"; version = "autoscaling/v1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "autoscaling"; version = "autoscaling/v2beta1"; kind = "HorizontalPodAutoscaler"; - plural = "horizontalpodautoscalers"; + resource = "horizontalpodautoscalers"; }{ group = "batch"; version = "batch/v1"; kind = "Job"; - plural = "jobs"; + resource = "jobs"; }{ group = "batch"; version = "batch/v1beta1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "batch"; version = "batch/v2alpha1"; kind = "CronJob"; - plural = "cronjobs"; + resource = "cronjobs"; }{ group = "certificates.k8s.io"; version = "certificates.k8s.io/v1beta1"; kind = "CertificateSigningRequest"; - plural = "certificatesigningrequests"; + resource = "certificatesigningrequests"; }{ group = "core"; version = "v1"; kind = "Binding"; - plural = "bindings"; + resource = "bindings"; }{ group = "core"; version = "v1"; kind = "ConfigMap"; - plural = "configmaps"; + resource = "configmaps"; }{ group = "core"; version = "v1"; kind = "Endpoints"; - plural = "endpoints"; + resource = "endpoints"; }{ group = "core"; version = "v1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "core"; version = "v1"; kind = "LimitRange"; - plural = "limitranges"; + resource = "limitranges"; }{ group = "core"; version = "v1"; kind = "Namespace"; - plural = "namespaces"; + resource = "namespaces"; }{ group = "core"; version = "v1"; kind = "Node"; - plural = "nodes"; + resource = "nodes"; }{ group = "core"; version = "v1"; kind = "PersistentVolume"; - plural = "persistentvolumes"; + resource = "persistentvolumes"; }{ group = "core"; version = "v1"; kind = "PersistentVolumeClaim"; - plural = "persistentvolumeclaims"; + resource = "persistentvolumeclaims"; }{ group = "core"; version = "v1"; kind = "Pod"; - plural = "pods"; + resource = "pods"; }{ group = "core"; version = "v1"; kind = "PodTemplate"; - plural = "podtemplates"; + resource = "podtemplates"; }{ group = "core"; version = "v1"; kind = "ReplicationController"; - plural = "replicationcontrollers"; + resource = "replicationcontrollers"; }{ group = "core"; version = "v1"; kind = "ResourceQuota"; - plural = "resourcequotas"; + resource = "resourcequotas"; }{ group = "core"; version = "v1"; kind = "Secret"; - plural = "secrets"; + resource = "secrets"; }{ group = "core"; version = "v1"; kind = "Service"; - plural = "services"; + resource = "services"; }{ group = "core"; version = "v1"; kind = "ServiceAccount"; - plural = "serviceaccounts"; + resource = "serviceaccounts"; }{ group = "events.k8s.io"; version = "events.k8s.io/v1beta1"; kind = "Event"; - plural = "events"; + resource = "events"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DaemonSet"; - plural = "daemonsets"; + resource = "daemonsets"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Deployment"; - plural = "deployments"; + resource = "deployments"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "DeploymentRollback"; - plural = "rollback"; + resource = "rollback"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "Ingress"; - plural = "ingresses"; + resource = "ingresses"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "PodSecurityPolicy"; - plural = "podsecuritypolicies"; + resource = "podsecuritypolicies"; }{ group = "extensions"; version = "extensions/v1beta1"; kind = "ReplicaSet"; - plural = "replicasets"; + resource = "replicasets"; }{ group = "networking.k8s.io"; version = "networking.k8s.io/v1"; kind = "NetworkPolicy"; - plural = "networkpolicies"; + resource = "networkpolicies"; }{ group = "policy"; version = "policy/v1beta1"; kind = "Eviction"; - plural = "eviction"; + resource = "eviction"; }{ group = "policy"; version = "policy/v1beta1"; kind = "PodDisruptionBudget"; - plural = "poddisruptionbudgets"; + resource = "poddisruptionbudgets"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1alpha1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRole"; - plural = "clusterroles"; + resource = "clusterroles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "ClusterRoleBinding"; - plural = "clusterrolebindings"; + resource = "clusterrolebindings"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "Role"; - plural = "roles"; + resource = "roles"; }{ group = "rbac.authorization.k8s.io"; version = "rbac.authorization.k8s.io/v1beta1"; kind = "RoleBinding"; - plural = "rolebindings"; + resource = "rolebindings"; }{ group = "scheduling.k8s.io"; version = "scheduling.k8s.io/v1alpha1"; kind = "PriorityClass"; - plural = "priorityclasses"; + resource = "priorityclasses"; }{ group = "settings.k8s.io"; version = "settings.k8s.io/v1alpha1"; kind = "PodPreset"; - plural = "podpresets"; + resource = "podpresets"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1alpha1"; kind = "VolumeAttachment"; - plural = "volumeattachments"; + resource = "volumeattachments"; }{ group = "storage.k8s.io"; version = "storage.k8s.io/v1beta1"; kind = "StorageClass"; - plural = "storageclasses"; + resource = "storageclasses"; }{ group = "apiextensions.k8s.io"; version = "apiextensions.k8s.io/v1beta1"; kind = "CustomResourceDefinition"; - plural = "customresourcedefinitions"; + resource = "customresourcedefinitions"; }{ group = "apiregistration.k8s.io"; version = "apiregistration.k8s.io/v1beta1"; kind = "APIService"; - plural = "apiservices"; + resource = "apiservices"; }]; }; } diff --git a/k8s/generator.nix b/k8s/generator.nix index 6e5d36f..3836758 100644 --- a/k8s/generator.nix +++ b/k8s/generator.nix @@ -207,7 +207,7 @@ let kind = path.post."x-kubernetes-group-version-kind".kind; version = if group' != "" then "${group'}/${version'}" else version'; - plural = last (splitString "/" name); + resource = last (splitString "/" name); description = swagger.definitions.${ref}.description; group = if group' == "" then "core" else group'; defintion = refDefinition (head path.post.parameters).schema; @@ -238,7 +238,7 @@ let genResourceOptions = resource: with gen; let submoduleForDefinition' = definition: let in submoduleForDefinition - definition.ref definition.plural definition.kind definition.group definition.version; + definition.ref definition.resource definition.kind definition.group definition.version; in mkOption { description = resource.description; type = types.attrsOf (submoduleForDefinition' resource); @@ -251,6 +251,14 @@ in pkgs.writeText "gen.nix" with lib; let + getDefaults = resource: group: version: kind: + catAttrs \"default\" (filter (default: + (default.resource == null || default.resource == resource) && + (default.group == null || default.group == group) && + (default.version == null || default.version == version) && + (default.kind == null || default.kind == kind) + ) config.defaults); + types = lib.types // rec { str = mkOptionType { name = \"str\"; @@ -327,8 +335,7 @@ let # metdata.name cannot use option default, due deep config metadata.name = mkOptionDefault name; } - ] ++ (config.defaults.\${resource} or []) - ++ (config.defaults.all or [])); + ] ++ (getDefaults resource group version kind)); }); coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo @@ -354,11 +361,11 @@ in { options = {${concatStrings (mapAttrsToList (name: resource: " \"${resource.group}\".\"${resource.version}\".\"${resource.kind}\" = ${genResourceOptions resource}; ") resources)}} // {${concatStrings (mapAttrsToList (name: resource: " - \"${resource.plural}\" = ${genResourceOptions resource}; + \"${resource.resource}\" = ${genResourceOptions resource}; ") latestResourcesByKind)}}; config = {${concatStrings (mapAttrsToList (name: resource: " - \"${resource.group}\".\"${resource.version}\".\"${resource.kind}\" = config.\"${resource.plural}\"; + \"${resource.group}\".\"${resource.version}\".\"${resource.kind}\" = config.\"${resource.resource}\"; ") latestResourcesByKind)}} // { inherit definitions; @@ -366,7 +373,7 @@ in { group = \"${resource.group}\"; version = \"${resource.version}\"; kind = \"${resource.kind}\"; - plural = \"${resource.plural}\"; + resource = \"${resource.resource}\"; }") resources)}]; }; } diff --git a/tests/k8s/crd.nix b/tests/k8s/crd.nix index 11d4b51..0c4c913 100644 --- a/tests/k8s/crd.nix +++ b/tests/k8s/crd.nix @@ -43,7 +43,7 @@ in { group = "stable.example.com"; version = "v1"; kind = "CronTab"; - plural = "crontabs"; + resource = "crontabs"; description = "CronTabs resources"; module = { options.schedule = mkOption {