refactor RemoveCertificate to use DeletePartialMatch

Signed-off-by: Danny Kulchinsky <dkulchinsky@fastly.com>
This commit is contained in:
Danny Kulchinsky 2022-09-28 10:19:07 -04:00
parent cc1d982b33
commit 9074f5a081
3 changed files with 9 additions and 11 deletions

View File

@ -93,7 +93,7 @@ func (c *controller) ProcessItem(ctx context.Context, key string) error {
crt, err := c.certificateLister.Certificates(namespace).Get(name)
if apierrors.IsNotFound(err) {
// If the Certificate no longer exists, remove it's metrics from being exposed.
c.metrics.RemoveCertificate(key, crt.Spec.IssuerRef.Name, crt.Spec.IssuerRef.Kind, crt.Spec.IssuerRef.Group)
c.metrics.RemoveCertificate(key)
return nil
}
if err != nil {

View File

@ -109,16 +109,14 @@ func (m *Metrics) updateCertificateReadyStatus(crt *cmapi.Certificate, current c
// RemoveCertificate will delete the Certificate metrics from continuing to be
// exposed.
func (m *Metrics) RemoveCertificate(key, issuerName, issuerKind, issuerGroup string) {
func (m *Metrics) RemoveCertificate(key string) {
namespace, name, err := cache.SplitMetaNamespaceKey(key)
if err != nil {
m.log.Error(err, "failed to get namespace and name from key")
return
}
m.certificateExpiryTimeSeconds.DeleteLabelValues(name, namespace, issuerName, issuerKind, issuerGroup)
m.certificateRenewalTimeSeconds.DeleteLabelValues(name, namespace, issuerName, issuerKind, issuerGroup)
for _, condition := range readyConditionStatuses {
m.certificateReadyStatus.DeleteLabelValues(name, namespace, string(condition), issuerName, issuerKind, issuerGroup)
}
m.certificateExpiryTimeSeconds.DeletePartialMatch(prometheus.Labels{"name": name, "namespace": namespace})
m.certificateRenewalTimeSeconds.DeletePartialMatch(prometheus.Labels{"name": name, "namespace": namespace})
m.certificateReadyStatus.DeletePartialMatch(prometheus.Labels{"name": name, "namespace": namespace})
}

View File

@ -323,7 +323,7 @@ func TestCertificateCache(t *testing.T) {
}
// Remove second certificate and check not exists
m.RemoveCertificate("default-unit-test-ns/crt2", "test-issuer", "test-issuer-kind", "test-issuer-group")
m.RemoveCertificate("default-unit-test-ns/crt2")
if err := testutil.CollectAndCompare(m.certificateReadyStatus,
strings.NewReader(readyMetadata+`
certmanager_certificate_ready_status{condition="False",issuer_group="test-issuer-group",issuer_kind="test-issuer-kind",issuer_name="test-issuer",name="crt1",namespace="default-unit-test-ns"} 0
@ -348,9 +348,9 @@ func TestCertificateCache(t *testing.T) {
}
// Remove all Certificates (even is already removed) and observe no Certificates
m.RemoveCertificate("default-unit-test-ns/crt1", "test-issuer", "test-issuer-kind", "test-issuer-group")
m.RemoveCertificate("default-unit-test-ns/crt2", "test-issuer", "test-issuer-kind", "test-issuer-group")
m.RemoveCertificate("default-unit-test-ns/crt3", "test-issuer", "test-issuer-kind", "test-issuer-group")
m.RemoveCertificate("default-unit-test-ns/crt1")
m.RemoveCertificate("default-unit-test-ns/crt2")
m.RemoveCertificate("default-unit-test-ns/crt3")
if err := testutil.CollectAndCompare(m.certificateReadyStatus,
strings.NewReader(readyMetadata),
"certmanager_certificate_ready_status",