@@ -2,8 +2,20 @@ package util
22
33import (
44 "context"
5+ "fmt"
56 "time"
67
8+ imagev1 "github.com/openshift/api/image/v1"
9+ securityv1 "github.com/openshift/api/security/v1"
10+ "github.com/openshift/cluster-version-operator/lib/resourceread"
11+ "github.com/openshift/library-go/pkg/manifest"
12+ operatorsv1 "github.com/operator-framework/api/pkg/operators/v1"
13+ admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
14+ appsv1 "k8s.io/api/apps/v1"
15+ batchv1 "k8s.io/api/batch/v1"
16+ rbacv1 "k8s.io/api/rbac/v1"
17+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
18+
719 g "github.com/onsi/ginkgo/v2"
820 configv1 "github.com/openshift/api/config/v1"
921 clientconfigv1 "github.com/openshift/client-go/config/clientset/versioned"
@@ -16,6 +28,137 @@ import (
1628 "k8s.io/client-go/tools/clientcmd"
1729)
1830
31+ // GetManifestExpectNotFoundError get manifest to check if it is installed
32+ func GetManifestExpectNotFoundError (ms manifest.Manifest ) error {
33+ obj , err := resourceread .Read (ms .Raw )
34+ if err != nil {
35+ return err
36+ }
37+ switch typedObject := obj .(type ) {
38+ case * imagev1.ImageStream :
39+ client , err := getImageClient ()
40+ if err != nil {
41+ return err
42+ }
43+ _ , err = client .ImageStreams (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
44+ return err
45+ case * securityv1.SecurityContextConstraints :
46+ client , err := getSecretClient ()
47+ if err != nil {
48+ return err
49+ }
50+ _ , err = client .SecurityContextConstraints ().Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
51+ return err
52+ case * operatorsv1.OperatorGroup :
53+ client , err := getOperatorClient ()
54+ if err != nil {
55+ return err
56+ }
57+ _ , err = client .OperatorGroups (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
58+ return err
59+ case * admissionregistrationv1.ValidatingWebhookConfiguration :
60+ client , err := getAdmissionRegistrationClient ()
61+ if err != nil {
62+ return err
63+ }
64+ _ , err = client .ValidatingWebhookConfigurations ().Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
65+ return err
66+ case * appsv1.DaemonSet :
67+ client , err := getAppsClient ()
68+ if err != nil {
69+ return err
70+ }
71+ _ , err = client .DaemonSets (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
72+ return err
73+ case * appsv1.Deployment :
74+ client , err := getAppsClient ()
75+ if err != nil {
76+ return err
77+ }
78+ _ , err = client .Deployments (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
79+ return err
80+ case * batchv1.CronJob :
81+ client , err := getBatchClient ()
82+ if err != nil {
83+ return err
84+ }
85+ _ , err = client .CronJobs (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
86+ return err
87+ case * batchv1.Job :
88+ client , err := getBatchClient ()
89+ if err != nil {
90+ return err
91+ }
92+ _ , err = client .Jobs (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
93+ return err
94+ case * corev1.ConfigMap :
95+ client , err := getCoreV1Client ()
96+ if err != nil {
97+ return err
98+ }
99+ _ , err = client .ConfigMaps (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
100+ return err
101+ case * corev1.Namespace :
102+ client , err := getCoreV1Client ()
103+ if err != nil {
104+ return err
105+ }
106+ _ , err = client .Namespaces ().Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
107+ return err
108+ case * corev1.Service :
109+ client , err := getCoreV1Client ()
110+ if err != nil {
111+ return err
112+ }
113+ _ , err = client .Services (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
114+ return err
115+ case * corev1.ServiceAccount :
116+ client , err := getCoreV1Client ()
117+ if err != nil {
118+ return err
119+ }
120+ _ , err = client .ServiceAccounts (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
121+ return err
122+ case * rbacv1.ClusterRole :
123+ client , err := getRbacV1Client ()
124+ if err != nil {
125+ return err
126+ }
127+ _ , err = client .ClusterRoles ().Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
128+ return err
129+ case * rbacv1.ClusterRoleBinding :
130+ client , err := getRbacV1Client ()
131+ if err != nil {
132+ return err
133+ }
134+ _ , err = client .ClusterRoleBindings ().Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
135+ return err
136+ case * rbacv1.Role :
137+ client , err := getRbacV1Client ()
138+ if err != nil {
139+ return err
140+ }
141+ _ , err = client .Roles (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
142+ return err
143+ case * rbacv1.RoleBinding :
144+ client , err := getRbacV1Client ()
145+ if err != nil {
146+ return err
147+ }
148+ _ , err = client .RoleBindings (typedObject .Namespace ).Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
149+ return err
150+ case * apiextensionsv1.CustomResourceDefinition :
151+ client , err := getApiextV1Client ()
152+ if err != nil {
153+ return err
154+ }
155+ _ , err = client .CustomResourceDefinitions ().Get (context .TODO (), typedObject .Name , metav1.GetOptions {})
156+ return err
157+ default :
158+ return fmt .Errorf ("unrecognized manifest type: %T" , obj )
159+ }
160+ }
161+
19162// IsHypershift checks if running on a HyperShift hosted cluster
20163// Refer to https://github.com/openshift/origin/blob/31704414237b8bd5c66ad247c105c94abc9470b1/test/extended/util/framework.go#L2301
21164func IsHypershift (ctx context.Context , restConfig * rest.Config ) (bool , error ) {
0 commit comments