Skip to content

Commit fbd48e7

Browse files
authored
feat: Merge pull request #38 from svalabs/feat/cleanup-old-meta
Add logic to cleanup removed labels and annotations
2 parents 1f94c37 + e790ab6 commit fbd48e7

File tree

1 file changed

+47
-7
lines changed

1 file changed

+47
-7
lines changed

pkg/argo_connector.go

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ import (
1818
)
1919

2020
const (
21-
BASE_LABEL string = "kubermatic-argocd-bridge"
22-
TIMEOUT_START_LABEL = BASE_LABEL + "/timeout-start"
23-
MANAGED_LABEL = BASE_LABEL + "/managed"
24-
CLUSTER_ID_LABEL = BASE_LABEL + "/cluster-id"
25-
SEED_LABEL = BASE_LABEL + "/seed"
26-
ARGO_CLUSTER_LABEL string = "argocd.argoproj.io/secret-type=cluster"
21+
BASE_LABEL string = "kubermatic-argocd-bridge"
22+
TIMEOUT_START_LABEL = BASE_LABEL + "/timeout-start"
23+
MANAGED_LABEL = BASE_LABEL + "/managed"
24+
CLUSTER_ID_LABEL = BASE_LABEL + "/cluster-id"
25+
SEED_LABEL = BASE_LABEL + "/seed"
26+
LAST_LABELS_ANNOTATION = BASE_LABEL + "/last-labels"
27+
LAST_ANNOTATIONS_ANNOTATION = BASE_LABEL + "/last-annotations"
28+
ARGO_CLUSTER_LABEL string = "argocd.argoproj.io/secret-type=cluster"
2729
)
2830

2931
type ArgoConnector struct {
@@ -159,10 +161,48 @@ func (connector *ArgoConnector) StoreClusterI(userCluster UserCluster, project K
159161

160162
delete(secret.Labels, TIMEOUT_START_LABEL)
161163

162-
_, err := connector.client.CoreV1().Secrets(connector.namespace).Update(ctx, secret, metav1.UpdateOptions{})
164+
err := connector.cleanUpMetadataMap(*secret, labels, secret.Labels, LAST_LABELS_ANNOTATION)
165+
if err != nil {
166+
return err
167+
}
168+
err = connector.cleanUpMetadataMap(*secret, annotations, secret.Annotations, LAST_ANNOTATIONS_ANNOTATION)
169+
if err != nil {
170+
return err
171+
}
172+
173+
_, err = connector.client.CoreV1().Secrets(connector.namespace).Update(ctx, secret, metav1.UpdateOptions{})
174+
175+
return err
176+
}
177+
}
178+
179+
func (connector *ArgoConnector) cleanUpMetadataMap(secret v1.Secret, newData map[string]string, targetData map[string]string, annotationKey string) error {
180+
if annotation, ok := secret.Annotations[annotationKey]; ok {
181+
var oldKeys []string
182+
err := json.Unmarshal([]byte(annotation), &oldKeys)
163183

184+
if err != nil {
185+
return err
186+
}
187+
188+
for _, oldKey := range oldKeys {
189+
if _, ok := newData[oldKey]; !ok {
190+
delete(targetData, oldKey)
191+
}
192+
}
193+
}
194+
195+
var newKeys []string
196+
for key := range newData {
197+
newKeys = append(newKeys, key)
198+
}
199+
marshal, err := json.Marshal(newKeys)
200+
if err != nil {
164201
return err
165202
}
203+
secret.Annotations[annotationKey] = string(marshal)
204+
205+
return nil
166206
}
167207

168208
/**

0 commit comments

Comments
 (0)