From 8beeac11875cb5ab034b1bdb8ee2dcd2c0a8f2cf Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 14 Aug 2020 16:30:36 +0100 Subject: [PATCH] Rename Certificate.Spec.URISANs to URIs and EmailSANs to EmailAddresses For consistency with DNSNames and IPAddresses And for consistency with https://golang.org/pkg/crypto/x509/#Certificate Signed-off-by: Richard Wall --- deploy/crds/crd-certificates.yaml | 8 +-- pkg/apis/certmanager/v1/types_certificate.go | 8 +-- .../certmanager/v1/zz_generated.deepcopy.go | 8 +-- pkg/internal/apis/certmanager/v1/BUILD.bazel | 1 + .../apis/certmanager/v1/conversion.go | 40 ++++++++++++ .../certmanager/v1/zz_generated.conversion.go | 62 +++++++++++-------- .../integration/conversion/conversion_test.go | 4 ++ 7 files changed, 93 insertions(+), 38 deletions(-) create mode 100644 pkg/internal/apis/certmanager/v1/conversion.go diff --git a/deploy/crds/crd-certificates.yaml b/deploy/crds/crd-certificates.yaml index 159d9c39c..42012df61 100644 --- a/deploy/crds/crd-certificates.yaml +++ b/deploy/crds/crd-certificates.yaml @@ -910,8 +910,8 @@ spec: duration: description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If overridden and `renewBefore` is greater than the actual certificate duration, the certificate will be automatically renewed 2/3rds of the way through the certificate's duration. type: string - emailSANs: - description: EmailSANs is a list of email subjectAltNames to be set on the Certificate. + emailAddresses: + description: EmailAddresses is a list of email subjectAltNames to be set on the Certificate. type: array items: type: string @@ -1058,8 +1058,8 @@ spec: type: array items: type: string - uriSANs: - description: URISANs is a list of URI subjectAltNames to be set on the Certificate. + uris: + description: URIs is a list of URI subjectAltNames to be set on the Certificate. type: array items: type: string diff --git a/pkg/apis/certmanager/v1/types_certificate.go b/pkg/apis/certmanager/v1/types_certificate.go index 9b5777b78..99d2f4f0b 100644 --- a/pkg/apis/certmanager/v1/types_certificate.go +++ b/pkg/apis/certmanager/v1/types_certificate.go @@ -119,13 +119,13 @@ type CertificateSpec struct { // +optional IPAddresses []string `json:"ipAddresses,omitempty"` - // URISANs is a list of URI subjectAltNames to be set on the Certificate. + // URIs is a list of URI subjectAltNames to be set on the Certificate. // +optional - URISANs []string `json:"uriSANs,omitempty"` + URIs []string `json:"uris,omitempty"` - // EmailSANs is a list of email subjectAltNames to be set on the Certificate. + // EmailAddresses is a list of email subjectAltNames to be set on the Certificate. // +optional - EmailSANs []string `json:"emailSANs,omitempty"` + EmailAddresses []string `json:"emailAddresses,omitempty"` // SecretName is the name of the secret resource that will be automatically // created and managed by this Certificate resource. diff --git a/pkg/apis/certmanager/v1/zz_generated.deepcopy.go b/pkg/apis/certmanager/v1/zz_generated.deepcopy.go index ef0a56572..a584dc661 100644 --- a/pkg/apis/certmanager/v1/zz_generated.deepcopy.go +++ b/pkg/apis/certmanager/v1/zz_generated.deepcopy.go @@ -349,13 +349,13 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = make([]string, len(*in)) copy(*out, *in) } - if in.URISANs != nil { - in, out := &in.URISANs, &out.URISANs + if in.URIs != nil { + in, out := &in.URIs, &out.URIs *out = make([]string, len(*in)) copy(*out, *in) } - if in.EmailSANs != nil { - in, out := &in.EmailSANs, &out.EmailSANs + if in.EmailAddresses != nil { + in, out := &in.EmailAddresses, &out.EmailAddresses *out = make([]string, len(*in)) copy(*out, *in) } diff --git a/pkg/internal/apis/certmanager/v1/BUILD.bazel b/pkg/internal/apis/certmanager/v1/BUILD.bazel index e6f5f3c34..8ec462a46 100644 --- a/pkg/internal/apis/certmanager/v1/BUILD.bazel +++ b/pkg/internal/apis/certmanager/v1/BUILD.bazel @@ -3,6 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = [ + "conversion.go", "defaults.go", "doc.go", "register.go", diff --git a/pkg/internal/apis/certmanager/v1/conversion.go b/pkg/internal/apis/certmanager/v1/conversion.go new file mode 100644 index 000000000..e35928d29 --- /dev/null +++ b/pkg/internal/apis/certmanager/v1/conversion.go @@ -0,0 +1,40 @@ +/* +Copyright 2020 The Jetstack cert-manager contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + unsafe "unsafe" + + conversion "k8s.io/apimachinery/pkg/conversion" + + v1 "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1" + certmanager "github.com/jetstack/cert-manager/pkg/internal/apis/certmanager" +) + +// Convert_v1_CertificateSpec_To_certmanager_CertificateSpec +func Convert_v1_CertificateSpec_To_certmanager_CertificateSpec(in *v1.CertificateSpec, out *certmanager.CertificateSpec, s conversion.Scope) error { + out.URISANs = *(*[]string)(unsafe.Pointer(&in.URIs)) + out.EmailSANs = *(*[]string)(unsafe.Pointer(&in.EmailAddresses)) + return autoConvert_v1_CertificateSpec_To_certmanager_CertificateSpec(in, out, s) +} + +// Convert_certmanager_CertificateSpec_To_v1_CertificateSpec +func Convert_certmanager_CertificateSpec_To_v1_CertificateSpec(in *certmanager.CertificateSpec, out *v1.CertificateSpec, s conversion.Scope) error { + out.URIs = *(*[]string)(unsafe.Pointer(&in.URISANs)) + out.EmailAddresses = *(*[]string)(unsafe.Pointer(&in.EmailSANs)) + return autoConvert_certmanager_CertificateSpec_To_v1_CertificateSpec(in, out, s) +} diff --git a/pkg/internal/apis/certmanager/v1/zz_generated.conversion.go b/pkg/internal/apis/certmanager/v1/zz_generated.conversion.go index d024fa4b7..382890500 100644 --- a/pkg/internal/apis/certmanager/v1/zz_generated.conversion.go +++ b/pkg/internal/apis/certmanager/v1/zz_generated.conversion.go @@ -151,16 +151,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*v1.CertificateSpec)(nil), (*certmanager.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1_CertificateSpec_To_certmanager_CertificateSpec(a.(*v1.CertificateSpec), b.(*certmanager.CertificateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateSpec)(nil), (*v1.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateSpec_To_v1_CertificateSpec(a.(*certmanager.CertificateSpec), b.(*v1.CertificateSpec), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*v1.CertificateStatus)(nil), (*certmanager.CertificateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1_CertificateStatus_To_certmanager_CertificateStatus(a.(*v1.CertificateStatus), b.(*certmanager.CertificateStatus), scope) }); err != nil { @@ -361,6 +351,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*certmanager.CertificateSpec)(nil), (*v1.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateSpec_To_v1_CertificateSpec(a.(*certmanager.CertificateSpec), b.(*v1.CertificateSpec), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*v1.CertificateSpec)(nil), (*certmanager.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_CertificateSpec_To_certmanager_CertificateSpec(a.(*v1.CertificateSpec), b.(*certmanager.CertificateSpec), scope) + }); err != nil { + return err + } return nil } @@ -470,7 +470,17 @@ func Convert_certmanager_CertificateKeystores_To_v1_CertificateKeystores(in *cer func autoConvert_v1_CertificateList_To_certmanager_CertificateList(in *v1.CertificateList, out *certmanager.CertificateList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]certmanager.Certificate)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]certmanager.Certificate, len(*in)) + for i := range *in { + if err := Convert_v1_Certificate_To_certmanager_Certificate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -481,7 +491,17 @@ func Convert_v1_CertificateList_To_certmanager_CertificateList(in *v1.Certificat func autoConvert_certmanager_CertificateList_To_v1_CertificateList(in *certmanager.CertificateList, out *v1.CertificateList, s conversion.Scope) error { out.ListMeta = in.ListMeta - out.Items = *(*[]v1.Certificate)(unsafe.Pointer(&in.Items)) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]v1.Certificate, len(*in)) + for i := range *in { + if err := Convert_certmanager_Certificate_To_v1_Certificate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } return nil } @@ -665,8 +685,8 @@ func autoConvert_v1_CertificateSpec_To_certmanager_CertificateSpec(in *v1.Certif out.RenewBefore = (*metav1.Duration)(unsafe.Pointer(in.RenewBefore)) out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) - out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) - out.EmailSANs = *(*[]string)(unsafe.Pointer(&in.EmailSANs)) + // WARNING: in.URIs requires manual conversion: does not exist in peer-type + // WARNING: in.EmailAddresses requires manual conversion: does not exist in peer-type out.SecretName = in.SecretName out.Keystores = (*certmanager.CertificateKeystores)(unsafe.Pointer(in.Keystores)) // TODO: Inefficient conversion - can we improve it? @@ -679,11 +699,6 @@ func autoConvert_v1_CertificateSpec_To_certmanager_CertificateSpec(in *v1.Certif return nil } -// Convert_v1_CertificateSpec_To_certmanager_CertificateSpec is an autogenerated conversion function. -func Convert_v1_CertificateSpec_To_certmanager_CertificateSpec(in *v1.CertificateSpec, out *certmanager.CertificateSpec, s conversion.Scope) error { - return autoConvert_v1_CertificateSpec_To_certmanager_CertificateSpec(in, out, s) -} - func autoConvert_certmanager_CertificateSpec_To_v1_CertificateSpec(in *certmanager.CertificateSpec, out *v1.CertificateSpec, s conversion.Scope) error { out.Subject = (*v1.X509Subject)(unsafe.Pointer(in.Subject)) out.CommonName = in.CommonName @@ -691,8 +706,8 @@ func autoConvert_certmanager_CertificateSpec_To_v1_CertificateSpec(in *certmanag out.RenewBefore = (*metav1.Duration)(unsafe.Pointer(in.RenewBefore)) out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) - out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) - out.EmailSANs = *(*[]string)(unsafe.Pointer(&in.EmailSANs)) + // WARNING: in.URISANs requires manual conversion: does not exist in peer-type + // WARNING: in.EmailSANs requires manual conversion: does not exist in peer-type out.SecretName = in.SecretName out.Keystores = (*v1.CertificateKeystores)(unsafe.Pointer(in.Keystores)) // TODO: Inefficient conversion - can we improve it? @@ -705,11 +720,6 @@ func autoConvert_certmanager_CertificateSpec_To_v1_CertificateSpec(in *certmanag return nil } -// Convert_certmanager_CertificateSpec_To_v1_CertificateSpec is an autogenerated conversion function. -func Convert_certmanager_CertificateSpec_To_v1_CertificateSpec(in *certmanager.CertificateSpec, out *v1.CertificateSpec, s conversion.Scope) error { - return autoConvert_certmanager_CertificateSpec_To_v1_CertificateSpec(in, out, s) -} - func autoConvert_v1_CertificateStatus_To_certmanager_CertificateStatus(in *v1.CertificateStatus, out *certmanager.CertificateStatus, s conversion.Scope) error { out.Conditions = *(*[]certmanager.CertificateCondition)(unsafe.Pointer(&in.Conditions)) out.LastFailureTime = (*metav1.Time)(unsafe.Pointer(in.LastFailureTime)) diff --git a/test/integration/conversion/conversion_test.go b/test/integration/conversion/conversion_test.go index f93dd3ba4..235b9a175 100644 --- a/test/integration/conversion/conversion_test.go +++ b/test/integration/conversion/conversion_test.go @@ -173,6 +173,8 @@ func TestConversion(t *testing.T) { Subject: &v1beta1.X509Subject{ Organizations: []string{"test"}, }, + URISANs: []string{"spiffe://foo.foo.example.net"}, + EmailSANs: []string{"alice@example.com"}, IssuerRef: cmmeta.ObjectReference{ Name: "issuername", }, @@ -190,6 +192,8 @@ func TestConversion(t *testing.T) { Subject: &v1.X509Subject{ Organizations: []string{"test"}, }, + URIs: []string{"spiffe://foo.foo.example.net"}, + EmailAddresses: []string{"alice@example.com"}, IssuerRef: cmmeta.ObjectReference{ Name: "issuername", },