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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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