forked from ungleich-public/cdist
		
	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
 | 
					    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):
 | 
					class CdistObjectError(Error):
 | 
				
			||||||
    """Something went wrong with an object"""
 | 
					    """Something went wrong with an object"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,8 +71,6 @@ def inspect_ssh_mux_opts():
 | 
				
			||||||
class Config(object):
 | 
					class Config(object):
 | 
				
			||||||
    """Cdist main class to hold arbitrary data"""
 | 
					    """Cdist main class to hold arbitrary data"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    BETA_ARGS = ['jobs']
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __init__(self, local, remote, dry_run=False, jobs=None):
 | 
					    def __init__(self, local, remote, dry_run=False, jobs=None):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.local = local
 | 
					        self.local = local
 | 
				
			||||||
| 
						 | 
					@ -111,19 +109,6 @@ class Config(object):
 | 
				
			||||||
                for host in source:
 | 
					                for host in source:
 | 
				
			||||||
                    yield host
 | 
					                    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
 | 
					    @classmethod
 | 
				
			||||||
    def commandline(cls, args):
 | 
					    def commandline(cls, args):
 | 
				
			||||||
        """Configure remote system"""
 | 
					        """Configure remote system"""
 | 
				
			||||||
| 
						 | 
					@ -136,9 +121,6 @@ class Config(object):
 | 
				
			||||||
            raise cdist.Error(("Cannot read both, manifest and host file, "
 | 
					            raise cdist.Error(("Cannot read both, manifest and host file, "
 | 
				
			||||||
                               "from stdin"))
 | 
					                               "from stdin"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        args_dict = vars(args)
 | 
					 | 
				
			||||||
        cls._check_beta(args_dict)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # if no host source is specified then read hosts from stdin
 | 
					        # if no host source is specified then read hosts from stdin
 | 
				
			||||||
        if not (args.hostfile or args.host):
 | 
					        if not (args.hostfile or args.host):
 | 
				
			||||||
            args.hostfile = '-'
 | 
					            args.hostfile = '-'
 | 
				
			||||||
| 
						 | 
					@ -167,6 +149,7 @@ class Config(object):
 | 
				
			||||||
        args.remote_exec_pattern = None
 | 
					        args.remote_exec_pattern = None
 | 
				
			||||||
        args.remote_copy_pattern = None
 | 
					        args.remote_copy_pattern = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        args_dict = vars(args)
 | 
				
			||||||
        # if remote-exec and/or remote-copy args are None then user
 | 
					        # if remote-exec and/or remote-copy args are None then user
 | 
				
			||||||
        # didn't specify command line options nor env vars:
 | 
					        # didn't specify command line options nor env vars:
 | 
				
			||||||
        # inspect multiplexing options for default cdist.REMOTE_COPY/EXEC
 | 
					        # 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):
 | 
					def check_positive_int(value):
 | 
				
			||||||
    import argparse
 | 
					    import argparse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +42,20 @@ def check_positive_int(value):
 | 
				
			||||||
    return val
 | 
					    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():
 | 
					def commandline():
 | 
				
			||||||
    """Parse command line"""
 | 
					    """Parse command line"""
 | 
				
			||||||
    import argparse
 | 
					    import argparse
 | 
				
			||||||
| 
						 | 
					@ -172,6 +192,7 @@ def commandline():
 | 
				
			||||||
        parser['main'].print_help()
 | 
					        parser['main'].print_help()
 | 
				
			||||||
        sys.exit(0)
 | 
					        sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    check_beta(vars(args))
 | 
				
			||||||
    args.func(args)
 | 
					    args.func(args)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue