Print and describe failed CSRs

This commit is contained in:
Jordan Liggitt 2020-04-16 01:05:46 -04:00
parent d33a19cee7
commit 6b61cb2907
2 changed files with 18 additions and 18 deletions

View File

@ -1781,10 +1781,7 @@ func printCertificateSigningRequest(obj *certificates.CertificateSigningRequest,
row := metav1.TableRow{ row := metav1.TableRow{
Object: runtime.RawExtension{Object: obj}, Object: runtime.RawExtension{Object: obj},
} }
status, err := extractCSRStatus(obj) status := extractCSRStatus(obj)
if err != nil {
return nil, err
}
signerName := "<none>" signerName := "<none>"
if obj.Spec.SignerName != "" { if obj.Spec.SignerName != "" {
signerName = obj.Spec.SignerName signerName = obj.Spec.SignerName
@ -1793,16 +1790,16 @@ func printCertificateSigningRequest(obj *certificates.CertificateSigningRequest,
return []metav1.TableRow{row}, nil return []metav1.TableRow{row}, nil
} }
func extractCSRStatus(csr *certificates.CertificateSigningRequest) (string, error) { func extractCSRStatus(csr *certificates.CertificateSigningRequest) string {
var approved, denied bool var approved, denied, failed bool
for _, c := range csr.Status.Conditions { for _, c := range csr.Status.Conditions {
switch c.Type { switch c.Type {
case certificates.CertificateApproved: case certificates.CertificateApproved:
approved = true approved = true
case certificates.CertificateDenied: case certificates.CertificateDenied:
denied = true denied = true
default: case certificates.CertificateFailed:
return "", fmt.Errorf("unknown csr condition %q", c) failed = true
} }
} }
var status string var status string
@ -1814,10 +1811,13 @@ func extractCSRStatus(csr *certificates.CertificateSigningRequest) (string, erro
} else { } else {
status += "Pending" status += "Pending"
} }
if failed {
status += ",Failed"
}
if len(csr.Status.Certificate) > 0 { if len(csr.Status.Certificate) > 0 {
status += ",Issued" status += ",Issued"
} }
return status, nil return status
} }
func printCertificateSigningRequestList(list *certificates.CertificateSigningRequestList, options printers.GenerateOptions) ([]metav1.TableRow, error) { func printCertificateSigningRequestList(list *certificates.CertificateSigningRequestList, options printers.GenerateOptions) ([]metav1.TableRow, error) {

View File

@ -3261,10 +3261,7 @@ func (p *CertificateSigningRequestDescriber) Describe(namespace, name string, de
if err != nil { if err != nil {
return "", fmt.Errorf("Error parsing CSR: %v", err) return "", fmt.Errorf("Error parsing CSR: %v", err)
} }
status, err := extractCSRStatus(csr) status := extractCSRStatus(csr)
if err != nil {
return "", err
}
var events *corev1.EventList var events *corev1.EventList
if describerSettings.ShowEvents { if describerSettings.ShowEvents {
@ -4843,16 +4840,16 @@ func formatEndpoints(endpoints *corev1.Endpoints, ports sets.String) string {
return ret return ret
} }
func extractCSRStatus(csr *certificatesv1beta1.CertificateSigningRequest) (string, error) { func extractCSRStatus(csr *certificatesv1beta1.CertificateSigningRequest) string {
var approved, denied bool var approved, denied, failed bool
for _, c := range csr.Status.Conditions { for _, c := range csr.Status.Conditions {
switch c.Type { switch c.Type {
case certificatesv1beta1.CertificateApproved: case certificatesv1beta1.CertificateApproved:
approved = true approved = true
case certificatesv1beta1.CertificateDenied: case certificatesv1beta1.CertificateDenied:
denied = true denied = true
default: case certificatesv1beta1.CertificateFailed:
return "", fmt.Errorf("unknown csr condition %q", c) failed = true
} }
} }
var status string var status string
@ -4864,10 +4861,13 @@ func extractCSRStatus(csr *certificatesv1beta1.CertificateSigningRequest) (strin
} else { } else {
status += "Pending" status += "Pending"
} }
if failed {
status += ",Failed"
}
if len(csr.Status.Certificate) > 0 { if len(csr.Status.Certificate) > 0 {
status += ",Issued" status += ",Issued"
} }
return status, nil return status
} }
// backendStringer behaves just like a string interface and converts the given backend to a string. // backendStringer behaves just like a string interface and converts the given backend to a string.