@@ -22,9 +22,6 @@ import (
2222 "k8s.io/client-go/tools/cache"
2323)
2424
25- // Delimiter is used to split name into kind,namespace,name,replicacount
26- const Delimiter = "_"
27-
2825type Config struct {
2926 OriginalName string
3027 Kind string // deployment or statefulset
@@ -38,11 +35,10 @@ type Workload interface {
3835 UpdateScale (ctx context.Context , workloadName string , scale * autoscalingv1.Scale , opts metav1.UpdateOptions ) (* autoscalingv1.Scale , error )
3936}
4037
41- func convertName (name string ) (* Config , error ) {
42- // name format kind_namespace_name_replicas
43- s := strings .Split (name , Delimiter )
38+ func (provider * KubernetesProvider ) convertName (name string ) (* Config , error ) {
39+ s := strings .Split (name , provider .delimiter )
4440 if len (s ) < 4 {
45- return nil , errors .New ("invalid name should be: kind" + Delimiter + "namespace" + Delimiter + "name" + Delimiter + "replicas" )
41+ return nil , errors .New ("invalid name should be: kind" + provider . delimiter + "namespace" + provider . delimiter + "name" + provider . delimiter + "replicas" )
4642 }
4743 replicas , err := strconv .Atoi (s [3 ])
4844 if err != nil {
@@ -58,8 +54,18 @@ func convertName(name string) (*Config, error) {
5854 }, nil
5955}
6056
57+ func (provider * KubernetesProvider ) convertStatefulset (ss * appsv1.StatefulSet , replicas int32 ) string {
58+ return fmt .Sprintf ("statefulset%s%s%s%s%s%d" , provider .delimiter , ss .Namespace , provider .delimiter , ss .Name , provider .delimiter , replicas )
59+ }
60+
61+ func (provider * KubernetesProvider ) convertDeployment (d * appsv1.Deployment , replicas int32 ) string {
62+ return fmt .Sprintf ("statefulset%s%s%s%s%s%d" , provider .delimiter , d .Namespace , provider .delimiter , d .Name , provider .delimiter , replicas )
63+
64+ }
65+
6166type KubernetesProvider struct {
62- Client kubernetes.Interface
67+ Client kubernetes.Interface
68+ delimiter string
6369}
6470
6571func NewKubernetesProvider (providerConfig providerConfig.Kubernetes ) (* KubernetesProvider , error ) {
@@ -79,13 +85,14 @@ func NewKubernetesProvider(providerConfig providerConfig.Kubernetes) (*Kubernete
7985 }
8086
8187 return & KubernetesProvider {
82- Client : client ,
88+ Client : client ,
89+ delimiter : providerConfig .Delimiter ,
8390 }, nil
8491
8592}
8693
8794func (provider * KubernetesProvider ) Start (ctx context.Context , name string ) (instance.State , error ) {
88- config , err := convertName (name )
95+ config , err := provider . convertName (name )
8996 if err != nil {
9097 return instance .UnrecoverableInstanceState (name , err .Error (), int (config .Replicas ))
9198 }
@@ -94,7 +101,7 @@ func (provider *KubernetesProvider) Start(ctx context.Context, name string) (ins
94101}
95102
96103func (provider * KubernetesProvider ) Stop (ctx context.Context , name string ) (instance.State , error ) {
97- config , err := convertName (name )
104+ config , err := provider . convertName (name )
98105 if err != nil {
99106 return instance .UnrecoverableInstanceState (name , err .Error (), int (config .Replicas ))
100107 }
@@ -121,12 +128,11 @@ func (provider *KubernetesProvider) GetGroups(ctx context.Context) (map[string][
121128
122129 group := groups [groupName ]
123130 // TOOD: Use annotation for scale
124- name := fmt . Sprintf ( "%s_%s_%s_%d" , " deployment" , deployment . Namespace , deployment . Name , 1 )
131+ name := provider . convertDeployment ( & deployment , 1 )
125132 group = append (group , name )
126133 groups [groupName ] = group
127134 }
128135
129-
130136 statefulSets , err := provider .Client .AppsV1 ().StatefulSets (core_v1 .NamespaceAll ).List (ctx , metav1.ListOptions {
131137 LabelSelector : enableLabel ,
132138 })
@@ -143,7 +149,7 @@ func (provider *KubernetesProvider) GetGroups(ctx context.Context) (map[string][
143149
144150 group := groups [groupName ]
145151 // TOOD: Use annotation for scale
146- name := fmt . Sprintf ( "%s_%s_%s_%d" , "statefulset" , statefulSet . Namespace , statefulSet . Name , 1 )
152+ name := provider . convertStatefulset ( & statefulSet , 1 )
147153 group = append (group , name )
148154 groups [groupName ] = group
149155 }
@@ -179,7 +185,7 @@ func (provider *KubernetesProvider) scale(ctx context.Context, config *Config, r
179185}
180186
181187func (provider * KubernetesProvider ) GetState (ctx context.Context , name string ) (instance.State , error ) {
182- config , err := convertName (name )
188+ config , err := provider . convertName (name )
183189 if err != nil {
184190 return instance .UnrecoverableInstanceState (name , err .Error (), int (config .Replicas ))
185191 }
@@ -243,12 +249,12 @@ func (provider *KubernetesProvider) watchDeployents(instance chan<- string) cach
243249 }
244250
245251 if * newDeployment .Spec .Replicas == 0 {
246- instance <- fmt . Sprintf ( "deployment_%s_%s_%d" , newDeployment . Namespace , newDeployment . Name , * oldDeployment .Spec .Replicas )
252+ instance <- provider . convertDeployment ( newDeployment , * oldDeployment .Spec .Replicas )
247253 }
248254 },
249255 DeleteFunc : func (obj interface {}) {
250256 deletedDeployment := obj .(* appsv1.Deployment )
251- instance <- fmt . Sprintf ( "deployment_%s_%s_%d" , deletedDeployment . Namespace , deletedDeployment . Name , * deletedDeployment .Spec .Replicas )
257+ instance <- provider . convertDeployment ( deletedDeployment , * deletedDeployment .Spec .Replicas )
252258 },
253259 }
254260 factory := informers .NewSharedInformerFactoryWithOptions (provider .Client , 2 * time .Second , informers .WithNamespace (core_v1 .NamespaceAll ))
@@ -269,12 +275,12 @@ func (provider *KubernetesProvider) watchStatefulSets(instance chan<- string) ca
269275 }
270276
271277 if * newStatefulSet .Spec .Replicas == 0 {
272- instance <- fmt . Sprintf ( "statefulset_%s_%s_%d" , newStatefulSet . Namespace , newStatefulSet . Name , * oldStatefulSet .Spec .Replicas )
278+ instance <- provider . convertStatefulset ( newStatefulSet , * oldStatefulSet .Spec .Replicas )
273279 }
274280 },
275281 DeleteFunc : func (obj interface {}) {
276282 deletedStatefulSet := obj .(* appsv1.StatefulSet )
277- instance <- fmt . Sprintf ( "statefulset__%s_%s_%d" , deletedStatefulSet . Namespace , deletedStatefulSet . Name , * deletedStatefulSet .Spec .Replicas )
283+ instance <- provider . convertStatefulset ( deletedStatefulSet , * deletedStatefulSet .Spec .Replicas )
278284 },
279285 }
280286 factory := informers .NewSharedInformerFactoryWithOptions (provider .Client , 2 * time .Second , informers .WithNamespace (core_v1 .NamespaceAll ))
0 commit comments