def undeploy(args, config, basepath, workspace): """Entry point for the devtool 'undeploy' subcommand""" if args.all and args.recipename: raise argparse_oe.ArgumentUsageError( 'Cannot specify -a/--all with a recipe name', 'undeploy-target') elif not args.recipename and not args.all: raise argparse_oe.ArgumentUsageError( 'If you don\'t specify a recipe, you must specify -a/--all', 'undeploy-target') extraoptions = '' if args.no_host_check: extraoptions += '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' if not args.show_status: extraoptions += ' -q' scp_port = '' ssh_port = '' if args.port: scp_port = "-P %s" % args.port ssh_port = "-p %s" % args.port args.target = args.target.split(':')[0] tmpdir = tempfile.mkdtemp(prefix='devtool') try: tmpscript = '/tmp/devtool_undeploy.sh' shellscript = _prepare_remote_script(deploy=False, dryrun=args.dry_run, undeployall=args.all) # Write out the script to a file with open(os.path.join(tmpdir, os.path.basename(tmpscript)), 'w') as f: f.write(shellscript) # Copy it to the target ret = subprocess.call("scp %s %s %s/* %s:%s" % (scp_port, extraoptions, tmpdir, args.target, os.path.dirname(tmpscript)), shell=True) if ret != 0: raise DevtoolError( 'Failed to copy script to %s - rerun with -s to ' 'get a complete error message' % args.target) finally: shutil.rmtree(tmpdir) # Now run the script ret = subprocess.call( 'ssh %s %s %s \'sh %s %s\'' % (ssh_port, extraoptions, args.target, tmpscript, args.recipename), shell=True) if ret != 0: raise DevtoolError('Undeploy failed - rerun with -s to get a complete ' 'error message') if not args.all and not args.dry_run: logger.info('Successfully undeployed %s' % args.recipename) return 0
def run(self, logger, args): if not args.sdk_dir: raise argparse_oe.ArgumentUsageError("No SDK directory "\ "specified please do, --sdk-dir SDK_DIR", self.name) sdk_envs = OESDKTestContextExecutor._get_sdk_environs(args.sdk_dir) if not sdk_envs: raise argparse_oe.ArgumentUsageError("No available SDK "\ "enviroments found at %s" % args.sdk_dir, self.name) if args.list_sdk_env: self._display_sdk_envs(logger.info, args, sdk_envs) sys.exit(0) if not args.sdk_env in sdk_envs: self._display_sdk_envs(logger.error, args, sdk_envs) raise argparse_oe.ArgumentUsageError("No valid SDK "\ "environment (%s) specified" % args.sdk_env, self.name) self.sdk_env = sdk_envs[args.sdk_env] super(OESDKTestContextExecutor, self).run(logger, args)