Skip to main content

crds-generator

This tool was created to generate a simple kubernetes crds from a pydantic-like object.

You can install it as shown below:

pip install crds-generator

You can create a CRDS with the code below:

from typing import Literal, Optional
import yaml
from crds_generator import CustomResourceDefinition, Schema, generate_crd, AdditionalPrinterColumns 


class Server(Schema):
    name: str
    cpu_type: str
    gpu_type: str
    os: Literal["mac", "linux"]

class Spec(Schema):
    servers: list[Server]
    budget: int

class Status(Schema):
    ping_result: bool

class ServerPool(Schema):
    spec: Spec
    status: Status = None


apc = AdditionalPrinterColumns(
    name="Name",
    type="string",
    description="Server Name",
    jsonPath= ".spec.servers[*].name"
)

print(
    yaml.dump(
        generate_crd(
            CustomResourceDefinition(
                spec={
                    "scope": "Namespaced",
                    "group": "example.com",
                    "names": {
                        "kind": "ServerPool",
                        "plural": "serverpools",
                        "singular": "serverpool",
                        "shortNames": ["sp"],
                    },
                    "versions": [
                        {
                            "name": "v1",
                            "served": True,
                            "storage": True,
                            "schema": ServerPool,
                            "additionalPrinterColumns": [
                                apc
                            ],
                        }
                    ],
                },
            )
        )
    )
)

then print

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: serverpools.example.com
spec:
  group: example.com
  names:
    kind: ServerPool
    plural: serverpools
    shortNames:
    - sp
    singular: serverpool
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Server Name
      jsonPath: .spec.servers[*].name
      name: Name
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        properties:
          spec:
            properties:
              budget:
                type: integer
              servers:
                items:
                  properties:
                    cpu_type:
                      type: string
                    gpu_type:
                      type: string
                    name:
                      type: string
                    os:
                      enum:
                      - mac
                      - linux
                      type: string
                  required:
                  - name
                  - cpu_type
                  - gpu_type
                  - os
                  type: object
                type: array
            required:
            - servers
            - budget
            type: object
          status:
            properties:
              ping_result:
                type: boolean
            required:
            - ping_result
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true

Metadata

Release files for crds-generator 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crds-generator 0.0.6
File Size Uploaded
crds_generator-0.0.6.tar.gz 2.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for crds-generator 0.0.6
File Interpreter ABI Platform
crds_generator-0.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 5.6 kB

Release files / crds_generator-0.0.6.tar.gz

Download URL crds_generator-0.0.6.tar.gz
Size 2.5 kB
Tags Source
SHA-256 checksum
How to use checksums
90aa3d22b5b4a602530142a028d62687c1366d05c7542348c000175214136f09
BLAKE2b-256 checksum
How to use checksums
093afa209b787e37474d864eefd54f5e4dcff641b763cfa2196f15789d954085
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / crds_generator-0.0.6-py3-none-any.whl

Download URL crds_generator-0.0.6-py3-none-any.whl
Size 3.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17bb1d809f40e51d2d8d2cef5af817e33f25f1d8eee6237d8d413f499f48d09b
BLAKE2b-256 checksum
How to use checksums
e0f1577e74ce47b0f2e16684eeee70efe41cdd25d276b5b01c6a4bd47f88ee1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page