Skip to content

Commit

Permalink
scale: Use new deployment scale endpoint to request a scale event
Browse files Browse the repository at this point in the history
Use the new deploymentconfigs/{name}/scale endpooint instead of trying to resolve the latest deployment for a config in the client.
  • Loading branch information
0xmichalis committed Nov 12, 2015
1 parent 701a662 commit 55f7b3b
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 29 deletions.
12 changes: 12 additions & 0 deletions pkg/deploy/api/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package api

import (
kapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/extensions"
)

// DeploymentToPodLogOptions builds a PodLogOptions object out of a DeploymentLogOptions.
Expand All @@ -17,3 +18,14 @@ func DeploymentToPodLogOptions(opts *DeploymentLogOptions) *kapi.PodLogOptions {
LimitBytes: opts.LimitBytes,
}
}

// ScaleFromConfig builds a scale resource out of a deployment config.
func ScaleFromConfig(dc *DeploymentConfig) *extensions.Scale {
return &extensions.Scale{
ObjectMeta: kapi.ObjectMeta{
Name: dc.Name,
Namespace: dc.Namespace,
CreationTimestamp: dc.CreationTimestamp,
},
}
}
21 changes: 11 additions & 10 deletions pkg/deploy/scaler/scale.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"k8s.io/kubernetes/pkg/util/wait"

"github.com/openshift/origin/pkg/client"
"github.com/openshift/origin/pkg/deploy/api"
"github.com/openshift/origin/pkg/deploy/util"
)

Expand Down Expand Up @@ -75,21 +76,21 @@ func (scaler *DeploymentConfigScaler) ScaleSimple(namespace, name string, precon
if err != nil {
return err
}
controller, err := scaler.rcClient.ReplicationControllers(namespace).Get(util.LatestDeploymentNameForConfig(dc))
if err != nil {
return kubectl.ControllerScaleError{FailureType: kubectl.ControllerScaleGetFailure, ResourceVersion: "Unknown", ActualError: err}
}

if preconditions != nil {
controller, err := scaler.rcClient.ReplicationControllers(namespace).Get(util.LatestDeploymentNameForConfig(dc))
if err != nil {
return kubectl.ControllerScaleError{FailureType: kubectl.ControllerScaleGetFailure, ResourceVersion: "Unknown", ActualError: err}
}
if err := preconditions.ValidateReplicationController(controller); err != nil {
return err
}
}
controller.Spec.Replicas = int(newSize)
// TODO: do retry on 409 errors here?
if _, err := scaler.rcClient.ReplicationControllers(namespace).Update(controller); err != nil {
return kubectl.ControllerScaleError{FailureType: kubectl.ControllerScaleUpdateFailure, ResourceVersion: controller.ResourceVersion, ActualError: err}

scale := api.ScaleFromConfig(dc)
scale.Spec.Replicas = int(newSize)

if _, err := scaler.dcClient.DeploymentConfigs(namespace).UpdateScale(scale); err != nil {
return kubectl.ControllerScaleError{FailureType: kubectl.ControllerScaleUpdateFailure, ActualError: err}
}
// TODO: do a better job of printing objects here.
return nil
}
4 changes: 2 additions & 2 deletions pkg/deploy/scaler/scale_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ func TestScale(t *testing.T) {
kc: ktestclient.NewSimpleFake(mkDeploymentList(1)),
expected: []ktestclient.Action{
ktestclient.NewGetAction("deploymentconfigs", "default", "foo"),
ktestclient.NewUpdateAction("deploymentconfigs/scale", "default", nil),
},
kexpected: []ktestclient.Action{
ktestclient.NewGetAction("replicationcontrollers", "default", "config-1"),
ktestclient.NewUpdateAction("replicationcontrollers", "default", nil),
},
expectedErr: nil,
},
Expand All @@ -66,11 +66,11 @@ func TestScale(t *testing.T) {
kc: ktestclient.NewSimpleFake(mkDeploymentList(1)),
expected: []ktestclient.Action{
ktestclient.NewGetAction("deploymentconfigs", "default", "foo"),
ktestclient.NewUpdateAction("deploymentconfigs/scale", "default", nil),
ktestclient.NewGetAction("deploymentconfigs", "default", "foo"),
},
kexpected: []ktestclient.Action{
ktestclient.NewGetAction("replicationcontrollers", "default", "config-1"),
ktestclient.NewUpdateAction("replicationcontrollers", "default", nil),
ktestclient.NewGetAction("replicationcontrollers", "default", "config-1"),
ktestclient.NewGetAction("replicationcontrollers", "", "config-1"),
},
Expand Down
17 changes: 0 additions & 17 deletions test/cmd/deployments.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,23 +40,6 @@ oc delete all --all
sleep 1
oc delete all --all

oc create -f test/integration/fixtures/test-deployment-config.json
tryuntil oc get rc/test-deployment-config-1
# oc deploy test-deployment-config --cancel # TODO: does not block until success
# oc deploy test-deployment-config --latest
# tryuntil oc get rc/test-deployment-config-2

# scale rc via deployment configuration
oc scale dc test-deployment-config --replicas=1
oc scale dc test-deployment-config --replicas=2 --timeout=10m
# scale directly
oc scale rc test-deployment-config-1 --replicas=4
oc scale rc test-deployment-config-1 --replicas=5 --timeout=10m
oc delete all --all
echo "scale: ok"

oc delete all --all

oc process -f examples/sample-app/application-template-dockerbuild.json -l app=dockerbuild | oc create -f -
tryuntil oc get rc/database-1

Expand Down
12 changes: 12 additions & 0 deletions test/end-to-end/core.sh
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,18 @@ oc logs buildconfigs/ruby-sample-build --loglevel=6
oc logs buildconfig/ruby-sample-build --loglevel=6
echo "logs: ok"

echo "[INFO] Starting a deployment to test scaling..."
oc create -f test/integration/fixtures/test-deployment-config.json
tryuntil '[ "$(oc get rc/test-deployment-config-1 -o yaml | grep Complete)" ]'
# scale rc via deployment configuration
oc scale dc/test-deployment-config --replicas=1
oc scale dc/test-deployment-config --replicas=2 --timeout=10m
# scale directly
oc scale rc/test-deployment-config-1 --replicas=4
oc scale rc/test-deployment-config-1 --replicas=5 --timeout=10m
oc delete dc/test-deployment-config
echo "scale: ok"


echo "[INFO] Starting build from ${STI_CONFIG_FILE} with non-existing commit..."
set +e
Expand Down

0 comments on commit 55f7b3b

Please sign in to comment.