// ScaleSimple does a simple one-shot attempt at scaling - not useful on it's own, but // a necessary building block for Scale func (scaler *DeploymentConfigScaler) ScaleSimple(namespace, name string, preconditions *kubectl.ScalePrecondition, newSize uint) (string, error) { const scaled = "scaled" controller, err := scaler.c.GetReplicationController(namespace, name) if err != nil { return "", kubectl.ControllerScaleError{FailureType: kubectl.ControllerScaleGetFailure, ResourceVersion: "Unknown", ActualError: err} } if preconditions != nil { if err := preconditions.Validate(controller); err != nil { return "", err } } controller.Spec.Replicas = int(newSize) // TODO: do retry on 409 errors here? if _, err := scaler.c.UpdateReplicationController(namespace, controller); err != nil { return "", kubectl.ControllerScaleError{FailureType: kubectl.ControllerScaleUpdateFailure, ResourceVersion: controller.ResourceVersion, ActualError: err} } // TODO: do a better job of printing objects here. return scaled, nil }
// ScaleSimple does a simple one-shot attempt at scaling - not useful on it's own, but // a necessary building block for Scale func (scaler *DeploymentConfigScaler) ScaleSimple(namespace, name string, preconditions *kubectl.ScalePrecondition, newSize uint) error { dc, err := scaler.dcClient.DeploymentConfigs(namespace).Get(name) 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 { 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} } // TODO: do a better job of printing objects here. return nil }