// NewRollingDeploymentStrategy makes a new RollingDeploymentStrategy. func NewRollingDeploymentStrategy(namespace string, oldClient kclient.Interface, tags client.ImageStreamTagsNamespacer, events record.EventSink, decoder runtime.Decoder, initialStrategy acceptingDeploymentStrategy, out, errOut io.Writer, until string) *RollingDeploymentStrategy { if out == nil { out = ioutil.Discard } if errOut == nil { errOut = ioutil.Discard } // TODO internalclientset: get rid of oldClient after next rebase client := adapter.FromUnversionedClient(oldClient.(*kclient.Client)) return &RollingDeploymentStrategy{ out: out, errOut: errOut, until: until, decoder: decoder, initialStrategy: initialStrategy, rcClient: client.Core(), eventClient: client.Core(), tags: tags, apiRetryPeriod: defaultApiRetryPeriod, apiRetryTimeout: defaultApiRetryTimeout, rollingUpdate: func(config *kubectl.RollingUpdaterConfig) error { updater := kubectl.NewRollingUpdater(namespace, oldClient) return updater.Update(config) }, hookExecutor: stratsupport.NewHookExecutor(client.Core(), tags, client.Core(), os.Stdout, decoder), getUpdateAcceptor: func(timeout time.Duration, minReadySeconds int32) strat.UpdateAcceptor { return stratsupport.NewAcceptAvailablePods(out, client.Core(), timeout, acceptorInterval, minReadySeconds) }, } }
// NewRecreateDeploymentStrategy makes a RecreateDeploymentStrategy backed by // a real HookExecutor and client. func NewRecreateDeploymentStrategy(oldClient kclient.Interface, tagClient client.ImageStreamTagsNamespacer, events record.EventSink, decoder runtime.Decoder, out, errOut io.Writer, until string) *RecreateDeploymentStrategy { if out == nil { out = ioutil.Discard } if errOut == nil { errOut = ioutil.Discard } scaler, _ := kubectl.ScalerFor(kapi.Kind("ReplicationController"), oldClient) // TODO internalclientset: get rid of oldClient after next rebase client := adapter.FromUnversionedClient(oldClient.(*kclient.Client)) return &RecreateDeploymentStrategy{ out: out, errOut: errOut, events: events, until: until, rcClient: client.Core(), eventClient: client.Core(), getUpdateAcceptor: func(timeout time.Duration, minReadySeconds int32) strat.UpdateAcceptor { return stratsupport.NewAcceptAvailablePods(out, client.Core(), timeout, acceptorInterval, minReadySeconds) }, scaler: scaler, decoder: decoder, hookExecutor: stratsupport.NewHookExecutor(client.Core(), tagClient, client.Core(), os.Stdout, decoder), retryTimeout: 120 * time.Second, retryPeriod: 1 * time.Second, } }