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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crds_generator-0.0.6.tar.gz (2.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crds_generator-0.0.6-py3-none-any.whl (3.1 kB view details)

Uploaded Python 3

File details

Details for the file crds_generator-0.0.6.tar.gz.

File metadata

  • Download URL: crds_generator-0.0.6.tar.gz
  • Upload date:
  • Size: 2.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for crds_generator-0.0.6.tar.gz
Algorithm Hash digest
SHA256 90aa3d22b5b4a602530142a028d62687c1366d05c7542348c000175214136f09
MD5 0945d1e949e9555e055af1aaf3c398fe
BLAKE2b-256 093afa209b787e37474d864eefd54f5e4dcff641b763cfa2196f15789d954085

See more details on using hashes here.

File details

Details for the file crds_generator-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: crds_generator-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 3.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for crds_generator-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 17bb1d809f40e51d2d8d2cef5af817e33f25f1d8eee6237d8d413f499f48d09b
MD5 10b695f936256130800b36b467d320cc
BLAKE2b-256 e0f1577e74ce47b0f2e16684eeee70efe41cdd25d276b5b01c6a4bd47f88ee1c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page