private void executeForwardJob(ForwardJob job) throws IOException,
			JSchException {
		updateable.send(new StatusUpdate("VM " + id + "  Executing ForwardJob", id,
				VMState.EXECUTING, JobType.FORWARD));

		HashMap<Integer, String> files = new HashMap<Integer, String>();
		String sessionName = job.getRemoteFileName(); // We highjack te session
														// name to communicate
														// the output file name
		if (job.isTarForwarder()) {
			String file = FileLocations.pathForTar(job.getIP(),
					job.getFileName());
			files.put(-2, file); // We highjack the fileid to communicate a
									// ".tar.gz" with sessionName output
		} else {
			String file = FileLocations.pathForOutput(job.getIP(),
					job.getFileName());
			files.put(-1, file); // We highjack the fileid to communicate
									// sessionName output
		}

		FTPService.offer(sessionName, files);

		FTPService.invokeRemote(job.getIP(), sessionName);

		FTPService.waitForOffer(sessionName, 120000);
		// Now that we have completed our business, clear up all the resources
		// associated with
		// this set of jobs.
		if (job.isTarForwarder())
			new File(FileLocations.pathForTar(job.getIP(), job.getFileName()))
					.delete();
		new File(FileLocations.pathForOutput(job.getIP(), job.getFileName()))
				.delete();
		HashMap<Integer, String> fileMapping = null;
		synchronized (fileSystem) {
			fileMapping = fileSystem.remove(job.getIP());
		}
		for (String path : fileMapping.values())
			new File(path).delete();
	}