Check for beta in scripts/cdist.
This commit is contained in:
		
					parent
					
						
							
								1c07b63f1d
							
						
					
				
			
			
				commit
				
					
						fdf6a6570c
					
				
			
		
					 3 changed files with 36 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -56,6 +56,20 @@ class UnresolvableRequirementsError(cdist.Error):
 | 
			
		|||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CdistBetaRequired(cdist.Error):
 | 
			
		||||
    """Beta functionality is used but beta is not enabled"""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, command, arg):
 | 
			
		||||
        self.command = command
 | 
			
		||||
        self.arg = arg
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        err_msg = ("\'{}\' argument of \'{}\' command is beta, but beta is "
 | 
			
		||||
                   "not enabled. If you want to use it please enable beta "
 | 
			
		||||
                   "functionalities.")
 | 
			
		||||
        return err_msg.format(self.arg, self.command)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CdistObjectError(Error):
 | 
			
		||||
    """Something went wrong with an object"""
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,8 +71,6 @@ def inspect_ssh_mux_opts():
 | 
			
		|||
class Config(object):
 | 
			
		||||
    """Cdist main class to hold arbitrary data"""
 | 
			
		||||
 | 
			
		||||
    BETA_ARGS = ['jobs']
 | 
			
		||||
 | 
			
		||||
    def __init__(self, local, remote, dry_run=False, jobs=None):
 | 
			
		||||
 | 
			
		||||
        self.local = local
 | 
			
		||||
| 
						 | 
				
			
			@ -111,19 +109,6 @@ class Config(object):
 | 
			
		|||
                for host in source:
 | 
			
		||||
                    yield host
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def _check_beta(cls, args_dict):
 | 
			
		||||
        if 'beta' not in args_dict:
 | 
			
		||||
            args_dict['beta'] = False
 | 
			
		||||
        # Check only if beta is not enabled: if beta option is specified then
 | 
			
		||||
        # raise error.
 | 
			
		||||
        if not args_dict['beta']:
 | 
			
		||||
            err_msg = ("\'{}\' is beta, but beta is not enabled. If you want "
 | 
			
		||||
                       "to use it please enable beta functionalities.")
 | 
			
		||||
            for arg in cls.BETA_ARGS:
 | 
			
		||||
                if arg in args_dict:
 | 
			
		||||
                    raise cdist.Error(err_msg.format(arg))
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def commandline(cls, args):
 | 
			
		||||
        """Configure remote system"""
 | 
			
		||||
| 
						 | 
				
			
			@ -136,9 +121,6 @@ class Config(object):
 | 
			
		|||
            raise cdist.Error(("Cannot read both, manifest and host file, "
 | 
			
		||||
                               "from stdin"))
 | 
			
		||||
 | 
			
		||||
        args_dict = vars(args)
 | 
			
		||||
        cls._check_beta(args_dict)
 | 
			
		||||
 | 
			
		||||
        # if no host source is specified then read hosts from stdin
 | 
			
		||||
        if not (args.hostfile or args.host):
 | 
			
		||||
            args.hostfile = '-'
 | 
			
		||||
| 
						 | 
				
			
			@ -167,6 +149,7 @@ class Config(object):
 | 
			
		|||
        args.remote_exec_pattern = None
 | 
			
		||||
        args.remote_copy_pattern = None
 | 
			
		||||
 | 
			
		||||
        args_dict = vars(args)
 | 
			
		||||
        # if remote-exec and/or remote-copy args are None then user
 | 
			
		||||
        # didn't specify command line options nor env vars:
 | 
			
		||||
        # inspect multiplexing options for default cdist.REMOTE_COPY/EXEC
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,12 @@
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# list of beta arguments for sub-commands
 | 
			
		||||
BETA_ARGS = {
 | 
			
		||||
    'config': ['jobs', ],
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def check_positive_int(value):
 | 
			
		||||
    import argparse
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +42,20 @@ def check_positive_int(value):
 | 
			
		|||
    return val
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def check_beta(args_dict):
 | 
			
		||||
    if 'beta' not in args_dict:
 | 
			
		||||
        args_dict['beta'] = False
 | 
			
		||||
    # Check only if beta is not enabled: if beta option is specified then
 | 
			
		||||
    # raise error.
 | 
			
		||||
    if not args_dict['beta']:
 | 
			
		||||
        err_msg = ("\'{}\' is beta, but beta is not enabled. If you want "
 | 
			
		||||
                   "to use it please enable beta functionalities.")
 | 
			
		||||
        cmd = args_dict['command']
 | 
			
		||||
        for arg in BETA_ARGS[cmd]:
 | 
			
		||||
            if arg in args_dict:
 | 
			
		||||
                raise cdist.CdistBetaRequired(cmd, arg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def commandline():
 | 
			
		||||
    """Parse command line"""
 | 
			
		||||
    import argparse
 | 
			
		||||
| 
						 | 
				
			
			@ -172,6 +192,7 @@ def commandline():
 | 
			
		|||
        parser['main'].print_help()
 | 
			
		||||
        sys.exit(0)
 | 
			
		||||
 | 
			
		||||
    check_beta(vars(args))
 | 
			
		||||
    args.func(args)
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue