apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: shipments.warehouse.edge.ncr.com annotations: controller-gen.kubebuilder.io/version: (unknown) spec: group: warehouse.edge.ncr.com names: kind: Shipment listKind: ShipmentList plural: shipments singular: shipment scope: Cluster versions: - name: v1alpha1 additionalPrinterColumns: - name: Age type: date jsonPath: .metadata.creationTimestamp - name: Ready type: string jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Status type: string jsonPath: .status.conditions[?(@.type=="Ready")].message schema: openAPIV3Schema: type: object description: Shipment is one or more Pallets that will be unpacked and scheduled to the cluster. properties: apiVersion: type: string 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' kind: type: string 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' metadata: type: object spec: type: object properties: creds: type: object description: Credentials is an optional secret reference pointing to a secret containing registry credentials. The secret must be of type kubernetes.io/dockerconfigjson properties: name: type: string description: name is unique within a namespace to reference a secret resource. namespace: type: string description: namespace defines the space within which the secret name must be unique. force: type: boolean default: false description: Force indicates whether or not objects should be forced by deleting and re-creating when there is a conflict due to immutable fields changing. interval: type: string default: 60s description: Interval is how often the object will be reconciled, in order to prevent drift. pallets: type: array description: "Pallets is the set of Pallet packages that will be pulled and reconciled, without the repository string. Each Pallet reference is completed from the Repository field. \n All Pallets are resolved into a single, deduped graph to ensure that there is no more than one version of a package. How conflicts are resolved is configurable via Resolution" items: type: object description: BaseArtifact describes a reference to a Warehouse package without a repository that can be embedded in a K8s resource spec. properties: name: type: string description: Name is the unique package name for the Warehouse package. It is appended to the provided Repository to produce the full repository string, e.g., gcr.io/foo/bar, where bar is the name of the package and gcr.io/foo is the provided Repository string digest: type: string description: Digest is the sha256 digest of the OCI artifact to apply to the cluster. Takes precedence over tag if set. tag: type: string description: Tag is a mutable reference to the OCI artifact to apply. Defaults to "latest" if neither Tag or Digest are set. required: - name minItems: 1 prune: type: boolean description: Prune indicates whether or not objects should be pruned between reconciles or when the object is deleted. You may want to use this for deployments that you really don't want deleted. rendering: type: array description: Rendering is the configuration controlling how the unpacked K8s manifests are rendered before applying. items: type: object properties: configMapRef: type: object description: ConfigMapRef references a K8s ConfigMap to pull parameters from. Mutually exclusive with Variables. properties: name: type: string description: Name of the referent. maxLength: 253 minLength: 1 namespace: type: string description: Namespace of the referent, when not specified it acts as LocalObjectReference. maxLength: 253 minLength: 1 required: - name mapping: type: object additionalProperties: type: string description: 'Mapping of rendering parameters to specific keys in the referenced ConfigMap, e.g.: {gcp_project_id: gcp.projectId} where ''gcp.projectId'' is a key in the ConfigMap.' parameters: type: object additionalProperties: type: string description: Parameters are inlined parameters. Mutually exclusive with ConfigMapRef. repo: type: string description: Repository is the image repository that all Pallets will be pulled from. It MUST be the entire repository string up to the Pallet package name, e.g. gcr.io/foo if packages are gcr.io/foo/bar, gcr.io/foo/bax, ... All packages must come from the same repository because resolving the graph of packages may discover the same digest in multiple repositories. This controller won't make value judgements as to which repository should be used in conflict. resolution: type: object description: Resolution is the rules for resolving conflicts in the resolved graph for the pallets included in this shipment. By default, a Shipment will be marked Stalled if it references a list of pallets which don't produce a consistent (e.g., no conflicting digests) resolved graph. properties: acceptFirst: type: boolean description: AcceptFirst will accept the first digest it encounters for each package during graph resolution. If the package exists in the graph with a differing digest, it is dropped. This is the simplest way to force a set of conflicting packages to produce a consistent graph, but doesn't provide any additional control pins: type: array description: Pins are a mapping of package names to digests that are forced during graph resolution, analogous to pinning transitive dependency versions using `replace` directives in a `go.mod` file. items: type: object description: Pin is a specific digest associated with a package name, used to "pin" the package to that digest when resolving package graphs or reflect the result of a resolved set of packages. properties: name: type: string digest: type: string description: Digest is the digest for the package reference (e.g., `shoot:latest`, Pallet.Digest()) resolvedDigest: type: string description: ResolvedDigest is the digest of the provider-specific variant pulled from the package based on where it is being scheduled. required: - digest - name - resolvedDigest retryInterval: type: string default: 10s description: RetryInterval is how often to retry previously failed reconciliations. Defaults to Interval if not provided. suspend: type: boolean description: This flag tells the controller to suspend subsequent reconciliations, it does not apply to already started reconciliations. Defaults to false. timeout: type: string default: 120s description: Timeout is how long the controller will wait for the applied objects to reconcile. unpack: type: object description: UnpackOptions properties: capabilities: type: array description: Capabilities are additional runtime layers to apply. If Runtime is set to false, this field must be empty. items: type: string infra: type: boolean default: false description: Infra is whether or not to schedule infrastructure objects. infraNamespace: type: string description: InfraNamespace is the K8s namespace the infra objects should be scheduled to. If provided, the metadata.namespace of unpacked infra objects is updated using Kustomize filters on unpack. provider: type: string description: Provider is the K8s cluster provider that should be unpacked. By default, it is the same cluster provider that Lumper was scheduled onto. If Runtime is true, this option cannot be set to a value that conflicts with Lumper's startup configuration (e.g., you cannot schedule non-GKE runtime resources to a GKE cluster) runtime: type: boolean default: false description: Runtime determines if runtime resources should be applied. By default, only the base runtime layer is applied. required: - force - pallets - prune - repo status: type: object default: observedGeneration: -1 description: ShipmentStatus contains the readiness of the reconciled resources and an inventory of currently applied resources. properties: conditions: type: array items: type: object description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: type: type: string description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ status: type: string description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown lastTransitionTime: type: string description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time message: type: string description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 observedGeneration: type: integer description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 reason: type: string description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ required: - lastTransitionTime - message - reason - status - type inventory: type: object description: Inventory is the K8s resources that this object manages. properties: entries: type: array description: Entries of Kubernetes resource object references. items: type: object description: ResourceRef contains the information necessary to locate a resource within a cluster. properties: id: type: string description: ID is the string representation of the Kubernetes resource object's metadata, in the format '___'. v: type: string description: Version is the API version of the Kubernetes resource object's kind. required: - id - v lastApplied: type: array description: LastApplied is the last set of resolved artifacts that were applied. items: type: object description: Pin is a specific digest associated with a package name, used to "pin" the package to that digest when resolving package graphs or reflect the result of a resolved set of packages. properties: name: type: string digest: type: string description: Digest is the digest for the package reference (e.g., `shoot:latest`, Pallet.Digest()) resolvedDigest: type: string description: ResolvedDigest is the digest of the provider-specific variant pulled from the package based on where it is being scheduled. required: - digest - name - resolvedDigest lastAttempted: type: array description: LastAttempted is the last set of resolved artifacts that the controller attempted to apply. items: type: object description: Pin is a specific digest associated with a package name, used to "pin" the package to that digest when resolving package graphs or reflect the result of a resolved set of packages. properties: name: type: string digest: type: string description: Digest is the digest for the package reference (e.g., `shoot:latest`, Pallet.Digest()) resolvedDigest: type: string description: ResolvedDigest is the digest of the provider-specific variant pulled from the package based on where it is being scheduled. required: - digest - name - resolvedDigest lastHandledReconcileAt: type: string description: LastHandledReconcileAt holds the value of the most recent reconcile request value, so a change of the annotation value can be detected. observedGeneration: type: integer format: int64 served: true storage: true subresources: status: {}