Add -b/--enable-beta option for enabling beta functionalities.
This commit is contained in:
		
					parent
					
						
							
								f858191976
							
						
					
				
			
			
				commit
				
					
						1c07b63f1d
					
				
			
		
					 4 changed files with 35 additions and 6 deletions
				
			
		|  | @ -71,6 +71,8 @@ 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 | ||||||
|  | @ -109,6 +111,19 @@ 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""" | ||||||
|  | @ -120,6 +135,10 @@ class Config(object): | ||||||
|         if args.manifest == '-' and args.hostfile == '-': |         if args.manifest == '-' and args.hostfile == '-': | ||||||
|             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 = '-' | ||||||
|  | @ -148,7 +167,6 @@ 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 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,8 @@ | ||||||
| Changelog | Changelog | ||||||
| --------- | --------- | ||||||
| next: | next: | ||||||
| 	* Core: Add -j, --jobs option for parallel execution and add parallel support for global explorers (Darko Poljak) | 	* Core: Add -b, --enable-beta option for enabling beta functionalities (Darko Poljak) | ||||||
|  | 	* Core: Add -j, --jobs option for parallel execution and add parallel support for global explorers (currently in beta) (Darko Poljak) | ||||||
| 	* Core: Add derived env vars for target hostname and fqdn (Darko Poljak) | 	* Core: Add derived env vars for target hostname and fqdn (Darko Poljak) | ||||||
| 	* New type: __keyboard: Set keyboard layout (Carlos Ortigoza) | 	* New type: __keyboard: Set keyboard layout (Carlos Ortigoza) | ||||||
| 	* Documentation: Re-license types' man pages to GPLV3+ (Dmitry Bogatov,	Darko Poljak) | 	* Documentation: Re-license types' man pages to GPLV3+ (Dmitry Bogatov,	Darko Poljak) | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ SYNOPSIS | ||||||
| 
 | 
 | ||||||
|     cdist config [-h] [-d] [-v] [-c CONF_DIR] [-f HOSTFILE] [-i MANIFEST] |     cdist config [-h] [-d] [-v] [-c CONF_DIR] [-f HOSTFILE] [-i MANIFEST] | ||||||
|                  [-n] [-o OUT_PATH] [-p] [-s] [--remote-copy REMOTE_COPY] |                  [-n] [-o OUT_PATH] [-p] [-s] [--remote-copy REMOTE_COPY] | ||||||
|                  [--remote-exec REMOTE_EXEC] [-j [JOBS]] |                  [--remote-exec REMOTE_EXEC] [-j [JOBS]] [-b] | ||||||
|                  [host [host ...]] |                  [host [host ...]] | ||||||
| 
 | 
 | ||||||
|     cdist shell [-h] [-d] [-v] [-s SHELL] |     cdist shell [-h] [-d] [-v] [-s SHELL] | ||||||
|  | @ -110,7 +110,12 @@ Configure one or more hosts. | ||||||
| .. option:: -j [JOBS], --jobs [JOBS] | .. option:: -j [JOBS], --jobs [JOBS] | ||||||
| 
 | 
 | ||||||
|     Specify the maximum number of parallel jobs; currently only |     Specify the maximum number of parallel jobs; currently only | ||||||
|     global explorers are supported |     global explorers are supported (currently in beta) | ||||||
|  | 
 | ||||||
|  | .. option:: -b, --enable-beta | ||||||
|  | 
 | ||||||
|  |     Enable beta functionalities. Beta functionalities include the | ||||||
|  |     following options: -j/--jobs. | ||||||
| 
 | 
 | ||||||
| SHELL | SHELL | ||||||
| ----- | ----- | ||||||
|  |  | ||||||
|  | @ -122,10 +122,15 @@ def commandline(): | ||||||
|            default=os.environ.get('CDIST_REMOTE_EXEC')) |            default=os.environ.get('CDIST_REMOTE_EXEC')) | ||||||
|     parser['config'].add_argument( |     parser['config'].add_argument( | ||||||
|            '-j', '--jobs', nargs='?', type=check_positive_int, |            '-j', '--jobs', nargs='?', type=check_positive_int, | ||||||
|            help=('Specify the maximum number of parallel jobs; currently ' |            help=('Specify the maximum number of parallel jobs, currently ' | ||||||
|                  'only global explorers are supported'), |                  'only global explorers are supported (currently in beta'), | ||||||
|            action='store', dest='jobs', |            action='store', dest='jobs', | ||||||
|            const=multiprocessing.cpu_count()) |            const=multiprocessing.cpu_count()) | ||||||
|  |     parser['config'].add_argument( | ||||||
|  |            '-b', '--enable-beta', | ||||||
|  |            help=('Enable beta functionalities. Beta functionalities ' | ||||||
|  |                  'include the following options: -j/--jobs.'), | ||||||
|  |            action='store_true', dest='beta', default=False) | ||||||
|     parser['config'].set_defaults(func=cdist.config.Config.commandline) |     parser['config'].set_defaults(func=cdist.config.Config.commandline) | ||||||
| 
 | 
 | ||||||
|     # Shell |     # Shell | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue