feat(k8s): refactor defaults

This commit is contained in:
Jaka Hudoklin 2019-02-26 21:22:03 +01:00
parent 9bc2406ff2
commit d925d71ed7
No known key found for this signature in database
GPG key ID: 6A08896BFD32BD95
10 changed files with 682 additions and 586 deletions

View file

@ -5,6 +5,14 @@ with lib;
let let
removeKubenixOptions = filterAttrs (name: attr: name != "kubenix"); 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: moduleToAttrs = value:
if isAttrs value if isAttrs value
then mapAttrs (n: v: moduleToAttrs v) (filterAttrs (n: v: !(hasPrefix "_" n) && v != null) value) then mapAttrs (n: v: moduleToAttrs v) (filterAttrs (n: v: !(hasPrefix "_" n) && v != null) value)
@ -35,32 +43,64 @@ let
}; };
defaults = mkOption { defaults = mkOption {
description = "Kubernetes defaults"; description = "Kubernetes defaults to apply to resources";
type = types.attrsOf (types.coercedTo types.unspecified (value: [value]) (types.listOf types.unspecified)); type = types.listOf (types.submodule ({config, ...}: {
default = {}; 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 { resources = mkOption {
type = types.listOf (types.submodule { type = types.listOf (types.submodule {
options = { options = {
group = mkOption { group = mkOption {
description = "Group name"; description = "Resoruce group";
type = types.str; type = types.str;
}; };
version = mkOption { version = mkOption {
description = "Version name"; description = "Resoruce version";
type = types.str; type = types.str;
}; };
kind = mkOption { kind = mkOption {
description = "kind name"; description = "Resource kind";
type = types.str; type = types.str;
}; };
plural = mkOption { resource = mkOption {
description = "Plural name"; description = "Resource name";
type = types.str; type = type.str;
}; };
}; };
}); });
@ -113,8 +153,7 @@ in {
apiVersion = mkOptionDefault "${cr.group}/${cr.version}"; apiVersion = mkOptionDefault "${cr.group}/${cr.version}";
kind = mkOptionDefault cr.kind; kind = mkOptionDefault cr.kind;
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
}] }] ++ (getDefaults cr.resource cr.group cr.version cr.kind));
++ (config.kubernetes.defaults.all or []));
})); }));
default = {}; default = {};
}; };
@ -125,36 +164,37 @@ in {
options.kubernetes.customResources = mkOption { options.kubernetes.customResources = mkOption {
default = []; default = [];
description = "List of custom resource definitions to make API for";
type = types.listOf (types.submodule ({config, ...}: { type = types.listOf (types.submodule ({config, ...}: {
options = { options = {
group = mkOption { group = mkOption {
description = "CRD group"; description = "Custom resource definition group";
type = types.str; type = types.str;
}; };
version = mkOption { version = mkOption {
description = "CRD version"; description = "Custom resource definition version";
type = types.str; type = types.str;
}; };
kind = mkOption { kind = mkOption {
description = "CRD kind"; description = "Custom resource definition kind";
type = types.str; type = types.str;
}; };
plural = mkOption { resource = mkOption {
description = "CRD plural name"; description = "Custom resource definition resource name";
type = types.str; type = types.str;
}; };
description = mkOption { description = mkOption {
description = "CRD description"; description = "Custom resource definition description";
type = types.str; type = types.str;
default = ""; default = "";
}; };
module = mkOption { module = mkOption {
description = "CRD module"; description = "Custom resource definition module";
default = types.unspecified; default = types.unspecified;
}; };
}; };
@ -162,7 +202,7 @@ in {
}; };
config.kubernetes.api.resources = map (cr: { config.kubernetes.api.resources = map (cr: {
inherit (cr) group version kind plural; inherit (cr) group version kind resource;
}) config.kubernetes.customResources; }) config.kubernetes.customResources;
options.kubernetes.objects = mkOption { options.kubernetes.objects = mkOption {

View file

@ -4,6 +4,14 @@
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = "str"; name = "str";
@ -80,8 +88,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -29576,412 +29583,412 @@ in {
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "InitializerConfiguration"; kind = "InitializerConfiguration";
plural = "initializerconfigurations"; resource = "initializerconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "MutatingWebhookConfiguration"; kind = "MutatingWebhookConfiguration";
plural = "mutatingwebhookconfigurations"; resource = "mutatingwebhookconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "ValidatingWebhookConfiguration"; kind = "ValidatingWebhookConfiguration";
plural = "validatingwebhookconfigurations"; resource = "validatingwebhookconfigurations";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1"; version = "authentication.k8s.io/v1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1beta1"; version = "authentication.k8s.io/v1beta1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v1"; version = "autoscaling/v1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta1"; version = "autoscaling/v2beta1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1"; version = "batch/v1";
kind = "Job"; kind = "Job";
plural = "jobs"; resource = "jobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1beta1"; version = "batch/v1beta1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v2alpha1"; version = "batch/v2alpha1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "certificates.k8s.io"; group = "certificates.k8s.io";
version = "certificates.k8s.io/v1beta1"; version = "certificates.k8s.io/v1beta1";
kind = "CertificateSigningRequest"; kind = "CertificateSigningRequest";
plural = "certificatesigningrequests"; resource = "certificatesigningrequests";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Binding"; kind = "Binding";
plural = "bindings"; resource = "bindings";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ConfigMap"; kind = "ConfigMap";
plural = "configmaps"; resource = "configmaps";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Endpoints"; kind = "Endpoints";
plural = "endpoints"; resource = "endpoints";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "LimitRange"; kind = "LimitRange";
plural = "limitranges"; resource = "limitranges";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Namespace"; kind = "Namespace";
plural = "namespaces"; resource = "namespaces";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Node"; kind = "Node";
plural = "nodes"; resource = "nodes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolume"; kind = "PersistentVolume";
plural = "persistentvolumes"; resource = "persistentvolumes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolumeClaim"; kind = "PersistentVolumeClaim";
plural = "persistentvolumeclaims"; resource = "persistentvolumeclaims";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Pod"; kind = "Pod";
plural = "pods"; resource = "pods";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PodTemplate"; kind = "PodTemplate";
plural = "podtemplates"; resource = "podtemplates";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ReplicationController"; kind = "ReplicationController";
plural = "replicationcontrollers"; resource = "replicationcontrollers";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ResourceQuota"; kind = "ResourceQuota";
plural = "resourcequotas"; resource = "resourcequotas";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Secret"; kind = "Secret";
plural = "secrets"; resource = "secrets";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Service"; kind = "Service";
plural = "services"; resource = "services";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
plural = "serviceaccounts"; resource = "serviceaccounts";
}{ }{
group = "events.k8s.io"; group = "events.k8s.io";
version = "events.k8s.io/v1beta1"; version = "events.k8s.io/v1beta1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Ingress"; kind = "Ingress";
plural = "ingresses"; resource = "ingresses";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "networking.k8s.io"; group = "networking.k8s.io";
version = "networking.k8s.io/v1"; version = "networking.k8s.io/v1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "Eviction"; kind = "Eviction";
plural = "eviction"; resource = "eviction";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodDisruptionBudget"; kind = "PodDisruptionBudget";
plural = "poddisruptionbudgets"; resource = "poddisruptionbudgets";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1alpha1"; version = "scheduling.k8s.io/v1alpha1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "settings.k8s.io"; group = "settings.k8s.io";
version = "settings.k8s.io/v1alpha1"; version = "settings.k8s.io/v1alpha1";
kind = "PodPreset"; kind = "PodPreset";
plural = "podpresets"; resource = "podpresets";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1alpha1"; version = "storage.k8s.io/v1alpha1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "apiextensions.k8s.io"; group = "apiextensions.k8s.io";
version = "apiextensions.k8s.io/v1beta1"; version = "apiextensions.k8s.io/v1beta1";
kind = "CustomResourceDefinition"; kind = "CustomResourceDefinition";
plural = "customresourcedefinitions"; resource = "customresourcedefinitions";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1"; version = "apiregistration.k8s.io/v1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1beta1"; version = "apiregistration.k8s.io/v1beta1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}]; }];
}; };
} }

View file

@ -4,6 +4,14 @@
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = "str"; name = "str";
@ -80,8 +88,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -30109,417 +30116,417 @@ in {
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "InitializerConfiguration"; kind = "InitializerConfiguration";
plural = "initializerconfigurations"; resource = "initializerconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "MutatingWebhookConfiguration"; kind = "MutatingWebhookConfiguration";
plural = "mutatingwebhookconfigurations"; resource = "mutatingwebhookconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "ValidatingWebhookConfiguration"; kind = "ValidatingWebhookConfiguration";
plural = "validatingwebhookconfigurations"; resource = "validatingwebhookconfigurations";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1"; version = "authentication.k8s.io/v1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1beta1"; version = "authentication.k8s.io/v1beta1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v1"; version = "autoscaling/v1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta1"; version = "autoscaling/v2beta1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1"; version = "batch/v1";
kind = "Job"; kind = "Job";
plural = "jobs"; resource = "jobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1beta1"; version = "batch/v1beta1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v2alpha1"; version = "batch/v2alpha1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "certificates.k8s.io"; group = "certificates.k8s.io";
version = "certificates.k8s.io/v1beta1"; version = "certificates.k8s.io/v1beta1";
kind = "CertificateSigningRequest"; kind = "CertificateSigningRequest";
plural = "certificatesigningrequests"; resource = "certificatesigningrequests";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Binding"; kind = "Binding";
plural = "bindings"; resource = "bindings";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ConfigMap"; kind = "ConfigMap";
plural = "configmaps"; resource = "configmaps";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Endpoints"; kind = "Endpoints";
plural = "endpoints"; resource = "endpoints";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "LimitRange"; kind = "LimitRange";
plural = "limitranges"; resource = "limitranges";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Namespace"; kind = "Namespace";
plural = "namespaces"; resource = "namespaces";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Node"; kind = "Node";
plural = "nodes"; resource = "nodes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolume"; kind = "PersistentVolume";
plural = "persistentvolumes"; resource = "persistentvolumes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolumeClaim"; kind = "PersistentVolumeClaim";
plural = "persistentvolumeclaims"; resource = "persistentvolumeclaims";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Pod"; kind = "Pod";
plural = "pods"; resource = "pods";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PodTemplate"; kind = "PodTemplate";
plural = "podtemplates"; resource = "podtemplates";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ReplicationController"; kind = "ReplicationController";
plural = "replicationcontrollers"; resource = "replicationcontrollers";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ResourceQuota"; kind = "ResourceQuota";
plural = "resourcequotas"; resource = "resourcequotas";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Secret"; kind = "Secret";
plural = "secrets"; resource = "secrets";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Service"; kind = "Service";
plural = "services"; resource = "services";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
plural = "serviceaccounts"; resource = "serviceaccounts";
}{ }{
group = "events.k8s.io"; group = "events.k8s.io";
version = "events.k8s.io/v1beta1"; version = "events.k8s.io/v1beta1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Ingress"; kind = "Ingress";
plural = "ingresses"; resource = "ingresses";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "networking.k8s.io"; group = "networking.k8s.io";
version = "networking.k8s.io/v1"; version = "networking.k8s.io/v1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "Eviction"; kind = "Eviction";
plural = "eviction"; resource = "eviction";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodDisruptionBudget"; kind = "PodDisruptionBudget";
plural = "poddisruptionbudgets"; resource = "poddisruptionbudgets";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1alpha1"; version = "scheduling.k8s.io/v1alpha1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1beta1"; version = "scheduling.k8s.io/v1beta1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "settings.k8s.io"; group = "settings.k8s.io";
version = "settings.k8s.io/v1alpha1"; version = "settings.k8s.io/v1alpha1";
kind = "PodPreset"; kind = "PodPreset";
plural = "podpresets"; resource = "podpresets";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1alpha1"; version = "storage.k8s.io/v1alpha1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "apiextensions.k8s.io"; group = "apiextensions.k8s.io";
version = "apiextensions.k8s.io/v1beta1"; version = "apiextensions.k8s.io/v1beta1";
kind = "CustomResourceDefinition"; kind = "CustomResourceDefinition";
plural = "customresourcedefinitions"; resource = "customresourcedefinitions";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1"; version = "apiregistration.k8s.io/v1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1beta1"; version = "apiregistration.k8s.io/v1beta1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}]; }];
}; };
} }

View file

@ -4,6 +4,14 @@
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = "str"; name = "str";
@ -80,8 +88,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -30908,427 +30915,427 @@ in {
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "InitializerConfiguration"; kind = "InitializerConfiguration";
plural = "initializerconfigurations"; resource = "initializerconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "MutatingWebhookConfiguration"; kind = "MutatingWebhookConfiguration";
plural = "mutatingwebhookconfigurations"; resource = "mutatingwebhookconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "ValidatingWebhookConfiguration"; kind = "ValidatingWebhookConfiguration";
plural = "validatingwebhookconfigurations"; resource = "validatingwebhookconfigurations";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1"; version = "authentication.k8s.io/v1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1beta1"; version = "authentication.k8s.io/v1beta1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v1"; version = "autoscaling/v1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta1"; version = "autoscaling/v2beta1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta2"; version = "autoscaling/v2beta2";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1"; version = "batch/v1";
kind = "Job"; kind = "Job";
plural = "jobs"; resource = "jobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1beta1"; version = "batch/v1beta1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v2alpha1"; version = "batch/v2alpha1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "certificates.k8s.io"; group = "certificates.k8s.io";
version = "certificates.k8s.io/v1beta1"; version = "certificates.k8s.io/v1beta1";
kind = "CertificateSigningRequest"; kind = "CertificateSigningRequest";
plural = "certificatesigningrequests"; resource = "certificatesigningrequests";
}{ }{
group = "coordination.k8s.io"; group = "coordination.k8s.io";
version = "coordination.k8s.io/v1beta1"; version = "coordination.k8s.io/v1beta1";
kind = "Lease"; kind = "Lease";
plural = "leases"; resource = "leases";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Binding"; kind = "Binding";
plural = "bindings"; resource = "bindings";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ConfigMap"; kind = "ConfigMap";
plural = "configmaps"; resource = "configmaps";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Endpoints"; kind = "Endpoints";
plural = "endpoints"; resource = "endpoints";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "LimitRange"; kind = "LimitRange";
plural = "limitranges"; resource = "limitranges";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Namespace"; kind = "Namespace";
plural = "namespaces"; resource = "namespaces";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Node"; kind = "Node";
plural = "nodes"; resource = "nodes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolume"; kind = "PersistentVolume";
plural = "persistentvolumes"; resource = "persistentvolumes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolumeClaim"; kind = "PersistentVolumeClaim";
plural = "persistentvolumeclaims"; resource = "persistentvolumeclaims";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Pod"; kind = "Pod";
plural = "pods"; resource = "pods";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PodTemplate"; kind = "PodTemplate";
plural = "podtemplates"; resource = "podtemplates";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ReplicationController"; kind = "ReplicationController";
plural = "replicationcontrollers"; resource = "replicationcontrollers";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ResourceQuota"; kind = "ResourceQuota";
plural = "resourcequotas"; resource = "resourcequotas";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Secret"; kind = "Secret";
plural = "secrets"; resource = "secrets";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Service"; kind = "Service";
plural = "services"; resource = "services";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
plural = "serviceaccounts"; resource = "serviceaccounts";
}{ }{
group = "events.k8s.io"; group = "events.k8s.io";
version = "events.k8s.io/v1beta1"; version = "events.k8s.io/v1beta1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Ingress"; kind = "Ingress";
plural = "ingresses"; resource = "ingresses";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "networking.k8s.io"; group = "networking.k8s.io";
version = "networking.k8s.io/v1"; version = "networking.k8s.io/v1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "Eviction"; kind = "Eviction";
plural = "eviction"; resource = "eviction";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodDisruptionBudget"; kind = "PodDisruptionBudget";
plural = "poddisruptionbudgets"; resource = "poddisruptionbudgets";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1alpha1"; version = "scheduling.k8s.io/v1alpha1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1beta1"; version = "scheduling.k8s.io/v1beta1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "settings.k8s.io"; group = "settings.k8s.io";
version = "settings.k8s.io/v1alpha1"; version = "settings.k8s.io/v1alpha1";
kind = "PodPreset"; kind = "PodPreset";
plural = "podpresets"; resource = "podpresets";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1alpha1"; version = "storage.k8s.io/v1alpha1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "apiextensions.k8s.io"; group = "apiextensions.k8s.io";
version = "apiextensions.k8s.io/v1beta1"; version = "apiextensions.k8s.io/v1beta1";
kind = "CustomResourceDefinition"; kind = "CustomResourceDefinition";
plural = "customresourcedefinitions"; resource = "customresourcedefinitions";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1"; version = "apiregistration.k8s.io/v1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1beta1"; version = "apiregistration.k8s.io/v1beta1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}]; }];
}; };
} }

View file

@ -4,6 +4,14 @@
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = "str"; name = "str";
@ -80,8 +88,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -31528,437 +31535,437 @@ in {
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "InitializerConfiguration"; kind = "InitializerConfiguration";
plural = "initializerconfigurations"; resource = "initializerconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "MutatingWebhookConfiguration"; kind = "MutatingWebhookConfiguration";
plural = "mutatingwebhookconfigurations"; resource = "mutatingwebhookconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "ValidatingWebhookConfiguration"; kind = "ValidatingWebhookConfiguration";
plural = "validatingwebhookconfigurations"; resource = "validatingwebhookconfigurations";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "auditregistration.k8s.io"; group = "auditregistration.k8s.io";
version = "auditregistration.k8s.io/v1alpha1"; version = "auditregistration.k8s.io/v1alpha1";
kind = "AuditSink"; kind = "AuditSink";
plural = "auditsinks"; resource = "auditsinks";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1"; version = "authentication.k8s.io/v1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1beta1"; version = "authentication.k8s.io/v1beta1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v1"; version = "autoscaling/v1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta1"; version = "autoscaling/v2beta1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta2"; version = "autoscaling/v2beta2";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1"; version = "batch/v1";
kind = "Job"; kind = "Job";
plural = "jobs"; resource = "jobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1beta1"; version = "batch/v1beta1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v2alpha1"; version = "batch/v2alpha1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "certificates.k8s.io"; group = "certificates.k8s.io";
version = "certificates.k8s.io/v1beta1"; version = "certificates.k8s.io/v1beta1";
kind = "CertificateSigningRequest"; kind = "CertificateSigningRequest";
plural = "certificatesigningrequests"; resource = "certificatesigningrequests";
}{ }{
group = "coordination.k8s.io"; group = "coordination.k8s.io";
version = "coordination.k8s.io/v1beta1"; version = "coordination.k8s.io/v1beta1";
kind = "Lease"; kind = "Lease";
plural = "leases"; resource = "leases";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Binding"; kind = "Binding";
plural = "bindings"; resource = "bindings";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ConfigMap"; kind = "ConfigMap";
plural = "configmaps"; resource = "configmaps";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Endpoints"; kind = "Endpoints";
plural = "endpoints"; resource = "endpoints";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "LimitRange"; kind = "LimitRange";
plural = "limitranges"; resource = "limitranges";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Namespace"; kind = "Namespace";
plural = "namespaces"; resource = "namespaces";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Node"; kind = "Node";
plural = "nodes"; resource = "nodes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolume"; kind = "PersistentVolume";
plural = "persistentvolumes"; resource = "persistentvolumes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolumeClaim"; kind = "PersistentVolumeClaim";
plural = "persistentvolumeclaims"; resource = "persistentvolumeclaims";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Pod"; kind = "Pod";
plural = "pods"; resource = "pods";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PodTemplate"; kind = "PodTemplate";
plural = "podtemplates"; resource = "podtemplates";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ReplicationController"; kind = "ReplicationController";
plural = "replicationcontrollers"; resource = "replicationcontrollers";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ResourceQuota"; kind = "ResourceQuota";
plural = "resourcequotas"; resource = "resourcequotas";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Secret"; kind = "Secret";
plural = "secrets"; resource = "secrets";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Service"; kind = "Service";
plural = "services"; resource = "services";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
plural = "serviceaccounts"; resource = "serviceaccounts";
}{ }{
group = "events.k8s.io"; group = "events.k8s.io";
version = "events.k8s.io/v1beta1"; version = "events.k8s.io/v1beta1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Ingress"; kind = "Ingress";
plural = "ingresses"; resource = "ingresses";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "networking.k8s.io"; group = "networking.k8s.io";
version = "networking.k8s.io/v1"; version = "networking.k8s.io/v1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "Eviction"; kind = "Eviction";
plural = "eviction"; resource = "eviction";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodDisruptionBudget"; kind = "PodDisruptionBudget";
plural = "poddisruptionbudgets"; resource = "poddisruptionbudgets";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1alpha1"; version = "scheduling.k8s.io/v1alpha1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1beta1"; version = "scheduling.k8s.io/v1beta1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "settings.k8s.io"; group = "settings.k8s.io";
version = "settings.k8s.io/v1alpha1"; version = "settings.k8s.io/v1alpha1";
kind = "PodPreset"; kind = "PodPreset";
plural = "podpresets"; resource = "podpresets";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1alpha1"; version = "storage.k8s.io/v1alpha1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "apiextensions.k8s.io"; group = "apiextensions.k8s.io";
version = "apiextensions.k8s.io/v1beta1"; version = "apiextensions.k8s.io/v1beta1";
kind = "CustomResourceDefinition"; kind = "CustomResourceDefinition";
plural = "customresourcedefinitions"; resource = "customresourcedefinitions";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1"; version = "apiregistration.k8s.io/v1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1beta1"; version = "apiregistration.k8s.io/v1beta1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}]; }];
}; };
} }

View file

@ -4,6 +4,14 @@
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = "str"; name = "str";
@ -80,8 +88,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -12700,292 +12707,292 @@ in {
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1beta1"; version = "apiregistration.k8s.io/v1beta1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Binding"; kind = "Binding";
plural = "bindings"; resource = "bindings";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ConfigMap"; kind = "ConfigMap";
plural = "configmaps"; resource = "configmaps";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Endpoints"; kind = "Endpoints";
plural = "endpoints"; resource = "endpoints";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "LimitRange"; kind = "LimitRange";
plural = "limitranges"; resource = "limitranges";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Namespace"; kind = "Namespace";
plural = "namespaces"; resource = "namespaces";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Node"; kind = "Node";
plural = "nodes"; resource = "nodes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolume"; kind = "PersistentVolume";
plural = "persistentvolumes"; resource = "persistentvolumes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolumeClaim"; kind = "PersistentVolumeClaim";
plural = "persistentvolumeclaims"; resource = "persistentvolumeclaims";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Pod"; kind = "Pod";
plural = "pods"; resource = "pods";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PodTemplate"; kind = "PodTemplate";
plural = "podtemplates"; resource = "podtemplates";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ReplicationController"; kind = "ReplicationController";
plural = "replicationcontrollers"; resource = "replicationcontrollers";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ResourceQuota"; kind = "ResourceQuota";
plural = "resourcequotas"; resource = "resourcequotas";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Secret"; kind = "Secret";
plural = "secrets"; resource = "secrets";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Service"; kind = "Service";
plural = "services"; resource = "services";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
plural = "serviceaccounts"; resource = "serviceaccounts";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "ExternalAdmissionHookConfiguration"; kind = "ExternalAdmissionHookConfiguration";
plural = "externaladmissionhookconfigurations"; resource = "externaladmissionhookconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "InitializerConfiguration"; kind = "InitializerConfiguration";
plural = "initializerconfigurations"; resource = "initializerconfigurations";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1"; version = "authentication.k8s.io/v1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1beta1"; version = "authentication.k8s.io/v1beta1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v1"; version = "autoscaling/v1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2alpha1"; version = "autoscaling/v2alpha1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1"; version = "batch/v1";
kind = "Job"; kind = "Job";
plural = "jobs"; resource = "jobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v2alpha1"; version = "batch/v2alpha1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "certificates.k8s.io"; group = "certificates.k8s.io";
version = "certificates.k8s.io/v1beta1"; version = "certificates.k8s.io/v1beta1";
kind = "CertificateSigningRequest"; kind = "CertificateSigningRequest";
plural = "certificatesigningrequests"; resource = "certificatesigningrequests";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Ingress"; kind = "Ingress";
plural = "ingresses"; resource = "ingresses";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ThirdPartyResource"; kind = "ThirdPartyResource";
plural = "thirdpartyresources"; resource = "thirdpartyresources";
}{ }{
group = "networking.k8s.io"; group = "networking.k8s.io";
version = "networking.k8s.io/v1"; version = "networking.k8s.io/v1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "Eviction"; kind = "Eviction";
plural = "eviction"; resource = "eviction";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodDisruptionBudget"; kind = "PodDisruptionBudget";
plural = "poddisruptionbudgets"; resource = "poddisruptionbudgets";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "settings.k8s.io"; group = "settings.k8s.io";
version = "settings.k8s.io/v1alpha1"; version = "settings.k8s.io/v1alpha1";
kind = "PodPreset"; kind = "PodPreset";
plural = "podpresets"; resource = "podpresets";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}]; }];
}; };
} }

View file

@ -4,6 +4,14 @@
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = "str"; name = "str";
@ -80,8 +88,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -26385,357 +26392,357 @@ in {
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "ExternalAdmissionHookConfiguration"; kind = "ExternalAdmissionHookConfiguration";
plural = "externaladmissionhookconfigurations"; resource = "externaladmissionhookconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "InitializerConfiguration"; kind = "InitializerConfiguration";
plural = "initializerconfigurations"; resource = "initializerconfigurations";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1"; version = "authentication.k8s.io/v1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1beta1"; version = "authentication.k8s.io/v1beta1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v1"; version = "autoscaling/v1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta1"; version = "autoscaling/v2beta1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1"; version = "batch/v1";
kind = "Job"; kind = "Job";
plural = "jobs"; resource = "jobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1beta1"; version = "batch/v1beta1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v2alpha1"; version = "batch/v2alpha1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "certificates.k8s.io"; group = "certificates.k8s.io";
version = "certificates.k8s.io/v1beta1"; version = "certificates.k8s.io/v1beta1";
kind = "CertificateSigningRequest"; kind = "CertificateSigningRequest";
plural = "certificatesigningrequests"; resource = "certificatesigningrequests";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Binding"; kind = "Binding";
plural = "bindings"; resource = "bindings";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ConfigMap"; kind = "ConfigMap";
plural = "configmaps"; resource = "configmaps";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Endpoints"; kind = "Endpoints";
plural = "endpoints"; resource = "endpoints";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "LimitRange"; kind = "LimitRange";
plural = "limitranges"; resource = "limitranges";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Namespace"; kind = "Namespace";
plural = "namespaces"; resource = "namespaces";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Node"; kind = "Node";
plural = "nodes"; resource = "nodes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolume"; kind = "PersistentVolume";
plural = "persistentvolumes"; resource = "persistentvolumes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolumeClaim"; kind = "PersistentVolumeClaim";
plural = "persistentvolumeclaims"; resource = "persistentvolumeclaims";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Pod"; kind = "Pod";
plural = "pods"; resource = "pods";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PodTemplate"; kind = "PodTemplate";
plural = "podtemplates"; resource = "podtemplates";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ReplicationController"; kind = "ReplicationController";
plural = "replicationcontrollers"; resource = "replicationcontrollers";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ResourceQuota"; kind = "ResourceQuota";
plural = "resourcequotas"; resource = "resourcequotas";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Secret"; kind = "Secret";
plural = "secrets"; resource = "secrets";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Service"; kind = "Service";
plural = "services"; resource = "services";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
plural = "serviceaccounts"; resource = "serviceaccounts";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Ingress"; kind = "Ingress";
plural = "ingresses"; resource = "ingresses";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "networking.k8s.io"; group = "networking.k8s.io";
version = "networking.k8s.io/v1"; version = "networking.k8s.io/v1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "Eviction"; kind = "Eviction";
plural = "eviction"; resource = "eviction";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodDisruptionBudget"; kind = "PodDisruptionBudget";
plural = "poddisruptionbudgets"; resource = "poddisruptionbudgets";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1alpha1"; version = "scheduling.k8s.io/v1alpha1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "settings.k8s.io"; group = "settings.k8s.io";
version = "settings.k8s.io/v1alpha1"; version = "settings.k8s.io/v1alpha1";
kind = "PodPreset"; kind = "PodPreset";
plural = "podpresets"; resource = "podpresets";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "apiextensions.k8s.io"; group = "apiextensions.k8s.io";
version = "apiextensions.k8s.io/v1beta1"; version = "apiextensions.k8s.io/v1beta1";
kind = "CustomResourceDefinition"; kind = "CustomResourceDefinition";
plural = "customresourcedefinitions"; resource = "customresourcedefinitions";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1beta1"; version = "apiregistration.k8s.io/v1beta1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}]; }];
}; };
} }

View file

@ -4,6 +4,14 @@
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = "str"; name = "str";
@ -80,8 +88,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -28578,397 +28585,397 @@ in {
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1alpha1"; version = "admissionregistration.k8s.io/v1alpha1";
kind = "InitializerConfiguration"; kind = "InitializerConfiguration";
plural = "initializerconfigurations"; resource = "initializerconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "MutatingWebhookConfiguration"; kind = "MutatingWebhookConfiguration";
plural = "mutatingwebhookconfigurations"; resource = "mutatingwebhookconfigurations";
}{ }{
group = "admissionregistration.k8s.io"; group = "admissionregistration.k8s.io";
version = "admissionregistration.k8s.io/v1beta1"; version = "admissionregistration.k8s.io/v1beta1";
kind = "ValidatingWebhookConfiguration"; kind = "ValidatingWebhookConfiguration";
plural = "validatingwebhookconfigurations"; resource = "validatingwebhookconfigurations";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1"; version = "apps/v1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta1"; version = "apps/v1beta1";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ControllerRevision"; kind = "ControllerRevision";
plural = "controllerrevisions"; resource = "controllerrevisions";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "apps"; group = "apps";
version = "apps/v1beta2"; version = "apps/v1beta2";
kind = "StatefulSet"; kind = "StatefulSet";
plural = "statefulsets"; resource = "statefulsets";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1"; version = "authentication.k8s.io/v1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authentication.k8s.io"; group = "authentication.k8s.io";
version = "authentication.k8s.io/v1beta1"; version = "authentication.k8s.io/v1beta1";
kind = "TokenReview"; kind = "TokenReview";
plural = "tokenreviews"; resource = "tokenreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1"; version = "authorization.k8s.io/v1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "LocalSubjectAccessReview"; kind = "LocalSubjectAccessReview";
plural = "localsubjectaccessreviews"; resource = "localsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectAccessReview"; kind = "SelfSubjectAccessReview";
plural = "selfsubjectaccessreviews"; resource = "selfsubjectaccessreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SelfSubjectRulesReview"; kind = "SelfSubjectRulesReview";
plural = "selfsubjectrulesreviews"; resource = "selfsubjectrulesreviews";
}{ }{
group = "authorization.k8s.io"; group = "authorization.k8s.io";
version = "authorization.k8s.io/v1beta1"; version = "authorization.k8s.io/v1beta1";
kind = "SubjectAccessReview"; kind = "SubjectAccessReview";
plural = "subjectaccessreviews"; resource = "subjectaccessreviews";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v1"; version = "autoscaling/v1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "autoscaling"; group = "autoscaling";
version = "autoscaling/v2beta1"; version = "autoscaling/v2beta1";
kind = "HorizontalPodAutoscaler"; kind = "HorizontalPodAutoscaler";
plural = "horizontalpodautoscalers"; resource = "horizontalpodautoscalers";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1"; version = "batch/v1";
kind = "Job"; kind = "Job";
plural = "jobs"; resource = "jobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v1beta1"; version = "batch/v1beta1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "batch"; group = "batch";
version = "batch/v2alpha1"; version = "batch/v2alpha1";
kind = "CronJob"; kind = "CronJob";
plural = "cronjobs"; resource = "cronjobs";
}{ }{
group = "certificates.k8s.io"; group = "certificates.k8s.io";
version = "certificates.k8s.io/v1beta1"; version = "certificates.k8s.io/v1beta1";
kind = "CertificateSigningRequest"; kind = "CertificateSigningRequest";
plural = "certificatesigningrequests"; resource = "certificatesigningrequests";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Binding"; kind = "Binding";
plural = "bindings"; resource = "bindings";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ConfigMap"; kind = "ConfigMap";
plural = "configmaps"; resource = "configmaps";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Endpoints"; kind = "Endpoints";
plural = "endpoints"; resource = "endpoints";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "LimitRange"; kind = "LimitRange";
plural = "limitranges"; resource = "limitranges";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Namespace"; kind = "Namespace";
plural = "namespaces"; resource = "namespaces";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Node"; kind = "Node";
plural = "nodes"; resource = "nodes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolume"; kind = "PersistentVolume";
plural = "persistentvolumes"; resource = "persistentvolumes";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PersistentVolumeClaim"; kind = "PersistentVolumeClaim";
plural = "persistentvolumeclaims"; resource = "persistentvolumeclaims";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Pod"; kind = "Pod";
plural = "pods"; resource = "pods";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "PodTemplate"; kind = "PodTemplate";
plural = "podtemplates"; resource = "podtemplates";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ReplicationController"; kind = "ReplicationController";
plural = "replicationcontrollers"; resource = "replicationcontrollers";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ResourceQuota"; kind = "ResourceQuota";
plural = "resourcequotas"; resource = "resourcequotas";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Secret"; kind = "Secret";
plural = "secrets"; resource = "secrets";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "Service"; kind = "Service";
plural = "services"; resource = "services";
}{ }{
group = "core"; group = "core";
version = "v1"; version = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
plural = "serviceaccounts"; resource = "serviceaccounts";
}{ }{
group = "events.k8s.io"; group = "events.k8s.io";
version = "events.k8s.io/v1beta1"; version = "events.k8s.io/v1beta1";
kind = "Event"; kind = "Event";
plural = "events"; resource = "events";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DaemonSet"; kind = "DaemonSet";
plural = "daemonsets"; resource = "daemonsets";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Deployment"; kind = "Deployment";
plural = "deployments"; resource = "deployments";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "DeploymentRollback"; kind = "DeploymentRollback";
plural = "rollback"; resource = "rollback";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "Ingress"; kind = "Ingress";
plural = "ingresses"; resource = "ingresses";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "PodSecurityPolicy"; kind = "PodSecurityPolicy";
plural = "podsecuritypolicies"; resource = "podsecuritypolicies";
}{ }{
group = "extensions"; group = "extensions";
version = "extensions/v1beta1"; version = "extensions/v1beta1";
kind = "ReplicaSet"; kind = "ReplicaSet";
plural = "replicasets"; resource = "replicasets";
}{ }{
group = "networking.k8s.io"; group = "networking.k8s.io";
version = "networking.k8s.io/v1"; version = "networking.k8s.io/v1";
kind = "NetworkPolicy"; kind = "NetworkPolicy";
plural = "networkpolicies"; resource = "networkpolicies";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "Eviction"; kind = "Eviction";
plural = "eviction"; resource = "eviction";
}{ }{
group = "policy"; group = "policy";
version = "policy/v1beta1"; version = "policy/v1beta1";
kind = "PodDisruptionBudget"; kind = "PodDisruptionBudget";
plural = "poddisruptionbudgets"; resource = "poddisruptionbudgets";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1"; version = "rbac.authorization.k8s.io/v1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1alpha1"; version = "rbac.authorization.k8s.io/v1alpha1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
plural = "clusterroles"; resource = "clusterroles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRoleBinding"; kind = "ClusterRoleBinding";
plural = "clusterrolebindings"; resource = "clusterrolebindings";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "Role"; kind = "Role";
plural = "roles"; resource = "roles";
}{ }{
group = "rbac.authorization.k8s.io"; group = "rbac.authorization.k8s.io";
version = "rbac.authorization.k8s.io/v1beta1"; version = "rbac.authorization.k8s.io/v1beta1";
kind = "RoleBinding"; kind = "RoleBinding";
plural = "rolebindings"; resource = "rolebindings";
}{ }{
group = "scheduling.k8s.io"; group = "scheduling.k8s.io";
version = "scheduling.k8s.io/v1alpha1"; version = "scheduling.k8s.io/v1alpha1";
kind = "PriorityClass"; kind = "PriorityClass";
plural = "priorityclasses"; resource = "priorityclasses";
}{ }{
group = "settings.k8s.io"; group = "settings.k8s.io";
version = "settings.k8s.io/v1alpha1"; version = "settings.k8s.io/v1alpha1";
kind = "PodPreset"; kind = "PodPreset";
plural = "podpresets"; resource = "podpresets";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1"; version = "storage.k8s.io/v1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1alpha1"; version = "storage.k8s.io/v1alpha1";
kind = "VolumeAttachment"; kind = "VolumeAttachment";
plural = "volumeattachments"; resource = "volumeattachments";
}{ }{
group = "storage.k8s.io"; group = "storage.k8s.io";
version = "storage.k8s.io/v1beta1"; version = "storage.k8s.io/v1beta1";
kind = "StorageClass"; kind = "StorageClass";
plural = "storageclasses"; resource = "storageclasses";
}{ }{
group = "apiextensions.k8s.io"; group = "apiextensions.k8s.io";
version = "apiextensions.k8s.io/v1beta1"; version = "apiextensions.k8s.io/v1beta1";
kind = "CustomResourceDefinition"; kind = "CustomResourceDefinition";
plural = "customresourcedefinitions"; resource = "customresourcedefinitions";
}{ }{
group = "apiregistration.k8s.io"; group = "apiregistration.k8s.io";
version = "apiregistration.k8s.io/v1beta1"; version = "apiregistration.k8s.io/v1beta1";
kind = "APIService"; kind = "APIService";
plural = "apiservices"; resource = "apiservices";
}]; }];
}; };
} }

