@@ -18,12 +18,14 @@ import (
18
18
)
19
19
20
20
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"
27
29
)
28
30
29
31
type ArgoConnector struct {
@@ -159,10 +161,48 @@ func (connector *ArgoConnector) StoreClusterI(userCluster UserCluster, project K
159
161
160
162
delete (secret .Labels , TIMEOUT_START_LABEL )
161
163
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 )
163
183
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 {
164
201
return err
165
202
}
203
+ secret .Annotations [annotationKey ] = string (marshal )
204
+
205
+ return nil
166
206
}
167
207
168
208
/**
0 commit comments