Skip to content

Commit f721cfc

Browse files
committed
feat: avoid kyverno dependency in tests
1 parent de96cea commit f721cfc

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

pkg/liqoctl/test/network/client/k8s.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func initConfigAndClient(ctx context.Context, kubeconfig string, cl *Client, cfg
9595
sname := string(name)
9696

9797
cfg[sname] = cfgtmp
98-
if cl.ConsumerName == "" {
98+
if kubeconfig == "" {
9999
cl.ConsumerName = sname
100100
cl.Consumer = cltmp
101101
cl.ConsumerDynamic = cldyntmp

pkg/liqoctl/test/network/setup/kyverno.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@ var KyvernoPolicyGroupVersionResource = schema.GroupVersionResource{Group: "kyve
3232
// KyvernoPolicyKind is the kind of the Kyverno policy.
3333
const KyvernoPolicyKind = "Policy"
3434

35+
// IsKyvernoAvailable checks if Kyverno is available.
36+
func IsKyvernoAvailable(ctx context.Context, cl *client.Client) bool {
37+
_, err := cl.ConsumerDynamic.Resource(KyvernoPolicyGroupVersionResource).
38+
Namespace(NamespaceName).List(ctx, metav1.ListOptions{})
39+
if err != nil {
40+
return false
41+
}
42+
for k := range cl.Providers {
43+
_, err := cl.ProvidersDynamic[k].Resource(KyvernoPolicyGroupVersionResource).
44+
Namespace(NamespaceName).List(ctx, metav1.ListOptions{})
45+
if err != nil {
46+
return false
47+
}
48+
}
49+
return true
50+
}
51+
3552
// CreatePolicy creates the Kyverno policies.
3653
func CreatePolicy(ctx context.Context, cl *client.Client) error {
3754
policy := ForgeKyvernoPodAntiaffinityPolicy(cl.ConsumerName, false)

pkg/liqoctl/test/network/setup/setup.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import (
2525

2626
// MakeInfrastructure sets up the infrastructure for the network tests.
2727
func MakeInfrastructure(ctx context.Context, cl *client.Client, opts *flags.Options) (totreplicas int32, err error) {
28+
printer := opts.Topts.LocalFactory.Printer
29+
2830
if err := AddConsumerNodeLabels(ctx, cl); err != nil {
2931
return 0, fmt.Errorf("error adding consumer node labels: %w", err)
3032
}
@@ -37,8 +39,14 @@ func MakeInfrastructure(ctx context.Context, cl *client.Client, opts *flags.Opti
3739
return 0, fmt.Errorf("error offloading namespace: %w", err)
3840
}
3941

40-
if err := CreatePolicy(ctx, cl); err != nil {
41-
return 0, fmt.Errorf("error creating policy: %w", err)
42+
if IsKyvernoAvailable(ctx, cl) {
43+
if err := CreatePolicy(ctx, cl); err != nil {
44+
return 0, fmt.Errorf("error creating policy: %w", err)
45+
}
46+
} else {
47+
printer.Logger.Warn("Kyverno not available on all clusters, skipping policy creation. " +
48+
"Pods may not be scheduled on every node. Install Kyverno on all clusters for comprehensive tests. " +
49+
"See https://kyverno.io/docs/installation/methods/#standalone-installation")
4250
}
4351

4452
if totreplicas, err = CreateAllDeployments(ctx, cl); err != nil {

0 commit comments

Comments
 (0)