airshipctl/manifests/function/airshipctl-schemas/airshipit.org_clusterctls.yaml
Matthew Fuller 52c5aedc63 Generate additional CRDs from API types
'make manifests' attempts to generate all airshipctl API types,
but several types throw errors and the resulting CRDs can't be
properly generated. This change:

- updates the controller-gen version to pull in a bug fix for the
  error 'map values must be a named type, not *ast.StarExpr'
- modifies the Templater type's Values member to be of type JSON
  since controller-gen does not support map[string]interface{},
  and unmarshals it separately in the templater itself
- adds 'image_repositories' to the VersionsCatalogueSpec struct
  to ensure it doesn't get deleted from the schema when manifests
  get regenerated
- checks in generated copies of all CRDs from airshipctl's API
  types, not just catalogues, to be used for validation

Closes: #574
Change-Id: I89a12cfd307a08da9aaec9773eac01169ea43ace
2021-06-25 19:10:25 +00:00

175 lines
7.9 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.6.1
creationTimestamp: null
name: clusterctls.airshipit.org
spec:
group: airshipit.org
names:
kind: Clusterctl
listKind: ClusterctlList
plural: clusterctls
singular: clusterctl
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Clusterctl provides information about clusterctl components
properties:
action:
description: ActionType for clusterctl
type: string
additional-vars:
additionalProperties:
type: string
description: AdditionalComponentVariables are variables that will be available
to clusterctl when reading provider components
type: object
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
env-vars:
description: EnvVars if set to true, allows to source variables for cluster-api
components for environment variables.
type: boolean
images:
additionalProperties:
description: ImageMeta is part of clusterctl config
properties:
repository:
type: string
tag:
type: string
type: object
type: object
init-options:
description: InitOptions container with exposed clusterctl InitOptions
properties:
bootstrap-providers:
description: BootstrapProviders and versions (e.g. kubeadm:v0.3.0)
to add to the management cluster. If unspecified, the kubeadm bootstrap
provider's latest release is used.
items:
type: string
type: array
control-plane-providers:
description: ControlPlaneProviders and versions (e.g. kubeadm:v0.3.0)
to add to the management cluster. If unspecified, the kubeadm control
plane provider latest release is used.
items:
type: string
type: array
core-provider:
description: CoreProvider version (e.g. cluster-api:v0.3.0) to add
to the management cluster. If unspecified, the cluster-api core
provider's latest release is used.
type: string
infrastructure-providers:
description: InfrastructureProviders and versions (e.g. aws:v0.5.0)
to add to the management cluster.
items:
type: string
type: array
kubeConfigRef:
description: KubeConfigRef reference to KubeConfig document
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead of
an entire object, this string should contain a valid JSON/Go
field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within
a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]"
(container with index 2 in this pod). This syntax is chosen
only to have some well-defined way of referencing a part of
an object. TODO: this design is not final and this field is
subject to change in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
type: object
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
move-options:
description: MoveOptions carries the options supported by move.
properties:
namespace:
description: The namespace where the workload cluster is hosted. If
unspecified, the target context's namespace is used.
type: string
type: object
providers:
items:
description: Provider is part of clusterctl config
properties:
clusterctl-repository:
description: IsClusterctlRepository if set to true, clusterctl provider's
repository implementation will be used if omitted or set to false,
airshipctl repository implementation will be used.
type: boolean
name:
type: string
type:
type: string
url:
type: string
variable-substitution:
description: VariableSubstitution indicates weather you want to
substitute variables in the cluster-api manifests if set to true,
variables will be substituted only if they are defined either
in Environment or in AdditionalComponentVariables, if not they
will be left as is.
type: boolean
versions:
additionalProperties:
type: string
description: Map of versions where each key is a version and value
is path relative to target path of the manifest ignored if IsClusterctlRepository
is set to true
type: object
required:
- name
- type
type: object
type: array
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []