--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: (unknown) name: nodedisplayconfigs.display.edge.ncr.com spec: group: display.edge.ncr.com names: kind: NodeDisplayConfig listKind: NodeDisplayConfigList plural: nodedisplayconfigs shortNames: - ndcs - ndc - display - displays singular: nodedisplayconfig scope: Cluster versions: - additionalPrinterColumns: - jsonPath: .status.enabled name: Enabled type: boolean - jsonPath: .status.config name: Config type: boolean - jsonPath: .status.default name: Default type: boolean - jsonPath: .status.applied.displays name: Displays priority: 1 type: string - jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].reason name: Status type: string - jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].message name: Message priority: 1 type: string - jsonPath: .status.applied.lastAppliedTimestamp name: Last-Configured priority: 1 type: date - jsonPath: .metadata.creationTimestamp name: Age type: date deprecated: true name: v1 schema: openAPIV3Schema: 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: 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: DisplayConfig defines the configuration for displays. properties: displays: additionalProperties: description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: description: InputDeviceMappings are the devices the display maps to. items: description: InputDeviceName is the name of an input device type: string type: array orientation: description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted type: string primary: description: Primary indicates whether this is the primary display. type: boolean resolution: description: Resolution is the current resolution of the display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object supportedResolutions: 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: description: Resolution defines the resolution of a display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object type: array type: object description: Maps monitor MPIDs to Display configurations. type: object dpms: description: DPMS configuration properties: blankTime: description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 type: integer enabled: description: Enabled indicates whether DPMS is enabled for the node. type: boolean offTime: description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 type: integer standByTime: description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 type: integer suspendTime: description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 type: integer type: object layout: description: Layout of the displays as slice, ordered left to right. items: description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ type: string type: array type: object status: properties: applied: description: The configuration that was applied to the node. properties: appliedDisplayConfig: description: The DisplayConfig configuration that was applied to the node. properties: displays: additionalProperties: description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: description: InputDeviceMappings are the devices the display maps to. items: description: InputDeviceName is the name of an input device type: string type: array orientation: description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted type: string primary: description: Primary indicates whether this is the primary display. type: boolean resolution: description: Resolution is the current resolution of the display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object supportedResolutions: 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: description: Resolution defines the resolution of a display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object type: array type: object description: Maps monitor MPIDs to Display configurations. type: object dpms: description: DPMS configuration properties: blankTime: description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 type: integer enabled: description: Enabled indicates whether DPMS is enabled for the node. type: boolean offTime: description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 type: integer standByTime: description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 type: integer suspendTime: description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 type: integer type: object layout: description: Layout of the displays as slice, ordered left to right. items: description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ type: string type: array type: object displays: description: The output identifiers of the displays configured on the node. items: description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ type: string type: array lastAppliedGeneration: description: The generation of the object that was last applied to the node. format: int64 type: integer lastAppliedTimestamp: description: Timestamp when configuration was last applied to the node. format: date-time type: string type: object conditions: items: 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: lastTransitionTime: 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 type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: 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 type: integer reason: 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_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: 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])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array config: description: |- Whether there exists additional display manager config for the node, e.g. in xserver-config ConfigMap. type: boolean default: description: Whether the NodeDisplayConfig has default or custom configuration. type: boolean enabled: 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. type: boolean type: object type: object served: true storage: false subresources: status: {} - additionalPrinterColumns: - jsonPath: .status.applied.displays name: Displays priority: 1 type: string - jsonPath: .status.conditions[?(@.type=="Default")].status name: Default type: string - jsonPath: .status.conditions[?(@.type=="DisplayctlEnabled")].status name: Enabled type: string - jsonPath: .status.conditions[?(@.type=="DisplayManagerConfig")].status name: Config type: string - jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].reason name: Status type: string - jsonPath: .status.conditions[?(@.type=="DisplayManagerConfigured")].message name: Message priority: 1 type: string - jsonPath: .status.applied.lastAppliedTimestamp name: Last-Configured priority: 1 type: date - jsonPath: .metadata.creationTimestamp name: Age type: date name: v2 schema: openAPIV3Schema: 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: 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: DisplayConfig defines the configuration for displays. properties: displays: description: Maps monitor display-ports to display configurations. items: description: Display configures a display's monitor and input devices. properties: displayPort: 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]+)+$ type: string inputDeviceMappings: description: InputDeviceMappings are the devices the display maps to. items: description: InputDeviceName is the name of an input device type: string type: array mpid: 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}$ type: string orientation: description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted type: string primary: description: Primary indicates whether this is the primary display. type: boolean resolution: description: Resolution is the current resolution of the display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object supportedResolutions: 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: description: Resolution defines the resolution of a display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object type: array required: - displayPort type: object type: array dpms: description: DPMS configuration properties: blankTime: description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 type: integer enabled: description: Enabled indicates whether DPMS is enabled for the node. type: boolean offTime: description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 type: integer standybyTime: description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 type: integer suspendTime: description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 type: integer type: object layout: description: Layout of the displays as slice, ordered left to right. items: 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]+)+$ type: string type: array v1-displayConfig: 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: additionalProperties: description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: description: InputDeviceMappings are the devices the display maps to. items: description: InputDeviceName is the name of an input device type: string type: array orientation: description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted type: string primary: description: Primary indicates whether this is the primary display. type: boolean resolution: description: Resolution is the current resolution of the display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object supportedResolutions: 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: description: Resolution defines the resolution of a display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object type: array type: object description: Maps monitor MPIDs to Display configurations. type: object dpms: description: DPMS configuration properties: blankTime: description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 type: integer enabled: description: Enabled indicates whether DPMS is enabled for the node. type: boolean offTime: description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 type: integer standByTime: description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 type: integer suspendTime: description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 type: integer type: object layout: description: Layout of the displays as slice, ordered left to right. items: description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ type: string type: array type: object type: object status: properties: applied: description: The configuration that was applied to the node. properties: displayConfig: description: The DisplayConfig configuration that was applied to the node. properties: displays: description: Maps monitor display-ports to display configurations. items: description: Display configures a display's monitor and input devices. properties: displayPort: 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]+)+$ type: string inputDeviceMappings: description: InputDeviceMappings are the devices the display maps to. items: description: InputDeviceName is the name of an input device type: string type: array mpid: 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}$ type: string orientation: description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted type: string primary: description: Primary indicates whether this is the primary display. type: boolean resolution: description: Resolution is the current resolution of the display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object supportedResolutions: 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: description: Resolution defines the resolution of a display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object type: array required: - displayPort type: object type: array dpms: description: DPMS configuration properties: blankTime: description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 type: integer enabled: description: Enabled indicates whether DPMS is enabled for the node. type: boolean offTime: description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 type: integer standybyTime: description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 type: integer suspendTime: description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 type: integer type: object layout: description: Layout of the displays as slice, ordered left to right. items: 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]+)+$ type: string type: array v1-displayConfig: 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: additionalProperties: description: Display configures a display's monitor and input devices. properties: inputDeviceMappings: description: InputDeviceMappings are the devices the display maps to. items: description: InputDeviceName is the name of an input device type: string type: array orientation: description: Orientation of the display, e.g "left" or "inverted". enum: - normal - left - right - inverted type: string primary: description: Primary indicates whether this is the primary display. type: boolean resolution: description: Resolution is the current resolution of the display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object supportedResolutions: 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: description: Resolution defines the resolution of a display. properties: height: description: Height of the display in pixels. minimum: 0 type: integer width: description: Width of the display in pixels. minimum: 0 type: integer required: - height - width type: object type: array type: object description: Maps monitor MPIDs to Display configurations. type: object dpms: description: DPMS configuration properties: blankTime: description: |- BlankTime configures the number of seconds of inactivity before reaching the blank phase of the screen saver. minimum: 0 type: integer enabled: description: Enabled indicates whether DPMS is enabled for the node. type: boolean offTime: description: |- OffTime configures the number of seconds of inactivity before reaching the off phase of the DPMS mode. minimum: 0 type: integer standByTime: description: |- StandbyTime configures the number of seconds of inactivity before reaching the standby phase of the DPMS mode. minimum: 0 type: integer suspendTime: description: |- SuspendTime configures the number of seconds of inactivity before reaching the suspend phase of the DPMS mode. minimum: 0 type: integer type: object layout: description: Layout of the displays as slice, ordered left to right. items: description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ type: string type: array type: object type: object displays: description: The output identifiers of the displays configured on the node. items: 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]+)+$ type: string type: array lastAppliedGeneration: description: The generation of the object that was last applied to the node. format: int64 type: integer lastAppliedTimestamp: description: Timestamp when configuration was last applied to the node. format: date-time type: string type: object conditions: items: 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: lastTransitionTime: 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 type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: 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 type: integer reason: 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_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: 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])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array upgrade: description: Stores upgrade status for partially-upgraded objects. properties: disconnectedDisplays: additionalProperties: description: |- Manufacturer and Product-Code ID, a unique identifier for the display, i.e. "-". pattern: ^[A-Z]{3}-\d{1,5}$ type: string description: |- MPIDs for displays disconnected during the upgrade. Used by displayctl to upgrade the displays if they are reconnected at later point. type: object type: object type: object type: object served: true storage: true subresources: status: {}