forked from kyma-project/kyma
/
action-manager.go
56 lines (46 loc) · 1.6 KB
/
action-manager.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package actionmanager
import (
"log"
clientset "github.com/kyma-project/kyma/components/installer/pkg/client/clientset/versioned"
listers "github.com/kyma-project/kyma/components/installer/pkg/client/listers/installer/v1alpha1"
"k8s.io/client-go/util/retry"
)
// ActionManager .
type ActionManager interface {
// RemoveActionLabel .
RemoveActionLabel(name string, namespace string, labelName string) error
}
//KymaActionManager .
type KymaActionManager struct {
installationLister listers.InstallationLister
internalClientset *clientset.Clientset
}
// NewKymaActionManager .
func NewKymaActionManager(internalClientset *clientset.Clientset, installationLister listers.InstallationLister) *KymaActionManager {
return &KymaActionManager{
installationLister: installationLister,
internalClientset: internalClientset,
}
}
//RemoveActionLabel .
func (am *KymaActionManager) RemoveActionLabel(name string, namespace string, labelName string) error {
retryErr := retry.RetryOnConflict(retry.DefaultRetry, func() error {
instObj, getErr := am.installationLister.Installations(namespace).Get(name)
if getErr != nil {
log.Println("Error on getting installation object")
log.Println(getErr)
}
installationCopy := instObj.DeepCopy()
labels := installationCopy.GetLabels()
delete(labels, labelName)
installationCopy.SetLabels(labels)
_, updateErr := am.internalClientset.InstallerV1alpha1().Installations(namespace).Update(installationCopy)
return updateErr
})
if retryErr != nil {
log.Println("Error on removing installation action")
log.Println(retryErr)
return retryErr
}
return nil
}