No subprocess if user enters remote_exec/copy.
This commit is contained in:
		
					parent
					
						
							
								d329db05e1
							
						
					
				
			
			
				commit
				
					
						4318d72524
					
				
			
		
					 1 changed files with 20 additions and 20 deletions
				
			
		|  | @ -79,24 +79,6 @@ def commandline(): | ||||||
|     parser['banner'].set_defaults(func=cdist.banner.banner) |     parser['banner'].set_defaults(func=cdist.banner.banner) | ||||||
| 
 | 
 | ||||||
|     # Config |     # Config | ||||||
|     # inspect multiplexing options for default remote copy/exec scp/ssh |  | ||||||
|     # but not if env vars are present |  | ||||||
|     has_env_remote_exec = "CDIST_REMOTE_EXEC" in os.environ |  | ||||||
|     has_env_remote_copy = "CDIST_REMOTE_COPY" in os.environ |  | ||||||
|     if not has_env_remote_exec or not has_env_remote_copy: |  | ||||||
|         control_path_dir = tempfile.mkdtemp(prefix="cdist.control.path") |  | ||||||
|         import atexit |  | ||||||
|         atexit.register(lambda: shutil.rmtree(control_path_dir)) |  | ||||||
|         MUX_OPTS = inspect_ssh_mux_opts(control_path_dir) |  | ||||||
|         if not has_env_remote_exec: |  | ||||||
|             cdist.REMOTE_EXEC += MUX_OPTS |  | ||||||
|         if not has_env_remote_copy: |  | ||||||
|             cdist.REMOTE_COPY += MUX_OPTS |  | ||||||
|     if has_env_remote_exec: |  | ||||||
|         cdist.REMOTE_EXEC = os.environ['CDIST_REMOTE_EXEC'] |  | ||||||
|     if has_env_remote_copy: |  | ||||||
|         cdist.REMOTE_COPY = os.environ['CDIST_REMOTE_COPY'] |  | ||||||
| 
 |  | ||||||
|     parser['config'] = parser['sub'].add_parser('config', |     parser['config'] = parser['sub'].add_parser('config', | ||||||
|         parents=[parser['loglevel']]) |         parents=[parser['loglevel']]) | ||||||
|     parser['config'].add_argument('host', nargs='+', |     parser['config'].add_argument('host', nargs='+', | ||||||
|  | @ -117,14 +99,17 @@ def commandline(): | ||||||
|     parser['config'].add_argument('-s', '--sequential', |     parser['config'].add_argument('-s', '--sequential', | ||||||
|          help='Operate on multiple hosts sequentially (default)', |          help='Operate on multiple hosts sequentially (default)', | ||||||
|          action='store_false', dest='parallel') |          action='store_false', dest='parallel') | ||||||
|  |     # remote-copy and remote-exec defaults are environment variables | ||||||
|  |     # if set; if not then None - these will be futher handled after | ||||||
|  |     # parsing to determine implementation default | ||||||
|     parser['config'].add_argument('--remote-copy', |     parser['config'].add_argument('--remote-copy', | ||||||
|          help='Command to use for remote copy (should behave like scp)', |          help='Command to use for remote copy (should behave like scp)', | ||||||
|          action='store', dest='remote_copy', |          action='store', dest='remote_copy', | ||||||
|          default=cdist.REMOTE_COPY) |          default=os.environ.get('CDIST_REMOTE_COPY')) | ||||||
|     parser['config'].add_argument('--remote-exec', |     parser['config'].add_argument('--remote-exec', | ||||||
|          help='Command to use for remote execution (should behave like ssh)', |          help='Command to use for remote execution (should behave like ssh)', | ||||||
|          action='store', dest='remote_exec', |          action='store', dest='remote_exec', | ||||||
|          default=cdist.REMOTE_EXEC) |          default=os.environ.get('CDIST_REMOTE_EXEC')) | ||||||
|     parser['config'].set_defaults(func=cdist.config.Config.commandline) |     parser['config'].set_defaults(func=cdist.config.Config.commandline) | ||||||
| 
 | 
 | ||||||
|     # Shell |     # Shell | ||||||
|  | @ -145,6 +130,21 @@ def commandline(): | ||||||
|         logging.root.setLevel(logging.INFO) |         logging.root.setLevel(logging.INFO) | ||||||
|     if args.debug: |     if args.debug: | ||||||
|         logging.root.setLevel(logging.DEBUG) |         logging.root.setLevel(logging.DEBUG) | ||||||
|  |     args_dict = vars(args) | ||||||
|  |     # if command with remote_copy and remote_exec params | ||||||
|  |     if 'remote_copy' in args_dict and 'remote_exec' in args_dict: | ||||||
|  |         # 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 | ||||||
|  |         if args_dict['remote_copy'] is None or args_dict['remote_exec'] is None: | ||||||
|  |             control_path_dir = tempfile.mkdtemp(prefix="cdist.control.path") | ||||||
|  |             import atexit | ||||||
|  |             atexit.register(lambda: shutil.rmtree(control_path_dir)) | ||||||
|  |             mux_opts = inspect_ssh_mux_opts(control_path_dir) | ||||||
|  |             if args_dict['remote_exec'] is None: | ||||||
|  |                 args.remote_exec = cdist.REMOTE_EXEC + mux_opts | ||||||
|  |             if args_dict['remote_copy'] is None: | ||||||
|  |                 args.remote_copy = cdist.REMOTE_COPY + mux_opts | ||||||
| 
 | 
 | ||||||
|     log.debug(args) |     log.debug(args) | ||||||
|     log.info("version %s" % cdist.VERSION) |     log.info("version %s" % cdist.VERSION) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue