Skip to content

Commit 0e00588

Browse files
authored
Merge pull request #679 from hjensas/ushift-01
Fix MicroShift fallback to check for NoMatchError
2 parents 8a2950f + 43a61aa commit 0e00588

2 files changed

Lines changed: 48 additions & 12 deletions

File tree

modules/common/ocp/ocp.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
ocp_config "github.com/openshift/api/config/v1"
2626
"gopkg.in/yaml.v3"
2727
corev1 "k8s.io/api/core/v1"
28-
k8serrors "k8s.io/apimachinery/pkg/api/errors"
28+
"k8s.io/apimachinery/pkg/api/meta"
2929
"k8s.io/apimachinery/pkg/types"
3030
k8s_utils "k8s.io/utils/net"
3131
)
@@ -67,8 +67,8 @@ func HasIPv6ClusterNetwork(ctx context.Context, h *helper.Helper) (bool, error)
6767
return false, nil
6868
}
6969

70-
// Fallback for MicroShift: check if error is NotFound
71-
if !k8serrors.IsNotFound(err) {
70+
// Fallback for MicroShift: check if Network CRD is not available
71+
if !meta.IsNoMatchError(err) {
7272
return false, err
7373
}
7474

@@ -106,8 +106,8 @@ func FirstClusterNetworkIsIPv6(ctx context.Context, h *helper.Helper) (bool, err
106106
return false, nil
107107
}
108108

109-
// Fallback for MicroShift: check if error is NotFound
110-
if !k8serrors.IsNotFound(err) {
109+
// Fallback for MicroShift: check if Network CRD is not available
110+
if !meta.IsNoMatchError(err) {
111111
return false, err
112112
}
113113

modules/common/ocp/ocp_test.go

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,14 @@ import (
2525
. "github.com/onsi/gomega"
2626
ocp_config "github.com/openshift/api/config/v1"
2727
corev1 "k8s.io/api/core/v1"
28+
"k8s.io/apimachinery/pkg/api/meta"
2829
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
30+
"k8s.io/apimachinery/pkg/runtime/schema"
2931
"k8s.io/client-go/kubernetes/scheme"
3032
ctrl "sigs.k8s.io/controller-runtime"
3133
"sigs.k8s.io/controller-runtime/pkg/client"
3234
"sigs.k8s.io/controller-runtime/pkg/client/fake"
35+
"sigs.k8s.io/controller-runtime/pkg/client/interceptor"
3336
)
3437

3538
func setupHelper(objs ...client.Object) (*helper.Helper, error) {
@@ -54,6 +57,39 @@ func setupHelper(objs ...client.Object) (*helper.Helper, error) {
5457
return helper.NewHelper(ns, fakeClient, nil, s, ctrl.Log)
5558
}
5659

60+
func setupHelperWithoutOCPScheme(objs ...client.Object) (*helper.Helper, error) {
61+
s := scheme.Scheme
62+
err := ocp_config.AddToScheme(s)
63+
if err != nil {
64+
return nil, err
65+
}
66+
67+
fakeClient := fake.NewClientBuilder().
68+
WithScheme(s).
69+
WithObjects(objs...).
70+
WithInterceptorFuncs(interceptor.Funcs{
71+
Get: func(ctx context.Context, client client.WithWatch, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error {
72+
if _, ok := obj.(*ocp_config.Network); ok {
73+
return &meta.NoKindMatchError{
74+
GroupKind: schema.GroupKind{Group: "config.openshift.io", Kind: "Network"},
75+
SearchedVersions: []string{"v1"},
76+
}
77+
}
78+
return client.Get(ctx, key, obj, opts...)
79+
},
80+
}).
81+
Build()
82+
83+
// Create a minimal namespace object for helper
84+
ns := &corev1.Namespace{
85+
ObjectMeta: metav1.ObjectMeta{
86+
Name: "test-namespace",
87+
},
88+
}
89+
90+
return helper.NewHelper(ns, fakeClient, nil, s, ctrl.Log)
91+
}
92+
5793
func TestHasIPv6ClusterNetwork_OCP_IPv4(t *testing.T) {
5894
g := NewWithT(t)
5995

@@ -135,7 +171,7 @@ func TestHasIPv6ClusterNetwork_MicroShift_IPv4_NodePodCIDR(t *testing.T) {
135171
},
136172
}
137173

138-
h, err := setupHelper(node)
174+
h, err := setupHelperWithoutOCPScheme(node)
139175
g.Expect(err).NotTo(HaveOccurred())
140176

141177
hasIPv6, err := HasIPv6ClusterNetwork(context.TODO(), h)
@@ -155,7 +191,7 @@ func TestHasIPv6ClusterNetwork_MicroShift_IPv6_NodePodCIDR(t *testing.T) {
155191
},
156192
}
157193

158-
h, err := setupHelper(node)
194+
h, err := setupHelperWithoutOCPScheme(node)
159195
g.Expect(err).NotTo(HaveOccurred())
160196

161197
hasIPv6, err := HasIPv6ClusterNetwork(context.TODO(), h)
@@ -175,7 +211,7 @@ func TestHasIPv6ClusterNetwork_MicroShift_DualStack_NodePodCIDRs(t *testing.T) {
175211
},
176212
}
177213

178-
h, err := setupHelper(node)
214+
h, err := setupHelperWithoutOCPScheme(node)
179215
g.Expect(err).NotTo(HaveOccurred())
180216

181217
hasIPv6, err := HasIPv6ClusterNetwork(context.TODO(), h)
@@ -193,7 +229,7 @@ func TestHasIPv6ClusterNetwork_MicroShift_NoPodCIDR(t *testing.T) {
193229
Spec: corev1.NodeSpec{},
194230
}
195231

196-
h, err := setupHelper(node)
232+
h, err := setupHelperWithoutOCPScheme(node)
197233
g.Expect(err).NotTo(HaveOccurred())
198234

199235
hasIPv6, err := HasIPv6ClusterNetwork(context.TODO(), h)
@@ -259,7 +295,7 @@ func TestFirstClusterNetworkIsIPv6_MicroShift_IPv4First(t *testing.T) {
259295
},
260296
}
261297

262-
h, err := setupHelper(node)
298+
h, err := setupHelperWithoutOCPScheme(node)
263299
g.Expect(err).NotTo(HaveOccurred())
264300

265301
isIPv6, err := FirstClusterNetworkIsIPv6(context.TODO(), h)
@@ -279,7 +315,7 @@ func TestFirstClusterNetworkIsIPv6_MicroShift_IPv6First(t *testing.T) {
279315
},
280316
}
281317

282-
h, err := setupHelper(node)
318+
h, err := setupHelperWithoutOCPScheme(node)
283319
g.Expect(err).NotTo(HaveOccurred())
284320

285321
isIPv6, err := FirstClusterNetworkIsIPv6(context.TODO(), h)
@@ -297,7 +333,7 @@ func TestFirstClusterNetworkIsIPv6_MicroShift_NoPodCIDR(t *testing.T) {
297333
Spec: corev1.NodeSpec{},
298334
}
299335

300-
h, err := setupHelper(node)
336+
h, err := setupHelperWithoutOCPScheme(node)
301337
g.Expect(err).NotTo(HaveOccurred())
302338

303339
isIPv6, err := FirstClusterNetworkIsIPv6(context.TODO(), h)

0 commit comments

Comments
 (0)