apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.18.0 creationTimestamp: "2025-10-11T10:50:44Z" generation: 1 labels: openstack.openstack.org/crd: "" name: keystoneservices.keystone.openstack.org resourceVersion: "32007" uid: d9a07d9f-42ef-4d50-8baf-ed58179b4e39 spec: conversion: strategy: None group: keystone.openstack.org names: kind: KeystoneService listKind: KeystoneServiceList plural: keystoneservices singular: keystoneservice scope: Namespaced versions: - additionalPrinterColumns: - description: Status jsonPath: .status.conditions[0].status name: Status type: string - description: Message jsonPath: .status.conditions[0].message name: Message type: string name: v1beta1 schema: openAPIV3Schema: description: KeystoneService is the Schema for the keystoneservices API 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: KeystoneServiceSpec defines the desired state of KeystoneService properties: enabled: description: Enabled - whether or not the service is enabled. type: boolean passwordSelector: description: PasswordSelector - Selector to get the ServiceUser password from the Secret, e.g. PlacementPassword type: string secret: description: Secret containing OpenStack password information for the ServiceUser type: string serviceDescription: description: ServiceDescription - Description for the service. type: string serviceName: description: ServiceName - Name of the service. type: string serviceType: description: ServiceType - Type is the type of the service. type: string serviceUser: description: ServiceUser - optional username used for this service type: string required: - enabled - passwordSelector - secret - serviceName - serviceType - serviceUser type: object status: description: KeystoneServiceStatus defines the observed state of KeystoneService properties: conditions: description: Conditions items: description: Condition defines an observation of a API resource operational state. properties: lastTransitionTime: description: |- 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: A human readable message indicating details about the transition. type: string reason: description: The reason for the condition's last transition in CamelCase. type: string severity: description: |- Severity provides a classification of Reason code, so the current situation is immediately understandable and could act accordingly. It is meant for situations where Status=False and it should be indicated if it is just informational, warning (next reconciliation might fix it) or an error (e.g. DB create issue and no actions to automatically resolve the issue can/should be done). For conditions where Status=Unknown or Status=True the Severity should be SeverityNone. type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: Type of condition in CamelCase. type: string required: - lastTransitionTime - status - type type: object type: array serviceID: type: string type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: KeystoneService listKind: KeystoneServiceList plural: keystoneservices singular: keystoneservice conditions: - lastTransitionTime: "2025-10-11T10:50:44Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2025-10-11T10:50:44Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1beta1