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 | ||||
| 
 | ||||
| 
 | ||||
| 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