@@ -300,23 +300,35 @@ func AddUpgrade(clientset *kubernetes.Clientset, client *rest.RESTClient, upgrad
300300
301301func updateCluster (clientset * kubernetes.Clientset , client * rest.RESTClient , cl * tpr.PgCluster , oldcluster * tpr.PgCluster , namespace string ) {
302302
303+ log .Debug ("updateCluster on pgcluster called..something changed" )
304+
303305 if oldcluster .Spec .REPLICAS != cl .Spec .REPLICAS {
304306 log .Debug ("detected change to REPLICAS for " + cl .Spec .Name + " from " + oldcluster .Spec .REPLICAS + " to " + cl .Spec .REPLICAS )
305- ScaleReplicas (clientset , client , cl , oldcluster , namespace )
307+ oldCount , err := strconv .Atoi (oldcluster .Spec .REPLICAS )
308+ if err != nil {
309+ log .Error (err )
310+ return
311+ }
312+ newCount , err := strconv .Atoi (cl .Spec .REPLICAS )
313+ if err != nil {
314+ log .Error (err )
315+ return
316+ }
317+ if oldCount > newCount {
318+ log .Error ("scale down is not implemented yet" )
319+ return
320+ }
321+ newReps := newCount - oldCount
322+ if newReps > 0 {
323+ ScaleReplicas (clientset , cl , newReps , namespace )
324+ } else {
325+ log .Error ("scale to the same number does nothing" )
326+ }
306327 }
307328
308329}
309330
310- func ScaleReplicas (clientset * kubernetes.Clientset , client * rest.RESTClient , cl * tpr.PgCluster , oldcluster * tpr.PgCluster , namespace string ) {
311-
312- oldCount , err := strconv .Atoi (oldcluster .Spec .REPLICAS )
313- if err != nil {
314- log .Error (err )
315- }
316- newCount , err := strconv .Atoi (cl .Spec .REPLICAS )
317- if err != nil {
318- log .Error (err )
319- }
331+ func ScaleReplicas (clientset * kubernetes.Clientset , cl * tpr.PgCluster , newReplicas int , namespace string ) {
320332
321333 //get the strategy to use
322334 if cl .Spec .STRATEGY == "" {
@@ -332,39 +344,33 @@ func ScaleReplicas(clientset *kubernetes.Clientset, client *rest.RESTClient, cl
332344 return
333345 }
334346
335- if oldCount > newCount {
336- log .Debug ("scale down not implemented yet" )
337- } else {
338- //scale up
339- log .Debug ("scale up called " )
340- newReplicas := newCount - oldCount
341-
342- for i := 0 ; i < newReplicas ; i ++ {
343- //generate a unique name suffix
344- uniqueName := RandStringBytesRmndr (4 )
345- depName := cl .Spec .Name + "-replica-" + uniqueName
346-
347- //create a PVC
348- pvcName , err := createPVC (clientset , depName , & cl .Spec .ReplicaStorage , namespace )
349- if err != nil {
350- log .Error (err )
351- return
352- }
353- //create a Deployment and its service
354- serviceName := depName + "-replica"
355- replicaServiceFields := ServiceTemplateFields {
356- Name : serviceName ,
357- ClusterName : cl .Spec .Name ,
358- Port : cl .Spec .Port ,
359- }
347+ log .Debug ("scale up called " )
360348
361- err = CreateService (clientset , & replicaServiceFields , namespace )
362- if err != nil {
363- log .Error (err )
364- return
365- }
366- strategy .CreateReplica (serviceName , clientset , cl , depName , pvcName , namespace , false )
349+ for i := 0 ; i < newReplicas ; i ++ {
350+ //generate a unique name suffix
351+ uniqueName := RandStringBytesRmndr (4 )
352+ depName := cl .Spec .Name + "-replica-" + uniqueName
353+
354+ //create a PVC
355+ pvcName , err := createPVC (clientset , depName , & cl .Spec .ReplicaStorage , namespace )
356+ if err != nil {
357+ log .Error (err )
358+ return
359+ }
360+ //create a Deployment and its service
361+ serviceName := depName + "-replica"
362+ replicaServiceFields := ServiceTemplateFields {
363+ Name : serviceName ,
364+ ClusterName : cl .Spec .Name ,
365+ Port : cl .Spec .Port ,
366+ }
367+
368+ err = CreateService (clientset , & replicaServiceFields , namespace )
369+ if err != nil {
370+ log .Error (err )
371+ return
367372 }
373+ strategy .CreateReplica (serviceName , clientset , cl , depName , pvcName , namespace , false )
368374 }
369375}
370376
0 commit comments