View file

@ -207,7 +207,7 @@ let
kind = path.post."x-kubernetes-group-version-kind".kind; kind = path.post."x-kubernetes-group-version-kind".kind;
version = if group' != "" then "${group'}/${version'}" else version'; version = if group' != "" then "${group'}/${version'}" else version';
plural = last (splitString "/" name); resource = last (splitString "/" name);
description = swagger.definitions.${ref}.description; description = swagger.definitions.${ref}.description;
group = if group' == "" then "core" else group'; group = if group' == "" then "core" else group';
defintion = refDefinition (head path.post.parameters).schema; defintion = refDefinition (head path.post.parameters).schema;
@ -238,7 +238,7 @@ let
genResourceOptions = resource: with gen; let genResourceOptions = resource: with gen; let
submoduleForDefinition' = definition: let submoduleForDefinition' = definition: let
in submoduleForDefinition in submoduleForDefinition
definition.ref definition.plural definition.kind definition.group definition.version; definition.ref definition.resource definition.kind definition.group definition.version;
in mkOption { in mkOption {
description = resource.description; description = resource.description;
type = types.attrsOf (submoduleForDefinition' resource); type = types.attrsOf (submoduleForDefinition' resource);
@ -251,6 +251,14 @@ in pkgs.writeText "gen.nix"
with lib; with lib;
let 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 { types = lib.types // rec {
str = mkOptionType { str = mkOptionType {
name = \"str\"; name = \"str\";
@ -327,8 +335,7 @@ let
# metdata.name cannot use option default, due deep config # metdata.name cannot use option default, due deep config
metadata.name = mkOptionDefault name; metadata.name = mkOptionDefault name;
} }
] ++ (config.defaults.\${resource} or []) ] ++ (getDefaults resource group version kind));
++ (config.defaults.all or []));
}); });
coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (types.coercedTo
@ -354,11 +361,11 @@ in {
options = {${concatStrings (mapAttrsToList (name: resource: " options = {${concatStrings (mapAttrsToList (name: resource: "
\"${resource.group}\".\"${resource.version}\".\"${resource.kind}\" = ${genResourceOptions resource}; \"${resource.group}\".\"${resource.version}\".\"${resource.kind}\" = ${genResourceOptions resource};
") resources)}} // {${concatStrings (mapAttrsToList (name: resource: " ") resources)}} // {${concatStrings (mapAttrsToList (name: resource: "
\"${resource.plural}\" = ${genResourceOptions resource}; \"${resource.resource}\" = ${genResourceOptions resource};
") latestResourcesByKind)}}; ") latestResourcesByKind)}};
config = {${concatStrings (mapAttrsToList (name: resource: " config = {${concatStrings (mapAttrsToList (name: resource: "
\"${resource.group}\".\"${resource.version}\".\"${resource.kind}\" = config.\"${resource.plural}\"; \"${resource.group}\".\"${resource.version}\".\"${resource.kind}\" = config.\"${resource.resource}\";
") latestResourcesByKind)}} // { ") latestResourcesByKind)}} // {
inherit definitions; inherit definitions;
@ -366,7 +373,7 @@ in {
group = \"${resource.group}\"; group = \"${resource.group}\";
version = \"${resource.version}\"; version = \"${resource.version}\";
kind = \"${resource.kind}\"; kind = \"${resource.kind}\";
plural = \"${resource.plural}\"; resource = \"${resource.resource}\";
}") resources)}]; }") resources)}];
}; };
} }

View file

@ -43,7 +43,7 @@ in {
group = "stable.example.com"; group = "stable.example.com";
version = "v1"; version = "v1";
kind = "CronTab"; kind = "CronTab";
plural = "crontabs"; resource = "crontabs";
description = "CronTabs resources"; description = "CronTabs resources";
module = { module = {
options.schedule = mkOption { options.schedule = mkOption {