Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ metadata:
]
capabilities: Basic Install
categories: AI/Machine Learning
createdAt: "2026-08-06T09:28:15Z"
createdAt: "2026-08-10T12:06:44Z"
description: AI-powered virtual assistant for Red Hat OpenStack Services on OpenShift
features.operators.openshift.io/cnf: "false"
features.operators.openshift.io/cni: "false"
Expand Down Expand Up @@ -227,7 +227,6 @@ spec:
- get
- list
- patch
- update
- watch
- apiGroups:
- core.openstack.org
Expand Down Expand Up @@ -260,12 +259,9 @@ spec:
resources:
- openstacklightspeeds
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- lightspeed.openstack.org
Expand All @@ -278,9 +274,7 @@ spec:
resources:
- openstacklightspeeds/status
verbs:
- get
- patch
- update
- apiGroups:
- operator.openshift.io
resources:
Expand All @@ -290,27 +284,17 @@ spec:
- list
- update
- watch
- apiGroups:
- operators.coreos.com
resources:
- clusterserviceversions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
- clusterroles
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
- apiGroups:
- authentication.k8s.io
Expand Down Expand Up @@ -447,25 +431,24 @@ spec:
- ""
resources:
- configmaps
- services
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- persistentvolumeclaims
- serviceaccounts
- services
verbs:
- create
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
Expand All @@ -478,29 +461,16 @@ spec:
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- get
- list
- patch
- watch
- apiGroups:
- apps
resources:
- deployments
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- networking.k8s.io
Expand All @@ -511,16 +481,7 @@ spec:
- get
- list
- patch
- update
- watch
- apiGroups:
- operators.coreos.com
resources:
- clusterserviceversions
verbs:
- delete
- patch
- update
serviceAccountName: openstack-lightspeed-operator-controller-manager
strategy: deployment
installModes:
Expand Down
43 changes: 2 additions & 41 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ rules:
- get
- list
- patch
- update
- watch
- apiGroups:
- core.openstack.org
Expand Down Expand Up @@ -95,12 +94,9 @@ rules:
resources:
- openstacklightspeeds
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- lightspeed.openstack.org
Expand All @@ -113,9 +109,7 @@ rules:
resources:
- openstacklightspeeds/status
verbs:
- get
- patch
- update
- apiGroups:
- operator.openshift.io
resources:
Expand All @@ -125,27 +119,17 @@ rules:
- list
- update
- watch
- apiGroups:
- operators.coreos.com
resources:
- clusterserviceversions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
- clusterroles
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
Expand All @@ -158,25 +142,24 @@ rules:
- ""
resources:
- configmaps
- services
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- persistentvolumeclaims
- serviceaccounts
- services
verbs:
- create
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
Expand All @@ -189,29 +172,16 @@ rules:
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- get
- list
- patch
- watch
- apiGroups:
- apps
resources:
- deployments
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- networking.k8s.io
Expand All @@ -222,13 +192,4 @@ rules:
- get
- list
- patch
- update
- watch
- apiGroups:
- operators.coreos.com
resources:
- clusterserviceversions
verbs:
- delete
- patch
- update
28 changes: 12 additions & 16 deletions internal/controller/openstacklightspeed_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (
consolev1 "github.com/openshift/api/console/v1"
"github.com/openstack-k8s-operators/lib-common/modules/common/condition"
common_helper "github.com/openstack-k8s-operators/lib-common/modules/common/helper"
operatorsv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
Expand Down Expand Up @@ -75,13 +74,11 @@ func (r *OpenStackLightspeedReconciler) GetLogger(ctx context.Context) logr.Logg
return log.FromContext(ctx).WithName("Controllers").WithName("OpenStackLightspeed")
}

// +kubebuilder:rbac:groups=lightspeed.openstack.org,resources=openstacklightspeeds,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=lightspeed.openstack.org,resources=openstacklightspeeds/status,verbs=get;update;patch
// +kubebuilder:rbac:groups=lightspeed.openstack.org,resources=openstacklightspeeds,verbs=get;list;watch;patch
// +kubebuilder:rbac:groups=lightspeed.openstack.org,resources=openstacklightspeeds/status,verbs=patch
// +kubebuilder:rbac:groups=lightspeed.openstack.org,resources=openstacklightspeeds/finalizers,verbs=update
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterroles,verbs=get;list;watch;create;patch;update;delete;deletecollection
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterrolebindings,verbs=get;list;watch;create;patch;update;delete;deletecollection
// +kubebuilder:rbac:groups=operators.coreos.com,resources=clusterserviceversions,verbs=get;list;watch
// +kubebuilder:rbac:groups=operators.coreos.com,resources=clusterserviceversions,namespace=openstack-lightspeed,verbs=update;patch;delete
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterroles,verbs=get;list;watch;create;patch;deletecollection
// +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterrolebindings,verbs=get;list;watch;create;patch;deletecollection
// +kubebuilder:rbac:groups=config.openshift.io,resources=clusterversions,verbs=get;list;watch
// SAR role escalation: the operator creates a ClusterRole granting pull-secret GET,
// so it must hold that permission itself (K8s RBAC escalation prevention).
Expand All @@ -97,15 +94,15 @@ func (r *OpenStackLightspeedReconciler) GetLogger(ctx context.Context) logr.Logg
// +kubebuilder:rbac:groups=core.openstack.org,resources=openstackcontrolplanes,verbs=get;list;watch
// +kubebuilder:rbac:groups=keystone.openstack.org,resources=keystoneapplicationcredentials,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=keystone.openstack.org,resources=keystoneapplicationcredentials/status,verbs=get
// +kubebuilder:rbac:groups=networking.k8s.io,resources=networkpolicies,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch;update
// +kubebuilder:rbac:groups=apps,resources=deployments,namespace=openstack-lightspeed,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups="",resources=configmaps,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch;update;delete
// +kubebuilder:rbac:groups="",resources=secrets,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch;update;delete;deletecollection
// +kubebuilder:rbac:groups="",resources=services,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch;update;delete
// +kubebuilder:rbac:groups=networking.k8s.io,resources=networkpolicies,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch
// +kubebuilder:rbac:groups=apps,resources=deployments,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch
// +kubebuilder:rbac:groups="",resources=configmaps,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch;delete
// +kubebuilder:rbac:groups="",resources=secrets,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch;delete;deletecollection
// +kubebuilder:rbac:groups="",resources=services,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch
// +kubebuilder:rbac:groups="",resources=serviceaccounts,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch
// +kubebuilder:rbac:groups=console.openshift.io,resources=consoleplugins,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=operator.openshift.io,resources=consoles,verbs=watch;list;get;update
// +kubebuilder:rbac:groups="",resources=persistentvolumeclaims,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch;update
// +kubebuilder:rbac:groups=console.openshift.io,resources=consoleplugins,verbs=get;list;watch;create;patch;delete
// +kubebuilder:rbac:groups=operator.openshift.io,resources=consoles,verbs=get;list;watch;update
// +kubebuilder:rbac:groups="",resources=persistentvolumeclaims,namespace=openstack-lightspeed,verbs=get;list;watch;create;patch

func (r *OpenStackLightspeedReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, e error) {
Log := r.GetLogger(ctx)
Expand Down Expand Up @@ -355,7 +352,6 @@ func (r *OpenStackLightspeedReconciler) SetupWithManager(mgr ctrl.Manager) error
// Use Build instead of Complete to get the controller reference needed by WatchDynamicCRD.
c, err := ctrl.NewControllerManagedBy(mgr).
For(&apiv1beta1.OpenStackLightspeed{}).
Owns(&operatorsv1alpha1.ClusterServiceVersion{}).
Owns(&appsv1.Deployment{}).
Owns(&corev1.ServiceAccount{}).
Owns(&rbacv1.ClusterRole{}).
Expand Down
Loading