Skip to content

Commit

Permalink
Cleanup beta versions and support for 1.17 and 1.18 and add 1.22
Browse files Browse the repository at this point in the history
  • Loading branch information
pepov committed Nov 29, 2021
1 parent 9380fe7 commit 7e08045
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 64 deletions.
27 changes: 9 additions & 18 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,12 @@ jobs:
name: Run verification
command: make

integration-test-k8s1-22:
<<: *integration-test-base
environment:
<<: *integration-test-environment
K8S_VERSION: v1.22.3

integration-test-k8s1-21:
<<: *integration-test-base
environment:
Expand All @@ -163,23 +169,14 @@ jobs:
<<: *integration-test-environment
K8S_VERSION: v1.19.2

integration-test-k8s1-18:
<<: *integration-test-base
environment:
<<: *integration-test-environment
K8S_VERSION: v1.18.9

integration-test-k8s1-17:
<<: *integration-test-base
environment:
<<: *integration-test-environment
K8S_VERSION: v1.17.12

workflows:
version: 2
ci:
jobs:
- check
- integration-test-k8s1-22:
requires:
- check
- integration-test-k8s1-21:
requires:
- check
Expand All @@ -189,9 +186,3 @@ workflows:
- integration-test-k8s1-19:
requires:
- check
- integration-test-k8s1-18:
requires:
- check
- integration-test-k8s1-17:
requires:
- check
66 changes: 28 additions & 38 deletions tests/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ import (
"testing"

"emperror.dev/errors"
admregv1beta1 "k8s.io/api/admissionregistration/v1beta1"
admregv1 "k8s.io/api/admissionregistration/v1"
appsv1 "k8s.io/api/apps/v1"
"k8s.io/api/autoscaling/v2beta1"
v1 "k8s.io/api/core/v1"
v1beta12 "k8s.io/api/policy/v1beta1"
rbacv1 "k8s.io/api/rbac/v1"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
crdv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
Expand Down Expand Up @@ -554,44 +554,30 @@ func TestIntegration(t *testing.T) {
},
}),
NewTestMatch("crd match",
&v1beta1.CustomResourceDefinition{
&crdv1.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{
Name: "tests.test.org",
},
Spec: v1beta1.CustomResourceDefinitionSpec{
Spec: crdv1.CustomResourceDefinitionSpec{
Group: "test.org",
Names: v1beta1.CustomResourceDefinitionNames{
Names: crdv1.CustomResourceDefinitionNames{
Plural: "tests",
Singular: "test",
Kind: "Test",
ListKind: "Tests",
},
Scope: v1beta1.NamespaceScoped,
Versions: []v1beta1.CustomResourceDefinitionVersion{
Scope: crdv1.NamespaceScoped,
Versions: []crdv1.CustomResourceDefinitionVersion{
{
Name: "v1",
Served: true,
Storage: true,
Schema: &crdv1.CustomResourceValidation{OpenAPIV3Schema: &crdv1.JSONSchemaProps{
Type: "object",
}},
},
},
},
}).withIgnoreVersions([]string{"v1.10"}),
NewTestMatch("crd match for deprecated version spec",
&v1beta1.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{
Name: "btests.test.org",
},
Spec: v1beta1.CustomResourceDefinitionSpec{
Group: "test.org",
Names: v1beta1.CustomResourceDefinitionNames{
Plural: "btests",
Singular: "btest",
Kind: "Btest",
ListKind: "Btests",
},
Scope: v1beta1.NamespaceScoped,
Version: "v1",
},
}),
NewTestMatch("daemonset match",
&appsv1.DaemonSet{
Expand Down Expand Up @@ -685,34 +671,36 @@ func TestIntegration(t *testing.T) {
},
}),
NewTestMatch("mutating webhook configuration",
&admregv1beta1.MutatingWebhookConfiguration{
&admregv1.MutatingWebhookConfiguration{
ObjectMeta: metav1.ObjectMeta{
GenerateName: "test-",
},
Webhooks: []admregv1beta1.MutatingWebhook{
Webhooks: []admregv1.MutatingWebhook{
{
Name: "a.b.c",
ClientConfig: admregv1beta1.WebhookClientConfig{
Service: &admregv1beta1.ServiceReference{
ClientConfig: admregv1.WebhookClientConfig{
Service: &admregv1.ServiceReference{
Name: "test",
Namespace: testContext.Namespace,
Path: strRef("/inject"),
},
CABundle: nil,
},
Rules: []admregv1beta1.RuleWithOperations{
Rules: []admregv1.RuleWithOperations{
{
Operations: []admregv1beta1.OperationType{
admregv1beta1.Create,
Operations: []admregv1.OperationType{
admregv1.Create,
},
Rule: admregv1beta1.Rule{
Rule: admregv1.Rule{
Resources: []string{"pods"},
APIGroups: []string{"", "apps"},
APIVersions: []string{"*"},
Scope: scopeRef(admregv1beta1.AllScopes),
Scope: scopeRef(admregv1.AllScopes),
},
},
},
SideEffects: sideEffectRef(admregv1.SideEffectClassNone),
AdmissionReviewVersions: []string{"v1"},
},
},
}),
Expand Down Expand Up @@ -798,8 +786,7 @@ func TestIntegration(t *testing.T) {
Spec: v1.NodeSpec{
PodCIDR: "10.0.0.0/24",
},
// ignore due to already removed field
}).withIgnoreVersions([]string{"v1.10"}),
}),
NewTestDiff("node diff for podcidr",
&v1.Node{
ObjectMeta: metav1.ObjectMeta{GenerateName: "test-"},
Expand All @@ -810,8 +797,7 @@ func TestIntegration(t *testing.T) {
withLocalChange(func(i interface{}) {
n := i.(*v1.Node)
n.Spec.PodCIDR = "10.0.0.1/24"
// ignore due to already removed field
}).withIgnoreVersions([]string{"v1.10"}),
}),
NewTestMatch("statefulset match for volumeclaimtemplates",
&appsv1.StatefulSet{
ObjectMeta: metav1.ObjectMeta{GenerateName: "test-", Namespace: "default"},
Expand Down Expand Up @@ -948,10 +934,14 @@ func versionPrefixMatch(s string, l []string) bool {
return false
}

func scopeRef(scopeType admregv1beta1.ScopeType) *admregv1beta1.ScopeType {
func scopeRef(scopeType admregv1.ScopeType) *admregv1.ScopeType {
return &scopeType
}

func sideEffectRef(sideEffect admregv1.SideEffectClass) *admregv1.SideEffectClass {
return &sideEffect
}

func volumeModeRef(mode v1.PersistentVolumeMode) *v1.PersistentVolumeMode {
return &mode
}
Expand Down
16 changes: 8 additions & 8 deletions tests/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ import (

"emperror.dev/errors"
"github.com/banzaicloud/k8s-objectmatcher/patch"
admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
admregv1 "k8s.io/api/admissionregistration/v1"
appsv1 "k8s.io/api/apps/v1"
"k8s.io/api/autoscaling/v2beta1"
v1 "k8s.io/api/core/v1"
policyv1beta1 "k8s.io/api/policy/v1beta1"
rbacv1 "k8s.io/api/rbac/v1"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
crdv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextension "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -299,13 +299,13 @@ func testMatchOnObject(testItem *TestItem, ignoreField string) error {
log.Printf("Failed to remove object %s %+v", existing.GetName(), err)
}
}()
case *v1beta1.CustomResourceDefinition:
existing, err = testContext.ExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Create(context.Background(), newObject.(*v1beta1.CustomResourceDefinition), metav1.CreateOptions{})
case *crdv1.CustomResourceDefinition:
existing, err = testContext.ExtensionsClient.ApiextensionsV1().CustomResourceDefinitions().Create(context.Background(), newObject.(*crdv1.CustomResourceDefinition), metav1.CreateOptions{})
if err != nil {
return errors.WrapWithDetails(err, "failed to create object", "object", newObject)
}
defer func() {
err = testContext.ExtensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Delete(context.Background(), existing.GetName(), deleteOptions)
err = testContext.ExtensionsClient.ApiextensionsV1().CustomResourceDefinitions().Delete(context.Background(), existing.GetName(), deleteOptions)
if err != nil {
log.Printf("Failed to remove object %s %+v", existing.GetName(), err)
}
Expand Down Expand Up @@ -343,13 +343,13 @@ func testMatchOnObject(testItem *TestItem, ignoreField string) error {
log.Printf("Failed to remove object %s %+v", existing.GetName(), err)
}
}()
case *admissionregistrationv1beta1.MutatingWebhookConfiguration:
existing, err = testContext.Client.AdmissionregistrationV1beta1().MutatingWebhookConfigurations().Create(context.Background(), newObject.(*admissionregistrationv1beta1.MutatingWebhookConfiguration), metav1.CreateOptions{})
case *admregv1.MutatingWebhookConfiguration:
existing, err = testContext.Client.AdmissionregistrationV1().MutatingWebhookConfigurations().Create(context.Background(), newObject.(*admregv1.MutatingWebhookConfiguration), metav1.CreateOptions{})
if err != nil {
return errors.WrapWithDetails(err, "failed to create object", "object", newObject)
}
defer func() {
err = testContext.Client.AdmissionregistrationV1beta1().MutatingWebhookConfigurations().Delete(context.Background(), existing.GetName(), deleteOptions)
err = testContext.Client.AdmissionregistrationV1().MutatingWebhookConfigurations().Delete(context.Background(), existing.GetName(), deleteOptions)
if err != nil {
log.Printf("Failed to remove object %s %+v", existing.GetName(), err)
}
Expand Down

0 comments on commit 7e08045

Please sign in to comment.