diff --git a/.gitignore b/.gitignore index 7344fb0..a5c180f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ __pycache__ # yaml build directory build + +# Visual Studio Code +.vscode/ diff --git a/README.md b/README.md index 335a54c..a696c14 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -![Rubiks Logo](docs/logos/rubiks-logo-horizontal.png) +
+ +
# Rubiks - a kubernetes yaml file manager @@ -30,3 +32,4 @@ See also `rubiks help` for more information on how to use it - [Rubiks repositories and the .rubiks file](docs/Rubiks%20repositories%20and%20the%20.rubiks%20file.md) - [Examples](https://github.com/olx-global/rubiks-examples) - [Logo Variants](docs/logos/logos.md) +- [Classes Definitions](docs/rubiks.class.md) diff --git a/docs/rubiks.class.md b/docs/rubiks.class.md new file mode 100644 index 0000000..be6dcf1 --- /dev/null +++ b/docs/rubiks.class.md @@ -0,0 +1,1589 @@ + + +# Rubiks Object Index + +This document is automatically generated using the command `docgen` and describe all the object and types that can be used inside Rubiks to configure your cluster + +It is possible to generate this documentation locally running inside your rubiks repo `rubiks docgen`. + + +# Table of contents + +- [Formats](#formats) + - [Base64](#base64) + - [Command](#command) + - [Confidential](#confidential) + - [JSON](#json) + - [YAML](#yaml) +- [Types](#types) + - [ARN](#arn) + - [Boolean](#boolean) + - [CaseIdentifier](#caseidentifier) + - [ColonIdentifier](#colonidentifier) + - [Domain](#domain) + - [Enum](#enum) + - [IP](#ip) + - [IPv4](#ipv4) + - [IPv6](#ipv6) + - [Identifier](#identifier) + - [Integer](#integer) + - [List](#list) + - [NonEmpty](#nonempty) + - [NonZero](#nonzero) + - [Nullable](#nullable) + - [Number](#number) + - [Path](#path) + - [Positive](#positive) + - [String](#string) + - [SurgeSpec](#surgespec) + - [SystemIdentifier](#systemidentifier) +- [Objects](#objects) + - [AWSElasticBlockStore](#awselasticblockstore) + - [AWSLoadBalancerService](#awsloadbalancerservice) + - [BaseSelector](#baseselector) + - [ClusterIPService](#clusteripservice) + - [ClusterRole](#clusterrole) + - [ClusterRoleBinding](#clusterrolebinding) + - [ConfigMap](#configmap) + - [ContainerEnvBaseSpec](#containerenvbasespec) + - [ContainerEnvConfigMapSpec](#containerenvconfigmapspec) + - [ContainerEnvContainerResourceSpec](#containerenvcontainerresourcespec) + - [ContainerEnvPodFieldSpec](#containerenvpodfieldspec) + - [ContainerEnvSecretSpec](#containerenvsecretspec) + - [ContainerEnvSpec](#containerenvspec) + - [ContainerPort](#containerport) + - [ContainerProbeBaseSpec](#containerprobebasespec) + - [ContainerProbeHTTPSpec](#containerprobehttpspec) + - [ContainerProbeTCPPortSpec](#containerprobetcpportspec) + - [ContainerResourceEachSpec](#containerresourceeachspec) + - [ContainerResourceSpec](#containerresourcespec) + - [ContainerSpec](#containerspec) + - [ContainerVolumeMountSpec](#containervolumemountspec) + - [DCBaseUpdateStrategy](#dcbaseupdatestrategy) + - [DCConfigChangeTrigger](#dcconfigchangetrigger) + - [DCCustomParams](#dccustomparams) + - [DCCustomStrategy](#dccustomstrategy) + - [DCImageChangeTrigger](#dcimagechangetrigger) + - [DCLifecycleHook](#dclifecyclehook) + - [DCLifecycleNewPod](#dclifecyclenewpod) + - [DCRecreateParams](#dcrecreateparams) + - [DCRecreateStrategy](#dcrecreatestrategy) + - [DCRollingParams](#dcrollingparams) + - [DCRollingStrategy](#dcrollingstrategy) + - [DCTagImages](#dctagimages) + - [DCTrigger](#dctrigger) + - [DaemonSet](#daemonset) + - [Deployment](#deployment) + - [DeploymentConfig](#deploymentconfig) + - [DockerCredentials](#dockercredentials) + - [DplBaseUpdateStrategy](#dplbaseupdatestrategy) + - [DplRecreateStrategy](#dplrecreatestrategy) + - [DplRollingUpdateStrategy](#dplrollingupdatestrategy) + - [Group](#group) + - [Job](#job) + - [LifeCycle](#lifecycle) + - [LifeCycleExec](#lifecycleexec) + - [LifeCycleHTTP](#lifecyclehttp) + - [LifeCycleProbe](#lifecycleprobe) + - [MatchExpression](#matchexpression) + - [MatchExpressionsSelector](#matchexpressionsselector) + - [MatchLabelsSelector](#matchlabelsselector) + - [Namespace](#namespace) + - [PersistentVolume](#persistentvolume) + - [PersistentVolumeClaim](#persistentvolumeclaim) + - [PersistentVolumeRef](#persistentvolumeref) + - [PodImagePullSecret](#podimagepullsecret) + - [PodTemplateSpec](#podtemplatespec) + - [PodVolumeBaseSpec](#podvolumebasespec) + - [PodVolumeConfigMapSpec](#podvolumeconfigmapspec) + - [PodVolumeEmptyDirSpec](#podvolumeemptydirspec) + - [PodVolumeHostSpec](#podvolumehostspec) + - [PodVolumeItemMapper](#podvolumeitemmapper) + - [PodVolumePVCSpec](#podvolumepvcspec) + - [PodVolumeSecretSpec](#podvolumesecretspec) + - [PolicyBinding](#policybinding) + - [PolicyBindingRoleBinding](#policybindingrolebinding) + - [PolicyRule](#policyrule) + - [Project](#project) + - [ReplicationController](#replicationcontroller) + - [Role](#role) + - [RoleBinding](#rolebinding) + - [RoleRef](#roleref) + - [RoleSubject](#rolesubject) + - [Route](#route) + - [RouteDest](#routedest) + - [RouteDestPort](#routedestport) + - [RouteDestService](#routedestservice) + - [RouteTLS](#routetls) + - [SAImgPullSecretSubject](#saimgpullsecretsubject) + - [SASecretSubject](#sasecretsubject) + - [SCCGroupRange](#sccgrouprange) + - [SCCGroups](#sccgroups) + - [SCCRunAsUser](#sccrunasuser) + - [SCCSELinux](#sccselinux) + - [Secret](#secret) + - [SecurityContext](#securitycontext) + - [SecurityContextConstraints](#securitycontextconstraints) + - [Service](#service) + - [ServiceAccount](#serviceaccount) + - [ServicePort](#serviceport) + - [StorageClass](#storageclass) + - [TLSCredentials](#tlscredentials) + - [User](#user) + +# Formats + +## Base64 + + +It is representing a [base64](https://en.wikipedia.org/wiki/Base64) encoded strign + + +## Command + + +It is representing a docker command to be executed by kubernetes in the process of spinning up a new Pod + + +## Confidential + + +It is representing a confidential/secret string that needs to not be displayed publicly + + +## JSON + + +It is representing a [JSON](https://en.wikipedia.org/wiki/JSON) object + + +## YAML + + +It is representing a [YAML](https://en.wikipedia.org/wiki/YAML) object + + + +# Types + +## ARN + + +Amazon Resource Names (ARNs) uniquely identify AWS resources. + +The following are the general formats for ARNs; the specific components and values used depend on the AWS service. + +``` +arn:partition:service:region:account-id:resource +arn:partition:service:region:account-id:resourcetype/resource +arn:partition:service:region:account-id:resourcetype:resource +``` + +**partition** + +The partition that the resource is in. For standard AWS regions, the partition is aws. If you have resources in other partitions, the partition is aws-partitionname. For example, the partition for resources in the China (Beijing) region is aws-cn. + +**service** + +The service namespace that identifies the AWS product (for example, Amazon S3, IAM, or Amazon RDS). For a list of namespaces, see AWS Service Namespaces. + +**region** + +The region the resource resides in. Note that the ARNs for some resources do not require a region, so this component might be omitted. + +**account** + +The ID of the AWS account that owns the resource, without the hyphens. For example, 123456789012. Note that the ARNs for some resources don't require an account number, so this component might be omitted. + +**resource, resourcetype:resource, or resourcetype/resource** + +The content of this part of the ARN varies by service. It often includes an indicator of the type of resource—for example, an IAM user or Amazon RDS database —followed by a slash (/) or a colon (:), followed by the resource name itself. Some services allow paths for resource names, as described in Paths in ARNs. + + +## Boolean + + +Boolean, or boolean logic, is a subset of algebra used for creating true/false statements. +Boolean expressions use the operators AND, OR, XOR, and NOT to compare values and return a true or false result. + + +## CaseIdentifier + + +An Identifier should be shorten thsn 253 chars and alphanum or . or - + + +## ColonIdentifier + + +An Identifier should be shorten than 253 chars and lc alphanum or . or - or : + + +## Domain + + +The definitive descriptions of the rules for forming domain names appear in [RFC 1035](https://tools.ietf.org/html/rfc1035), [RFC 1123](https://tools.ietf.org/html/rfc1123), and [RFC 2181](https://tools.ietf.org/html/rfc2181). A domain name consists of one or more parts, technically called labels, that are conventionally concatenated, and delimited by dots, such as `example.com`. + +The right-most label conveys the top-level domain; for example, the domain name `www.example.com` belongs to the top-level domain `com`. + +The hierarchy of domains descends from right to left; each label to the left specifies a subdivision, or subdomain of the domain to the right. For example, the label example specifies a subdomain of the com domain, and www is a subdomain of example.com. +This tree of subdivisions may have up to 127 levels. + +A label may contain zero to 63 characters. The null label, of length zero, is reserved for the root zone. +The full domain name may not exceed the length of 253 characters in its textual representation.In the internal binary representation of the DNS the maximum length requires 255 octets of storage, as it also stores the length of the name. + +Although no technical limitation exists to use any character in domain name labels which are representable by an octet, hostnames use a preferred format and character set. +The characters allowed in labels are a subset of the ASCII character set, consisting of characters a through z, A through Z, digits 0 through 9, and hyphen. +This rule is known as the LDH rule (letters, digits, hyphen). +Domain names are interpreted in case-independent manner. +Labels may not start or end with a hyphen. An additional rule requires that top-level domain names should not be all-numeric.[20] + + +## Enum + + +Enum, short for "enumerated," is a data type that consists of predefined values. A constant or variable defined as an enum can store one of the values listed in the enum declaration. + +**Example** + +`Enum('Value1', 'Value2', 'Value3')` + + +## IP + + +An Internet Protocol address (IP address) is a numerical label assigned to each device connected to a computer network that uses the Internet Protocol for communication. + +An IP address serves two principal functions: host or network interface identification and location addressing. + +Valid IP could be either IPv4 ~~or IPv6~~ + + +## IPv4 + + +Internet Protocol Version 4 (IPv4) is the fourth revision of the Internet Protocol and a widely used protocol in data communication over different kinds of networks. + +IPv4 is a connectionless protocol used in packet-switched layer networks, such as Ethernet. + +More documentation can be found on [that URL](https://en.wikipedia.org/wiki/IPv6) + + +## IPv6 + + +Internet Protocol Version 6 (IPv6) is an Internet Protocol (IP) used for carrying data in packets from a source to a destination over various networks. + +IPv6 is the enhanced version of IPv4 and can support very large numbers of nodes as compared to IPv4. + +It allows for 2128 possible node, or address, combinations. + +More documentation can be found on [that URL](https://en.wikipedia.org/wiki/IPv6) + +**NOTE:** This function is experimental please report any issue with that. + + +## Identifier + + +An Identifier should be shorter than 253 chars and lc alphanum or . or - + + +## Integer + + +An integer is a whole number (not a fraction) that can be positive, negative, or zero. +Therefore, the numbers 10, 0, -25, and 5,148 are all integers. Unlike floating point numbers, integers cannot have decimal places. + + +## List + + +This field is enforcing a check to a field to determinate if a list was actually provided as parameter. + + +## NonEmpty + + +This wrapper is ensuring that a field could not be left empty but needs to have a valid value. + + +## NonZero + + +Represent any number that is not 0. +Will be accepted positive and negative of any kind. + + +## Nullable + + +This wrapper if telling to rubiks that the parameter could be some valid value or null(None in python) + + +## Number + + +An integer is a whole number (not a fraction) that can be positive, negative, floating or zero. + + +## Path + + +A path, the general form of the name of a file or directory, specifies a unique location in a file system. +A path points to a file system location by following the directory tree hierarchy expressed in a string of characters in which path components, separated by a delimiting character, represent each directory. +The delimiting character is most commonly the slash ("/"), the backslash character (""), or colon (":"), though some operating systems may use a different delimiter. +Paths are used extensively in computer science to represent the directory/file relationships common in modern operating systems, and are essential in the construction of Uniform Resource Locators (URLs). +Resources can be represented by either absolute or relative paths. + +More info could be fount [here](https://en.wikipedia.org/wiki/Path_(computing)) + + +## Positive + + +Define a number that needs to be positive (0 is included as positive) + + +## String + + +String is any finite sequence of characters (i.e., letters, numerals, symbols and punctuation marks). + + +## SurgeSpec + + +SurgeSpec is expection surge/unavailable type ie integer or percent + + +## SystemIdentifier + + +An Identifier should be shorten than 253 chars and lc alphanum or . or - or : + + + +# Objects + +## AWSElasticBlockStore +### Parent types: +- [PersistentVolume](#persistentvolume) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +fsType | [Enum](#enum)('ext4') | False | - | - +volumeID | [AWSVolID](#awsvolid) | False | - | - +## AWSLoadBalancerService +### Parents: +- [Service](#service) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +aws-load-balancer-backend-protocol | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +aws-load-balancer-ssl-cert | [Nullable](#nullable)<[ARN](#arn)> | False | - | - +externalTrafficPolicy | [Nullable](#nullable)<[Enum](#enum)('Cluster', 'Local')> | False | - | - +ports | [NonEmpty](#nonempty)<[List](#list)<[ServicePort](#serviceport)>> | False | <unknown transformation> | - +selector | [NonEmpty](#nonempty)<[Map](#map)<[String](#string), [String](#string)>> | False | <unknown transformation> | - +sessionAffinity | [Nullable](#nullable)<[Enum](#enum)('ClientIP', 'None')> | False | - | - +## BaseSelector +### Children: +- [MatchLabelsSelector](#matchlabelsselector) +- [MatchExpressionsSelector](#matchexpressionsselector) +### Parent types: +- [DaemonSet](#daemonset) +- [Deployment](#deployment) +- [Job](#job) +- [PersistentVolumeClaim](#persistentvolumeclaim) +## ClusterIPService +### Parents: +- [Service](#service) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +clusterIP | [Nullable](#nullable)<[IPv4](#ipv4)> | False | - | - +ports | [NonEmpty](#nonempty)<[List](#list)<[ServicePort](#serviceport)>> | False | <unknown transformation> | - +selector | [NonEmpty](#nonempty)<[Map](#map)<[String](#string), [String](#string)>> | False | <unknown transformation> | - +sessionAffinity | [Nullable](#nullable)<[Enum](#enum)('ClientIP', 'None')> | False | - | - +## ClusterRole +### Parents: +- [RoleBase](#rolebase) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +rules | [NonEmpty](#nonempty)<[List](#list)<[PolicyRule](#policyrule)>> | False | - | - +## ClusterRoleBinding +### Parents: +- [RoleBindingBase](#rolebindingbase) +- [RoleBindingXF](#rolebindingxf) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +roleRef | [RoleRef](#roleref) | False | <unknown transformation> | - +subjects | [NonEmpty](#nonempty)<[List](#list)<[RoleSubject](#rolesubject)>> | False | <unknown transformation> | - +## ConfigMap +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +files | [Map](#map)<[String](#string), [String](#string)> | False | - | - +## ContainerEnvBaseSpec +### Children: +- [ContainerEnvSpec](#containerenvspec) +- [ContainerEnvConfigMapSpec](#containerenvconfigmapspec) +- [ContainerEnvSecretSpec](#containerenvsecretspec) +- [ContainerEnvPodFieldSpec](#containerenvpodfieldspec) +- [ContainerEnvContainerResourceSpec](#containerenvcontainerresourcespec) +### Parent types: +- [ContainerSpec](#containerspec) +- [DCCustomParams](#dccustomparams) +- [DCLifecycleNewPod](#dclifecyclenewpod) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [EnvString](#envstring) | False | - | - +## ContainerEnvConfigMapSpec +### Parents: +- [ContainerEnvBaseSpec](#containerenvbasespec) +### Parent types: +- [ContainerSpec](#containerspec) +- [DCCustomParams](#dccustomparams) +- [DCLifecycleNewPod](#dclifecyclenewpod) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +key | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +map_name | [Identifier](#identifier) | False | - | - +name | [EnvString](#envstring) | False | - | - +## ContainerEnvContainerResourceSpec +### Parents: +- [ContainerEnvBaseSpec](#containerenvbasespec) +### Parent types: +- [ContainerSpec](#containerspec) +- [DCCustomParams](#dccustomparams) +- [DCLifecycleNewPod](#dclifecyclenewpod) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +containerName | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +divisor | [Nullable](#nullable)<[NonEmpty](#nonempty)<[String](#string)>> | False | - | - +name | [EnvString](#envstring) | False | - | - +resource | [Enum](#enum)('limits.cpu', 'limits.memory', 'requests.cpu', 'requests.memory') | False | - | - +## ContainerEnvPodFieldSpec +### Parents: +- [ContainerEnvBaseSpec](#containerenvbasespec) +### Parent types: +- [ContainerSpec](#containerspec) +- [DCCustomParams](#dccustomparams) +- [DCLifecycleNewPod](#dclifecyclenewpod) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +apiVersion | [Nullable](#nullable)<[Enum](#enum)('v1')> | False | - | - +fieldPath | [Enum](#enum)('metadata.name', 'metadata.namespace', 'metadata.labels', 'metadata.annotations', 'spec.nodeName', 'spec.serviceAccountName', 'status.podIP') | False | - | - +name | [EnvString](#envstring) | False | - | - +## ContainerEnvSecretSpec +### Parents: +- [ContainerEnvBaseSpec](#containerenvbasespec) +### Parent types: +- [ContainerSpec](#containerspec) +- [DCCustomParams](#dccustomparams) +- [DCLifecycleNewPod](#dclifecyclenewpod) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +key | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +name | [EnvString](#envstring) | False | - | - +secret_name | [Identifier](#identifier) | False | - | - +## ContainerEnvSpec +### Parents: +- [ContainerEnvBaseSpec](#containerenvbasespec) +### Parent types: +- [ContainerSpec](#containerspec) +- [DCCustomParams](#dccustomparams) +- [DCLifecycleNewPod](#dclifecyclenewpod) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [EnvString](#envstring) | False | - | - +value | [String](#string) | False | - | - +## ContainerPort +### Parent types: +- [ContainerSpec](#containerspec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +containerPort | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +hostIP | [Nullable](#nullable)<[IP](#ip)> | False | - | - +hostPort | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +name | [Nullable](#nullable)<[String](#string)> | False | - | - +protocol | [Enum](#enum)('TCP', 'UDP') | False | - | - +## ContainerProbeBaseSpec +### Children: +- [ContainerProbeTCPPortSpec](#containerprobetcpportspec) +- [ContainerProbeHTTPSpec](#containerprobehttpspec) +### Parent types: +- [ContainerSpec](#containerspec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +failureThreshold | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +initialDelaySeconds | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +periodSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +successThreshold | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +timeoutSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +## ContainerProbeHTTPSpec +### Parents: +- [ContainerProbeBaseSpec](#containerprobebasespec) +### Parent types: +- [ContainerSpec](#containerspec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +failureThreshold | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +host | [Nullable](#nullable)<[Domain](#domain)> | False | - | - +initialDelaySeconds | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +path | [NonEmpty](#nonempty)<[Path](#path)> | False | - | - +periodSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +port | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | <unknown transformation> | - +scheme | [Nullable](#nullable)<[Enum](#enum)('HTTP', 'HTTPS')> | False | - | - +successThreshold | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +timeoutSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +## ContainerProbeTCPPortSpec +### Parents: +- [ContainerProbeBaseSpec](#containerprobebasespec) +### Parent types: +- [ContainerSpec](#containerspec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +failureThreshold | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +initialDelaySeconds | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +periodSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +port | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | <unknown transformation> | - +successThreshold | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +timeoutSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +## ContainerResourceEachSpec +### Parent types: +- [ContainerResourceSpec](#containerresourcespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +cpu | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Number](#number)>>> | False | <unknown transformation> | - +memory | [Nullable](#nullable)<[Memory](#memory)> | False | - | - +## ContainerResourceSpec +### Parent types: +- [ContainerSpec](#containerspec) +- [DCBaseUpdateStrategy](#dcbaseupdatestrategy) +- [DCCustomStrategy](#dccustomstrategy) +- [DCRecreateStrategy](#dcrecreatestrategy) +- [DCRollingStrategy](#dcrollingstrategy) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +limits | [ContainerResourceEachSpec](#containerresourceeachspec) | False | - | - +requests | [ContainerResourceEachSpec](#containerresourceeachspec) | False | - | - +## ContainerSpec +### Parents: +- [EnvironmentPreProcessMixin](#environmentpreprocessmixin) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +args | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +command | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +env | [Nullable](#nullable)<[List](#list)<[ContainerEnvBaseSpec](#containerenvbasespec)>> | False | <unknown transformation> | - +image | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +imagePullPolicy | [Nullable](#nullable)<[Enum](#enum)('Always', 'IfNotPresent')> | False | - | - +kind | [Nullable](#nullable)<[Enum](#enum)('DockerImage')> | False | - | - +lifecycle | [Nullable](#nullable)<[LifeCycle](#lifecycle)> | False | - | - +livenessProbe | [Nullable](#nullable)<[ContainerProbeBaseSpec](#containerprobebasespec)> | False | - | - +ports | [Nullable](#nullable)<[List](#list)<[ContainerPort](#containerport)>> | False | <unknown transformation> | - +readinessProbe | [Nullable](#nullable)<[ContainerProbeBaseSpec](#containerprobebasespec)> | False | - | - +resources | [Nullable](#nullable)<[ContainerResourceSpec](#containerresourcespec)> | False | - | - +securityContext | [Nullable](#nullable)<[SecurityContext](#securitycontext)> | False | - | - +terminationMessagePath | [Nullable](#nullable)<[NonEmpty](#nonempty)<[Path](#path)>> | False | - | - +volumeMounts | [Nullable](#nullable)<[List](#list)<[ContainerVolumeMountSpec](#containervolumemountspec)>> | False | <unknown transformation> | - +## ContainerVolumeMountSpec +### Parent types: +- [ContainerSpec](#containerspec) +- [DCLifecycleNewPod](#dclifecyclenewpod) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | False | - | - +path | [NonEmpty](#nonempty)<[Path](#path)> | False | - | - +readOnly | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +## DCBaseUpdateStrategy +### Children: +- [DCRecreateStrategy](#dcrecreatestrategy) +- [DCRollingStrategy](#dcrollingstrategy) +- [DCCustomStrategy](#dccustomstrategy) +### Parent types: +- [DeploymentConfig](#deploymentconfig) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +activeDeadlineSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +annotations | [Map](#map)<[String](#string), [String](#string)> | False | - | - +labels | [Map](#map)<[String](#string), [String](#string)> | False | - | - +resources | [Nullable](#nullable)<[ContainerResourceSpec](#containerresourcespec)> | False | - | - +## DCConfigChangeTrigger +### Parents: +- [DCTrigger](#dctrigger) +### Parent types: +- [DeploymentConfig](#deploymentconfig) +## DCCustomParams +### Parents: +- [EnvironmentPreProcessMixin](#environmentpreprocessmixin) +### Parent types: +- [DCCustomStrategy](#dccustomstrategy) +- [DCRecreateStrategy](#dcrecreatestrategy) +- [DCRollingStrategy](#dcrollingstrategy) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +command | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +environment | [Nullable](#nullable)<[List](#list)<[ContainerEnvBaseSpec](#containerenvbasespec)>> | False | <unknown transformation> | - +image | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +## DCCustomStrategy +### Parents: +- [DCBaseUpdateStrategy](#dcbaseupdatestrategy) +### Parent types: +- [DeploymentConfig](#deploymentconfig) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +activeDeadlineSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +annotations | [Map](#map)<[String](#string), [String](#string)> | False | - | - +customParams | [DCCustomParams](#dccustomparams) | False | - | - +labels | [Map](#map)<[String](#string), [String](#string)> | False | - | - +resources | [Nullable](#nullable)<[ContainerResourceSpec](#containerresourcespec)> | False | - | - +## DCImageChangeTrigger +### Parents: +- [DCTrigger](#dctrigger) +### Parent types: +- [DeploymentConfig](#deploymentconfig) +## DCLifecycleHook +### Parent types: +- [DCRecreateParams](#dcrecreateparams) +- [DCRollingParams](#dcrollingparams) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +execNewPod | [Nullable](#nullable)<[DCLifecycleNewPod](#dclifecyclenewpod)> | False | - | - +failurePolicy | [Enum](#enum)('Abort', 'Retry', 'Ignore') | False | - | - +tagImages | [Nullable](#nullable)<[DCTagImages](#dctagimages)> | False | - | - +## DCLifecycleNewPod +### Parents: +- [EnvironmentPreProcessMixin](#environmentpreprocessmixin) +### Parent types: +- [DCLifecycleHook](#dclifecyclehook) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +command | [NonEmpty](#nonempty)<[List](#list)<[String](#string)>> | False | - | - +containerName | [Identifier](#identifier) | False | - | - +env | [Nullable](#nullable)<[List](#list)<[ContainerEnvBaseSpec](#containerenvbasespec)>> | False | <unknown transformation> | - +volumeMounts | [Nullable](#nullable)<[List](#list)<[ContainerVolumeMountSpec](#containervolumemountspec)>> | False | - | - +volumes | [Nullable](#nullable)<[List](#list)<[Identifier](#identifier)>> | False | - | - +## DCRecreateParams +### Parent types: +- [DCRecreateStrategy](#dcrecreatestrategy) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +mid | [Nullable](#nullable)<[DCLifecycleHook](#dclifecyclehook)> | False | - | - +post | [Nullable](#nullable)<[DCLifecycleHook](#dclifecyclehook)> | False | - | - +pre | [Nullable](#nullable)<[DCLifecycleHook](#dclifecyclehook)> | False | - | - +timeoutSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +## DCRecreateStrategy +### Parents: +- [DCBaseUpdateStrategy](#dcbaseupdatestrategy) +### Parent types: +- [DeploymentConfig](#deploymentconfig) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +activeDeadlineSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +annotations | [Map](#map)<[String](#string), [String](#string)> | False | - | - +customParams | [Nullable](#nullable)<[DCCustomParams](#dccustomparams)> | False | - | - +labels | [Map](#map)<[String](#string), [String](#string)> | False | - | - +recreateParams | [Nullable](#nullable)<[DCRecreateParams](#dcrecreateparams)> | False | - | - +resources | [Nullable](#nullable)<[ContainerResourceSpec](#containerresourcespec)> | False | - | - +## DCRollingParams +### Parent types: +- [DCRollingStrategy](#dcrollingstrategy) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +intervalSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +maxSurge | [SurgeSpec](#surgespec) | False | - | - +maxUnavailable | [SurgeSpec](#surgespec) | False | - | - +post | [Nullable](#nullable)<[DCLifecycleHook](#dclifecyclehook)> | False | - | - +pre | [Nullable](#nullable)<[DCLifecycleHook](#dclifecyclehook)> | False | - | - +timeoutSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +updatePeriodSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +## DCRollingStrategy +### Parents: +- [DCBaseUpdateStrategy](#dcbaseupdatestrategy) +### Parent types: +- [DeploymentConfig](#deploymentconfig) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +activeDeadlineSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +annotations | [Map](#map)<[String](#string), [String](#string)> | False | - | - +customParams | [Nullable](#nullable)<[DCCustomParams](#dccustomparams)> | False | - | - +labels | [Map](#map)<[String](#string), [String](#string)> | False | - | - +resources | [Nullable](#nullable)<[ContainerResourceSpec](#containerresourcespec)> | False | - | - +rollingParams | [Nullable](#nullable)<[DCRollingParams](#dcrollingparams)> | False | - | - +## DCTagImages +### Parent types: +- [DCLifecycleHook](#dclifecyclehook) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +containerName | [Identifier](#identifier) | False | - | - +toApiVersion | [Nullable](#nullable)<[String](#string)> | False | - | - +toFieldPath | [Nullable](#nullable)<[String](#string)> | False | - | - +toKind | [Nullable](#nullable)<[Enum](#enum)('Deployment', 'DeploymentConfig', 'ImageStreamTag')> | False | - | - +toName | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +toNamespace | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +toResourceVersion | [Nullable](#nullable)<[String](#string)> | False | - | - +toUid | [Nullable](#nullable)<[String](#string)> | False | - | - +## DCTrigger +### Children: +- [DCConfigChangeTrigger](#dcconfigchangetrigger) +- [DCImageChangeTrigger](#dcimagechangetrigger) +### Parent types: +- [DeploymentConfig](#deploymentconfig) +## DaemonSet +### Parents: +- [SelectorsPreProcessMixin](#selectorspreprocessmixin) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +pod_template | [PodTemplateSpec](#podtemplatespec) | False | - | - +selector | [Nullable](#nullable)<[BaseSelector](#baseselector)> | False | <unknown transformation> | - +## [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) + + +A Deployment controller provides declarative updates for Pods and ReplicaSets. + +You describe a desired state in a Deployment object, and the Deployment controller changes the actual state to the desired state at a controlled rate. +You can define Deployments to create new ReplicaSets, or to remove existing Deployments and adopt all their resources with new Deployments. + +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +minReadySeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +paused | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +pod_template | [PodTemplateSpec](#podtemplatespec) | False | - | - +progressDeadlineSeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +replicas | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +revisionHistoryLimit | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +selector | [Nullable](#nullable)<[BaseSelector](#baseselector)> | False | - | - +strategy | [Nullable](#nullable)<[DplBaseUpdateStrategy](#dplbaseupdatestrategy)> | False | - | - +## DeploymentConfig +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +minReadySeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +paused | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +pod_template | [PodTemplateSpec](#podtemplatespec) | False | - | - +replicas | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +revisionHistoryLimit | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +selector | [Nullable](#nullable)<[Map](#map)<[String](#string), [String](#string)>> | False | - | - +strategy | [DCBaseUpdateStrategy](#dcbaseupdatestrategy) | False | - | - +test | [Boolean](#boolean) | False | - | - +triggers | [List](#list)<[DCTrigger](#dctrigger)> | False | - | - +## DockerCredentials +### Parents: +- [Secret](#secret) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +dockers | [Map](#map)<[String](#string), [Map](#map)<[String](#string), [String](#string)>> | False | - | - +secrets | [Map](#map)<[String](#string), [String](#string)> | False | - | - +type | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +## DplBaseUpdateStrategy +### Children: +- [DplRecreateStrategy](#dplrecreatestrategy) +- [DplRollingUpdateStrategy](#dplrollingupdatestrategy) +### Parent types: +- [Deployment](#deployment) +## DplRecreateStrategy +### Parents: +- [DplBaseUpdateStrategy](#dplbaseupdatestrategy) +### Parent types: +- [Deployment](#deployment) +## DplRollingUpdateStrategy +### Parents: +- [DplBaseUpdateStrategy](#dplbaseupdatestrategy) +### Parent types: +- [Deployment](#deployment) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +maxSurge | [SurgeSpec](#surgespec) | False | - | - +maxUnavailable | [SurgeSpec](#surgespec) | False | - | - +## Group +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +users | [NonEmpty](#nonempty)<[List](#list)<[UserIdentifier](#useridentifier)>> | False | - | - +## Job +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +activeDeadlineSeconds | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +completions | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +manualSelector | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +parallelism | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +pod_template | [PodTemplateSpec](#podtemplatespec) | False | - | - +selector | [Nullable](#nullable)<[BaseSelector](#baseselector)> | False | - | - +## LifeCycle +### Parent types: +- [ContainerSpec](#containerspec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +postStart | [Nullable](#nullable)<[LifeCycleProbe](#lifecycleprobe)> | False | - | - +preStop | [Nullable](#nullable)<[LifeCycleProbe](#lifecycleprobe)> | False | - | - +## LifeCycleExec +### Parents: +- [LifeCycleProbe](#lifecycleprobe) +### Parent types: +- [LifeCycle](#lifecycle) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +command | [NonEmpty](#nonempty)<[List](#list)<[String](#string)>> | False | - | - +## LifeCycleHTTP +### Parents: +- [LifeCycleProbe](#lifecycleprobe) +### Parent types: +- [LifeCycle](#lifecycle) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +path | [NonEmpty](#nonempty)<[Path](#path)> | False | - | - +port | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +scheme | [Nullable](#nullable)<[Enum](#enum)('HTTP', 'HTTPS')> | False | - | - +## LifeCycleProbe +### Children: +- [LifeCycleExec](#lifecycleexec) +- [LifeCycleHTTP](#lifecyclehttp) +### Parent types: +- [LifeCycle](#lifecycle) +## MatchExpression +### Parent types: +- [MatchExpressionsSelector](#matchexpressionsselector) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +key | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +operator | [Enum](#enum)('In', 'NotIn', 'Exists', 'DoesNotExist') | False | - | - +values | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +## MatchExpressionsSelector +### Parents: +- [BaseSelector](#baseselector) +### Parent types: +- [DaemonSet](#daemonset) +- [Deployment](#deployment) +- [Job](#job) +- [PersistentVolumeClaim](#persistentvolumeclaim) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +matchExpressions | [NonEmpty](#nonempty)<[List](#list)<[MatchExpression](#matchexpression)>> | False | - | - +## MatchLabelsSelector +### Parents: +- [BaseSelector](#baseselector) +### Parent types: +- [DaemonSet](#daemonset) +- [Deployment](#deployment) +- [Job](#job) +- [PersistentVolumeClaim](#persistentvolumeclaim) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +matchLabels | [Map](#map)<[String](#string), [String](#string)> | False | - | - +## Namespace +### Children: +- [Project](#project) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +## PersistentVolume +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +accessModes | [List](#list)<[Enum](#enum)('ReadWriteOnce', 'ReadOnlyMany', 'ReadWriteMany')> | False | - | - +awsElasticBlockStore | [Nullable](#nullable)<[AWSElasticBlockStore](#awselasticblockstore)> | False | - | - +capacity | [Memory](#memory) | False | - | - +claimRef | [Nullable](#nullable)<[PersistentVolumeRef](#persistentvolumeref)> | False | - | - +persistentVolumeReclaimPolicy | [Nullable](#nullable)<[Enum](#enum)('Retain', 'Recycle', 'Delete')> | False | - | - +## PersistentVolumeClaim +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +accessModes | [List](#list)<[Enum](#enum)('ReadWriteOnce', 'ReadOnlyMany', 'ReadWriteMany')> | False | - | - +request | [Memory](#memory) | False | - | - +selector | [Nullable](#nullable)<[BaseSelector](#baseselector)> | False | - | - +volumeName | [Nullable](#nullable)<[Identifier](#identifier)> | False | <unknown transformation> | - +## PersistentVolumeRef +### Parent types: +- [PersistentVolume](#persistentvolume) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +apiVersion | [Nullable](#nullable)<[String](#string)> | False | - | - +kind | [Nullable](#nullable)<[CaseIdentifier](#caseidentifier)> | False | - | - +name | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +ns | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +## PodImagePullSecret +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | False | - | - +## PodTemplateSpec +### Parent types: +- [DaemonSet](#daemonset) +- [Deployment](#deployment) +- [DeploymentConfig](#deploymentconfig) +- [Job](#job) +- [ReplicationController](#replicationcontroller) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +containers | [NonEmpty](#nonempty)<[List](#list)<[ContainerSpec](#containerspec)>> | False | - | - +dnsPolicy | [Nullable](#nullable)<[Enum](#enum)('ClusterFirst')> | False | - | - +hostIPC | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +hostNetwork | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +hostPID | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +imagePullSecrets | [Nullable](#nullable)<[List](#list)<[PodImagePullSecret](#podimagepullsecret)>> | False | <unknown transformation> | - +name | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +nodeSelector | [Nullable](#nullable)<[Map](#map)<[String](#string), [String](#string)>> | False | - | - +restartPolicy | [Nullable](#nullable)<[Enum](#enum)('Always', 'OnFailure', 'Never')> | False | - | - +securityContext | [Nullable](#nullable)<[SecurityContext](#securitycontext)> | False | - | - +serviceAccountName | [Nullable](#nullable)<[Identifier](#identifier)> | False | <unknown transformation> | [serviceAccount](#serviceaccount) +terminationGracePeriodSeconds | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +volumes | [Nullable](#nullable)<[List](#list)<[PodVolumeBaseSpec](#podvolumebasespec)>> | False | - | - +## PodVolumeBaseSpec +### Children: +- [PodVolumeHostSpec](#podvolumehostspec) +- [PodVolumeItemMapper](#podvolumeitemmapper) +- [PodVolumePVCSpec](#podvolumepvcspec) +- [PodVolumeEmptyDirSpec](#podvolumeemptydirspec) +- [PodVolumeConfigMapSpec](#podvolumeconfigmapspec) +- [PodVolumeSecretSpec](#podvolumesecretspec) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | False | - | - +## PodVolumeConfigMapSpec +### Parents: +- [PodVolumeItemMapper](#podvolumeitemmapper) +- [PodVolumeBaseSpec](#podvolumebasespec) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +defaultMode | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +item_map | [Nullable](#nullable)<[Map](#map)<[String](#string), [String](#string)>> | False | - | - +map_name | [Identifier](#identifier) | False | - | - +name | [Identifier](#identifier) | False | - | - +## PodVolumeEmptyDirSpec +### Parents: +- [PodVolumeBaseSpec](#podvolumebasespec) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | False | - | - +## PodVolumeHostSpec +### Parents: +- [PodVolumeBaseSpec](#podvolumebasespec) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | False | - | - +path | [String](#string) | False | - | - +## PodVolumeItemMapper +### Parents: +- [PodVolumeBaseSpec](#podvolumebasespec) +### Children: +- [PodVolumeConfigMapSpec](#podvolumeconfigmapspec) +- [PodVolumeSecretSpec](#podvolumesecretspec) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +item_map | [Nullable](#nullable)<[Map](#map)<[String](#string), [String](#string)>> | False | - | - +name | [Identifier](#identifier) | False | - | - +## PodVolumePVCSpec +### Parents: +- [PodVolumeBaseSpec](#podvolumebasespec) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +claimName | [Identifier](#identifier) | False | - | - +name | [Identifier](#identifier) | False | - | - +## PodVolumeSecretSpec +### Parents: +- [PodVolumeItemMapper](#podvolumeitemmapper) +- [PodVolumeBaseSpec](#podvolumebasespec) +### Parent types: +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +defaultMode | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +item_map | [Nullable](#nullable)<[Map](#map)<[String](#string), [String](#string)>> | False | - | - +name | [Identifier](#identifier) | False | - | - +secret_name | [Identifier](#identifier) | False | - | - +## PolicyBinding +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [ColonIdentifier](#colonidentifier) | True | - | - +roleBindings | [List](#list)<[PolicyBindingRoleBinding](#policybindingrolebinding)> | False | <unknown transformation> | - +## PolicyBindingRoleBinding +### Parents: +- [RoleBindingXF](#rolebindingxf) +### Parent types: +- [PolicyBinding](#policybinding) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +metadata | [Nullable](#nullable)<[Map](#map)<[String](#string), [String](#string)>> | False | - | - +name | [SystemIdentifier](#systemidentifier) | False | - | - +ns | [Identifier](#identifier) | False | - | - +roleRef | [RoleRef](#roleref) | False | <unknown transformation> | - +subjects | [NonEmpty](#nonempty)<[List](#list)<[RoleSubject](#rolesubject)>> | False | <unknown transformation> | - +## PolicyRule +### Parent types: +- [ClusterRole](#clusterrole) +- [Role](#role) +- [RoleBase](#rolebase) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +apiGroups | [NonEmpty](#nonempty)<[List](#list)<[String](#string)>> | False | - | - +attributeRestrictions | [Nullable](#nullable)<[String](#string)> | False | - | - +nonResourceURLs | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +resourceNames | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +resources | [NonEmpty](#nonempty)<[List](#list)<[NonEmpty](#nonempty)<[String](#string)>>> | False | - | - +verbs | [NonEmpty](#nonempty)<[List](#list)<[Enum](#enum)('get', 'list', 'create', 'update', 'delete', 'deletecollection', 'watch')>> | False | - | - +## Project +### Parents: +- [Namespace](#namespace) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +## ReplicationController +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +minReadySeconds | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +pod_template | [PodTemplateSpec](#podtemplatespec) | False | - | - +replicas | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +selector | [Nullable](#nullable)<[Map](#map)<[String](#string), [String](#string)>> | False | - | - +## Role +### Parents: +- [RoleBase](#rolebase) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +rules | [NonEmpty](#nonempty)<[List](#list)<[PolicyRule](#policyrule)>> | False | - | - +## RoleBinding +### Parents: +- [RoleBindingBase](#rolebindingbase) +- [RoleBindingXF](#rolebindingxf) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [SystemIdentifier](#systemidentifier) | True | - | - +roleRef | [RoleRef](#roleref) | False | <unknown transformation> | - +subjects | [NonEmpty](#nonempty)<[List](#list)<[RoleSubject](#rolesubject)>> | False | <unknown transformation> | - +## RoleRef +### Parent types: +- [ClusterRoleBinding](#clusterrolebinding) +- [PolicyBindingRoleBinding](#policybindingrolebinding) +- [RoleBinding](#rolebinding) +- [RoleBindingBase](#rolebindingbase) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Nullable](#nullable)<[SystemIdentifier](#systemidentifier)> | False | - | - +ns | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +## RoleSubject +### Parent types: +- [ClusterRoleBinding](#clusterrolebinding) +- [PolicyBindingRoleBinding](#policybindingrolebinding) +- [RoleBinding](#rolebinding) +- [RoleBindingBase](#rolebindingbase) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +kind | [CaseIdentifier](#caseidentifier) | False | - | - +name | [String](#string) | False | - | - +ns | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +## Route +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +host | [Domain](#domain) | False | - | - +port | [RouteDestPort](#routedestport) | False | - | - +tls | [Nullable](#nullable)<[RouteTLS](#routetls)> | False | - | - +to | [NonEmpty](#nonempty)<[List](#list)<[RouteDest](#routedest)>> | False | - | - +wildcardPolicy | [Enum](#enum)('Subdomain', 'None') | False | - | - +## RouteDest +### Children: +- [RouteDestService](#routedestservice) +### Parent types: +- [Route](#route) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +weight | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +## RouteDestPort +### Parent types: +- [Route](#route) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +targetPort | [Identifier](#identifier) | False | - | - +## RouteDestService +### Parents: +- [RouteDest](#routedest) +### Parent types: +- [Route](#route) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | False | - | - +weight | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +## RouteTLS +### Parent types: +- [Route](#route) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +caCertificate | [Nullable](#nullable)<[NonEmpty](#nonempty)<[String](#string)>> | False | - | - +certificate | [Nullable](#nullable)<[NonEmpty](#nonempty)<[String](#string)>> | False | - | - +destinationCACertificate | [Nullable](#nullable)<[NonEmpty](#nonempty)<[String](#string)>> | False | - | - +insecureEdgeTerminationPolicy | [Enum](#enum)('Allow', 'Disable', 'Redirect') | False | - | - +key | [Nullable](#nullable)<[NonEmpty](#nonempty)<[String](#string)>> | False | - | - +termination | [Enum](#enum)('edge', 'reencrypt', 'passthrough') | False | - | - +## SAImgPullSecretSubject +### Parent types: +- [ServiceAccount](#serviceaccount) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | False | - | - +## SASecretSubject +### Parent types: +- [ServiceAccount](#serviceaccount) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +kind | [Nullable](#nullable)<[CaseIdentifier](#caseidentifier)> | False | - | - +name | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +ns | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +## SCCGroupRange +### Parent types: +- [SCCGroups](#sccgroups) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +max | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +min | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +## SCCGroups +### Parent types: +- [SecurityContextConstraints](#securitycontextconstraints) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +ranges | [Nullable](#nullable)<[List](#list)<[SCCGroupRange](#sccgrouprange)>> | False | - | - +type | [Nullable](#nullable)<[Enum](#enum)('MustRunAs', 'RunAsAny')> | False | - | - +## SCCRunAsUser +### Parent types: +- [SecurityContextConstraints](#securitycontextconstraints) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +type | [Enum](#enum)('MustRunAs', 'RunAsAny', 'MustRunAsRange', 'MustRunAsNonRoot') | False | - | - +uid | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +uidRangeMax | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +uidRangeMin | [Nullable](#nullable)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>> | False | - | - +## SCCSELinux +### Parent types: +- [SecurityContextConstraints](#securitycontextconstraints) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +level | [Nullable](#nullable)<[String](#string)> | False | - | - +role | [Nullable](#nullable)<[String](#string)> | False | - | - +strategy | [Nullable](#nullable)<[Enum](#enum)('MustRunAs', 'RunAsAny')> | False | - | - +type | [Nullable](#nullable)<[String](#string)> | False | - | - +user | [Nullable](#nullable)<[String](#string)> | False | - | - +## Secret +### Children: +- [DockerCredentials](#dockercredentials) +- [TLSCredentials](#tlscredentials) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +secrets | [Map](#map)<[String](#string), [String](#string)> | False | - | - +type | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +## SecurityContext +### Parent types: +- [ContainerSpec](#containerspec) +- [PodTemplateSpec](#podtemplatespec) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +fsGroup | [Nullable](#nullable)<[Integer](#integer)> | False | - | - +privileged | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +runAsNonRoot | [Nullable](#nullable)<[Boolean](#boolean)> | False | - | - +runAsUser | [Nullable](#nullable)<[Integer](#integer)> | False | - | - +supplementalGroups | [Nullable](#nullable)<[List](#list)<[Integer](#integer)>> | False | - | - +## SecurityContextConstraints +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +allowHostDirVolumePlugin | [Boolean](#boolean) | False | - | - +allowHostIPC | [Boolean](#boolean) | False | - | - +allowHostNetwork | [Boolean](#boolean) | False | - | - +allowHostPID | [Boolean](#boolean) | False | - | - +allowHostPorts | [Boolean](#boolean) | False | - | - +allowPrivilegedContainer | [Boolean](#boolean) | False | - | - +allowedCapabilities | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +defaultAddCapabilities | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +fsGroup | [Nullable](#nullable)<[SCCGroups](#sccgroups)> | False | - | - +groups | [List](#list)<[SystemIdentifier](#systemidentifier)> | False | - | - +priority | [Nullable](#nullable)<[Positive](#positive)<[Integer](#integer)>> | False | - | - +readOnlyRootFilesystem | [Boolean](#boolean) | False | - | - +requiredDropCapabilities | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +runAsUser | [Nullable](#nullable)<[SCCRunAsUser](#sccrunasuser)> | False | - | - +seLinuxContext | [Nullable](#nullable)<[SCCSELinux](#sccselinux)> | False | - | - +seccompProfiles | [Nullable](#nullable)<[List](#list)<[String](#string)>> | False | - | - +supplementalGroups | [Nullable](#nullable)<[SCCGroups](#sccgroups)> | False | - | - +users | [List](#list)<[SystemIdentifier](#systemidentifier)> | False | - | - +volumes | [List](#list)<[Enum](#enum)('configMap', 'downwardAPI', 'emptyDir', 'hostPath', 'nfs', 'persistentVolumeClaim', 'secret', '*')> | False | - | - +## Service +### Children: +- [ClusterIPService](#clusteripservice) +- [AWSLoadBalancerService](#awsloadbalancerservice) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +ports | [NonEmpty](#nonempty)<[List](#list)<[ServicePort](#serviceport)>> | False | <unknown transformation> | - +selector | [NonEmpty](#nonempty)<[Map](#map)<[String](#string), [String](#string)>> | False | <unknown transformation> | - +sessionAffinity | [Nullable](#nullable)<[Enum](#enum)('ClientIP', 'None')> | False | - | - +## ServiceAccount +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +imagePullSecrets | [Nullable](#nullable)<[List](#list)<[SAImgPullSecretSubject](#saimgpullsecretsubject)>> | False | <unknown transformation> | - +secrets | [Nullable](#nullable)<[List](#list)<[SASecretSubject](#sasecretsubject)>> | False | <unknown transformation> | - +## ServicePort +### Parent types: +- [AWSLoadBalancerService](#awsloadbalancerservice) +- [ClusterIPService](#clusteripservice) +- [Service](#service) +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Nullable](#nullable)<[Identifier](#identifier)> | False | - | - +port | [Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>> | False | - | - +protocol | [Enum](#enum)('TCP', 'UDP') | False | - | - +targetPort | [OneOf](#oneof)<[Positive](#positive)<[NonZero](#nonzero)<[Integer](#integer)>>, [Identifier](#identifier)> | False | - | - +## StorageClass +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +parameters | [Map](#map)<[String](#string), [String](#string)> | False | - | - +provisioner | [String](#string) | False | - | - +## TLSCredentials +### Parents: +- [Secret](#secret) +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [Identifier](#identifier) | True | - | - +secrets | [Map](#map)<[String](#string), [String](#string)> | False | - | - +tls_cert | [String](#string) | False | - | - +tls_key | [String](#string) | False | - | - +type | [NonEmpty](#nonempty)<[String](#string)> | False | - | - +## User +### Metadata +Name | Format +---- | ------ +annotations | [Map](#map)<[String](#string), [String](#string)> +labels | [Map](#map)<[String](#string), [String](#string)> +### Properties: + +Name | Type | Identifier | Type Transformation | Aliases +---- | ---- | ---------- | ------------------- | ------- +name | [UserIdentifier](#useridentifier) | True | - | - +fullName | [Nullable](#nullable)<[String](#string)> | False | - | - +identities | [NonEmpty](#nonempty)<[List](#list)<[NonEmpty](#nonempty)<[String](#string)>>> | False | - | - diff --git a/lib/commands/describe.py b/lib/commands/describe.py index fa0e72b..a355aa1 100644 --- a/lib/commands/describe.py +++ b/lib/commands/describe.py @@ -85,7 +85,7 @@ def run(self, args): print('', file=sys.stdout) found = True print('.'.join(ss[0:]) + ':', file=sys.stdout) - print(obj.get_help(), file=sys.stdout) + print(obj.get_help().render_terminal(), file=sys.stdout) if not found: return 1 diff --git a/lib/commands/docgen.py b/lib/commands/docgen.py new file mode 100644 index 0000000..97996ef --- /dev/null +++ b/lib/commands/docgen.py @@ -0,0 +1,64 @@ +# (c) Copyright 2017-2018 OLX + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +from command import Command +from .bases import CommandRepositoryBase +import load_python +import os + +class Command_docgen(Command, CommandRepositoryBase): + """ + Generate the documentation of all classes supported by rubiks on your local rubiks folder. + """ + + _documentation = """ + This document is automatically generated using the command `docgen` and describe all the object and types that can be used inside Rubiks to configure your cluster + + It is possible to generate this documentation locally running inside your rubiks repo `rubiks docgen`. + """ + + def populate_args(self, parser): + pass + + def run(self, args): + objs = load_python.PythonBaseFile.get_kube_objs() + types = load_python.PythonBaseFile.get_kube_types() + formats = load_python.PythonBaseFile.get_kube_vartypes() + + r = self.get_repository() + + doc = '\n'.join([line.strip() for line in self._documentation.split('\n')]) + + md = '' + header = '\n\n' + header += '# Rubiks Object Index\n{}\n\n'.format(doc) + header += '# Table of contents\n\n' + + header += '- [Formats](#formats)\n' + md += '\n# Formats\n\n' + for fname in sorted(formats.keys()): + header += ' - [{}](#{})\n'.format(fname, fname.lower()) + md += '## {}\n\n'.format(fname) + md += '{}\n\n'.format(formats[fname].get_description()) + + header += '- [Types](#types)\n' + md += '\n# Types\n\n' + for tname in sorted(types.keys()): + header += ' - [{}](#{})\n'.format(tname, tname.lower()) + md += '## {}\n\n'.format(tname) + md += '{}\n\n'.format(types[tname].get_description()) + + + header += '- [Objects](#objects)\n' + md += '\n# Objects\n\n' + for oname in sorted(objs.keys()): + header += ' - [{}](#{})\n'.format(oname, oname.lower()) + md += objs[oname].get_help().render_markdown() + + with open(os.path.join(r.basepath, 'docs/rubiks.class.md'), 'w') as f: + f.write(header.encode('utf-8')) + f.write(md.encode('utf-8')) \ No newline at end of file diff --git a/lib/kube_help.py b/lib/kube_help.py new file mode 100644 index 0000000..b417121 --- /dev/null +++ b/lib/kube_help.py @@ -0,0 +1,197 @@ +# (c) Copyright 2017-2018 OLX + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +from kube_types import Map, String + + +# Object used to collect class definition and implement the rendering functions +class KubeHelper(object): + # Internal data structure to store needed data + _data = {} + # List of all needed field to have + _defaults = { + 'class_name': None, + 'class_subclasses': [], + 'class_superclasses': None, + 'class_types': {}, + 'class_is_abstract': None, + 'class_identifier': None, + 'class_mapping': [], + 'class_parent_types': None, + 'class_has_metadata': None, + 'class_doc': None, + 'class_doc_link': None, + 'class_xf_hasattr': [], + 'class_xf_detail': [] + } + # definition of mandatory field to display + _mandatory = { + 'class_name': True, + 'class_subclasses': False, + 'class_superclasses': False, + 'class_types': False, + 'class_is_abstract': True, + 'class_identifier': False, + 'class_mapping': False, + 'class_parent_types': False, + 'class_has_metadata': True, + 'class_doc': False, + 'class_doc_link': False, + 'class_xf_hasattr': False, + 'class_xf_detail': False + } + + def __init__(self, *args, **kwargs): + self._defaults_creations() + + if 'name' in kwargs: + self.class_name = kwargs['name'] + if 'document' in kwargs: + self.class_doc = kwargs['document'] + if 'documentlink' in kwargs: + self.class_doc_link = kwargs['documentlink'] + + def _defaults_creations(self): + for name in getattr(self, '_defaults'): + if name in self._mandatory: + self._data[name] = self._defaults[name] + else: + raise Exception('Missing mandatory information for {} inside {} class'.format(name, self.__class__.__name__)) + + def __getattr__(self, name): + if name in getattr(self, '_data'): + return self._data[name] + else: + raise ValueError + + def __setattr__(self, name, value): + if name in getattr(self, '_data'): + self._data[name] = value + else: + raise ValueError + + def render_terminal(self): + txt = '{}{}:\n'.format(self.class_name, self.class_is_abstract) + + if len(self.class_superclasses) != 0: + txt += ' parents: {}\n'.format(', '.join(self.class_superclasses)) + if len(self.class_subclasses) != 0: + txt += ' children: {}\n'.format(', '.join(self.class_subclasses)) + if len(self.class_parent_types) != 0: + txt += ' parent types: {}\n'.format(', '.join(sorted(self.class_parent_types.keys()))) + if self.class_has_metadata: + txt += ' metadata:\n' + txt += ' annotations: {}\n'.format(Map(String, String).name()) + txt += ' labels: {}\n'.format(Map(String, String).name()) + txt += ' properties:\n' + if self.class_identifier is not None: + spc = '' + if len(self.class_identifier) < 7: + spc = (7 - len(self.class_identifier)) * ' ' + txt += ' {} (identifier): {}{}\n'.format(self.class_identifier, spc, self.class_types[self.class_identifier].name()) + + for p in sorted(self.class_types.keys()): + if p == self.class_identifier: + continue + spc = '' + if len(p) < 20: + spc = (20 - len(p)) * ' ' + xf = '*' if 'xf_{}'.format(p) in self.class_xf_hasattr else ' ' + + txt += ' {}{}: {}{}\n'.format(xf, p, spc, self.class_types[p].name()) + if p in self.class_mapping: + txt += ' ({})\n'.format(', '.join(self.class_mapping[p])) + + return txt + + + def _get_markdown_link(self, objects): + if isinstance(objects, list): + return ['[{}](#{})'.format(classname, classname.lower()) for classname in objects] + else: + return '[{}](#{})'.format(objects, objects.lower()) + + def _docstring_formatter(self): + return '\n'.join([line.strip() for line in self.class_doc.split('\n')]) + + def _decorate_obj_links(self, display, links): + for link in links: + display = display.replace(link, self._get_markdown_link(link)) + + return display + + def render_markdown(self): + # Title generation based on link + if self.class_doc_link is not None: + txt = '## [{}]({})\n'.format(self.class_name, self.class_doc_link) + else: + txt = '## {}\n'.format(self.class_name) + + # Add class doc string if exists + if self.class_doc is not None: + txt += '\n{}\n'.format(self._docstring_formatter()) + + # Parents + if len(self.class_superclasses) != 0: + txt += '### Parents: \n' + for obj in self._get_markdown_link(self.class_superclasses): + txt += '- {}\n'.format(obj) + + # Children + if len(self.class_subclasses) != 0: + txt += '### Children: \n' + for obj in self._get_markdown_link(self.class_subclasses): + txt += '- {}\n'.format(obj) + + # Parent types + if len(self.class_parent_types) != 0: + txt += '### Parent types: \n' + for obj in self._get_markdown_link(sorted(self.class_parent_types.keys())): + txt += '- {}\n'.format(obj) + + # Metadata + if self.class_has_metadata: + txt += '### Metadata\n' + txt += 'Name | Format\n' + txt += '---- | ------\n' + txt += 'annotations | {}\n'.format(Map(String, String).name(md=True)) + txt += 'labels | {}\n'.format(Map(String, String).name(md=True)) + + # Properties table + if len(self.class_types.keys()) == 0: + return txt + + txt += '### Properties:\n\n' + txt += 'Name | Type | Identifier | Type Transformation | Aliases\n' + txt += '---- | ---- | ---------- | ------------------- | -------\n' + if self.class_identifier is not None: + txt += '{} | {} | True | - | - \n'.format(self.class_identifier, self._get_markdown_link(self.class_types[self.class_identifier].name())) + + for p in sorted(self.class_types.keys()): + if p == self.class_identifier: + continue + + # Prepare Type transformation and remove special character that could ruin visualization in markdown + xf_data = self.class_xf_detail[p] if p in self.class_xf_detail else '-' + xf_data = xf_data.replace('<', '<').replace('>', '>') + + is_mapped = ', '.join(self._get_markdown_link(self.class_mapping[p])) if p in self.class_mapping else '-' + + original_type = self.class_types[p].original_type() + display_type = self.class_types[p].name(md=True).replace('<', '<').replace('>', '>') + + if original_type is not None: + if isinstance(original_type, list): + original_type = original_type[0] + elif isinstance(original_type, dict): + original_type = original_type['value'] + + + txt += '{} | {} | False | {} | {} \n'.format(p, display_type, xf_data, is_mapped) + + return txt + \ No newline at end of file diff --git a/lib/kube_obj.py b/lib/kube_obj.py index 343c690..cb6b72e 100644 --- a/lib/kube_obj.py +++ b/lib/kube_obj.py @@ -9,8 +9,10 @@ import traceback import sys from collections import OrderedDict +from kube_help import KubeHelper -from kube_types import * +from kube_types import Integer, Positive, NonZero, Number, Boolean +from kube_types import String, Map, List, Identifier, NonEmpty, KubeType from user_error import UserError, paths as user_error_paths @@ -49,7 +51,7 @@ def __init__(self, text, obj, input_doc): self.doc = input_doc def __repr__(self): - return '{}(obj={}, doc={})'.format(self.__class__.__name__, self.obj.__name__, repr(doc)) + return '{}(obj={}, doc={})'.format(self.__class__.__name__, self.obj.__name__, repr(self.doc)) class KubeTypeUnresolvable(Exception): @@ -74,6 +76,7 @@ class KubeBaseObj(object): has_metadata = False _is_openshift = False _always_regenerate = False + _document_url = None def __init__(self, *args, **kwargs): # put the identifier in if it's specified @@ -237,7 +240,7 @@ def basic_validation(typ): tk = basic_validation(kk) tv = basic_validation(vv) if tk is not None and tv is not None: - types[k] = NonEmpty(Dict(tk, tv)) + types[k] = NonEmpty(dict(tk, tv)) if not isinstance(types[k], KubeType): raise KubeTypeUnresolvable( @@ -304,6 +307,12 @@ def _rec_subclasses(kls): @classmethod def get_help(cls): + ret_help = KubeHelper( + name=cls.__name__, + document=cls.__doc__, + documentlink=cls._document_url + ) + def _rec_superclasses(kls): ret = [] superclasses = list(filter(lambda x: x is not KubeBaseObj and x is not KubeSubObj and @@ -317,58 +326,32 @@ def _rec_superclasses(kls): return ret - subclasses = list(map(lambda x: x.__name__, cls.get_subclasses(non_abstract=False, include_self=False))) - superclasses = list(map(lambda x: x.__name__, _rec_superclasses(cls))) + ret_help.class_subclasses = list(map(lambda x: x.__name__, cls.get_subclasses(non_abstract=False, include_self=False))) + ret_help.class_superclasses = list(map(lambda x: x.__name__, _rec_superclasses(cls))) - types = cls.resolve_types() + ret_help.class_types = cls.resolve_types() - abstract = '' - if cls.is_abstract_type(): - abstract = ' (abstract type)' - - identifier = None - if hasattr(cls, 'identifier') and cls.identifier is not None: - identifier = cls.identifier - - txt = '{}{}:\n'.format(cls.__name__, abstract) - if len(superclasses) != 0: - txt += ' parents: {}\n'.format(', '.join(superclasses)) - if len(subclasses) != 0: - txt += ' children: {}\n'.format(', '.join(subclasses)) - if len(cls._parent_types) != 0: - txt += ' parent types: {}\n'.format(', '.join(sorted(cls._parent_types.keys()))) - if cls.has_metadata: - txt += ' metadata:\n' - txt += ' annotations: {}\n'.format(Map(String, String).name()) - txt += ' labels: {}\n'.format(Map(String, String).name()) - txt += ' properties:\n' - if identifier is not None: - spc = '' - if len(identifier) < 7: - spc = (7 - len(identifier)) * ' ' - txt += ' {} (identifier): {}{}\n'.format(identifier, spc, types[identifier].name()) + ret_help.class_is_abstract = '' if cls.is_abstract_type() else ' (abstract type)' + ret_help.class_identifier = cls.identifier if hasattr(cls, 'identifier') and cls.identifier is not None else None mapping = cls._find_defaults('_map') - rmapping = {} + ret_help.class_mapping = {} for d in mapping: - if mapping[d] not in rmapping: - rmapping[mapping[d]] = [] - rmapping[mapping[d]].append(d) + if mapping[d] not in ret_help.class_mapping: + ret_help.class_mapping[mapping[d]] = [] + ret_help.class_mapping[mapping[d]].append(d) - for p in sorted(types.keys()): - if p == identifier: - continue - spc = '' - if len(p) < 20: - spc = (20 - len(p)) * ' ' - if hasattr(cls, 'xf_{}'.format(p)): - xf = '*' - else: - xf = ' ' - txt += ' {}{}: {}{}\n'.format(xf, p, spc, types[p].name()) - if p in rmapping: - txt += ' ({})\n'.format(', '.join(rmapping[p])) - return txt + ret_help.class_parent_types = cls._parent_types + ret_help.class_has_metadata = cls.has_metadata + + ret_help.class_xf_detail = {} + for p in ret_help.class_types: + if hasattr(cls, 'xf_' + p): + ret_help.class_xf_detail[p] = '