Skip to content

Commit 9b50a28

Browse files
Merge pull request #30693 from jatinsu/OKD-kubeneretes-test
OKD-259: Test OKD Feature set Against OKD and OCP clusters
2 parents eeab3da + c634816 commit 9b50a28

120 files changed

Lines changed: 5040 additions & 1112 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ require (
6161
github.com/opencontainers/go-digest v1.0.0
6262
github.com/openshift-eng/openshift-tests-extension v0.0.0-20251218142942-7ecc8801b9df
6363
github.com/openshift-kni/commatrix v0.0.5-0.20251111204857-e5a931eff73f
64-
github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7
64+
github.com/openshift/api v0.0.0-20260114133223-6ab113cb7368
6565
github.com/openshift/apiserver-library-go v0.0.0-20251015164739-79d04067059d
6666
github.com/openshift/build-machinery-go v0.0.0-20250530140348-dc5b2804eeee
67-
github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235
67+
github.com/openshift/client-go v0.0.0-20260108185524-48f4ccfc4e13
6868
github.com/openshift/library-go v0.0.0-20251015151611-6fc7a74b67c5
6969
github.com/ovn-org/ovn-kubernetes/go-controller v0.0.0-20250118001652-a8b9c3c31417
7070
github.com/pborman/uuid v1.2.0

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -828,14 +828,14 @@ github.com/openshift-eng/openshift-tests-extension v0.0.0-20251218142942-7ecc880
828828
github.com/openshift-eng/openshift-tests-extension v0.0.0-20251218142942-7ecc8801b9df/go.mod h1:6gkP5f2HL0meusT0Aim8icAspcD1cG055xxBZ9yC68M=
829829
github.com/openshift-kni/commatrix v0.0.5-0.20251111204857-e5a931eff73f h1:E72Zoc+JImPehBrXkgaCbIDbSFuItvyX6RCaZ0FQE5k=
830830
github.com/openshift-kni/commatrix v0.0.5-0.20251111204857-e5a931eff73f/go.mod h1:cDVdp0eda7EHE6tLuSeo4IqPWdAX/KJK+ogBirIGtsI=
831-
github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7 h1:Ot2fbEEPmF3WlPQkyEW/bUCV38GMugH/UmZvxpWceNc=
832-
github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY=
831+
github.com/openshift/api v0.0.0-20260114133223-6ab113cb7368 h1:kSr3DOlq0NCrHd65HB2o/pBsks7AfRm+fkpf9RLUPoc=
832+
github.com/openshift/api v0.0.0-20260114133223-6ab113cb7368/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY=
833833
github.com/openshift/apiserver-library-go v0.0.0-20251015164739-79d04067059d h1:Mfya3RxHWvidOrKyHj3bmFn5x2B89DLZIvDAhwm+C2s=
834834
github.com/openshift/apiserver-library-go v0.0.0-20251015164739-79d04067059d/go.mod h1:zm2/rIUp0p83pz0/1kkSoKTqhTr3uUKSKQ9fP7Z3g7Y=
835835
github.com/openshift/build-machinery-go v0.0.0-20250530140348-dc5b2804eeee h1:+Sp5GGnjHDhT/a/nQ1xdp43UscBMr7G5wxsYotyhzJ4=
836836
github.com/openshift/build-machinery-go v0.0.0-20250530140348-dc5b2804eeee/go.mod h1:8jcm8UPtg2mCAsxfqKil1xrmRMI3a+XU2TZ9fF8A7TE=
837-
github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235 h1:9JBeIXmnHlpXTQPi7LPmu1jdxznBhAE7bb1K+3D8gxY=
838-
github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235/go.mod h1:L49W6pfrZkfOE5iC1PqEkuLkXG4W0BX4w8b+L2Bv7fM=
837+
github.com/openshift/client-go v0.0.0-20260108185524-48f4ccfc4e13 h1:6rd4zSo2UaWQcAPZfHK9yzKVqH0BnMv1hqMzqXZyTds=
838+
github.com/openshift/client-go v0.0.0-20260108185524-48f4ccfc4e13/go.mod h1:YvOmPmV7wcJxpfhTDuFqqs2Xpb3M3ovsM6Qs/i2ptq4=
839839
github.com/openshift/kubernetes v1.30.1-0.20251017123720-96593f323733 h1:Mpab1CmJPLVWGB0CNGoWnup/NScvv55MVPe94c8JgUk=
840840
github.com/openshift/kubernetes v1.30.1-0.20251017123720-96593f323733/go.mod h1:w3+IfrXNp5RosdDXg3LB55yijJqR/FwouvVntYHQf0o=
841841
github.com/openshift/kubernetes/staging/src/k8s.io/api v0.0.0-20251017123720-96593f323733 h1:42lm41QwjG8JoSicx4FHcuIG2kxHxlUnz6c+ftg2e0E=

test/e2e/upgrade/monitor.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"encoding/json"
77
"fmt"
88
"math/rand"
9+
"reflect"
910
"strings"
1011
"text/tabwriter"
1112
"time"
@@ -38,7 +39,7 @@ func (m *versionMonitor) Check(initialGeneration int64, desired configv1.Update)
3839
m.lastCV = cv
3940

4041
if cv.Status.ObservedGeneration > initialGeneration {
41-
if cv.Spec.DesiredUpdate == nil || desired != *cv.Spec.DesiredUpdate {
42+
if cv.Spec.DesiredUpdate == nil || !reflect.DeepEqual(desired, *cv.Spec.DesiredUpdate) {
4243
return nil, "", fmt.Errorf("desired cluster version was changed by someone else: %v", cv.Spec.DesiredUpdate)
4344
}
4445
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package apiserver
2+
3+
import (
4+
"context"
5+
"strings"
6+
7+
g "github.com/onsi/ginkgo/v2"
8+
o "github.com/onsi/gomega"
9+
10+
configv1 "github.com/openshift/api/config/v1"
11+
k8serrors "k8s.io/apimachinery/pkg/api/errors"
12+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13+
14+
exutil "github.com/openshift/origin/test/extended/util"
15+
)
16+
17+
// isOKD checks if the cluster is an OKD cluster by examining the version string
18+
func isOKD(oc *exutil.CLI) (bool, error) {
19+
current, err := exutil.GetCurrentVersion(context.TODO(), oc.AdminConfig())
20+
if err != nil {
21+
return false, err
22+
}
23+
return strings.Contains(current, "okd-scos"), nil
24+
}
25+
26+
var _ = g.Describe("[sig-api-machinery][Feature:FeatureGate][OCPFeatureGate:OKD]", func() {
27+
defer g.GinkgoRecover()
28+
29+
oc := exutil.NewCLI("featuregate-okd")
30+
31+
g.It("should reject OKD featureset on OCP clusters [apigroup:config.openshift.io]", func() {
32+
// Skip this test on OKD clusters - OKD featureset is allowed on OKD
33+
okdCluster, err := isOKD(oc)
34+
o.Expect(err).NotTo(o.HaveOccurred(), "Failed to determine if cluster is OKD")
35+
if okdCluster {
36+
g.Skip("Skipping test on OKD cluster - OKD featureset is allowed on OKD")
37+
}
38+
39+
// Get current FeatureGate
40+
fgClient := oc.AdminConfigClient().ConfigV1().FeatureGates()
41+
fg, err := fgClient.Get(context.Background(), "cluster", metav1.GetOptions{})
42+
o.Expect(err).NotTo(o.HaveOccurred(), "Failed to get cluster FeatureGate")
43+
44+
// Attempt to set OKD featureset using dry-run
45+
fg.Spec.FeatureSet = configv1.OKD
46+
_, err = fgClient.Update(context.Background(), fg, metav1.UpdateOptions{
47+
DryRun: []string{metav1.DryRunAll},
48+
})
49+
50+
// Expect validation error on OCP clusters
51+
o.Expect(err).To(o.HaveOccurred(), "OKD featureset should be rejected on OCP clusters")
52+
o.Expect(err.Error()).To(o.ContainSubstring("OKD featureset is not supported on OpenShift clusters"))
53+
o.Expect(k8serrors.IsInvalid(err)).To(o.BeTrue(), "Error should be an Invalid error")
54+
})
55+
})

test/extended/imagepolicy/imagepolicy.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,10 @@ func generateClusterImagePolicies() map[string]configv1.ClusterImagePolicy {
337337
ObjectMeta: metav1.ObjectMeta{Name: invalidPublicKeyClusterImagePolicyName},
338338
Spec: configv1.ClusterImagePolicySpec{
339339
Scopes: []configv1.ImageScope{testSignedPolicyScope},
340-
Policy: configv1.Policy{
340+
Policy: configv1.ImageSigstoreVerificationPolicy{
341341
RootOfTrust: configv1.PolicyRootOfTrust{
342342
PolicyType: configv1.PublicKeyRootOfTrust,
343-
PublicKey: &configv1.PublicKey{
343+
PublicKey: &configv1.ImagePolicyPublicKeyRootOfTrust{
344344
KeyData: []byte(`-----BEGIN PUBLIC KEY-----
345345
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUoFUoYAReKXGy59xe5SQOk2aJ8o+
346346
2/Yz5Y8GcN3zFE6ViIvkGnHhMlAhXaX/bo0M9R62s0/6q++T7uwNFuOg8A==
@@ -361,10 +361,10 @@ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUoFUoYAReKXGy59xe5SQOk2aJ8o+
361361
ObjectMeta: metav1.ObjectMeta{Name: publiKeyRekorClusterImagePolicyName},
362362
Spec: configv1.ClusterImagePolicySpec{
363363
Scopes: []configv1.ImageScope{testSignedPolicyScope},
364-
Policy: configv1.Policy{
364+
Policy: configv1.ImageSigstoreVerificationPolicy{
365365
RootOfTrust: configv1.PolicyRootOfTrust{
366366
PolicyType: configv1.PublicKeyRootOfTrust,
367-
PublicKey: &configv1.PublicKey{
367+
PublicKey: &configv1.ImagePolicyPublicKeyRootOfTrust{
368368
KeyData: []byte(`-----BEGIN PUBLIC KEY-----
369369
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKvZH0CXTk8XQkETuxkzkl3Bi4ms5
370370
60l1/qUU0fRATNSCVORCog5PDFo5z0ZLeblWgwbn4c8xpvuo9jQFwpeOsg==
@@ -385,10 +385,10 @@ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKvZH0CXTk8XQkETuxkzkl3Bi4ms5
385385
ObjectMeta: metav1.ObjectMeta{Name: invalidPKIClusterImagePolicyName},
386386
Spec: configv1.ClusterImagePolicySpec{
387387
Scopes: []configv1.ImageScope{testPKISignedPolicyScope},
388-
Policy: configv1.Policy{
388+
Policy: configv1.ImageSigstoreVerificationPolicy{
389389
RootOfTrust: configv1.PolicyRootOfTrust{
390390
PolicyType: configv1.PKIRootOfTrust,
391-
PKI: &configv1.PKI{
391+
PKI: &configv1.ImagePolicyPKIRootOfTrust{
392392
CertificateAuthorityRootsData: []byte(`-----BEGIN CERTIFICATE-----
393393
MIICYDCCAgagAwIBAgIUTq5IQKTGqI9XDqGzdGzm8mI43qkwCgYIKoZIzj0EAwIw
394394
fDELMAkGA1UEBhMCLS0xDjAMBgNVBAgTBVNUQVRFMREwDwYDVQQHEwhMT0NBTElU
@@ -423,10 +423,10 @@ TAIhALlR4yZRRYv2iaVPdgaptAI0LoDAtEUiO8Rb9FWJzpAN
423423
ObjectMeta: metav1.ObjectMeta{Name: pkiClusterImagePolicyName},
424424
Spec: configv1.ClusterImagePolicySpec{
425425
Scopes: []configv1.ImageScope{testPKISignedPolicyScope},
426-
Policy: configv1.Policy{
426+
Policy: configv1.ImageSigstoreVerificationPolicy{
427427
RootOfTrust: configv1.PolicyRootOfTrust{
428428
PolicyType: configv1.PKIRootOfTrust,
429-
PKI: &configv1.PKI{
429+
PKI: &configv1.ImagePolicyPKIRootOfTrust{
430430
CertificateAuthorityRootsData: []byte(`-----BEGIN CERTIFICATE-----
431431
MIIFvzCCA6egAwIBAgIUZnH3ITyYQMAp6lvNYc0fjRzzuBcwDQYJKoZIhvcNAQEL
432432
BQAwbjELMAkGA1UEBhMCRVMxETAPBgNVBAcMCFZhbGVuY2lhMQswCQYDVQQKDAJJ
@@ -479,10 +479,10 @@ L8ITFP+Nw9Meiw4etw59CTAPCc7l4Zvwr1K2ZTBmVGxrqdasiqpI0utG69aItsPi
479479
ObjectMeta: metav1.ObjectMeta{Name: invalidEmailPKIClusterImagePolicyName},
480480
Spec: configv1.ClusterImagePolicySpec{
481481
Scopes: []configv1.ImageScope{testPKISignedPolicyScope},
482-
Policy: configv1.Policy{
482+
Policy: configv1.ImageSigstoreVerificationPolicy{
483483
RootOfTrust: configv1.PolicyRootOfTrust{
484484
PolicyType: configv1.PKIRootOfTrust,
485-
PKI: &configv1.PKI{
485+
PKI: &configv1.ImagePolicyPKIRootOfTrust{
486486
CertificateAuthorityRootsData: []byte(`-----BEGIN CERTIFICATE-----
487487
MIIFvzCCA6egAwIBAgIUZnH3ITyYQMAp6lvNYc0fjRzzuBcwDQYJKoZIhvcNAQEL
488488
BQAwbjELMAkGA1UEBhMCRVMxETAPBgNVBAcMCFZhbGVuY2lhMQswCQYDVQQKDAJJ
@@ -541,10 +541,10 @@ func generateImagePolicies() map[string]configv1.ImagePolicy {
541541
ObjectMeta: metav1.ObjectMeta{Name: invalidPublicKeyImagePolicyName},
542542
Spec: configv1.ImagePolicySpec{
543543
Scopes: []configv1.ImageScope{testSignedPolicyScope},
544-
Policy: configv1.Policy{
544+
Policy: configv1.ImageSigstoreVerificationPolicy{
545545
RootOfTrust: configv1.PolicyRootOfTrust{
546546
PolicyType: configv1.PublicKeyRootOfTrust,
547-
PublicKey: &configv1.PublicKey{
547+
PublicKey: &configv1.ImagePolicyPublicKeyRootOfTrust{
548548
KeyData: []byte(`-----BEGIN PUBLIC KEY-----
549549
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUoFUoYAReKXGy59xe5SQOk2aJ8o+
550550
2/Yz5Y8GcN3zFE6ViIvkGnHhMlAhXaX/bo0M9R62s0/6q++T7uwNFuOg8A==
@@ -565,10 +565,10 @@ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUoFUoYAReKXGy59xe5SQOk2aJ8o+
565565
ObjectMeta: metav1.ObjectMeta{Name: publiKeyRekorImagePolicyName},
566566
Spec: configv1.ImagePolicySpec{
567567
Scopes: []configv1.ImageScope{testSignedPolicyScope},
568-
Policy: configv1.Policy{
568+
Policy: configv1.ImageSigstoreVerificationPolicy{
569569
RootOfTrust: configv1.PolicyRootOfTrust{
570570
PolicyType: configv1.PublicKeyRootOfTrust,
571-
PublicKey: &configv1.PublicKey{
571+
PublicKey: &configv1.ImagePolicyPublicKeyRootOfTrust{
572572
KeyData: []byte(`-----BEGIN PUBLIC KEY-----
573573
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKvZH0CXTk8XQkETuxkzkl3Bi4ms5
574574
60l1/qUU0fRATNSCVORCog5PDFo5z0ZLeblWgwbn4c8xpvuo9jQFwpeOsg==
@@ -589,10 +589,10 @@ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKvZH0CXTk8XQkETuxkzkl3Bi4ms5
589589
ObjectMeta: metav1.ObjectMeta{Name: invalidPKIImagePolicyName},
590590
Spec: configv1.ImagePolicySpec{
591591
Scopes: []configv1.ImageScope{testPKISignedPolicyScope},
592-
Policy: configv1.Policy{
592+
Policy: configv1.ImageSigstoreVerificationPolicy{
593593
RootOfTrust: configv1.PolicyRootOfTrust{
594594
PolicyType: configv1.PKIRootOfTrust,
595-
PKI: &configv1.PKI{
595+
PKI: &configv1.ImagePolicyPKIRootOfTrust{
596596
CertificateAuthorityRootsData: []byte(`-----BEGIN CERTIFICATE-----
597597
MIICYDCCAgagAwIBAgIUTq5IQKTGqI9XDqGzdGzm8mI43qkwCgYIKoZIzj0EAwIw
598598
fDELMAkGA1UEBhMCLS0xDjAMBgNVBAgTBVNUQVRFMREwDwYDVQQHEwhMT0NBTElU
@@ -627,10 +627,10 @@ TAIhALlR4yZRRYv2iaVPdgaptAI0LoDAtEUiO8Rb9FWJzpAN
627627
ObjectMeta: metav1.ObjectMeta{Name: pkiImagePolicyName},
628628
Spec: configv1.ImagePolicySpec{
629629
Scopes: []configv1.ImageScope{testPKISignedPolicyScope},
630-
Policy: configv1.Policy{
630+
Policy: configv1.ImageSigstoreVerificationPolicy{
631631
RootOfTrust: configv1.PolicyRootOfTrust{
632632
PolicyType: configv1.PKIRootOfTrust,
633-
PKI: &configv1.PKI{
633+
PKI: &configv1.ImagePolicyPKIRootOfTrust{
634634
CertificateAuthorityRootsData: []byte(`-----BEGIN CERTIFICATE-----
635635
MIIFvzCCA6egAwIBAgIUZnH3ITyYQMAp6lvNYc0fjRzzuBcwDQYJKoZIhvcNAQEL
636636
BQAwbjELMAkGA1UEBhMCRVMxETAPBgNVBAcMCFZhbGVuY2lhMQswCQYDVQQKDAJJ

vendor/github.com/openshift/api/.ci-operator.yaml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/.coderabbit.yaml

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/.golangci.yaml

Lines changed: 24 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/AGENTS.md

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/Dockerfile.ocp

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)