Skip to content

Commit b1f4bb8

Browse files
committed
Fix Openshift version check to work on ROSA
Signed-off-by: Mohamed Mahmoud <mmahmoud@redhat.com>
1 parent b2b9812 commit b1f4bb8

File tree

4 files changed

+29
-10
lines changed

4 files changed

+29
-10
lines changed

config/rbac/role.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,18 @@ rules:
108108
- patch
109109
- update
110110
- watch
111+
- apiGroups:
112+
- config.openshift.io
113+
resources:
114+
- clusteroperators
115+
verbs:
116+
- create
117+
- delete
118+
- get
119+
- list
120+
- patch
121+
- update
122+
- watch
111123
- apiGroups:
112124
- config.openshift.io
113125
resources:

pkg/cluster/cluster.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
operatorv1 "github.com/openshift/api/operator/v1"
1212
securityv1 "github.com/openshift/api/security/v1"
1313
monv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
14+
"k8s.io/apimachinery/pkg/types"
1415
"k8s.io/client-go/discovery"
1516
"sigs.k8s.io/controller-runtime/pkg/client"
1617
)
@@ -75,17 +76,18 @@ func (c *Info) fetchAvailableAPIs(client *discovery.DiscoveryClient) error {
7576
}
7677

7778
func (c *Info) fetchOpenShiftClusterVersion(ctx context.Context, cl client.Client) error {
78-
key := client.ObjectKey{Name: "version"}
79-
cversion := &configv1.ClusterVersion{}
80-
if err := cl.Get(ctx, key, cversion); err != nil {
81-
return fmt.Errorf("could not fetch ClusterVersion: %w", err)
79+
cno := &configv1.ClusterOperator{}
80+
err := cl.Get(ctx, types.NamespacedName{Name: "network"}, cno)
81+
if err != nil {
82+
return fmt.Errorf("error fetching OpenShift Cluster Network Operator: %w", err)
8283
}
83-
c.ID = string(cversion.Spec.ClusterID)
84-
// Get version; use the same method as via `oc get clusterversion`, where printed column uses jsonPath:
85-
// .status.history[?(@.state=="Completed")].version
86-
for _, history := range cversion.Status.History {
87-
if history.State == "Completed" {
88-
c.openShiftVersion = semver.New(history.Version)
84+
for _, v := range cno.Status.Versions {
85+
if v.Name == "operator" {
86+
ver, err := semver.NewVersion(v.Version)
87+
if err != nil {
88+
return fmt.Errorf("error parsing OpenShift Cluster Network Operator version: %w", err)
89+
}
90+
c.openShiftVersion = ver
8991
break
9092
}
9193
}

pkg/manager/manager.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
//+kubebuilder:rbac:urls="/metrics",verbs=get
3939
//+kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions,verbs=get;list;watch
4040
//+kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions/status,verbs=update;patch
41+
//+kubebuilder:rbac:groups=config.openshift.io,resources=clusteroperators,verbs=get;create;delete;update;patch;list;watch
4142

4243
type Registerer func(context.Context, *Manager) error
4344

pkg/test/envtest.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ func PrepareEnvTest(controllers []manager.Registerer, namespaces []string, baseP
132132
})
133133
Expect(err).NotTo(HaveOccurred())
134134

135+
err = k8sClient.Create(ctx, &configv1.ClusterOperator{
136+
ObjectMeta: metav1.ObjectMeta{Name: "network"},
137+
})
138+
Expect(err).NotTo(HaveOccurred())
135139
k8sManager, err := manager.NewManager(
136140
context.Background(),
137141
cfg,

0 commit comments

Comments
 (0)