Skip to content
This repository has been archived by the owner on Jun 16, 2022. It is now read-only.

Commit

Permalink
Merge pull request #4 from StrongMonkey/move-service-set
Browse files Browse the repository at this point in the history
move service scale set logic
  • Loading branch information
ibuildthecloud authored May 15, 2019
2 parents 9ec4884 + 38d0bf9 commit ea6d9d8
Showing 1 changed file with 1 addition and 29 deletions.
30 changes: 1 addition & 29 deletions pkg/controllers/servicescale/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"fmt"
"sync"
"time"

kpa "github.com/knative/serving/pkg/apis/autoscaling/v1alpha1"
"github.com/knative/serving/pkg/apis/serving/v1alpha1"
Expand Down Expand Up @@ -55,7 +54,7 @@ func (s *SSRHandler) OnChange(key string, ssr *autoscalev1.ServiceScaleRecommend
logrus.Debugf("Desired scale %v calculated for service %s/%s", m.DesiredScale, ssr.Namespace, ssr.Name)

ssr.Status.DesiredScale = bounded(m.DesiredScale, ssr.Spec.MinScale, ssr.Spec.MaxScale)
return ssr, SetDeploymentScale(s.rioServices, ssr)
return ssr, nil
}

func bounded(value, lower, upper int32) *int32 {
Expand Down Expand Up @@ -98,33 +97,6 @@ func (s *SSRHandler) createMetric(ssr *autoscalev1.ServiceScaleRecommendation) (
return metric, nil
}

func SetDeploymentScale(rioServices riov1controller.ServiceController, ssr *autoscalev1.ServiceScaleRecommendation) error {
svc, err := rioServices.Cache().Get(ssr.Namespace, ssr.Name)
if err != nil {
if errors.IsNotFound(err) {
return nil
}
return err
}
// wait for a minute after scale from zero
if svc.Status.ScaleFromZeroTimestamp != nil && svc.Status.ScaleFromZeroTimestamp.Add(time.Minute).After(time.Now()) {
logrus.Infof("skipping setting scale because service %s/%s is scaled from zero within a minute", svc.Namespace, svc.Name)
return nil
}

observedScale := int(*ssr.Status.DesiredScale)
if svc.Status.ObservedScale != nil && *svc.Status.ObservedScale == observedScale {
return nil
}
logrus.Infof("Setting desired scale %v for %v/%v", *ssr.Status.DesiredScale, svc.Namespace, svc.Name)

svc.Status.ObservedScale = &observedScale
if _, err := rioServices.Update(svc); err != nil {
return err
}
return nil
}

func (s *SSRHandler) monitor(ssr *autoscalev1.ServiceScaleRecommendation) {
s.pollerLock.Lock()
defer s.pollerLock.Unlock()
Expand Down

0 comments on commit ea6d9d8

Please sign in to comment.