@@ -18,14 +18,19 @@ package util
1818
1919import (
2020 "context"
21+ stderrors "errors"
2122 "fmt"
2223 "os"
2324 "strings"
2425
2526 "github.com/argoproj-labs/argocd-operator/controllers/argoutil"
27+ oappsv1 "github.com/openshift/api/apps/v1"
2628 configv1 "github.com/openshift/api/config/v1"
2729 console "github.com/openshift/api/console/v1"
30+ oauthv1 "github.com/openshift/api/oauth/v1"
2831 routev1 "github.com/openshift/api/route/v1"
32+ templatev1 "github.com/openshift/api/template/v1"
33+ operatorsv1 "github.com/operator-framework/api/pkg/operators/v1"
2934 monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
3035 "golang.org/x/mod/semver"
3136 corev1 "k8s.io/api/core/v1"
4449 routeAPIFound = false
4550 monitoringAPIFound = false
4651 openShiftClusterFound = false
52+ templateAPIFound = false
53+ appsAPIFound = false
54+ oauthAPIFound = false
55+ olmAPIFound = false
4756)
4857
4958// GetClusterVersion returns the OpenShift Cluster version in which the operator is installed
@@ -80,16 +89,25 @@ func InspectCluster() error {
8089 if err := verifyOpenShiftCluster (); err != nil {
8190 return err
8291 }
83- if err := verifyRouteAPI (); err != nil {
84- return err
85- }
86- if err := verifyConsoleAPI (); err != nil {
87- return err
92+ if ! openShiftClusterFound {
93+ return nil
8894 }
89- if err := verifyMonitoringAPI (); err != nil {
90- return err
95+
96+ var errs []error
97+ for _ , check := range []func () error {
98+ verifyRouteAPI ,
99+ verifyConsoleAPI ,
100+ verifyMonitoringAPI ,
101+ verifyTemplateAPI ,
102+ verifyAppsAPI ,
103+ verifyOAuthAPI ,
104+ verifyOLMAPI ,
105+ } {
106+ if err := check (); err != nil {
107+ errs = append (errs , err )
108+ }
91109 }
92- return nil
110+ return stderrors . Join ( errs ... )
93111}
94112
95113func IsOpenShiftCluster () bool {
@@ -147,6 +165,58 @@ func IsMonitoringAPIFound() bool {
147165 return monitoringAPIFound
148166}
149167
168+ func IsTemplateAPIFound () bool {
169+ return templateAPIFound
170+ }
171+
172+ func verifyTemplateAPI () error {
173+ found , err := argoutil .VerifyAPI (templatev1 .GroupName , templatev1 .GroupVersion .Version )
174+ if err != nil {
175+ return err
176+ }
177+ templateAPIFound = found
178+ return nil
179+ }
180+
181+ func IsAppsAPIFound () bool {
182+ return appsAPIFound
183+ }
184+
185+ func verifyAppsAPI () error {
186+ found , err := argoutil .VerifyAPI (oappsv1 .GroupName , oappsv1 .GroupVersion .Version )
187+ if err != nil {
188+ return err
189+ }
190+ appsAPIFound = found
191+ return nil
192+ }
193+
194+ func IsOAuthAPIFound () bool {
195+ return oauthAPIFound
196+ }
197+
198+ func verifyOAuthAPI () error {
199+ found , err := argoutil .VerifyAPI (oauthv1 .GroupName , oauthv1 .GroupVersion .Version )
200+ if err != nil {
201+ return err
202+ }
203+ oauthAPIFound = found
204+ return nil
205+ }
206+
207+ func IsOLMAPIFound () bool {
208+ return olmAPIFound
209+ }
210+
211+ func verifyOLMAPI () error {
212+ found , err := argoutil .VerifyAPI (operatorsv1 .GroupVersion .Group , operatorsv1 .GroupVersion .Version )
213+ if err != nil {
214+ return err
215+ }
216+ olmAPIFound = found
217+ return nil
218+ }
219+
150220func ProxyEnvVars (vars ... corev1.EnvVar ) []corev1.EnvVar {
151221 result := []corev1.EnvVar {}
152222 result = append (result , vars ... )
0 commit comments