bonny v0.4.1 Bonny.CRD

Represents the spec portion of a Kubernetes CustomResourceDefinition manifest.

The CustomResourceDefinition API resource allows you to define custom resources. Defining a CRD object creates a new custom resource with a name and schema that you specify. The Kubernetes API serves and handles the storage of your custom resource.

Link to this section Summary

Types

t()

CRD Spec

Functions

Gets group version from CRD spec

Default CLI printer columns.

CRD Kind or plural name

Generates the map equivalent of the Kubernetes CRD YAML manifest

Link to this section Types

Link to this type

t()
t() :: %Bonny.CRD{
  additional_printer_columns: [columns_t()],
  group: String.t() | nil,
  names: names_t(),
  scope: :namespaced | :cluster,
  version: String.t()
}

CRD Spec

Link to this section Functions

Link to this function

api_version(crd)
api_version(Bonny.CRD.t()) :: String.t()

Gets group version from CRD spec

Examples

Returns apiVersion for an operator

iex> Bonny.CRD.api_version(%Bonny.CRD{group: "hello.example.com", version: "v1", scope: :namespaced, names: %{}})
"hello.example.com/v1"

Returns apiVersion for apps resources

iex> Bonny.CRD.api_version(%Bonny.CRD{group: "apps", version: "v1", scope: :namespaced, names: %{}})
"apps/v1"

Returns apiVersion for core resources

iex> Bonny.CRD.api_version(%Bonny.CRD{group: "", version: "v1", scope: :namespaced, names: %{}})
"v1"

iex> Bonny.CRD.api_version(%Bonny.CRD{group: nil, version: "v1", scope: :namespaced, names: %{}})
"v1"
Link to this function

default_columns()
default_columns() :: [map()]

Default CLI printer columns.

These are added to the CRDs columns when columns are set.

The kubernetes API returns these by default when they are not set.

CRD Kind or plural name

Examples

iex> Bonny.CRD.kind(%Bonny.CRD{names: %{plural: "greetings"}, scope: :namespaced, group: "test", version: "v1"})
"greetings"
Link to this function

to_manifest(crd)
to_manifest(Bonny.CRD.t()) :: map()

Generates the map equivalent of the Kubernetes CRD YAML manifest

---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  creationTimestamp: null
  name: widgets.example.com
spec:
  group: example.com
  names:
    kind: Widget
    plural: widgets
  scope: Namespaced
  version: v1