Changes for API support (#642)
|
@ -52,6 +52,10 @@ module:
|
|||
- "**/**.jpg"
|
||||
- "**/**.jpeg"
|
||||
- "**/**.gif"
|
||||
- source: content
|
||||
target: data/crds/
|
||||
includeFiles:
|
||||
- "**/api/**.yaml"
|
||||
|
||||
security:
|
||||
funcs:
|
||||
|
|
|
@ -312,3 +312,15 @@ A second example tab.
|
|||
|
||||
Both `tab` and `tabs` require opening and closing tags. Unclosed tags causes
|
||||
Hugo to fail.
|
||||
|
||||
## API documentation
|
||||
|
||||
The API documentation is auto generated from the Crossplane YAML files from the
|
||||
[cluster/crds](https://github.com/crossplane/crossplane/tree/master/cluster/crds)
|
||||
directory.
|
||||
|
||||
Place any updated files in the `/content/<version>/api/yaml` folder to update or
|
||||
generate new API documentation.
|
||||
|
||||
The logic for parsing the YAML is in
|
||||
`/themes/geekboot/layouts/partials/crds.html`.
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
title: Crossplane API
|
||||
weight: 400
|
||||
description: "API details for Crossplane's core types"
|
||||
cascade:
|
||||
product: crds
|
||||
---
|
||||
|
||||
The Crossplane API describes the types and parameters for the core Crossplane
|
||||
components.
|
||||
|
||||
For details on the components read the [Concepts]({{<ref "../concepts/">}})
|
||||
section.
|
|
@ -0,0 +1,517 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: compositeresourcedefinitions.apiextensions.crossplane.io
|
||||
spec:
|
||||
group: apiextensions.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
kind: CompositeResourceDefinition
|
||||
listKind: CompositeResourceDefinitionList
|
||||
plural: compositeresourcedefinitions
|
||||
shortNames:
|
||||
- xrd
|
||||
- xrds
|
||||
singular: compositeresourcedefinition
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=='Established')].status
|
||||
name: ESTABLISHED
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=='Offered')].status
|
||||
name: OFFERED
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A CompositeResourceDefinition defines a new kind of composite
|
||||
infrastructure resource. The new resource is composed of other composite
|
||||
or managed infrastructure resources.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: CompositeResourceDefinitionSpec specifies the desired state
|
||||
of the definition.
|
||||
properties:
|
||||
claimNames:
|
||||
description: ClaimNames specifies the names of an optional composite
|
||||
resource claim. When claim names are specified Crossplane will create
|
||||
a namespaced 'composite resource claim' CRD that corresponds to
|
||||
the defined composite resource. This composite resource claim acts
|
||||
as a namespaced proxy for the composite resource; creating, updating,
|
||||
or deleting the claim will create, update, or delete a corresponding
|
||||
composite resource. You may add claim names to an existing CompositeResourceDefinition,
|
||||
but they cannot be changed or removed once they have been set.
|
||||
properties:
|
||||
categories:
|
||||
description: categories is a list of grouped resources this custom
|
||||
resource belongs to (e.g. 'all'). This is published in API discovery
|
||||
documents, and used by clients to support invocations like `kubectl
|
||||
get all`.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
kind:
|
||||
description: kind is the serialized kind of the resource. It is
|
||||
normally CamelCase and singular. Custom resource instances will
|
||||
use this value as the `kind` attribute in API calls.
|
||||
type: string
|
||||
listKind:
|
||||
description: listKind is the serialized kind of the list for this
|
||||
resource. Defaults to "`kind`List".
|
||||
type: string
|
||||
plural:
|
||||
description: plural is the plural name of the resource to serve.
|
||||
The custom resources are served under `/apis/<group>/<version>/.../<plural>`.
|
||||
Must match the name of the CustomResourceDefinition (in the
|
||||
form `<names.plural>.<group>`). Must be all lowercase.
|
||||
type: string
|
||||
shortNames:
|
||||
description: shortNames are short names for the resource, exposed
|
||||
in API discovery documents, and used by clients to support invocations
|
||||
like `kubectl get <shortname>`. It must be all lowercase.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
singular:
|
||||
description: singular is the singular name of the resource. It
|
||||
must be all lowercase. Defaults to lowercased `kind`.
|
||||
type: string
|
||||
required:
|
||||
- kind
|
||||
- plural
|
||||
type: object
|
||||
connectionSecretKeys:
|
||||
description: ConnectionSecretKeys is the list of keys that will be
|
||||
exposed to the end user of the defined kind. If the list is empty,
|
||||
all keys will be published.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
conversion:
|
||||
description: Conversion defines all conversion settings for the defined
|
||||
Composite resource.
|
||||
properties:
|
||||
strategy:
|
||||
description: 'strategy specifies how custom resources are converted
|
||||
between versions. Allowed values are: - `"None"`: The converter
|
||||
only change the apiVersion and would not touch any other field
|
||||
in the custom resource. - `"Webhook"`: API Server will call
|
||||
to an external webhook to do the conversion. Additional information
|
||||
is needed for this option. This requires spec.preserveUnknownFields
|
||||
to be false, and spec.conversion.webhook to be set.'
|
||||
type: string
|
||||
webhook:
|
||||
description: webhook describes how to call the conversion webhook.
|
||||
Required when `strategy` is set to `"Webhook"`.
|
||||
properties:
|
||||
clientConfig:
|
||||
description: clientConfig is the instructions for how to call
|
||||
the webhook if strategy is `Webhook`.
|
||||
properties:
|
||||
caBundle:
|
||||
description: caBundle is a PEM encoded CA bundle which
|
||||
will be used to validate the webhook's server certificate.
|
||||
If unspecified, system trust roots on the apiserver
|
||||
are used.
|
||||
format: byte
|
||||
type: string
|
||||
service:
|
||||
description: "service is a reference to the service for
|
||||
this webhook. Either service or url must be specified.
|
||||
\n If the webhook is running within the cluster, then
|
||||
you should use `service`."
|
||||
properties:
|
||||
name:
|
||||
description: name is the name of the service. Required
|
||||
type: string
|
||||
namespace:
|
||||
description: namespace is the namespace of the service.
|
||||
Required
|
||||
type: string
|
||||
path:
|
||||
description: path is an optional URL path at which
|
||||
the webhook will be contacted.
|
||||
type: string
|
||||
port:
|
||||
description: port is an optional service port at which
|
||||
the webhook will be contacted. `port` should be
|
||||
a valid port number (1-65535, inclusive). Defaults
|
||||
to 443 for backward compatibility.
|
||||
format: int32
|
||||
type: integer
|
||||
required:
|
||||
- name
|
||||
- namespace
|
||||
type: object
|
||||
url:
|
||||
description: "url gives the location of the webhook, in
|
||||
standard URL form (`scheme://host:port/path`). Exactly
|
||||
one of `url` or `service` must be specified. \n The
|
||||
`host` should not refer to a service running in the
|
||||
cluster; use the `service` field instead. The host might
|
||||
be resolved via external DNS in some apiservers (e.g.,
|
||||
`kube-apiserver` cannot resolve in-cluster DNS as that
|
||||
would be a layering violation). `host` may also be an
|
||||
IP address. \n Please note that using `localhost` or
|
||||
`127.0.0.1` as a `host` is risky unless you take great
|
||||
care to run this webhook on all hosts which run an apiserver
|
||||
which might need to make calls to this webhook. Such
|
||||
installs are likely to be non-portable, i.e., not easy
|
||||
to turn up in a new cluster. \n The scheme must be \"https\";
|
||||
the URL must begin with \"https://\". \n A path is optional,
|
||||
and if present may be any string permissible in a URL.
|
||||
You may use the path to pass an arbitrary string to
|
||||
the webhook, for example, a cluster identifier. \n Attempting
|
||||
to use a user or basic auth e.g. \"user:password@\"
|
||||
is not allowed. Fragments (\"#...\") and query parameters
|
||||
(\"?...\") are not allowed, either."
|
||||
type: string
|
||||
type: object
|
||||
conversionReviewVersions:
|
||||
description: conversionReviewVersions is an ordered list of
|
||||
preferred `ConversionReview` versions the Webhook expects.
|
||||
The API server will use the first version in the list which
|
||||
it supports. If none of the versions specified in this list
|
||||
are supported by API server, conversion will fail for the
|
||||
custom resource. If a persisted Webhook configuration specifies
|
||||
allowed versions and does not include any versions known
|
||||
to the API Server, calls to the webhook will fail.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- conversionReviewVersions
|
||||
type: object
|
||||
required:
|
||||
- strategy
|
||||
type: object
|
||||
defaultCompositeDeletePolicy:
|
||||
default: Background
|
||||
description: DefaultCompositeDeletePolicy is the policy used when
|
||||
deleting the Composite that is associated with the Claim if no policy
|
||||
has been specified.
|
||||
enum:
|
||||
- Background
|
||||
- Foreground
|
||||
type: string
|
||||
defaultCompositionRef:
|
||||
description: DefaultCompositionRef refers to the Composition resource
|
||||
that will be used in case no composition selector is given.
|
||||
properties:
|
||||
name:
|
||||
description: Name of the Composition.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
defaultCompositionUpdatePolicy:
|
||||
default: Automatic
|
||||
description: DefaultCompositionUpdatePolicy is the policy used when
|
||||
updating composites after a new Composition Revision has been created
|
||||
if no policy has been specified on the composite.
|
||||
enum:
|
||||
- Automatic
|
||||
- Manual
|
||||
type: string
|
||||
enforcedCompositionRef:
|
||||
description: EnforcedCompositionRef refers to the Composition resource
|
||||
that will be used by all composite instances whose schema is defined
|
||||
by this definition.
|
||||
properties:
|
||||
name:
|
||||
description: Name of the Composition.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
group:
|
||||
description: Group specifies the API group of the defined composite
|
||||
resource. Composite resources are served under `/apis/<group>/...`.
|
||||
Must match the name of the XRD (in the form `<names.plural>.<group>`).
|
||||
type: string
|
||||
metadata:
|
||||
description: Metadata specifies the desired metadata for the defined
|
||||
composite resource and claim CRD's.
|
||||
properties:
|
||||
annotations:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Annotations is an unstructured key value map stored
|
||||
with a resource that may be set by external tools to store and
|
||||
retrieve arbitrary metadata. They are not queryable and should
|
||||
be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations'
|
||||
type: object
|
||||
labels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Map of string keys and values that can be used to
|
||||
organize and categorize (scope and select) objects. May match
|
||||
selectors of replication controllers More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
|
||||
and services. These labels are added to the composite resource
|
||||
and claim CRD''s in addition to any labels defined by `CompositionResourceDefinition`
|
||||
`metadata.labels`.'
|
||||
type: object
|
||||
type: object
|
||||
names:
|
||||
description: Names specifies the resource and kind names of the defined
|
||||
composite resource.
|
||||
properties:
|
||||
categories:
|
||||
description: categories is a list of grouped resources this custom
|
||||
resource belongs to (e.g. 'all'). This is published in API discovery
|
||||
documents, and used by clients to support invocations like `kubectl
|
||||
get all`.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
kind:
|
||||
description: kind is the serialized kind of the resource. It is
|
||||
normally CamelCase and singular. Custom resource instances will
|
||||
use this value as the `kind` attribute in API calls.
|
||||
type: string
|
||||
listKind:
|
||||
description: listKind is the serialized kind of the list for this
|
||||
resource. Defaults to "`kind`List".
|
||||
type: string
|
||||
plural:
|
||||
description: plural is the plural name of the resource to serve.
|
||||
The custom resources are served under `/apis/<group>/<version>/.../<plural>`.
|
||||
Must match the name of the CustomResourceDefinition (in the
|
||||
form `<names.plural>.<group>`). Must be all lowercase.
|
||||
type: string
|
||||
shortNames:
|
||||
description: shortNames are short names for the resource, exposed
|
||||
in API discovery documents, and used by clients to support invocations
|
||||
like `kubectl get <shortname>`. It must be all lowercase.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
singular:
|
||||
description: singular is the singular name of the resource. It
|
||||
must be all lowercase. Defaults to lowercased `kind`.
|
||||
type: string
|
||||
required:
|
||||
- kind
|
||||
- plural
|
||||
type: object
|
||||
versions:
|
||||
description: 'Versions is the list of all API versions of the defined
|
||||
composite resource. Version names are used to compute the order
|
||||
in which served versions are listed in API discovery. If the version
|
||||
string is "kube-like", it will sort above non "kube-like" version
|
||||
strings, which are ordered lexicographically. "Kube-like" versions
|
||||
start with a "v", then are followed by a number (the major version),
|
||||
then optionally the string "alpha" or "beta" and another number
|
||||
(the minor version). These are sorted first by GA > beta > alpha
|
||||
(where GA is a version with no suffix such as beta or alpha), and
|
||||
then by comparing major version, then minor version. An example
|
||||
sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1,
|
||||
v12alpha1, v11alpha2, foo1, foo10.'
|
||||
items:
|
||||
description: CompositeResourceDefinitionVersion describes a version
|
||||
of an XR.
|
||||
properties:
|
||||
additionalPrinterColumns:
|
||||
description: 'AdditionalPrinterColumns specifies additional
|
||||
columns returned in Table output. If no columns are specified,
|
||||
a single column displaying the age of the custom resource
|
||||
is used. See the following link for details: https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables'
|
||||
items:
|
||||
description: CustomResourceColumnDefinition specifies a column
|
||||
for server side printing.
|
||||
properties:
|
||||
description:
|
||||
description: description is a human readable description
|
||||
of this column.
|
||||
type: string
|
||||
format:
|
||||
description: format is an optional OpenAPI type definition
|
||||
for this column. The 'name' format is applied to the
|
||||
primary identifier column to assist in clients identifying
|
||||
column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types
|
||||
for details.
|
||||
type: string
|
||||
jsonPath:
|
||||
description: jsonPath is a simple JSON path (i.e. with
|
||||
array notation) which is evaluated against each custom
|
||||
resource to produce the value for this column.
|
||||
type: string
|
||||
name:
|
||||
description: name is a human readable name for the column.
|
||||
type: string
|
||||
priority:
|
||||
description: priority is an integer defining the relative
|
||||
importance of this column compared to others. Lower
|
||||
numbers are considered higher priority. Columns that
|
||||
may be omitted in limited space scenarios should be
|
||||
given a priority greater than 0.
|
||||
format: int32
|
||||
type: integer
|
||||
type:
|
||||
description: type is an OpenAPI type definition for this
|
||||
column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types
|
||||
for details.
|
||||
type: string
|
||||
required:
|
||||
- jsonPath
|
||||
- name
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
deprecated:
|
||||
description: The deprecated field specifies that this version
|
||||
is deprecated and should not be used.
|
||||
type: boolean
|
||||
deprecationWarning:
|
||||
description: DeprecationWarning specifies the message that should
|
||||
be shown to the user when using this version.
|
||||
type: string
|
||||
name:
|
||||
description: Name of this version, e.g. “v1”, “v2beta1”, etc.
|
||||
Composite resources are served under this version at `/apis/<group>/<version>/...`
|
||||
if `served` is true.
|
||||
type: string
|
||||
referenceable:
|
||||
description: Referenceable specifies that this version may be
|
||||
referenced by a Composition in order to configure which resources
|
||||
an XR may be composed of. Exactly one version must be marked
|
||||
as referenceable; all Compositions must target only the referenceable
|
||||
version. The referenceable version must be served. It's mapped
|
||||
to the CRD's `spec.versions[*].storage` field.
|
||||
type: boolean
|
||||
schema:
|
||||
description: Schema describes the schema used for validation,
|
||||
pruning, and defaulting of this version of the defined composite
|
||||
resource. Fields required by all composite resources will
|
||||
be injected into this schema automatically, and will override
|
||||
equivalently named fields in this schema. Omitting this schema
|
||||
results in a schema that contains only the fields required
|
||||
by all composite resources.
|
||||
properties:
|
||||
openAPIV3Schema:
|
||||
description: OpenAPIV3Schema is the OpenAPI v3 schema to
|
||||
use for validation and pruning.
|
||||
type: object
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
type: object
|
||||
served:
|
||||
description: Served specifies that this version should be served
|
||||
via REST APIs.
|
||||
type: boolean
|
||||
required:
|
||||
- name
|
||||
- referenceable
|
||||
- served
|
||||
type: object
|
||||
type: array
|
||||
required:
|
||||
- group
|
||||
- names
|
||||
- versions
|
||||
type: object
|
||||
status:
|
||||
description: CompositeResourceDefinitionStatus shows the observed state
|
||||
of the definition.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
controllers:
|
||||
description: Controllers represents the status of the controllers
|
||||
that power this composite resource definition.
|
||||
properties:
|
||||
compositeResourceClaimType:
|
||||
description: The CompositeResourceClaimTypeRef is the type of
|
||||
composite resource claim that Crossplane is currently reconciling
|
||||
for this definition. Its version will eventually become consistent
|
||||
with the definition's referenceable version. Note that clients
|
||||
may interact with any served type; this is simply the type that
|
||||
Crossplane interacts with.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: APIVersion of the type.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the type.
|
||||
type: string
|
||||
required:
|
||||
- apiVersion
|
||||
- kind
|
||||
type: object
|
||||
compositeResourceType:
|
||||
description: The CompositeResourceTypeRef is the type of composite
|
||||
resource that Crossplane is currently reconciling for this definition.
|
||||
Its version will eventually become consistent with the definition's
|
||||
referenceable version. Note that clients may interact with any
|
||||
served type; this is simply the type that Crossplane interacts
|
||||
with.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: APIVersion of the type.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the type.
|
||||
type: string
|
||||
required:
|
||||
- apiVersion
|
||||
- kind
|
||||
type: object
|
||||
type: object
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,51 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: environmentconfigs.apiextensions.crossplane.io
|
||||
spec:
|
||||
group: apiextensions.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
kind: EnvironmentConfig
|
||||
listKind: EnvironmentConfigList
|
||||
plural: environmentconfigs
|
||||
shortNames:
|
||||
- envcfg
|
||||
singular: environmentconfig
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A EnvironmentConfig contains a set of arbitrary, unstructured
|
||||
values.
|
||||
properties:
|
||||
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
|
||||
data:
|
||||
additionalProperties:
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
description: The data of this EnvironmentConfig. This may contain any
|
||||
kind of structure that can be serialized into JSON.
|
||||
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
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources: {}
|
|
@ -0,0 +1,180 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: usages.apiextensions.crossplane.io
|
||||
spec:
|
||||
group: apiextensions.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
kind: Usage
|
||||
listKind: UsageList
|
||||
plural: usages
|
||||
singular: usage
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.annotations.crossplane\.io/usage-details
|
||||
name: DETAILS
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=='Ready')].status
|
||||
name: READY
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A Usage defines a deletion blocking relationship between two
|
||||
resources.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: UsageSpec defines the desired state of Usage.
|
||||
properties:
|
||||
by:
|
||||
description: By is the resource that is "using the other resource".
|
||||
properties:
|
||||
apiVersion:
|
||||
description: API version of the referent.
|
||||
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
|
||||
resourceRef:
|
||||
description: Reference to the resource.
|
||||
properties:
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
resourceSelector:
|
||||
description: Selector to the resource. This field will be ignored
|
||||
if ResourceRef is set.
|
||||
properties:
|
||||
matchControllerRef:
|
||||
description: MatchControllerRef ensures an object with the
|
||||
same controller reference as the selecting object is selected.
|
||||
type: boolean
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: MatchLabels ensures an object with matching labels
|
||||
is selected.
|
||||
type: object
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: either a resource reference or a resource selector should
|
||||
be set.
|
||||
rule: has(self.resourceRef) || has(self.resourceSelector)
|
||||
of:
|
||||
description: Of is the resource that is "being used".
|
||||
properties:
|
||||
apiVersion:
|
||||
description: API version of the referent.
|
||||
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
|
||||
resourceRef:
|
||||
description: Reference to the resource.
|
||||
properties:
|
||||
name:
|
||||
description: Name of the referent.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
resourceSelector:
|
||||
description: Selector to the resource. This field will be ignored
|
||||
if ResourceRef is set.
|
||||
properties:
|
||||
matchControllerRef:
|
||||
description: MatchControllerRef ensures an object with the
|
||||
same controller reference as the selecting object is selected.
|
||||
type: boolean
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: MatchLabels ensures an object with matching labels
|
||||
is selected.
|
||||
type: object
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: either a resource reference or a resource selector should
|
||||
be set.
|
||||
rule: has(self.resourceRef) || has(self.resourceSelector)
|
||||
reason:
|
||||
description: Reason is the reason for blocking deletion of the resource.
|
||||
type: string
|
||||
required:
|
||||
- of
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: either "spec.by" or "spec.reason" must be specified.
|
||||
rule: has(self.by) || has(self.reason)
|
||||
status:
|
||||
description: UsageStatus defines the observed state of Usage.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
type: object
|
||||
required:
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,252 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: configurationrevisions.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
- pkgrev
|
||||
kind: ConfigurationRevision
|
||||
listKind: ConfigurationRevisionList
|
||||
plural: configurationrevisions
|
||||
singular: configurationrevision
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||
name: HEALTHY
|
||||
type: string
|
||||
- jsonPath: .spec.revision
|
||||
name: REVISION
|
||||
type: string
|
||||
- jsonPath: .spec.image
|
||||
name: IMAGE
|
||||
type: string
|
||||
- jsonPath: .spec.desiredState
|
||||
name: STATE
|
||||
type: string
|
||||
- jsonPath: .status.foundDependencies
|
||||
name: DEP-FOUND
|
||||
type: string
|
||||
- jsonPath: .status.installedDependencies
|
||||
name: DEP-INSTALLED
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A ConfigurationRevision that has been added to Crossplane.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: PackageRevisionSpec specifies the desired state of a PackageRevision.
|
||||
properties:
|
||||
commonLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Map of string keys and values that can be used to organize
|
||||
and categorize (scope and select) objects. May match selectors of
|
||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
||||
type: object
|
||||
desiredState:
|
||||
description: DesiredState of the PackageRevision. Can be either Active
|
||||
or Inactive.
|
||||
type: string
|
||||
ignoreCrossplaneConstraints:
|
||||
default: false
|
||||
description: IgnoreCrossplaneConstraints indicates to the package
|
||||
manager whether to honor Crossplane version constrains specified
|
||||
by the package. Default is false.
|
||||
type: boolean
|
||||
image:
|
||||
description: Package image used by install Pod to extract package
|
||||
contents.
|
||||
type: string
|
||||
packagePullPolicy:
|
||||
default: IfNotPresent
|
||||
description: PackagePullPolicy defines the pull policy for the package.
|
||||
It is also applied to any images pulled for the package, such as
|
||||
a provider's controller image. Default is IfNotPresent.
|
||||
type: string
|
||||
packagePullSecrets:
|
||||
description: PackagePullSecrets are named secrets in the same namespace
|
||||
that can be used to fetch packages from private registries. They
|
||||
are also applied to any images pulled for the package, such as a
|
||||
provider's controller image.
|
||||
items:
|
||||
description: LocalObjectReference contains enough information to
|
||||
let you locate the referenced object inside the same namespace.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
revision:
|
||||
description: Revision number. Indicates when the revision will be
|
||||
garbage collected based on the parent's RevisionHistoryLimit.
|
||||
format: int64
|
||||
type: integer
|
||||
skipDependencyResolution:
|
||||
default: false
|
||||
description: SkipDependencyResolution indicates to the package manager
|
||||
whether to skip resolving dependencies for a package. Setting this
|
||||
value to true may have unintended consequences. Default is false.
|
||||
type: boolean
|
||||
required:
|
||||
- desiredState
|
||||
- image
|
||||
- revision
|
||||
type: object
|
||||
status:
|
||||
description: PackageRevisionStatus represents the observed state of a
|
||||
PackageRevision.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
foundDependencies:
|
||||
description: Dependency information.
|
||||
format: int64
|
||||
type: integer
|
||||
installedDependencies:
|
||||
format: int64
|
||||
type: integer
|
||||
invalidDependencies:
|
||||
format: int64
|
||||
type: integer
|
||||
objectRefs:
|
||||
description: References to objects owned by PackageRevision.
|
||||
items:
|
||||
description: A TypedReference refers to an object by Name, Kind,
|
||||
and APIVersion. It is commonly used to reference cluster-scoped
|
||||
objects or objects where the namespace is already known.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: APIVersion of the referenced object.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the referenced object.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referenced object.
|
||||
type: string
|
||||
uid:
|
||||
description: UID of the referenced object.
|
||||
type: string
|
||||
required:
|
||||
- apiVersion
|
||||
- kind
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
permissionRequests:
|
||||
description: PermissionRequests made by this package. The package
|
||||
declares that its controller needs these permissions to run. The
|
||||
RBAC manager is responsible for granting them.
|
||||
items:
|
||||
description: PolicyRule holds information that describes a policy
|
||||
rule, but does not contain information about who the rule applies
|
||||
to or which namespace the rule applies to.
|
||||
properties:
|
||||
apiGroups:
|
||||
description: APIGroups is the name of the APIGroup that contains
|
||||
the resources. If multiple API groups are specified, any
|
||||
action requested against one of the enumerated resources in
|
||||
any API group will be allowed. "" represents the core API
|
||||
group and "*" represents all API groups.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
nonResourceURLs:
|
||||
description: NonResourceURLs is a set of partial urls that a
|
||||
user should have access to. *s are allowed, but only as the
|
||||
full, final step in the path Since non-resource URLs are not
|
||||
namespaced, this field is only applicable for ClusterRoles
|
||||
referenced from a ClusterRoleBinding. Rules can either apply
|
||||
to API resources (such as "pods" or "secrets") or non-resource
|
||||
URL paths (such as "/api"), but not both.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
resourceNames:
|
||||
description: ResourceNames is an optional white list of names
|
||||
that the rule applies to. An empty set means that everything
|
||||
is allowed.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
resources:
|
||||
description: Resources is a list of resources this rule applies
|
||||
to. '*' represents all resources.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
verbs:
|
||||
description: Verbs is a list of Verbs that apply to ALL the
|
||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- verbs
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,168 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: configurations.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
- pkg
|
||||
kind: Configuration
|
||||
listKind: ConfigurationList
|
||||
plural: configurations
|
||||
singular: configuration
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||
name: INSTALLED
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||
name: HEALTHY
|
||||
type: string
|
||||
- jsonPath: .spec.package
|
||||
name: PACKAGE
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Configuration is the CRD type for a request to add a configuration
|
||||
to Crossplane.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: ConfigurationSpec specifies details about a request to install
|
||||
a configuration to Crossplane.
|
||||
properties:
|
||||
commonLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Map of string keys and values that can be used to organize
|
||||
and categorize (scope and select) objects. May match selectors of
|
||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
||||
type: object
|
||||
ignoreCrossplaneConstraints:
|
||||
default: false
|
||||
description: IgnoreCrossplaneConstraints indicates to the package
|
||||
manager whether to honor Crossplane version constrains specified
|
||||
by the package. Default is false.
|
||||
type: boolean
|
||||
package:
|
||||
description: Package is the name of the package that is being requested.
|
||||
type: string
|
||||
packagePullPolicy:
|
||||
default: IfNotPresent
|
||||
description: PackagePullPolicy defines the pull policy for the package.
|
||||
Default is IfNotPresent.
|
||||
type: string
|
||||
packagePullSecrets:
|
||||
description: PackagePullSecrets are named secrets in the same namespace
|
||||
that can be used to fetch packages from private registries.
|
||||
items:
|
||||
description: LocalObjectReference contains enough information to
|
||||
let you locate the referenced object inside the same namespace.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
revisionActivationPolicy:
|
||||
default: Automatic
|
||||
description: RevisionActivationPolicy specifies how the package controller
|
||||
should update from one revision to the next. Options are Automatic
|
||||
or Manual. Default is Automatic.
|
||||
type: string
|
||||
revisionHistoryLimit:
|
||||
default: 1
|
||||
description: RevisionHistoryLimit dictates how the package controller
|
||||
cleans up old inactive package revisions. Defaults to 1. Can be
|
||||
disabled by explicitly setting to 0.
|
||||
format: int64
|
||||
type: integer
|
||||
skipDependencyResolution:
|
||||
default: false
|
||||
description: SkipDependencyResolution indicates to the package manager
|
||||
whether to skip resolving dependencies for a package. Setting this
|
||||
value to true may have unintended consequences. Default is false.
|
||||
type: boolean
|
||||
required:
|
||||
- package
|
||||
type: object
|
||||
status:
|
||||
description: ConfigurationStatus represents the observed state of a Configuration.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
currentIdentifier:
|
||||
description: CurrentIdentifier is the most recent package source that
|
||||
was used to produce a revision. The package manager uses this field
|
||||
to determine whether to check for package updates for a given source
|
||||
when packagePullPolicy is set to IfNotPresent. Manually removing
|
||||
this field will cause the package manager to check that the current
|
||||
revision is correct for the given package source.
|
||||
type: string
|
||||
currentRevision:
|
||||
description: CurrentRevision is the name of the current package revision.
|
||||
It will reflect the most up to date revision, whether it has been
|
||||
activated or not.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,295 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: functionrevisions.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
- pkgrev
|
||||
kind: FunctionRevision
|
||||
listKind: FunctionRevisionList
|
||||
plural: functionrevisions
|
||||
singular: functionrevision
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||
name: HEALTHY
|
||||
type: string
|
||||
- jsonPath: .spec.revision
|
||||
name: REVISION
|
||||
type: string
|
||||
- jsonPath: .spec.image
|
||||
name: IMAGE
|
||||
type: string
|
||||
- jsonPath: .spec.desiredState
|
||||
name: STATE
|
||||
type: string
|
||||
- jsonPath: .status.foundDependencies
|
||||
name: DEP-FOUND
|
||||
type: string
|
||||
- jsonPath: .status.installedDependencies
|
||||
name: DEP-INSTALLED
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1beta1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A FunctionRevision that has been added to Crossplane.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: FunctionRevisionSpec specifies configuration for a FunctionRevision.
|
||||
properties:
|
||||
commonLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Map of string keys and values that can be used to organize
|
||||
and categorize (scope and select) objects. May match selectors of
|
||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
||||
that will be used to configure the packaged controller Deployment.
|
||||
Deprecated: Use RuntimeConfigReference instead.'
|
||||
properties:
|
||||
name:
|
||||
description: Name of the ControllerConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
desiredState:
|
||||
description: DesiredState of the PackageRevision. Can be either Active
|
||||
or Inactive.
|
||||
type: string
|
||||
ignoreCrossplaneConstraints:
|
||||
default: false
|
||||
description: IgnoreCrossplaneConstraints indicates to the package
|
||||
manager whether to honor Crossplane version constrains specified
|
||||
by the package. Default is false.
|
||||
type: boolean
|
||||
image:
|
||||
description: Package image used by install Pod to extract package
|
||||
contents.
|
||||
type: string
|
||||
packagePullPolicy:
|
||||
default: IfNotPresent
|
||||
description: PackagePullPolicy defines the pull policy for the package.
|
||||
It is also applied to any images pulled for the package, such as
|
||||
a provider's controller image. Default is IfNotPresent.
|
||||
type: string
|
||||
packagePullSecrets:
|
||||
description: PackagePullSecrets are named secrets in the same namespace
|
||||
that can be used to fetch packages from private registries. They
|
||||
are also applied to any images pulled for the package, such as a
|
||||
provider's controller image.
|
||||
items:
|
||||
description: LocalObjectReference contains enough information to
|
||||
let you locate the referenced object inside the same namespace.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
revision:
|
||||
description: Revision number. Indicates when the revision will be
|
||||
garbage collected based on the parent's RevisionHistoryLimit.
|
||||
format: int64
|
||||
type: integer
|
||||
runtimeConfigRef:
|
||||
default:
|
||||
name: default
|
||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
||||
that will be used to configure the package runtime.
|
||||
properties:
|
||||
apiVersion:
|
||||
default: pkg.crossplane.io/v1beta1
|
||||
description: API version of the referent.
|
||||
type: string
|
||||
kind:
|
||||
default: DeploymentRuntimeConfig
|
||||
description: Kind of the referent.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the RuntimeConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
skipDependencyResolution:
|
||||
default: false
|
||||
description: SkipDependencyResolution indicates to the package manager
|
||||
whether to skip resolving dependencies for a package. Setting this
|
||||
value to true may have unintended consequences. Default is false.
|
||||
type: boolean
|
||||
tlsClientSecretName:
|
||||
description: TLSClientSecretName is the name of the TLS Secret that
|
||||
stores client certificates of the Provider.
|
||||
type: string
|
||||
tlsServerSecretName:
|
||||
description: TLSServerSecretName is the name of the TLS Secret that
|
||||
stores server certificates of the Provider.
|
||||
type: string
|
||||
required:
|
||||
- desiredState
|
||||
- image
|
||||
- revision
|
||||
type: object
|
||||
status:
|
||||
description: FunctionRevisionStatus represents the observed state of a
|
||||
FunctionRevision.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
endpoint:
|
||||
description: Endpoint is the gRPC endpoint where Crossplane will send
|
||||
RunFunctionRequests.
|
||||
type: string
|
||||
foundDependencies:
|
||||
description: Dependency information.
|
||||
format: int64
|
||||
type: integer
|
||||
installedDependencies:
|
||||
format: int64
|
||||
type: integer
|
||||
invalidDependencies:
|
||||
format: int64
|
||||
type: integer
|
||||
objectRefs:
|
||||
description: References to objects owned by PackageRevision.
|
||||
items:
|
||||
description: A TypedReference refers to an object by Name, Kind,
|
||||
and APIVersion. It is commonly used to reference cluster-scoped
|
||||
objects or objects where the namespace is already known.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: APIVersion of the referenced object.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the referenced object.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referenced object.
|
||||
type: string
|
||||
uid:
|
||||
description: UID of the referenced object.
|
||||
type: string
|
||||
required:
|
||||
- apiVersion
|
||||
- kind
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
permissionRequests:
|
||||
description: PermissionRequests made by this package. The package
|
||||
declares that its controller needs these permissions to run. The
|
||||
RBAC manager is responsible for granting them.
|
||||
items:
|
||||
description: PolicyRule holds information that describes a policy
|
||||
rule, but does not contain information about who the rule applies
|
||||
to or which namespace the rule applies to.
|
||||
properties:
|
||||
apiGroups:
|
||||
description: APIGroups is the name of the APIGroup that contains
|
||||
the resources. If multiple API groups are specified, any
|
||||
action requested against one of the enumerated resources in
|
||||
any API group will be allowed. "" represents the core API
|
||||
group and "*" represents all API groups.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
nonResourceURLs:
|
||||
description: NonResourceURLs is a set of partial urls that a
|
||||
user should have access to. *s are allowed, but only as the
|
||||
full, final step in the path Since non-resource URLs are not
|
||||
namespaced, this field is only applicable for ClusterRoles
|
||||
referenced from a ClusterRoleBinding. Rules can either apply
|
||||
to API resources (such as "pods" or "secrets") or non-resource
|
||||
URL paths (such as "/api"), but not both.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
resourceNames:
|
||||
description: ResourceNames is an optional white list of names
|
||||
that the rule applies to. An empty set means that everything
|
||||
is allowed.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
resources:
|
||||
description: Resources is a list of resources this rule applies
|
||||
to. '*' represents all resources.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
verbs:
|
||||
description: Verbs is a list of Verbs that apply to ALL the
|
||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- verbs
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,198 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: functions.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
- pkg
|
||||
kind: Function
|
||||
listKind: FunctionList
|
||||
plural: functions
|
||||
singular: function
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||
name: INSTALLED
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||
name: HEALTHY
|
||||
type: string
|
||||
- jsonPath: .spec.package
|
||||
name: PACKAGE
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1beta1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Function is the CRD type for a request to deploy a long-running
|
||||
Function.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: FunctionSpec specifies the configuration of a Function.
|
||||
properties:
|
||||
commonLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Map of string keys and values that can be used to organize
|
||||
and categorize (scope and select) objects. May match selectors of
|
||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
||||
that will be used to configure the packaged controller Deployment.
|
||||
Deprecated: Use RuntimeConfigReference instead.'
|
||||
properties:
|
||||
name:
|
||||
description: Name of the ControllerConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
ignoreCrossplaneConstraints:
|
||||
default: false
|
||||
description: IgnoreCrossplaneConstraints indicates to the package
|
||||
manager whether to honor Crossplane version constrains specified
|
||||
by the package. Default is false.
|
||||
type: boolean
|
||||
package:
|
||||
description: Package is the name of the package that is being requested.
|
||||
type: string
|
||||
packagePullPolicy:
|
||||
default: IfNotPresent
|
||||
description: PackagePullPolicy defines the pull policy for the package.
|
||||
Default is IfNotPresent.
|
||||
type: string
|
||||
packagePullSecrets:
|
||||
description: PackagePullSecrets are named secrets in the same namespace
|
||||
that can be used to fetch packages from private registries.
|
||||
items:
|
||||
description: LocalObjectReference contains enough information to
|
||||
let you locate the referenced object inside the same namespace.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
revisionActivationPolicy:
|
||||
default: Automatic
|
||||
description: RevisionActivationPolicy specifies how the package controller
|
||||
should update from one revision to the next. Options are Automatic
|
||||
or Manual. Default is Automatic.
|
||||
type: string
|
||||
revisionHistoryLimit:
|
||||
default: 1
|
||||
description: RevisionHistoryLimit dictates how the package controller
|
||||
cleans up old inactive package revisions. Defaults to 1. Can be
|
||||
disabled by explicitly setting to 0.
|
||||
format: int64
|
||||
type: integer
|
||||
runtimeConfigRef:
|
||||
default:
|
||||
name: default
|
||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
||||
that will be used to configure the package runtime.
|
||||
properties:
|
||||
apiVersion:
|
||||
default: pkg.crossplane.io/v1beta1
|
||||
description: API version of the referent.
|
||||
type: string
|
||||
kind:
|
||||
default: DeploymentRuntimeConfig
|
||||
description: Kind of the referent.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the RuntimeConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
skipDependencyResolution:
|
||||
default: false
|
||||
description: SkipDependencyResolution indicates to the package manager
|
||||
whether to skip resolving dependencies for a package. Setting this
|
||||
value to true may have unintended consequences. Default is false.
|
||||
type: boolean
|
||||
required:
|
||||
- package
|
||||
type: object
|
||||
status:
|
||||
description: FunctionStatus represents the observed state of a Function.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
currentIdentifier:
|
||||
description: CurrentIdentifier is the most recent package source that
|
||||
was used to produce a revision. The package manager uses this field
|
||||
to determine whether to check for package updates for a given source
|
||||
when packagePullPolicy is set to IfNotPresent. Manually removing
|
||||
this field will cause the package manager to check that the current
|
||||
revision is correct for the given package source.
|
||||
type: string
|
||||
currentRevision:
|
||||
description: CurrentRevision is the name of the current package revision.
|
||||
It will reflect the most up to date revision, whether it has been
|
||||
activated or not.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,93 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: locks.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
names:
|
||||
kind: Lock
|
||||
listKind: LockList
|
||||
plural: locks
|
||||
singular: lock
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1beta1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Lock is the CRD type that tracks package dependencies.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
packages:
|
||||
items:
|
||||
description: LockPackage is a package that is in the lock.
|
||||
properties:
|
||||
dependencies:
|
||||
description: Dependencies are the list of dependencies of this package.
|
||||
The order of the dependencies will dictate the order in which
|
||||
they are resolved.
|
||||
items:
|
||||
description: A Dependency is a dependency of a package in the
|
||||
lock.
|
||||
properties:
|
||||
constraints:
|
||||
description: Constraints is a valid semver range, which will
|
||||
be used to select a valid dependency version.
|
||||
type: string
|
||||
package:
|
||||
description: Package is the OCI image name without a tag or
|
||||
digest.
|
||||
type: string
|
||||
type:
|
||||
description: Type is the type of package. Can be either Configuration
|
||||
or Provider.
|
||||
type: string
|
||||
required:
|
||||
- constraints
|
||||
- package
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
name:
|
||||
description: Name corresponds to the name of the package revision
|
||||
for this package.
|
||||
type: string
|
||||
source:
|
||||
description: Source is the OCI image name without a tag or digest.
|
||||
type: string
|
||||
type:
|
||||
description: Type is the type of package. Can be either Configuration
|
||||
or Provider.
|
||||
type: string
|
||||
version:
|
||||
description: Version is the tag or digest of the OCI image.
|
||||
type: string
|
||||
required:
|
||||
- dependencies
|
||||
- name
|
||||
- source
|
||||
- type
|
||||
- version
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,291 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: providerrevisions.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
- pkgrev
|
||||
kind: ProviderRevision
|
||||
listKind: ProviderRevisionList
|
||||
plural: providerrevisions
|
||||
singular: providerrevision
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||
name: HEALTHY
|
||||
type: string
|
||||
- jsonPath: .spec.revision
|
||||
name: REVISION
|
||||
type: string
|
||||
- jsonPath: .spec.image
|
||||
name: IMAGE
|
||||
type: string
|
||||
- jsonPath: .spec.desiredState
|
||||
name: STATE
|
||||
type: string
|
||||
- jsonPath: .status.foundDependencies
|
||||
name: DEP-FOUND
|
||||
type: string
|
||||
- jsonPath: .status.installedDependencies
|
||||
name: DEP-INSTALLED
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A ProviderRevision that has been added to Crossplane.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: ProviderRevisionSpec specifies configuration for a ProviderRevision.
|
||||
properties:
|
||||
commonLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Map of string keys and values that can be used to organize
|
||||
and categorize (scope and select) objects. May match selectors of
|
||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
||||
that will be used to configure the packaged controller Deployment.
|
||||
Deprecated: Use RuntimeConfigReference instead.'
|
||||
properties:
|
||||
name:
|
||||
description: Name of the ControllerConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
desiredState:
|
||||
description: DesiredState of the PackageRevision. Can be either Active
|
||||
or Inactive.
|
||||
type: string
|
||||
ignoreCrossplaneConstraints:
|
||||
default: false
|
||||
description: IgnoreCrossplaneConstraints indicates to the package
|
||||
manager whether to honor Crossplane version constrains specified
|
||||
by the package. Default is false.
|
||||
type: boolean
|
||||
image:
|
||||
description: Package image used by install Pod to extract package
|
||||
contents.
|
||||
type: string
|
||||
packagePullPolicy:
|
||||
default: IfNotPresent
|
||||
description: PackagePullPolicy defines the pull policy for the package.
|
||||
It is also applied to any images pulled for the package, such as
|
||||
a provider's controller image. Default is IfNotPresent.
|
||||
type: string
|
||||
packagePullSecrets:
|
||||
description: PackagePullSecrets are named secrets in the same namespace
|
||||
that can be used to fetch packages from private registries. They
|
||||
are also applied to any images pulled for the package, such as a
|
||||
provider's controller image.
|
||||
items:
|
||||
description: LocalObjectReference contains enough information to
|
||||
let you locate the referenced object inside the same namespace.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
revision:
|
||||
description: Revision number. Indicates when the revision will be
|
||||
garbage collected based on the parent's RevisionHistoryLimit.
|
||||
format: int64
|
||||
type: integer
|
||||
runtimeConfigRef:
|
||||
default:
|
||||
name: default
|
||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
||||
that will be used to configure the package runtime.
|
||||
properties:
|
||||
apiVersion:
|
||||
default: pkg.crossplane.io/v1beta1
|
||||
description: API version of the referent.
|
||||
type: string
|
||||
kind:
|
||||
default: DeploymentRuntimeConfig
|
||||
description: Kind of the referent.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the RuntimeConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
skipDependencyResolution:
|
||||
default: false
|
||||
description: SkipDependencyResolution indicates to the package manager
|
||||
whether to skip resolving dependencies for a package. Setting this
|
||||
value to true may have unintended consequences. Default is false.
|
||||
type: boolean
|
||||
tlsClientSecretName:
|
||||
description: TLSClientSecretName is the name of the TLS Secret that
|
||||
stores client certificates of the Provider.
|
||||
type: string
|
||||
tlsServerSecretName:
|
||||
description: TLSServerSecretName is the name of the TLS Secret that
|
||||
stores server certificates of the Provider.
|
||||
type: string
|
||||
required:
|
||||
- desiredState
|
||||
- image
|
||||
- revision
|
||||
type: object
|
||||
status:
|
||||
description: PackageRevisionStatus represents the observed state of a
|
||||
PackageRevision.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
foundDependencies:
|
||||
description: Dependency information.
|
||||
format: int64
|
||||
type: integer
|
||||
installedDependencies:
|
||||
format: int64
|
||||
type: integer
|
||||
invalidDependencies:
|
||||
format: int64
|
||||
type: integer
|
||||
objectRefs:
|
||||
description: References to objects owned by PackageRevision.
|
||||
items:
|
||||
description: A TypedReference refers to an object by Name, Kind,
|
||||
and APIVersion. It is commonly used to reference cluster-scoped
|
||||
objects or objects where the namespace is already known.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: APIVersion of the referenced object.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the referenced object.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referenced object.
|
||||
type: string
|
||||
uid:
|
||||
description: UID of the referenced object.
|
||||
type: string
|
||||
required:
|
||||
- apiVersion
|
||||
- kind
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
permissionRequests:
|
||||
description: PermissionRequests made by this package. The package
|
||||
declares that its controller needs these permissions to run. The
|
||||
RBAC manager is responsible for granting them.
|
||||
items:
|
||||
description: PolicyRule holds information that describes a policy
|
||||
rule, but does not contain information about who the rule applies
|
||||
to or which namespace the rule applies to.
|
||||
properties:
|
||||
apiGroups:
|
||||
description: APIGroups is the name of the APIGroup that contains
|
||||
the resources. If multiple API groups are specified, any
|
||||
action requested against one of the enumerated resources in
|
||||
any API group will be allowed. "" represents the core API
|
||||
group and "*" represents all API groups.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
nonResourceURLs:
|
||||
description: NonResourceURLs is a set of partial urls that a
|
||||
user should have access to. *s are allowed, but only as the
|
||||
full, final step in the path Since non-resource URLs are not
|
||||
namespaced, this field is only applicable for ClusterRoles
|
||||
referenced from a ClusterRoleBinding. Rules can either apply
|
||||
to API resources (such as "pods" or "secrets") or non-resource
|
||||
URL paths (such as "/api"), but not both.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
resourceNames:
|
||||
description: ResourceNames is an optional white list of names
|
||||
that the rule applies to. An empty set means that everything
|
||||
is allowed.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
resources:
|
||||
description: Resources is a list of resources this rule applies
|
||||
to. '*' represents all resources.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
verbs:
|
||||
description: Verbs is a list of Verbs that apply to ALL the
|
||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- verbs
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,198 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: providers.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
- pkg
|
||||
kind: Provider
|
||||
listKind: ProviderList
|
||||
plural: providers
|
||||
singular: provider
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||
name: INSTALLED
|
||||
type: string
|
||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||
name: HEALTHY
|
||||
type: string
|
||||
- jsonPath: .spec.package
|
||||
name: PACKAGE
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Provider is the CRD type for a request to add a provider to Crossplane.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: ProviderSpec specifies details about a request to install
|
||||
a provider to Crossplane.
|
||||
properties:
|
||||
commonLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: 'Map of string keys and values that can be used to organize
|
||||
and categorize (scope and select) objects. May match selectors of
|
||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
||||
that will be used to configure the packaged controller Deployment.
|
||||
Deprecated: Use RuntimeConfigReference instead.'
|
||||
properties:
|
||||
name:
|
||||
description: Name of the ControllerConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
ignoreCrossplaneConstraints:
|
||||
default: false
|
||||
description: IgnoreCrossplaneConstraints indicates to the package
|
||||
manager whether to honor Crossplane version constrains specified
|
||||
by the package. Default is false.
|
||||
type: boolean
|
||||
package:
|
||||
description: Package is the name of the package that is being requested.
|
||||
type: string
|
||||
packagePullPolicy:
|
||||
default: IfNotPresent
|
||||
description: PackagePullPolicy defines the pull policy for the package.
|
||||
Default is IfNotPresent.
|
||||
type: string
|
||||
packagePullSecrets:
|
||||
description: PackagePullSecrets are named secrets in the same namespace
|
||||
that can be used to fetch packages from private registries.
|
||||
items:
|
||||
description: LocalObjectReference contains enough information to
|
||||
let you locate the referenced object inside the same namespace.
|
||||
properties:
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
revisionActivationPolicy:
|
||||
default: Automatic
|
||||
description: RevisionActivationPolicy specifies how the package controller
|
||||
should update from one revision to the next. Options are Automatic
|
||||
or Manual. Default is Automatic.
|
||||
type: string
|
||||
revisionHistoryLimit:
|
||||
default: 1
|
||||
description: RevisionHistoryLimit dictates how the package controller
|
||||
cleans up old inactive package revisions. Defaults to 1. Can be
|
||||
disabled by explicitly setting to 0.
|
||||
format: int64
|
||||
type: integer
|
||||
runtimeConfigRef:
|
||||
default:
|
||||
name: default
|
||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
||||
that will be used to configure the package runtime.
|
||||
properties:
|
||||
apiVersion:
|
||||
default: pkg.crossplane.io/v1beta1
|
||||
description: API version of the referent.
|
||||
type: string
|
||||
kind:
|
||||
default: DeploymentRuntimeConfig
|
||||
description: Kind of the referent.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the RuntimeConfig.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
skipDependencyResolution:
|
||||
default: false
|
||||
description: SkipDependencyResolution indicates to the package manager
|
||||
whether to skip resolving dependencies for a package. Setting this
|
||||
value to true may have unintended consequences. Default is false.
|
||||
type: boolean
|
||||
required:
|
||||
- package
|
||||
type: object
|
||||
status:
|
||||
description: ProviderStatus represents the observed state of a Provider.
|
||||
properties:
|
||||
conditions:
|
||||
description: Conditions of the resource.
|
||||
items:
|
||||
description: A Condition that may apply to a resource.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: LastTransitionTime is the last time this condition
|
||||
transitioned from one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A Message containing details about this condition's
|
||||
last transition from one status to another, if any.
|
||||
type: string
|
||||
reason:
|
||||
description: A Reason for this condition's last transition from
|
||||
one status to another.
|
||||
type: string
|
||||
status:
|
||||
description: Status of this condition; is it currently True,
|
||||
False, or Unknown?
|
||||
type: string
|
||||
type:
|
||||
description: Type of this condition. At most one of each condition
|
||||
type may apply to a resource at any point in time.
|
||||
type: string
|
||||
required:
|
||||
- lastTransitionTime
|
||||
- reason
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- type
|
||||
x-kubernetes-list-type: map
|
||||
currentIdentifier:
|
||||
description: CurrentIdentifier is the most recent package source that
|
||||
was used to produce a revision. The package manager uses this field
|
||||
to determine whether to check for package updates for a given source
|
||||
when packagePullPolicy is set to IfNotPresent. Manually removing
|
||||
this field will cause the package manager to check that the current
|
||||
revision is correct for the given package source.
|
||||
type: string
|
||||
currentRevision:
|
||||
description: CurrentRevision is the name of the current package revision.
|
||||
It will reflect the most up to date revision, whether it has been
|
||||
activated or not.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
|
@ -0,0 +1,162 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
name: storeconfigs.secrets.crossplane.io
|
||||
spec:
|
||||
group: secrets.crossplane.io
|
||||
names:
|
||||
categories:
|
||||
- crossplane
|
||||
- store
|
||||
kind: StoreConfig
|
||||
listKind: StoreConfigList
|
||||
plural: storeconfigs
|
||||
singular: storeconfig
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
- jsonPath: .spec.type
|
||||
name: TYPE
|
||||
type: string
|
||||
- jsonPath: .spec.defaultScope
|
||||
name: DEFAULT-SCOPE
|
||||
type: string
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A StoreConfig configures how Crossplane controllers should store
|
||||
connection details.
|
||||
properties:
|
||||
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
|
||||
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
|
||||
spec:
|
||||
description: A StoreConfigSpec defines the desired state of a StoreConfig.
|
||||
properties:
|
||||
defaultScope:
|
||||
description: DefaultScope used for scoping secrets for "cluster-scoped"
|
||||
resources. If store type is "Kubernetes", this would mean the default
|
||||
namespace to store connection secrets for cluster scoped resources.
|
||||
In case of "Vault", this would be used as the default parent path.
|
||||
Typically, should be set as Crossplane installation namespace.
|
||||
type: string
|
||||
kubernetes:
|
||||
description: Kubernetes configures a Kubernetes secret store. If the
|
||||
"type" is "Kubernetes" but no config provided, in cluster config
|
||||
will be used.
|
||||
properties:
|
||||
auth:
|
||||
description: Credentials used to connect to the Kubernetes API.
|
||||
properties:
|
||||
env:
|
||||
description: Env is a reference to an environment variable
|
||||
that contains credentials that must be used to connect to
|
||||
the provider.
|
||||
properties:
|
||||
name:
|
||||
description: Name is the name of an environment variable.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
fs:
|
||||
description: Fs is a reference to a filesystem location that
|
||||
contains credentials that must be used to connect to the
|
||||
provider.
|
||||
properties:
|
||||
path:
|
||||
description: Path is a filesystem path.
|
||||
type: string
|
||||
required:
|
||||
- path
|
||||
type: object
|
||||
secretRef:
|
||||
description: A SecretRef is a reference to a secret key that
|
||||
contains the credentials that must be used to connect to
|
||||
the provider.
|
||||
properties:
|
||||
key:
|
||||
description: The key to select.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the secret.
|
||||
type: string
|
||||
namespace:
|
||||
description: Namespace of the secret.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
- namespace
|
||||
type: object
|
||||
source:
|
||||
description: Source of the credentials.
|
||||
enum:
|
||||
- None
|
||||
- Secret
|
||||
- Environment
|
||||
- Filesystem
|
||||
type: string
|
||||
required:
|
||||
- source
|
||||
type: object
|
||||
required:
|
||||
- auth
|
||||
type: object
|
||||
plugin:
|
||||
description: Plugin configures External secret store as a plugin.
|
||||
properties:
|
||||
configRef:
|
||||
description: ConfigRef contains store config reference info.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: APIVersion of the referenced config.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind of the referenced config.
|
||||
type: string
|
||||
name:
|
||||
description: Name of the referenced config.
|
||||
type: string
|
||||
required:
|
||||
- apiVersion
|
||||
- kind
|
||||
- name
|
||||
type: object
|
||||
endpoint:
|
||||
description: Endpoint is the endpoint of the gRPC server.
|
||||
type: string
|
||||
type: object
|
||||
type:
|
||||
default: Kubernetes
|
||||
description: Type configures which secret store to be used. Only the
|
||||
configuration block for this store will be used and others will
|
||||
be ignored if provided. Default is Kubernetes.
|
||||
enum:
|
||||
- Kubernetes
|
||||
- Vault
|
||||
- Plugin
|
||||
type: string
|
||||
required:
|
||||
- defaultScope
|
||||
type: object
|
||||
required:
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources: {}
|
|
@ -12,6 +12,11 @@ removed: 🗑️
|
|||
moved: 🗺️
|
||||
-->
|
||||
|
||||
## December 1, 2023
|
||||
|
||||
### New features 🎉
|
||||
* Added [API documentation]({{<ref "../api">}}) for Crossplane core types.
|
||||
|
||||
## November 30, 2023
|
||||
|
||||
### New features 🎉
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[build]
|
||||
base = "/"
|
||||
publish = "public/"
|
||||
command = "hugo --minify "
|
||||
command = "bash netlify_build.sh"
|
||||
|
||||
[build.environment]
|
||||
HUGO_VERSION = "0.119.0"
|
||||
|
|
|
@ -11,6 +11,10 @@ cat config.yaml
|
|||
|
||||
if [ "$CONTEXT" = "production" ]; then
|
||||
hugo --minify --baseURL https://docs.crossplane.io/
|
||||
elif [ "$CONTEXT" = "branch-deploy" ]; then
|
||||
echo "Building branch deploy with URL $DEPLOY_PRIME_URL"
|
||||
hugo --minify --baseURL $DEPLOY_PRIME_URL
|
||||
else
|
||||
echo "Building other deploy $CONTEXT with URL https://deploy-preview-$REVIEW_ID--crossplane.netlify.app/"
|
||||
hugo --minify --baseURL https://deploy-preview-$REVIEW_ID--crossplane.netlify.app/
|
||||
fi
|
|
@ -11,4 +11,4 @@
|
|||
* Licensed MIT © Zeno Rocha
|
||||
*/
|
||||
|
||||
/*! instant.page v5.1.1 - (C) 2019-2020 Alexandre Dieulot - https://instant.page/license */
|
||||
/*! instant.page v5.2.0 - (C) 2019-2023 Alexandre Dieulot - https://instant.page/license */
|
|
@ -0,0 +1,268 @@
|
|||
@mixin vertical-bar {
|
||||
content: "";
|
||||
position: absolute;
|
||||
background-color: #{$aqua-600};
|
||||
width: 3px;
|
||||
}
|
||||
|
||||
.crds {
|
||||
|
||||
padding-top: 24px;
|
||||
|
||||
@include media-breakpoint-down(xl) {
|
||||
padding-right: 0px;
|
||||
|
||||
.mobile-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mobile-show {
|
||||
padding-left: 27px;
|
||||
color: var(--crd-description-color);
|
||||
font-weight: 700;
|
||||
padding-bottom: 24px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
padding-right: 80px;
|
||||
|
||||
.mobile-show {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.bigNameGroup {
|
||||
padding-left: 27px;
|
||||
color: var(--crd-description-color);
|
||||
font-weight: 700;
|
||||
padding-bottom: 24px;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.expansion-link {
|
||||
font-weight: 600;
|
||||
color: var(--body-font-color);
|
||||
|
||||
&:hover {
|
||||
text-decoration: none !important;
|
||||
color: var(--body-font-color);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
& :target {
|
||||
padding-top: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
/* can't use :target because the parent node needs padding */
|
||||
.anchor-target {
|
||||
padding-top: 60px !important;
|
||||
}
|
||||
|
||||
.col {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.expand-link,
|
||||
.collapse-link {
|
||||
text-align: right;
|
||||
color: var(--content-link-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.crd-header-row {
|
||||
font-weight: 800;
|
||||
color: var(--crd-header-color);
|
||||
padding-bottom: 10px;
|
||||
cursor: pointer;
|
||||
|
||||
.sortable {
|
||||
vertical-align: middle !important;
|
||||
|
||||
&.sorted {
|
||||
color: var(--content-link-color);
|
||||
}
|
||||
}
|
||||
|
||||
.sort-icon {
|
||||
margin-left: 6px;
|
||||
display: inline-block;
|
||||
vertical-align: middle !important;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
opacity: 1;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
|
||||
&.sort-icon-down {
|
||||
background-image: var(--sort-down);
|
||||
}
|
||||
|
||||
&.sort-icon-up {
|
||||
background-image: var(--sort-up);
|
||||
}
|
||||
}
|
||||
|
||||
.col {
|
||||
padding-top: 0px !important;
|
||||
padding-bottom: 0px !important;
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
background-color: inherit !important;
|
||||
border: none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.expand-button {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
background-color: var(--expand-box-background) !important;
|
||||
border-radius: 4px;
|
||||
opacity: 1;
|
||||
background-size: 11px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
position: relative;
|
||||
|
||||
&:not(.collapsed) {
|
||||
background-image: var(--minus-svg);
|
||||
background-color: #{$aqua-600} !important;
|
||||
|
||||
&::after {
|
||||
@include vertical-bar;
|
||||
height: 22px;
|
||||
top: 17px;
|
||||
left: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
&.collapsed {
|
||||
background-image: var(--plus-svg);
|
||||
}
|
||||
}
|
||||
|
||||
.crd-root-row,
|
||||
.crd-header-row {
|
||||
border-bottom: 1px solid var(--crd-row-border);
|
||||
}
|
||||
|
||||
.crd-root-row {
|
||||
>.crd-expand {
|
||||
&::before {
|
||||
left: 19px !important;
|
||||
}
|
||||
|
||||
&.show {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.kind {
|
||||
font-weight: 800 !important;
|
||||
padding-right: 10px;
|
||||
color: var(--body-font-color);
|
||||
}
|
||||
|
||||
.kind-link {
|
||||
>a>svg {
|
||||
height: 12px;
|
||||
fill: var(--link-icon-fill);
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
padding-top: 5px;
|
||||
padding-left: 27px;
|
||||
padding-bottom: 15px;
|
||||
color: var(--crd-description-color);
|
||||
}
|
||||
|
||||
.crd-child-container {
|
||||
padding-top: 4px;
|
||||
padding-left: 17px;
|
||||
padding-bottom: 17px;
|
||||
|
||||
&:not(:last-of-type) {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.crd-expand {
|
||||
position: relative;
|
||||
|
||||
&::before {
|
||||
@include vertical-bar;
|
||||
height: 100%;
|
||||
top: 0px;
|
||||
left: 7px;
|
||||
}
|
||||
|
||||
// transition: margin 0ms;
|
||||
}
|
||||
|
||||
.dataType,
|
||||
.enum {
|
||||
font-weight: 800;
|
||||
border-radius: 4px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
font-size: 14px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.enum {
|
||||
padding-top: 7px !important;
|
||||
padding-bottom: 7px !important;
|
||||
}
|
||||
|
||||
.required {
|
||||
color: var(--required-color);
|
||||
background-color: var(--required-background);
|
||||
}
|
||||
|
||||
.string {
|
||||
color: var(--string-color);
|
||||
border-color: var(--string-border-color);
|
||||
}
|
||||
|
||||
.object {
|
||||
color: var(--object-color);
|
||||
border-color: var(--object-border-color);
|
||||
}
|
||||
|
||||
.boolean {
|
||||
color: var(--boolean-color);
|
||||
border-color: var(--boolean-border-color);
|
||||
}
|
||||
|
||||
.integer {
|
||||
color: var(--integer-color);
|
||||
border-color: var(--integer-border-color);
|
||||
}
|
||||
|
||||
.bigName-row {
|
||||
overflow-x: auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.bigName-col {
|
||||
display: inline-block;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.bigName-reset {
|
||||
white-space: initial;
|
||||
}
|
||||
|
||||
}
|
|
@ -41,6 +41,17 @@
|
|||
grid-template-rows: auto 1fr;
|
||||
grid-template-columns: 4fr 1fr;
|
||||
}
|
||||
|
||||
&.no-toc{
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
grid-template-areas:
|
||||
"intro toc"
|
||||
"content content" !important;
|
||||
grid-template-rows: auto 1fr;
|
||||
grid-template-columns: 4fr 1fr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bd-intro {
|
||||
|
|
|
@ -50,6 +50,32 @@
|
|||
--search-box-background: var(--body-background);
|
||||
--result-path: var(--body-background);
|
||||
|
||||
// API Page
|
||||
--sort-up: url("/img/sort-up-light.svg");
|
||||
--sort-down: url("/img/sort-down-light.svg");
|
||||
--expand-box-background: #{$fog-800};
|
||||
--minus-svg: url("/img/minus-white.svg");
|
||||
--plus-svg: url("/img/plus-150.svg");
|
||||
--crd-header-color: #{$fog-400};
|
||||
--crd-row-border: #{$fog-800};
|
||||
--crd-description-color: #{$fog-400};
|
||||
--link-icon-fill: #{$fog-600};
|
||||
|
||||
--required-color: #{$fog-1000};
|
||||
--required-background: #{$fog-200};
|
||||
|
||||
--string-color: #{$grass-300};
|
||||
--string-border: #{$grass-300};
|
||||
|
||||
--object-color: #{$tangerine-300};
|
||||
--object-border-color: #{$tangerine-300};
|
||||
|
||||
--boolean-color: #{$sun-300};
|
||||
--boolean-border-color: #{$sun-300};
|
||||
|
||||
--integer-color: #{$salmon-300};
|
||||
--integer-border-color: #{$salmon-300};
|
||||
|
||||
// Override Bootstrap accordion colors in the body
|
||||
.accordion {
|
||||
--bs-accordion-border-color: #{$fog-500};
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
/* purgecss start ignore */
|
||||
@import "search-button";
|
||||
@import "search-results";
|
||||
@import "crds";
|
||||
/* purgecss end ignore */
|
||||
@import "skippy";
|
||||
@import "fonts";
|
|
@ -58,6 +58,32 @@
|
|||
--search-box-background: var(--body-background);
|
||||
--result-path: var(--body-background);
|
||||
|
||||
// API Page
|
||||
--sort-up: url("/img/sort-up-light.svg");
|
||||
--sort-down: url("/img/sort-down-light.svg");
|
||||
--expand-box-background: #{$fog-100};
|
||||
--minus-svg: url("/img/minus-white.svg");
|
||||
--plus-svg: url("/img/plus-black.svg");
|
||||
--crd-header-color: #{$fog-600};
|
||||
--crd-row-border: #{$fog-600};
|
||||
--crd-description-color: #{$fog-600};
|
||||
--link-icon-fill: #{$fog-400};
|
||||
|
||||
--required-color: #{$fog-0};
|
||||
--required-background: #{$fog-800};
|
||||
|
||||
--string-color: #{$grass-700};
|
||||
--string-border: #{$grass-700};
|
||||
|
||||
--object-color: #{$tangerine-700};
|
||||
--object-border-color: #{$tangerine-700};
|
||||
|
||||
--boolean-color: #{$sun-600};
|
||||
--boolean-border-color: #{$sun-600};
|
||||
|
||||
--integer-color: #{$salmon-600};
|
||||
--integer-border-color: #{$salmon-600};
|
||||
|
||||
// Override Bootstrap accordion colors in the body
|
||||
.accordion {
|
||||
--bs-accordion-border-color: #{$fog-400};
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"main.js": {
|
||||
"src": "js/main-ed51df05.bundle.min.js"
|
||||
"src": "js/main-41e2db8f.bundle.min.js"
|
||||
},
|
||||
"main-ed51df05.bundle.min.js.map": {
|
||||
"src": "js/main-ed51df05.bundle.min.js.map"
|
||||
"main-41e2db8f.bundle.min.js.map": {
|
||||
"src": "js/main-41e2db8f.bundle.min.js.map"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,417 @@
|
|||
{{ .Content }}
|
||||
|
||||
<div class="crds">
|
||||
|
||||
<!-- Kind | Group | Version | Expand | Collapse header -->
|
||||
<div class="row crd-header-row bigName-row" id="crd-header-row">
|
||||
<div class="col col-xl-4 col-8 sortable" onclick="sortIt('kind')"><span data-sort="kind">Kind</span><span class="kind-sort sort-icon sort-icon-down d-none"></span><span class="kind-sort sort-icon sort-icon-up d-none"></span></div>
|
||||
<div class="col col-lg-3 mobile-hidden sortable" onclick="sortIt('group')"><span data-sort="group">Group</span><span class="group-sort sort-icon sort-icon-down d-none"></span><span class="group-sort sort-icon sort-icon-up d-none"></span></div>
|
||||
<div class="col col-lg-1 mobile-hidden sortable" onclick="sortIt('version')"><span data-sort="version" >Version</span><span class="version-sort sort-icon sort-icon-down d-none"></span><span class="version-sort sort-icon sort-icon-up d-none"></span></div>
|
||||
<div class="col col-2 expand-link mobile-hidden text-truncate" onclick="showAll('all')"><a href="#">Expand All</a></div>
|
||||
<div class="col col-2 collapse-link mobile-hidden text-truncate" onclick="hideAll('all')"><a href="#">Collapse All</a></div>
|
||||
</div>
|
||||
|
||||
<div id="crd-rows-container">
|
||||
{{/* Each level is a map with the key being the directory name */}}
|
||||
{{/* $Site.Data.crds /$version/crds/yaml */}}
|
||||
{{ range index $.Site.Data.crds (printf "v%s" .Page.Params.version) "api" "yaml" }}
|
||||
|
||||
{{ $kind := .spec.names.kind }}
|
||||
{{ $group := .spec.group }}
|
||||
{{ $version := "" }}
|
||||
{{ $description := "" }}
|
||||
{{ $schemaScratch := newScratch }} {{/* Temporary variable used to prune fields from the larger spec */}}
|
||||
{{ $schemaWithStatus := dict }} {{/* The pruned schema to work with */}}
|
||||
|
||||
{{ $bigName := gt (len $kind) 32 }} {{/* Long names overrun the display and cause problems. This allows for applying custom styles */}}
|
||||
|
||||
{{/* Iterate over each version and find the "storage: true" version */}}
|
||||
{{ range .spec.versions }}
|
||||
{{ if index . "storage" }}
|
||||
{{ $version = .name }}
|
||||
|
||||
{{ $schemaScratch.Set "oAPI" (index . "schema" "openAPIV3Schema" "properties") }}
|
||||
|
||||
{{/* Pull out the top-level Kind description and delete unnecessary fields */}}
|
||||
{{ $description = (index . "schema" "openAPIV3Schema" "description") }}
|
||||
{{ $schemaScratch.DeleteInMap "oAPI" "apiVersion" }}
|
||||
{{ $schemaScratch.DeleteInMap "oAPI" "kind" }}
|
||||
{{ $schemaScratch.DeleteInMap "oAPI" "metadata" }}
|
||||
{{ $schemaScratch.DeleteInMap "oAPI" "description" }}
|
||||
{{ $schemaWithStatus = $schemaScratch.Get "oAPI" }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* the crd-root-row is a top level CRD row */}}
|
||||
<div class="crd-root-row crd-container row align-middle bigName-row" data-kind="{{ $kind }}" data-group="{{ $group }}-{{ $kind}}" data-version="{{ $version }}-{{ $kind }}">
|
||||
|
||||
{{/* Collapse/Expand Button and Kind name */}}
|
||||
<div class="col col-xl-4 col-8 align-middle expand-buttons bigName-col">
|
||||
{{/* Plus/Minus Button */}}
|
||||
<button class="expand-button collapsed align-middle" data-bs-toggle="collapse" data-bs-target="#{{$kind}}" type="button" aria-expanded="false" aria-controls="{{$kind}}"></button>
|
||||
|
||||
{{/* CRD name text */}}
|
||||
<button class="crd-root collapsed align-middle" data-bs-toggle="collapse" data-bs-target="#{{$kind}}" type="button" aria-expanded="false" aria-controls="{{$kind}}">
|
||||
<span class="align-middle {{ $kind }}"><a class="expansion-link" name="{{ $kind }}">{{ $kind }}</a></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{{/* If the CRD name is longer than 24 characters hide the other fields, regardless of viewport size */}}
|
||||
<div class="{{ if $bigName }}d-none{{end}} col col-lg-3 col-2 mobile-hidden group-name text-truncate">{{ $group }}</div>
|
||||
<div class="{{ if $bigName }}d-none{{end}} col col-lg-1 col-2 mobile-hidden ">{{ $version }}</div>
|
||||
<div class="{{ if $bigName }}d-none{{end}} col col-2 align-middle expand-link mobile-hidden text-truncate" onclick="showAll('.{{ $kind }}')">Expand All</div>
|
||||
<div class="{{ if $bigName }}d-none{{end}} col col-2 align-middle collapse-link mobile-hidden text-truncate" onclick="hideAll('.{{ $kind }}')">Collapse All</div>
|
||||
|
||||
|
||||
{{/* The container to show/hide with information related to the CRD */}}
|
||||
<div class="collapse crd-expand {{$kind}}" id="{{$kind}}">
|
||||
{{/* If the group and version are hidden from the row, display them here */}}
|
||||
<div class="{{if $bigName }}bigNameGroup{{end}} mobile-group mobile-show">{{$group}}/{{$version}}</div>
|
||||
|
||||
{{/* bigName-reset prevents the description from expanding into the x-scroll */}}
|
||||
<div class="description bigName-reset">{{ $description | markdownify}}</div>
|
||||
|
||||
{{/* Loop over the fields in the pruned Schema and generate their content */}}
|
||||
{{ range $key,$schema := $schemaWithStatus }}
|
||||
<div class="crd-children">
|
||||
{{ template "buildCRD" (dict "key" $key "schema" $schema "isFirst" true "kind" $kind "requiredFields" .required "rootKind" $kind "permalink" $.Page.Permalink) }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{ define "buildCRD" }}
|
||||
{{/* The first field (spec) has a different schema compared to the child nodes */}}
|
||||
{{ if .isFirst }}
|
||||
{{ $elemID := (printf "%s-%s" .kind .key) }}
|
||||
|
||||
{{ $dataTypeStyle := .schema.type }}
|
||||
{{ $dataType := .schema.type }}
|
||||
{{ $description := .schema.description }}
|
||||
{{ $properties := .schema.properties }}
|
||||
{{ $required := .schema.required }}
|
||||
|
||||
{{/* Special handling for arrays to check if it's a list of 'items' */}}
|
||||
{{ if eq .schema.type "array" }}
|
||||
{{ if .schema.items }}
|
||||
{{ $dataType = (printf "[ ]%s" .schema.items.type) }}
|
||||
{{ $dataTypeStyle = .schema.items.type }}
|
||||
{{ $description = .schema.items.description }}
|
||||
{{ $properties = .schema.items.properties }}
|
||||
{{ $required = .schema.items.required }}
|
||||
{{ else }}
|
||||
{{ $dataType = (printf "[ ]%s" .schema.type) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="crd-child-container crd-container align-middle expand-buttons">
|
||||
{{/* Plus/Minus Button */}}
|
||||
<button class="expand-button collapsed align-middle" data-bs-toggle="collapse" data-bs-target="#{{ $elemID }}" type="button" aria-expanded="false" aria-controls="{{ $elemID }}"></button>
|
||||
|
||||
{{/* CRD name text */}}
|
||||
<button class="crd-root collapsed align-middle" data-bs-toggle="collapse" data-bs-target="#{{ $elemID }}" type="button" aria-expanded="false" aria-controls="{{ $elemID }}">
|
||||
<div>
|
||||
<span class="kind align-middle">{{ .key }}</span>
|
||||
<span class="dataType {{ $dataTypeStyle }} align-middle">{{ $dataType }}</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
{{/* Anchor link icon */}}
|
||||
<span class="kind-link" data-bs-content="Link Copied!" data-clipboard-text="{{.permalink}}#{{$elemID}}"><a href="#{{ $elemID }}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"/></svg></a></span>
|
||||
|
||||
|
||||
{{/* The container to show/hide with information related to the CRD */}}
|
||||
<div class="collapse crd-expand expand-buttons {{.rootKind}}" id="{{ $elemID }}">
|
||||
<div class="description bigName-reset">
|
||||
{{ $description | markdownify }}
|
||||
</div>
|
||||
<div class="crd-children align-middle">
|
||||
{{ template "buildCRD" (dict "schema" $properties "isFirst" false "kind" $elemID "requiredFields" $required "rootKind" .rootKind "permalink" .permalink ) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ else }}
|
||||
|
||||
{{/* Iterate over all child CRD elements */}}
|
||||
{{ range $key,$contents := .schema }}
|
||||
|
||||
{{ $bigName := gt (len $key) 24 }}
|
||||
|
||||
{{ $dataType := $contents.type }}
|
||||
{{ $dataTypeStyle := $dataType }}
|
||||
{{ $elemID := (printf "%s-%s" $.kind $key) }}
|
||||
|
||||
{{ $dataTypeStyle := $contents.type }}
|
||||
{{ $dataType := $contents.type }}
|
||||
{{ $description := $contents.description }}
|
||||
{{ $properties := $contents.properties }}
|
||||
{{ $required := $.requiredFields }}
|
||||
|
||||
{{/* enum fields handle "oneOf" type data lists */}}
|
||||
{{ $enum := false }}
|
||||
{{ $enumOf := "" }}
|
||||
{{ $enumTypes := dict }}
|
||||
|
||||
{{ if $contents.oneOf }}
|
||||
{{ $enum = true }}
|
||||
{{ $enumOf = "One of" }}
|
||||
{{ $enumTypes := $contents.oneOf }}
|
||||
{{ else if $contents.anyOf }}
|
||||
{{ $enum = true }}
|
||||
{{ $enumOf = "Any of" }}
|
||||
{{ $enumTypes := $contents }}
|
||||
{{ else if $contents.allOf }}
|
||||
{{ $enum = true }}
|
||||
{{ $enumOf = "All of" }}
|
||||
{{ $enumTypes := $contents.allOf }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq $contents.type "array" }}
|
||||
{{ if $contents.items }}
|
||||
{{ $dataType = (printf "[ ]%s" $contents.items.type) }}
|
||||
{{ $dataTypeStyle = $contents.items.type }}
|
||||
|
||||
{{/* Some "items" don't have nested elements. */}}
|
||||
{{/* For example CompositeResourceDefinitions.Spec.ClaimNames.categories */}}
|
||||
{{ if $contents.items.description }}
|
||||
{{ $description = $contents.items.description }}
|
||||
{{ end }}
|
||||
|
||||
{{ if $contents.items.properties }}
|
||||
{{ $properties = $contents.items.properties }}
|
||||
{{ end }}
|
||||
|
||||
{{ if $contents.items.required}}
|
||||
{{ $required = $contents.items.required }}
|
||||
{{ end }}
|
||||
|
||||
{{ else }}
|
||||
{{ $dataType = (printf "[ ]%s" $contents.type) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="crd-child-container crd-container align-middle expand-buttons expand-buttons bigName-row">
|
||||
{{/* Plus/Minus Button */}}
|
||||
<button class="expand-button collapsed align-middle" data-bs-toggle="collapse" data-bs-target="#{{$elemID}}" type="button" aria-expanded="false" aria-controls="{{$elemID}}"></button>
|
||||
|
||||
{{/* CRD name text */}}
|
||||
<button class="crd-root collapsed align-middle" data-bs-toggle="collapse" data-bs-target="#{{$elemID}}" type="button" aria-expanded="false" aria-controls="{{$elemID}}">
|
||||
<div>
|
||||
<span class="kind align-middle">{{ $key }}</span>
|
||||
|
||||
{{/* An enum puts the data types inside the "One of" border box. */}}
|
||||
{{ if $enum }}
|
||||
<span class="enum">{{$enumOf}}
|
||||
{{ range $contents.anyOf }}
|
||||
{{ range . }}
|
||||
<span class="dataType {{ . }} align-middle">{{ . }}</span>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</span>
|
||||
|
||||
{{ else }}
|
||||
<span class="dataType {{ $dataTypeStyle }} align-middle">{{ $dataType }}</span>
|
||||
{{ end }}
|
||||
{{if in $.requiredFields $key}}<span class="dataType required align-middle">required</span>{{ end }}
|
||||
</div>
|
||||
</button>
|
||||
|
||||
{{/* Link icon */}}
|
||||
<span class="kind-link" data-clipboard-text="{{$.permalink}}#{{$elemID}}"><a href="#{{$elemID}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"/></svg></a></span>
|
||||
|
||||
{{/* The container to show/hide with information related to the CRD */}}
|
||||
<div class="collapse crd-expand {{$.rootKind}} bigName-reset" id="{{$elemID}}">
|
||||
<div class="description">
|
||||
{{$description | markdownify }}
|
||||
</div>
|
||||
{{ if $properties }}
|
||||
<div class="crd-children align-middle">
|
||||
{{ template "buildCRD" (dict "schema" $properties "requiredFields" $required "kind" $elemID "rootKind" $.rootKind "permalink" $.permalink ) }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }} {{/* range $key,$contents */}}
|
||||
{{ end }} {{/* if/else */}}
|
||||
{{ end }} {{/* define */}}
|
||||
|
||||
<script>
|
||||
|
||||
function boxCloser(){
|
||||
boxes = document.querySelectorAll(".crd-expand");
|
||||
|
||||
for(var index = 0; index < boxes.length; index++){
|
||||
boxes[index].addEventListener("click", function (e){
|
||||
if (e.offsetX < this.offsetWidth){
|
||||
//hideAll("#" + this.id);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the "show" class and remove the "collapse" class from all elements
|
||||
* matching the 'type' queryselector.
|
||||
*
|
||||
* Alternatively the type `all` will apply to all elements.
|
||||
* @param {string} type - a CSS query selector or "all"
|
||||
*/
|
||||
function showAll(type){
|
||||
|
||||
if(type === "all"){
|
||||
var root = document;
|
||||
}
|
||||
else{
|
||||
var typeElem = document.querySelector(type);
|
||||
var root = typeElem.closest(".crd-container")
|
||||
|
||||
}
|
||||
|
||||
|
||||
var buttons = root.querySelectorAll(".expand-buttons > button");
|
||||
var hiddenElems = root.querySelectorAll(".crd-expand");
|
||||
|
||||
// This works by changing the classes bootstrap uses.
|
||||
// It would be more accurate to click() or invoke the bootstrap JS API.
|
||||
// This has major performance problems for large APIs and isn't used.
|
||||
for(var i = 0; i < buttons.length; i++){
|
||||
buttons[i].classList.remove("collapsed");
|
||||
}
|
||||
|
||||
for(var i = 0; i < hiddenElems.length; i++){
|
||||
hiddenElems[i].classList.remove("collapse");
|
||||
hiddenElems[i].classList.add("show");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the "collapse" class and remove the "show" class from all elements
|
||||
* matching the 'type' queryselector.
|
||||
*
|
||||
* Alternatively the type `all` will apply to all elements.
|
||||
* @param {string} type - a CSS query selector or "all"
|
||||
*/
|
||||
function hideAll(type){
|
||||
if(type === "all"){
|
||||
var root = document;
|
||||
}
|
||||
else{
|
||||
var typeElem = document.querySelector(type);
|
||||
var root = typeElem.closest(".crd-container")
|
||||
}
|
||||
var buttons = root.querySelectorAll(".expand-buttons > button");
|
||||
var hiddenElems = root.querySelectorAll(".crd-expand");
|
||||
|
||||
// This works by changing the classes bootstrap uses.
|
||||
// It would be more accurate to click() or invoke the bootstrap JS API.
|
||||
// This has major performance problems for large APIs and isn't used.
|
||||
for(var i = 0; i < buttons.length; i++){
|
||||
buttons[i].classList.add("collapsed");
|
||||
}
|
||||
|
||||
for(var i = 0; i < hiddenElems.length; i++){
|
||||
hiddenElems[i].classList.add("collapse");
|
||||
hiddenElems[i].classList.remove("show");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sorts the API by 'kind', 'group' or 'version'.
|
||||
*
|
||||
* @param {string} sortOn - One of "kind", "group" or "version"
|
||||
*/
|
||||
function sortIt(sortOn="kind"){
|
||||
|
||||
// only look at elements labeled as "stortable"
|
||||
var titleElements = document.getElementsByClassName("sortable");
|
||||
|
||||
// natural or reverse sort?
|
||||
var reverseSort = false;
|
||||
|
||||
// iterate over the sortable items and set the proper sort icon
|
||||
for(var i = 0; i < titleElements.length; i++){
|
||||
if(titleElements[i].children[0].dataset.sort === sortOn){
|
||||
|
||||
titleElements[i].classList.add("sorted");
|
||||
|
||||
// If we can't see the first element then sort natural
|
||||
if(titleElements[i].children[1].classList.contains("d-none")){
|
||||
titleElements[i].children[1].classList.remove("d-none");
|
||||
titleElements[i].children[2].classList.add("d-none");
|
||||
}
|
||||
// Otherwise, the first element is visible and the second isn't.
|
||||
// Make it visible and reverse sort
|
||||
else if(titleElements[i].children[2].classList.contains("d-none")){
|
||||
titleElements[i].children[2].classList.remove("d-none");
|
||||
titleElements[i].children[1].classList.add("d-none");
|
||||
reverseSort = true
|
||||
}
|
||||
}
|
||||
else {
|
||||
titleElements[i].classList.remove("sorted");
|
||||
titleElements[i].children[1].classList.add("d-none");
|
||||
titleElements[i].children[2].classList.add("d-none");
|
||||
}
|
||||
}
|
||||
|
||||
// element sorting from https://jsfiddle.net/fkling/nXkDp/
|
||||
var toSort = document.getElementById('crd-rows-container').children;
|
||||
toSort = Array.prototype.slice.call(toSort, 0);
|
||||
|
||||
toSort.sort(function(a, b) {
|
||||
var aord = a.dataset[sortOn];
|
||||
var bord = b.dataset[sortOn];
|
||||
|
||||
if(reverseSort){
|
||||
return (bord.localeCompare(aord));
|
||||
}
|
||||
else {
|
||||
return (aord.localeCompare(bord));
|
||||
}
|
||||
});
|
||||
|
||||
var parent = document.getElementById('crd-rows-container');
|
||||
parent.innerHTML = "";
|
||||
|
||||
for(var i = 0, l = toSort.length; i < l; i++) {
|
||||
parent.appendChild(toSort[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// on page load sort the fields and expand and scroll to the anchor if it's set.
|
||||
document.addEventListener("DOMContentLoaded", function(event){
|
||||
sortIt();
|
||||
scrollToAnchor();
|
||||
})
|
||||
|
||||
function scrollToAnchor(){
|
||||
var hash = window.location.hash.replace("#","");
|
||||
|
||||
// hash on this page means they linked directly to an API object
|
||||
if(hash.length > 0){
|
||||
|
||||
var hashes = hash.split("-");
|
||||
|
||||
// set an event listener on the last element to scroll it into view when expanded.
|
||||
var lastElement = document.getElementById(hash);
|
||||
lastElement.closest(".crd-child-container").classList.add("anchor-target");
|
||||
|
||||
// loop through the parent elements and click them to expand
|
||||
var workingHash = [];
|
||||
for(var index = 0; index < hashes.length; index++){
|
||||
workingHash.push(hashes[index]);
|
||||
document.querySelector("#" + workingHash.join("-")).classList.add("show");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -0,0 +1,47 @@
|
|||
{{ if .Page.Store.Get "hasMermaid" }}
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
|
||||
<script type="module">
|
||||
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
||||
document.addEventListener("DOMContentLoaded", setMermaidStyle());
|
||||
document.addEventListener("DOMContentLoaded", colorModeListener());
|
||||
|
||||
function getMermaidConfig(){
|
||||
var style = getComputedStyle(document.body)
|
||||
var font = style.getPropertyValue("font-family")
|
||||
var fontColor = style.getPropertyValue('--body-font-color')
|
||||
var backgroundColor = style.getPropertyValue('--body-background')
|
||||
|
||||
var config = {
|
||||
"theme": "base",
|
||||
"fontFamily": font,
|
||||
"themeVariables": {
|
||||
"background": backgroundColor,
|
||||
"textColor": fontColor,
|
||||
}
|
||||
}
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
function setMermaidStyle(){
|
||||
var config = getMermaidConfig()
|
||||
mermaid.initialize( config )
|
||||
}
|
||||
|
||||
function colorModeListener(){
|
||||
darkSwitch.addEventListener("click", resetMermaidStyle())
|
||||
}
|
||||
|
||||
function resetMermaidStyle(){
|
||||
console.log("resetting")
|
||||
|
||||
var config = getMermaidConfig()
|
||||
console.log(config)
|
||||
mermaid.mermaidAPI.setConfig( config )
|
||||
mermaid.mermaidAPI.reset()
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
{{ end }}
|
|
@ -0,0 +1,23 @@
|
|||
{{ range .Pages.Reverse }}
|
||||
{{ if ne .Title "Docs Changelog" }}
|
||||
{{ if not .Page.Params.released }}
|
||||
{{ errorf (printf "Release Notes Page %q requires 'released' Front Matter." .Page.File.Path ) }}
|
||||
{{ end }}
|
||||
{{ if not .Title }}
|
||||
{{ errorf (printf "Release Notes Page %q requires 'title' Front Matter." .Page.File.Path ) }}
|
||||
{{ end }}
|
||||
<div class="rn-container pb-3">
|
||||
<h2 class="rn-title">{{ .Title}}</h2>
|
||||
|
||||
<div class="rn-summary-meta">
|
||||
Released: {{ .Page.Params.released }} -
|
||||
<a href="https://github.com/crossplane/crossplane/releases/tag/{{.Title}}">GitHub</a>
|
||||
</div>
|
||||
|
||||
<div class="rn-body ps-3">
|
||||
{{ .Summary | markdownify }}
|
||||
<a href="{{.Permalink}}">Full {{.Title}} release notes</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
|
@ -1,4 +1,4 @@
|
|||
<div class="bd-layout docs-container">
|
||||
<div class="bd-layout docs-container">
|
||||
<aside class="bd-sidebar">
|
||||
<div class="offcanvas-lg offcanvas-start bd-sidebar-container" tabindex="-1" id="bdSidebar" aria-labelledby="bdSidebarOffcanvasLabel">
|
||||
<div class="offcanvas-header pb-4 border-bottom">
|
||||
|
@ -15,7 +15,7 @@
|
|||
{{ partial "left-nav" . }}
|
||||
</aside>
|
||||
|
||||
<main class="bd-main order-1">
|
||||
<main class="bd-main order-1 {{ if eq $.Params.Product "crds" }}no-toc{{end}} ">
|
||||
<div class="bd-intro pt-2 ps-lg-2">
|
||||
<div class="d-md-flex flex-md-row-reverse align-items-center justify-content-between">
|
||||
<div class="mb-3 mb-md-0 d-flex">
|
||||
|
@ -39,8 +39,7 @@
|
|||
{{ end }}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="bd-toc mt-3 mb-5 my-lg-0 ps-xl-3 mb-lg-5">
|
||||
<div class="bd-toc mt-3 mb-5 my-lg-0 ps-xl-3 mb-lg-5 {{ if eq $.Params.Product "crds" }}d-none{{end}}">
|
||||
{{ if (ne .Page.Params.toc false) }}
|
||||
{{ if gt (len .TableOfContents) 40 }}
|
||||
<button class="btn btn-link p-md-0 mb-2 mb-md-0 text-decoration-none bd-toc-toggle d-md-none" type="button" data-bs-toggle="collapse" data-bs-target="#tocContents" aria-expanded="false" aria-controls="tocContents">
|
||||
|
@ -79,80 +78,14 @@
|
|||
{{ end }}
|
||||
|
||||
{{ if eq $.Params.Product "Release Notes" }}
|
||||
{{ range .Pages.Reverse }}
|
||||
{{ if ne .Title "Docs Changelog" }}
|
||||
{{ if not .Page.Params.released }}
|
||||
{{ errorf (printf "Release Notes Page %q requires 'released' Front Matter." .Page.File.Path ) }}
|
||||
{{ end }}
|
||||
{{ if not .Title }}
|
||||
{{ errorf (printf "Release Notes Page %q requires 'title' Front Matter." .Page.File.Path ) }}
|
||||
{{ end }}
|
||||
<div class="rn-container pb-3">
|
||||
<h2 class="rn-title">{{ .Title}}</h2>
|
||||
|
||||
<div class="rn-summary-meta">
|
||||
Released: {{ .Page.Params.released }} -
|
||||
<a href="https://github.com/crossplane/crossplane/releases/tag/{{.Title}}">GitHub</a>
|
||||
</div>
|
||||
|
||||
<div class="rn-body ps-3">
|
||||
{{ .Summary | markdownify }}
|
||||
<a href="{{.Permalink}}">Full {{.Title}} release notes</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ partial "release-notes" . }}
|
||||
{{ else if eq $.Params.Product "crds" }}
|
||||
{{ partial "crds" . }}
|
||||
{{ else }}
|
||||
{{ .Content }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ if .Page.Store.Get "hasMermaid" }}
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
|
||||
<script type="module">
|
||||
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
||||
document.addEventListener("DOMContentLoaded", setMermaidStyle());
|
||||
document.addEventListener("DOMContentLoaded", colorModeListener());
|
||||
|
||||
function getMermaidConfig(){
|
||||
var style = getComputedStyle(document.body)
|
||||
var font = style.getPropertyValue("font-family")
|
||||
var fontColor = style.getPropertyValue('--body-font-color')
|
||||
var backgroundColor = style.getPropertyValue('--body-background')
|
||||
|
||||
var config = {
|
||||
"theme": "base",
|
||||
"fontFamily": font,
|
||||
"themeVariables": {
|
||||
"background": backgroundColor,
|
||||
"textColor": fontColor,
|
||||
}
|
||||
}
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
function setMermaidStyle(){
|
||||
var config = getMermaidConfig()
|
||||
mermaid.initialize( config )
|
||||
}
|
||||
|
||||
function colorModeListener(){
|
||||
darkSwitch.addEventListener("click", resetMermaidStyle())
|
||||
}
|
||||
|
||||
function resetMermaidStyle(){
|
||||
console.log("resetting")
|
||||
|
||||
var config = getMermaidConfig()
|
||||
console.log(config)
|
||||
mermaid.mermaidAPI.setConfig( config )
|
||||
mermaid.mermaidAPI.reset()
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
{{ end }}
|
||||
{{ partial "mermaid" . }}
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
|
||||
|
||||
{{ range .Page.Resources.Match "**.yaml" }}
|
||||
{{ . }} <br />
|
||||
{{ end }}
|
|
@ -0,0 +1,10 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="minus">
|
||||
<path
|
||||
d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z" />
|
||||
</g>
|
||||
</defs>
|
||||
<use xlink:href="#minus" />
|
||||
</svg>
|
After Width: | Height: | Size: 349 B |
|
@ -0,0 +1,10 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="minus">
|
||||
<path
|
||||
d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z" />
|
||||
</g>
|
||||
</defs>
|
||||
<use style="fill:white" xlink:href="#minus" />
|
||||
</svg>
|
After Width: | Height: | Size: 368 B |
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="plus">
|
||||
<path d="M432 256C432 260.4 428.4 264 424 264h-192v192c0 4.422-3.578 8.006-8 8.006S216 460.4 216 456v-192h-192c-4.422 0-8-3.572-8-7.994C16 251.6 19.58 248 24 248h192v-192c0-4.422 3.578-7.994 8-7.994S232 51.58 232 56v192h192C428.4 248 432 251.6 432 256z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use style="fill:#DADCDC" xlink:href="#plus" />
|
||||
</svg>
|
After Width: | Height: | Size: 494 B |
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="plus">
|
||||
<path d="M432 256C432 260.4 428.4 264 424 264h-192v192c0 4.422-3.578 8.006-8 8.006S216 460.4 216 456v-192h-192c-4.422 0-8-3.572-8-7.994C16 251.6 19.58 248 24 248h192v-192c0-4.422 3.578-7.994 8-7.994S232 51.58 232 56v192h192C428.4 248 432 251.6 432 256z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use xlink:href="#plus" />
|
||||
</svg>
|
After Width: | Height: | Size: 473 B |
|
@ -0,0 +1,9 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="plus">
|
||||
<path d="M432 256C432 260.4 428.4 264 424 264h-192v192c0 4.422-3.578 8.006-8 8.006S216 460.4 216 456v-192h-192c-4.422 0-8-3.572-8-7.994C16 251.6 19.58 248 24 248h192v-192c0-4.422 3.578-7.994 8-7.994S232 51.58 232 56v192h192C428.4 248 432 251.6 432 256z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use xlink:href="#plus" />
|
||||
</svg>
|
After Width: | Height: | Size: 473 B |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 576 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="sort-down">
|
||||
<path d="M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use style="fill:#5DD9C8" xlink:href="#sort-down" />
|
||||
</svg>
|
After Width: | Height: | Size: 846 B |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 576 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="sort-down">
|
||||
<path d="M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use style="fill:#248477" xlink:href="#sort-down" />
|
||||
</svg>
|
After Width: | Height: | Size: 847 B |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 576 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="sort-up">
|
||||
<path d="M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use style="fill:#5DD9C8" xlink:href="#sort-up" />
|
||||
</svg>
|
After Width: | Height: | Size: 840 B |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 576 512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<g id="sort-up">
|
||||
<path d="M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<use style="fill:#248477" xlink:href="#sort-up" />
|
||||
</svg>
|
After Width: | Height: | Size: 841 B |
|
@ -1,6 +1,9 @@
|
|||
// Customize clipboard.js
|
||||
import * as ClipboardJS from 'clipboard';
|
||||
|
||||
// copy API links to the clipboard
|
||||
const crdURLCopier = new ClipboardJS('.kind-link');
|
||||
|
||||
// Most of the following is directly from the Bootstrap Website.
|
||||
// https://github.com/twbs/bootstrap/blob/main/site/assets/js/code-examples.js
|
||||
const btnHtml = [
|
||||
|
|