apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: nodedisplayconfigs.display.edge.ncr.com annotations: controller-gen.kubebuilder.io/version: (unknown) spec: group: display.edge.ncr.com names: kind: NodeDisplayConfig listKind: NodeDisplayConfigList plural: nodedisplayconfigs shortNames: - ndcs - ndc - display - displays singular: nodedisplayconfig scope: Cluster versions: - name: v1 additionalPrinterColumns: - name: Enabled type: boolean jsonPath: .status.enabled - name: Config type: boolean jsonPath: .status.config - name: Default type: boolean jsonPath: .status.default - name: Displays type: string priority: 1 jsonPath: .status.applied.displays - name: Status type: string jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].reason - name: Message type: string priority: 1 jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].message - name: Last-Configured type: date priority: 1 jsonPath: .status.applied.lastAppliedTimestamp - name: Age type: date jsonPath: .metadata.creationTimestamp deprecated: true schema: openAPIV3Schema: type: object description: |- A NodeDisplayConfig defines custom display configuration for a node, defined as a DisplayConfig. It's status details the DisplayConfig that was applied to the node by displayctl. 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 description: DisplayConfig defines the configuration for displays. properties: displays: type: object additionalProperties: type: object description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: type: array description: InputDeviceMappings are the devices the display maps to. items: type: string description: InputDeviceName is the name of an input device orientation: type: string description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted primary: type: boolean description: Primary indicates whether this is the primary display. resolution: type: object description: Resolution is the current resolution of the display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width supportedResolutions: type: array description: |- SupportedResolutions are the valid resolutions the display can be configured to use. It is NOT valid to configure this field in the NodeDisplayConfig spec. The resolution of the display can be configured via the Resolution field. items: type: object description: Resolution defines the resolution of a display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width description: Maps monitor MPIDs to Display configurations. dpms: type: object description: DPMS configuration properties: blankTime: type: integer description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 enabled: type: boolean description: Enabled indicates whether DPMS is enabled for the node. offTime: type: integer description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 standByTime: type: integer description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 suspendTime: type: integer description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 layout: type: array description: Layout of the displays as slice, ordered left to right. items: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ status: type: object properties: applied: type: object description: The configuration that was applied to the node. properties: appliedDisplayConfig: type: object description: The DisplayConfig configuration that was applied to the node. properties: displays: type: object additionalProperties: type: object description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: type: array description: InputDeviceMappings are the devices the display maps to. items: type: string description: InputDeviceName is the name of an input device orientation: type: string description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted primary: type: boolean description: Primary indicates whether this is the primary display. resolution: type: object description: Resolution is the current resolution of the display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width supportedResolutions: type: array description: |- SupportedResolutions are the valid resolutions the display can be configured to use. It is NOT valid to configure this field in the NodeDisplayConfig spec. The resolution of the display can be configured via the Resolution field. items: type: object description: Resolution defines the resolution of a display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width description: Maps monitor MPIDs to Display configurations. dpms: type: object description: DPMS configuration properties: blankTime: type: integer description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 enabled: type: boolean description: Enabled indicates whether DPMS is enabled for the node. offTime: type: integer description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 standByTime: type: integer description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 suspendTime: type: integer description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 layout: type: array description: Layout of the displays as slice, ordered left to right. items: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ displays: type: array description: The output identifiers of the displays configured on the node. items: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ lastAppliedGeneration: type: integer description: The generation of the object that was last applied to the node. format: int64 lastAppliedTimestamp: type: string description: Timestamp when configuration was last applied to the node. format: date-time conditions: type: array items: type: object description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" 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 config: type: boolean description: |- Whether there exists additional display manager config for the node, e.g. in xserver-config ConfigMap. default: type: boolean description: Whether the NodeDisplayConfig has default or custom configuration. enabled: type: boolean description: |- Whether displayctl is enabled for the node. When disabled no configuration will be done by displayctl, leaving the display manager to be configured by the xserver-config ConfigMap. served: true storage: false subresources: status: {} - name: v2 additionalPrinterColumns: - name: Displays type: string priority: 1 jsonPath: .status.applied.displays - name: Default type: string jsonPath: .status.conditions[?(@.type=="Default")].status - name: Enabled type: string jsonPath: .status.conditions[?(@.type=="DisplayctlEnabled")].status - name: Config type: string jsonPath: .status.conditions[?(@.type=="DisplayManagerConfig")].status - name: Status type: string jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].reason - name: Message type: string priority: 1 jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].message - name: Last-Configured type: date priority: 1 jsonPath: .status.applied.lastAppliedTimestamp - name: Age type: date jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: type: object description: |- A NodeDisplayConfig defines custom display configuration for a node, defined as a DisplayConfig. It's status details the DisplayConfig that was applied to the node by displayctl. 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 description: DisplayConfig defines the configuration for displays. properties: displays: type: array description: Maps monitor display-ports to display configurations. items: type: object description: Display configures a display's monitor and input devices. properties: displayPort: type: string description: |- DisplayPort is the display card and physical port the display is connected to, e.g. card0-DP1, card1-HDMI2 etc. This field is NOT optional. pattern: ^(unknown|card\d)(-[A-Za-z0-9]+)+$ inputDeviceMappings: type: array description: InputDeviceMappings are the devices the display maps to. items: type: string description: InputDeviceName is the name of an input device mpid: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". It is NOT valid to configure this field in the NodeDisplayConfig spec. pattern: ^[A-Z]{3}-\d{1,5}$ orientation: type: string description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted primary: type: boolean description: Primary indicates whether this is the primary display. resolution: type: object description: Resolution is the current resolution of the display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width supportedResolutions: type: array description: |- SupportedResolutions are the valid resolutions the display can be configured to use. It is NOT valid to configure this field in the NodeDisplayConfig spec. The resolution of the display can be configured via the Resolution field. items: type: object description: Resolution defines the resolution of a display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width required: - displayPort dpms: type: object description: DPMS configuration properties: blankTime: type: integer description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 enabled: type: boolean description: Enabled indicates whether DPMS is enabled for the node. offTime: type: integer description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 standybyTime: type: integer description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 suspendTime: type: integer description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 layout: type: array description: Layout of the displays as slice, ordered left to right. items: type: string description: |- DisplayPort is the display card and physical port the display is connected to, e.g. card0-DP1, card1-HDMI-A-2 etc. If a card cannot be found for a display it will be marked unknown, e.g. unknown-DP2. Displays that were disconnected during upgrade from V1 to V2 will be marked disconnected, e.g. unknown-disconnected-1. pattern: ^(unknown|card\d)(-[A-Za-z0-9]+)+$ v1-displayConfig: type: object description: |- The V1 spec following conversion from V1 to V2 by the conversion webhook. This will be used by displayctl to upgrade the spec to V2. This must only be set during conversion from V1 to V2 and cannot be set after the upgrade is complete. properties: displays: type: object additionalProperties: type: object description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: type: array description: InputDeviceMappings are the devices the display maps to. items: type: string description: InputDeviceName is the name of an input device orientation: type: string description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted primary: type: boolean description: Primary indicates whether this is the primary display. resolution: type: object description: Resolution is the current resolution of the display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width supportedResolutions: type: array description: |- SupportedResolutions are the valid resolutions the display can be configured to use. It is NOT valid to configure this field in the NodeDisplayConfig spec. The resolution of the display can be configured via the Resolution field. items: type: object description: Resolution defines the resolution of a display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width description: Maps monitor MPIDs to Display configurations. dpms: type: object description: DPMS configuration properties: blankTime: type: integer description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 enabled: type: boolean description: Enabled indicates whether DPMS is enabled for the node. offTime: type: integer description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 standByTime: type: integer description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 suspendTime: type: integer description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 layout: type: array description: Layout of the displays as slice, ordered left to right. items: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ status: type: object properties: applied: type: object description: The configuration that was applied to the node. properties: displayConfig: type: object description: The DisplayConfig configuration that was applied to the node. properties: displays: type: array description: Maps monitor display-ports to display configurations. items: type: object description: Display configures a display's monitor and input devices. properties: displayPort: type: string description: |- DisplayPort is the display card and physical port the display is connected to, e.g. card0-DP1, card1-HDMI2 etc. This field is NOT optional. pattern: ^(unknown|card\d)(-[A-Za-z0-9]+)+$ inputDeviceMappings: type: array description: InputDeviceMappings are the devices the display maps to. items: type: string description: InputDeviceName is the name of an input device mpid: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". It is NOT valid to configure this field in the NodeDisplayConfig spec. pattern: ^[A-Z]{3}-\d{1,5}$ orientation: type: string description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted primary: type: boolean description: Primary indicates whether this is the primary display. resolution: type: object description: Resolution is the current resolution of the display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width supportedResolutions: type: array description: |- SupportedResolutions are the valid resolutions the display can be configured to use. It is NOT valid to configure this field in the NodeDisplayConfig spec. The resolution of the display can be configured via the Resolution field. items: type: object description: Resolution defines the resolution of a display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width required: - displayPort dpms: type: object description: DPMS configuration properties: blankTime: type: integer description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 enabled: type: boolean description: Enabled indicates whether DPMS is enabled for the node. offTime: type: integer description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 standybyTime: type: integer description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 suspendTime: type: integer description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 layout: type: array description: Layout of the displays as slice, ordered left to right. items: type: string description: |- DisplayPort is the display card and physical port the display is connected to, e.g. card0-DP1, card1-HDMI-A-2 etc. If a card cannot be found for a display it will be marked unknown, e.g. unknown-DP2. Displays that were disconnected during upgrade from V1 to V2 will be marked disconnected, e.g. unknown-disconnected-1. pattern: ^(unknown|card\d)(-[A-Za-z0-9]+)+$ v1-displayConfig: type: object description: |- The V1 spec following conversion from V1 to V2 by the conversion webhook. This will be used by displayctl to upgrade the spec to V2. This must only be set during conversion from V1 to V2 and cannot be set after the upgrade is complete. properties: displays: type: object additionalProperties: type: object description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: type: array description: InputDeviceMappings are the devices the display maps to. items: type: string description: InputDeviceName is the name of an input device orientation: type: string description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted primary: type: boolean description: Primary indicates whether this is the primary display. resolution: type: object description: Resolution is the current resolution of the display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width supportedResolutions: type: array description: |- SupportedResolutions are the valid resolutions the display can be configured to use. It is NOT valid to configure this field in the NodeDisplayConfig spec. The resolution of the display can be configured via the Resolution field. items: type: object description: Resolution defines the resolution of a display. properties: height: type: integer description: Height of the display in pixels. minimum: 0 width: type: integer description: Width of the display in pixels. minimum: 0 required: - height - width description: Maps monitor MPIDs to Display configurations. dpms: type: object description: DPMS configuration properties: blankTime: type: integer description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 enabled: type: boolean description: Enabled indicates whether DPMS is enabled for the node. offTime: type: integer description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 standByTime: type: integer description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 suspendTime: type: integer description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 layout: type: array description: Layout of the displays as slice, ordered left to right. items: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ displays: type: array description: The output identifiers of the displays configured on the node. items: type: string description: |- DisplayPort is the display card and physical port the display is connected to, e.g. card0-DP1, card1-HDMI-A-2 etc. If a card cannot be found for a display it will be marked unknown, e.g. unknown-DP2. Displays that were disconnected during upgrade from V1 to V2 will be marked disconnected, e.g. unknown-disconnected-1. pattern: ^(unknown|card\d)(-[A-Za-z0-9]+)+$ lastAppliedGeneration: type: integer description: The generation of the object that was last applied to the node. format: int64 lastAppliedTimestamp: type: string description: Timestamp when configuration was last applied to the node. format: date-time conditions: type: array items: type: object description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" 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 upgrade: type: object description: Stores upgrade status for partially-upgraded objects. properties: disconnectedDisplays: type: object additionalProperties: type: string description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ description: |- MPIDs for displays disconnected during the upgrade. Used by displayctl to upgrade the displays if they are reconnected at later point. served: true storage: true subresources: status: {}