Fix e2e tests on Kube 1.16 by removing last references to NetworkingV1
Signed-off-by: Jake Sanders <i@am.so-aweso.me>
This commit is contained in:
parent
edcbd4fff6
commit
fc428d763e
@ -53,6 +53,7 @@ type InternalIngressInterface interface {
|
||||
Create(ctx context.Context, ingress *networkingv1.Ingress, opts metav1.CreateOptions) (*networkingv1.Ingress, error)
|
||||
Update(ctx context.Context, ingress *networkingv1.Ingress, opts metav1.UpdateOptions) (*networkingv1.Ingress, error)
|
||||
Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error
|
||||
Get(ctx context.Context, name string, opts metav1.GetOptions) (*networkingv1.Ingress, error)
|
||||
}
|
||||
|
||||
// InternalIngressLister mimics a client-go networking/v1/IngressLister.
|
||||
@ -107,28 +108,41 @@ func NewCreateUpdater(ctx *controller.Context) (InternalIngressCreateUpdater, er
|
||||
func hasVersion(d discovery.DiscoveryInterface, GroupVersion string) bool {
|
||||
// check whether the GroupVersion is already known
|
||||
knownVersions := knownAPIVersionCache.Load().(map[string]bool)
|
||||
if knownVersions[GroupVersion] == true {
|
||||
return true
|
||||
knownVersion, found := knownVersions[GroupVersion]
|
||||
if found {
|
||||
return knownVersion
|
||||
}
|
||||
|
||||
resourceList, err := d.ServerResourcesForGroupVersion(GroupVersion)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if len(resourceList.APIResources) > 0 {
|
||||
// Now we know the APIServer supports this GroupVersion, store the result atomically
|
||||
// in the knownVersions cache. Lock, get the latest copy, atomically update.
|
||||
cacheLock.Lock()
|
||||
defer cacheLock.Unlock()
|
||||
oldCache := knownAPIVersionCache.Load().(map[string]bool)
|
||||
newCache := make(map[string]bool)
|
||||
for k, v := range oldCache {
|
||||
newCache[k] = v
|
||||
for _, r := range resourceList.APIResources {
|
||||
if r.Kind == "Ingress" {
|
||||
// Now we know the APIServer supports this GroupVersion, store the result atomically
|
||||
// in the knownVersions cache. Lock, get the latest copy, atomically update.
|
||||
cacheLock.Lock()
|
||||
oldCache := knownAPIVersionCache.Load().(map[string]bool)
|
||||
newCache := make(map[string]bool)
|
||||
for k, v := range oldCache {
|
||||
newCache[k] = v
|
||||
}
|
||||
newCache[GroupVersion] = true
|
||||
knownAPIVersionCache.Store(newCache)
|
||||
cacheLock.Unlock()
|
||||
return true
|
||||
}
|
||||
newCache[GroupVersion] = true
|
||||
knownAPIVersionCache.Store(newCache)
|
||||
return true
|
||||
}
|
||||
// no networking error and no Ingresses found in networking.k8s.io/<version>, cache negative result
|
||||
cacheLock.Lock()
|
||||
oldCache := knownAPIVersionCache.Load().(map[string]bool)
|
||||
newCache := make(map[string]bool)
|
||||
for k, v := range oldCache {
|
||||
newCache[k] = v
|
||||
}
|
||||
newCache[GroupVersion] = false
|
||||
knownAPIVersionCache.Store(newCache)
|
||||
cacheLock.Unlock()
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
@ -66,6 +66,10 @@ type v1Interface struct {
|
||||
ns string
|
||||
}
|
||||
|
||||
func (v1 *v1Interface) Get(ctx context.Context, name string, opts metav1.GetOptions) (*networkingv1.Ingress, error) {
|
||||
return v1.client.NetworkingV1().Ingresses(v1.ns).Get(ctx, name, opts)
|
||||
}
|
||||
|
||||
func (v1 *v1Interface) Create(ctx context.Context, ingress *networkingv1.Ingress, opts metav1.CreateOptions) (*networkingv1.Ingress, error) {
|
||||
return v1.client.NetworkingV1().Ingresses(v1.ns).Create(ctx, ingress, opts)
|
||||
}
|
||||
|
||||
@ -133,6 +133,14 @@ type v1beta1Interface struct {
|
||||
ns string
|
||||
}
|
||||
|
||||
func (v *v1beta1Interface) Get(ctx context.Context, name string, opts metav1.GetOptions) (*networkingv1.Ingress, error) {
|
||||
ing, err := v.client.NetworkingV1beta1().Ingresses(v.ns).Get(ctx, name, opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return convertV1Beta1ToV1(ing)
|
||||
}
|
||||
|
||||
func (v *v1beta1Interface) Create(ctx context.Context, ingress *networkingv1.Ingress, opts metav1.CreateOptions) (*networkingv1.Ingress, error) {
|
||||
ing, err := convertV1ToV1Beta1(ingress)
|
||||
if err != nil {
|
||||
|
||||
@ -284,7 +284,7 @@ func (s *Solver) cleanupIngresses(ctx context.Context, ch *cmacme.Challenge) err
|
||||
log := logf.WithRelatedResource(log, ingress).V(logf.DebugLevel)
|
||||
|
||||
log.V(logf.DebugLevel).Info("deleting ingress resource")
|
||||
err := s.Client.NetworkingV1().Ingresses(ingress.Namespace).Delete(ctx, ingress.Name, metav1.DeleteOptions{})
|
||||
err := s.ingressCreateUpdater.Ingresses(ingress.Namespace).Delete(ctx, ingress.Name, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
log.V(logf.WarnLevel).Info("failed to delete ingress resource", "error", err)
|
||||
errs = append(errs, err)
|
||||
@ -296,7 +296,7 @@ func (s *Solver) cleanupIngresses(ctx context.Context, ch *cmacme.Challenge) err
|
||||
}
|
||||
|
||||
// otherwise, we need to remove any cert-manager added rules from the ingress resource
|
||||
ing, err := s.Client.NetworkingV1().Ingresses(ch.Namespace).Get(ctx, existingIngressName, metav1.GetOptions{})
|
||||
ing, err := s.ingressCreateUpdater.Ingresses(ch.Namespace).Get(ctx, existingIngressName, metav1.GetOptions{})
|
||||
if k8sErrors.IsNotFound(err) {
|
||||
log.Error(err, "named ingress resource not found, skipping cleanup")
|
||||
return nil
|
||||
@ -339,7 +339,7 @@ func (s *Solver) cleanupIngresses(ctx context.Context, ch *cmacme.Challenge) err
|
||||
|
||||
ing.Spec.Rules = ingRules
|
||||
|
||||
_, err = s.Client.NetworkingV1().Ingresses(ing.Namespace).Update(ctx, ing, metav1.UpdateOptions{})
|
||||
_, err = s.ingressCreateUpdater.Ingresses(ing.Namespace).Update(ctx, ing, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -645,7 +645,7 @@ func (s *Suite) Define() {
|
||||
s.it(f, "should issue a certificate for a single distinct DNS Name defined by an ingress with annotations", func(issuerRef cmmeta.ObjectReference) {
|
||||
var certName string
|
||||
switch {
|
||||
case e2eutil.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
case e2eutil.HasIngresses(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
ingClient := f.KubeClientSet.NetworkingV1().Ingresses(f.Namespace.Name)
|
||||
|
||||
name := "testcert-ingress"
|
||||
@ -659,7 +659,7 @@ func (s *Suite) Define() {
|
||||
}, e2eutil.RandomSubdomain(s.DomainSuffix)), metav1.CreateOptions{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
certName = ingress.Spec.TLS[0].SecretName
|
||||
case e2eutil.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
case e2eutil.HasIngresses(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
ingClient := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace.Name)
|
||||
name := "testcert-ingress"
|
||||
secretName := "testcert-ingress-tls"
|
||||
@ -697,7 +697,7 @@ func (s *Suite) Define() {
|
||||
renewBefore := time.Hour * 111
|
||||
|
||||
switch {
|
||||
case e2eutil.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
case e2eutil.HasIngresses(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
ingClient := f.KubeClientSet.NetworkingV1().Ingresses(f.Namespace.Name)
|
||||
|
||||
name := "testcert-ingress"
|
||||
@ -715,7 +715,7 @@ func (s *Suite) Define() {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
certName = ingress.Spec.TLS[0].SecretName
|
||||
case e2eutil.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
case e2eutil.HasIngresses(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
ingClient := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace.Name)
|
||||
|
||||
name := "testcert-ingress"
|
||||
|
||||
@ -229,14 +229,14 @@ var _ = framework.CertManagerDescribe("ACME Certificate (HTTP01)", func() {
|
||||
It("should obtain a signed certificate with a single CN from the ACME server when putting an annotation on an ingress resource", func() {
|
||||
|
||||
switch {
|
||||
case util.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
case util.HasIngresses(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
ingClient := f.KubeClientSet.NetworkingV1().Ingresses(f.Namespace.Name)
|
||||
By("Creating an Ingress with the issuer name annotation set")
|
||||
_, err := ingClient.Create(context.TODO(), util.NewIngress(certificateSecretName, certificateSecretName, map[string]string{
|
||||
"cert-manager.io/issuer": issuerName,
|
||||
}, acmeIngressDomain), metav1.CreateOptions{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
case util.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
case util.HasIngresses(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
ingClient := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace.Name)
|
||||
By("Creating an Ingress with the issuer name annotation set")
|
||||
_, err := ingClient.Create(context.TODO(), util.NewV1Beta1Ingress(certificateSecretName, certificateSecretName, map[string]string{
|
||||
@ -302,7 +302,7 @@ var _ = framework.CertManagerDescribe("ACME Certificate (HTTP01)", func() {
|
||||
// using the TLS secret that we just got from the self-sign
|
||||
|
||||
switch {
|
||||
case util.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
case util.HasIngresses(f.KubeClientSet.Discovery(), networkingv1.SchemeGroupVersion.String()):
|
||||
ingress := f.KubeClientSet.NetworkingV1().Ingresses(f.Namespace.Name)
|
||||
_, err = ingress.Create(context.TODO(), &networkingv1.Ingress{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -345,7 +345,7 @@ var _ = framework.CertManagerDescribe("ACME Certificate (HTTP01)", func() {
|
||||
},
|
||||
}, metav1.CreateOptions{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
case util.HasAPIVersion(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
case util.HasIngresses(f.KubeClientSet.Discovery(), networkingv1beta1.SchemeGroupVersion.String()):
|
||||
ingress := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace.Name)
|
||||
_, err = ingress.Create(context.TODO(), &networkingv1beta1.Ingress{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
|
||||
@ -574,15 +574,17 @@ func ptrPort(port int32) *gwapiv1alpha1.PortNumber {
|
||||
return &p
|
||||
}
|
||||
|
||||
// HasAPIVersion lets you know if an API exists in the discovery API
|
||||
// HasIngresses lets you know if an API exists in the discovery API
|
||||
// calling this function always performs a request to the API server.
|
||||
func HasAPIVersion(d discovery.DiscoveryInterface, GroupVersion string) bool {
|
||||
func HasIngresses(d discovery.DiscoveryInterface, GroupVersion string) bool {
|
||||
resourceList, err := d.ServerResourcesForGroupVersion(GroupVersion)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if len(resourceList.APIResources) > 0 {
|
||||
return true
|
||||
for _, r := range resourceList.APIResources {
|
||||
if r.Kind == "Ingress" {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user