func (r *ScaleREST) Get(ctx api.Context, name string) (runtime.Object, error) { deployment, err := (*r.registry).GetDeployment(ctx, name) if err != nil { return nil, errors.NewNotFound(extensions.Resource("deployments/scale"), name) } return extensions.ScaleFromDeployment(deployment), nil }
// ScaleSimple is responsible for updating a deployment's desired replicas count. func (scaler *DeploymentScaler) ScaleSimple(namespace, name string, preconditions *ScalePrecondition, newSize uint) error { deployment, err := scaler.c.Deployments(namespace).Get(name) if err != nil { return ScaleError{ScaleGetFailure, "Unknown", err} } if preconditions != nil { if err := preconditions.ValidateDeployment(deployment); err != nil { return err } } scale := extensions.ScaleFromDeployment(deployment) scale.Spec.Replicas = int(newSize) if _, err := scaler.c.Scales(namespace).Update("Deployment", scale); err != nil { if errors.IsInvalid(err) { return ScaleError{ScaleUpdateInvalidFailure, deployment.ResourceVersion, err} } return ScaleError{ScaleUpdateFailure, deployment.ResourceVersion, err} } return nil }
func (r *ScaleREST) Update(ctx api.Context, obj runtime.Object) (runtime.Object, bool, error) { if obj == nil { return nil, false, errors.NewBadRequest(fmt.Sprintf("nil update passed to Scale")) } scale, ok := obj.(*extensions.Scale) if !ok { return nil, false, errors.NewBadRequest(fmt.Sprintf("wrong object passed to Scale update: %v", obj)) } if errs := extvalidation.ValidateScale(scale); len(errs) > 0 { return nil, false, errors.NewInvalid(extensions.Kind("Scale"), scale.Name, errs) } deployment, err := (*r.registry).GetDeployment(ctx, scale.Name) if err != nil { return nil, false, errors.NewNotFound(extensions.Resource("deployments/scale"), scale.Name) } deployment.Spec.Replicas = scale.Spec.Replicas deployment, err = (*r.registry).UpdateDeployment(ctx, deployment) if err != nil { return nil, false, errors.NewConflict(extensions.Resource("deployments/scale"), scale.Name, err) } return extensions.ScaleFromDeployment(deployment), false, nil }