def add_sim(self, sim_type="mock", proj_name="", user_input="", num_cores=1, ARG=False, DEL=False): """ Adds simulation to the user's list of projects. Calls setup_sim and curr_sim.simulation to configure the new project and actually deploy the simulation :param sim_type: :param proj_name: :param user_input: :param ARG: :param DEL: :return: """ ###### Create Unique VM ID ###### self.curr_sim.generate_vm_id(self.username) ##### If accessed through command-line ##### if ARG: self.curr_sim.name = proj_name self.curr_sim.input = user_input self.curr_sim.cores = num_cores self.curr_sim.tstamp = AzureTools.timestamp() ## Check Project Name is Unique and Valid ### valid = self.curr_sim.check_name(proj_name) unique = self.check_sim(proj_name) ##### Update Simulation File ###### # The Simulation name has invalid syntax... if not valid: stderr.write("\nSimulation name has invalid syntax.") exit(1) elif not unique: stderr.write("Simulation name already exists.") exit(1) else: self.user_info["username"] = self.username self.user_info["email"] = self.email self.user_info["sim"] = self.curr_sim.name self.curr_sim.upload_input(self.user_info) success = self.curr_sim.simulation(self.username, sim_type, ARG, DEL) return success else: # Get user input for simulation name and check if name is unique if self.user_giveSimName() is 1: return 1 # Get user input for input files if self.user_giveSimInput() is 1: return 1 # Get user input for core count self.user_giveSimCores() # Generate timestamp self.curr_sim.tstamp = AzureTools.timestamp() # Run simulation success = self.curr_sim.simulation(self.username, sim_type) return success