// Perform a rolling update of a collection of pods. // 'name' points to a replication controller. // 'client' is used for updating pods. // 'updatePeriod' is the time between pod updates. func Update(name string, client client.ClientInterface, updatePeriod time.Duration) error { controller, err := client.GetReplicationController(name) if err != nil { return err } labels := controller.DesiredState.ReplicasInSet podList, err := client.ListPods(labels) if err != nil { return err } for _, pod := range podList.Items { _, err = client.UpdatePod(pod) if err != nil { return err } time.Sleep(updatePeriod) } return nil }
// Perform a rolling update of a collection of pods. // 'name' points to a replication controller. // 'client' is used for updating pods. // 'updatePeriod' is the time between pod updates. func Update(name string, client client.ClientInterface, updatePeriod time.Duration) error { controller, err := client.GetReplicationController(name) if err != nil { return err } s := labels.Set(controller.DesiredState.ReplicaSelector).AsSelector() podList, err := client.ListPods(s) if err != nil { return err } for _, pod := range podList.Items { // We delete the pod here, the controller will recreate it. This will result in pulling // a new Docker image. This isn't a full "update" but its what we support for now. err = client.DeletePod(pod.ID) if err != nil { return err } time.Sleep(updatePeriod) } return nil }