import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.*;
import java.util.*;

public class auroraCreate {
	public static void main(String[] args) {
		final Map<String, List<String>> params = new HashMap<>();
		List<String> options = null;
		for (int i = 0; i < args.length; i++) {
    			final String a = args[i];
		    	if (a.charAt(0) == '-') {
			        if (a.length() < 2) {
			            System.err.println("Error at argument " + a);
				    return;
        			}
			        options = new ArrayList<>();
        			params.put(a.substring(1), options);
    			}
    			else if (options != null) {
        			options.add(a);
    			}
    			else {
        			System.err.println("Illegal parameter usage");
        			return;
    			}
		}
		String ram,name,cpu,disk,kill,option;
		option = params.get("o").get(0);
		if (option.equals("kill")){
			jobKill(params.get("k").get(0));
		}
		else if (option.equals("create")){
			name = params.get("n").get(0);
			ram = params.get("r").get(0);
			cpu = params.get("c").get(0);
			disk = params.get("d").get(0);
			configCreate(name,ram,cpu,disk);
	 		jobLaunch(name);
		}
	}
	public static void jobKill(String kill){
		try{
			Process auroraJob = Runtime.getRuntime().exec("aurora job killall example/benchmarks/devel/"+kill);
		}catch (Exception ex) {
   			ex.printStackTrace();
   		}
		System.out.println("Killed");
	}
	public static void jobLaunch(String name){
		try{
			Process auroraJob = Runtime.getRuntime().exec("aurora job create example/benchmarks/devel/"+name+" "+name+".aurora");
		}catch (Exception ex) {
   			ex.printStackTrace();
   		}
		System.out.println("Launched");
	}
	public static void configCreate(String name, String ram, String cpu, String disk){
	try {
		String line1 = "import hashlib\n";
                String line2 = name+"= Process(name = '"+name+"', cmdline = 'java -jar /dacapo-9.12-bach.jar "+name+" -s small')\n";
                String line3 = name+"_task = SequentialTask(processes = [ "+name+"], resources = Resources(cpu = "+cpu+", ram = "+ram+"*MB, disk="+disk+"*MB))\n";
                String line4 = "jobs = [ Job(cluster = 'example', environment = 'devel', role = 'benchmarks', name = '"+name+"', task = "+name+"_task, instances =1 , container = Container(docker = Docker(image = 'gouravr/dacapo:tag9')))]\n";

		File file = new File(name+".aurora");

		if (!file.exists()) {
			file.createNewFile();
		}

		FileWriter fw = new FileWriter(file.getAbsoluteFile());
		BufferedWriter bw = new BufferedWriter(fw);
		bw.write(line1);
                bw.write(line2);
                bw.write(line3);
                bw.write(line4);
		bw.close();

		System.out.println("Done");

		} catch (IOException e) {
		e.printStackTrace();
		}
	}
}			
