mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Update rollback process
This commit is contained in:
		@@ -100,47 +100,62 @@ func NewCmdRollingUpdate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
 | 
			
		||||
	return cmd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func validateArguments(cmd *cobra.Command, filenames, args []string) (deploymentKey, filename, image, oldName string, err error) {
 | 
			
		||||
	deploymentKey = cmdutil.GetFlagString(cmd, "deployment-label-key")
 | 
			
		||||
	image = cmdutil.GetFlagString(cmd, "image")
 | 
			
		||||
	filename = ""
 | 
			
		||||
func validateArguments(cmd *cobra.Command, filenames, args []string) error {
 | 
			
		||||
	deploymentKey := cmdutil.GetFlagString(cmd, "deployment-label-key")
 | 
			
		||||
	image := cmdutil.GetFlagString(cmd, "image")
 | 
			
		||||
	rollback := cmdutil.GetFlagBool(cmd, "rollback")
 | 
			
		||||
 | 
			
		||||
	if len(deploymentKey) == 0 {
 | 
			
		||||
		return "", "", "", "", cmdutil.UsageError(cmd, "--deployment-label-key can not be empty")
 | 
			
		||||
		return cmdutil.UsageError(cmd, "--deployment-label-key can not be empty")
 | 
			
		||||
	}
 | 
			
		||||
	if len(filenames) > 1 {
 | 
			
		||||
		return "", "", "", "", cmdutil.UsageError(cmd, "May only specificy a single filename for new controller")
 | 
			
		||||
	}
 | 
			
		||||
	if len(filenames) > 0 {
 | 
			
		||||
		filename = filenames[0]
 | 
			
		||||
	}
 | 
			
		||||
	if len(filenames) == 0 && len(image) == 0 {
 | 
			
		||||
		return "", "", "", "", cmdutil.UsageError(cmd, "Must specify --filename or --image for new controller")
 | 
			
		||||
	}
 | 
			
		||||
	if len(filenames) != 0 && len(image) != 0 {
 | 
			
		||||
		return "", "", "", "", cmdutil.UsageError(cmd, "--filename and --image can not both be specified")
 | 
			
		||||
	}
 | 
			
		||||
	if len(args) < 1 {
 | 
			
		||||
		return "", "", "", "", cmdutil.UsageError(cmd, "Must specify the controller to update")
 | 
			
		||||
		return cmdutil.UsageError(cmd, "May only specify a single filename for new controller")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return deploymentKey, filename, image, args[0], nil
 | 
			
		||||
	if !rollback {
 | 
			
		||||
		if len(filenames) == 0 && len(image) == 0 {
 | 
			
		||||
			return cmdutil.UsageError(cmd, "Must specify --filename or --image for new controller")
 | 
			
		||||
		}
 | 
			
		||||
		if len(filenames) != 0 && len(image) != 0 {
 | 
			
		||||
			return cmdutil.UsageError(cmd, "--filename and --image can not both be specified")
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		if len(filenames) != 0 || len(image) != 0 {
 | 
			
		||||
			return cmdutil.UsageError(cmd, "Don't specify --filename or --image on rollback")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(args) < 1 {
 | 
			
		||||
		return cmdutil.UsageError(cmd, "Must specify the controller to update")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *RollingUpdateOptions) error {
 | 
			
		||||
	if len(os.Args) > 1 && os.Args[1] == "rollingupdate" {
 | 
			
		||||
		printDeprecationWarning("rolling-update", "rollingupdate")
 | 
			
		||||
	}
 | 
			
		||||
	deploymentKey, filename, image, oldName, err := validateArguments(cmd, options.Filenames, args)
 | 
			
		||||
	err := validateArguments(cmd, options.Filenames, args)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	deploymentKey := cmdutil.GetFlagString(cmd, "deployment-label-key")
 | 
			
		||||
	filename := ""
 | 
			
		||||
	image := cmdutil.GetFlagString(cmd, "image")
 | 
			
		||||
	oldName := args[0]
 | 
			
		||||
	rollback := cmdutil.GetFlagBool(cmd, "rollback")
 | 
			
		||||
	period := cmdutil.GetFlagDuration(cmd, "update-period")
 | 
			
		||||
	interval := cmdutil.GetFlagDuration(cmd, "poll-interval")
 | 
			
		||||
	timeout := cmdutil.GetFlagDuration(cmd, "timeout")
 | 
			
		||||
	dryrun := cmdutil.GetFlagBool(cmd, "dry-run")
 | 
			
		||||
	outputFormat := cmdutil.GetFlagString(cmd, "output")
 | 
			
		||||
 | 
			
		||||
	if len(options.Filenames) > 0 {
 | 
			
		||||
		filename = options.Filenames[0]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -238,6 +253,19 @@ func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, arg
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if rollback {
 | 
			
		||||
		keepOldName = len(args) == 1
 | 
			
		||||
		newName := findNewName(args, oldRc)
 | 
			
		||||
		if newRc, err = kubectl.LoadExistingNextReplicationController(client, cmdNamespace, newName); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if newRc == nil {
 | 
			
		||||
			return cmdutil.UsageError(cmd, "Could not find %s to rollback.\n", newName)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if oldName == newRc.Name {
 | 
			
		||||
		return cmdutil.UsageError(cmd, "%s cannot have the same name as the existing ReplicationController %s",
 | 
			
		||||
			filename, oldName)
 | 
			
		||||
@@ -295,7 +323,7 @@ func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, arg
 | 
			
		||||
		MaxUnavailable: util.NewIntOrStringFromInt(0),
 | 
			
		||||
		MaxSurge:       util.NewIntOrStringFromInt(1),
 | 
			
		||||
	}
 | 
			
		||||
	if cmdutil.GetFlagBool(cmd, "rollback") {
 | 
			
		||||
	if rollback {
 | 
			
		||||
		err = kubectl.AbortRollingUpdate(config)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
 
 | 
			
		||||
@@ -79,7 +79,7 @@ func TestValidateArgs(t *testing.T) {
 | 
			
		||||
				cmd.Flags().Set(key, val)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		_, _, _, _, err := validateArguments(cmd, test.filenames, test.args)
 | 
			
		||||
		err := validateArguments(cmd, test.filenames, test.args)
 | 
			
		||||
		if err != nil && !test.expectErr {
 | 
			
		||||
			t.Errorf("unexpected error: %v (%s)", err, test.testName)
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user