func newRsyncStrategy(f *clientcmd.Factory, c *cobra.Command, o *RsyncOptions) (copyStrategy, error) { // Determine the rsh command to pass to the local rsync command rsh := cmdutil.SiblingCommand(c, "rsh") rshCmd := []string{rsh} // Append all original flags to rsh command c.Flags().Visit(func(flag *pflag.Flag) { if rshExcludeFlags.Has(flag.Name) { return } rshCmd = append(rshCmd, fmt.Sprintf("--%s=%s", flag.Name, flag.Value.String())) }) rshCmdStr := strings.Join(rshCmd, " ") glog.V(4).Infof("Rsh command: %s", rshCmdStr) remoteExec, err := newRemoteExecutor(f, o) if err != nil { return nil, err } // The blocking-io flag is used to resolve a sync issue when // copying from the pod to the local machine flags := []string{"-a", "--blocking-io", "--omit-dir-times", "--numeric-ids"} flags = append(flags, rsyncFlagsFromOptions(o)...) podName := o.Source.PodName if o.Source.Local() { podName = o.Destination.PodName } client, err := f.ClientSet() if err != nil { return nil, err } return &rsyncStrategy{ Flags: flags, RshCommand: rshCmdStr, RemoteExecutor: remoteExec, LocalExecutor: newLocalExecutor(), podChecker: podAPIChecker{client, o.Namespace, podName}, }, nil }
// CheckExistingOpenShiftContainer checks the state of an OpenShift container. If one // is already running, it throws an error. If one exists, it removes it so a new one // can be created. func (c *ClientStartConfig) CheckExistingOpenShiftContainer(out io.Writer) error { exists, running, err := c.DockerHelper().GetContainerState(openShiftContainer) if err != nil { return errors.NewError("unexpected error while checking OpenShift container state").WithCause(err) } if running { return errors.NewError("OpenShift is already running").WithSolution("To start OpenShift again, stop the current cluster:\n$ %s\n", cmdutil.SiblingCommand(c.command, "down")) } if exists { err = c.DockerHelper().RemoveContainer(openShiftContainer) if err != nil { return errors.NewError("cannot delete existing OpenShift container").WithCause(err) } fmt.Fprintf(out, "Deleted existing OpenShift container\n") } return nil }