/// <summary> /// 按applyId删除虚拟机 /// </summary> /// <param name="applyId"></param> /// <returns></returns> public static int DeleteVMByApplyId(int applyId) { List <VMConfig> configList; List <string> nameList = new List <string>(); configList = GetAllVm(); string vmname = VMDao.GetApplyRecord(applyId).vm_name; foreach (VMConfig config in configList) { if (config.Name.StartsWith(vmname)) { nameList.Add(config.Name); } } int count; if (ManagerType.Equals("Sangfor")) { count = restful.Delete(SangforDao.GetIdsByNames(nameList)); } else { count = manager.Delete(nameList); } return(count); }
/// <summary> /// 创建一个虚拟机 /// </summary> /// <param name="vmConfig">虚拟机配置信息</param> /// <param name="vm">虚拟机权限信息</param> /// <returns></returns> public static string CreateVM(VMConfig vmConfig, VirtualMachine vm) { string res = "success"; if (ManagerType.Equals("Sangfor")) { SangforInfo info = new SangforInfo(); info.student_id = vm.owner_id; info.teacher_id = vm.owner_id; info.IsTemplate = false; info.is_exp = false; info.is_exps = "False"; info.Name = vm.vm_name; info.TemplateName = vmConfig.TemplateName; //vmConfig.Disk = vmConfig.Disk / 1024; string result = restful.Create(vmConfig, info.Name, null, null); if (!result.StartsWith("error")) { info.id = result; SangforDao.Add(info); } } else { res = manager.Create(vmConfig, vm.vm_name, vm.owner_id); } return(res); }
/// <summary> /// 获取全部虚拟机 /// </summary> /// <returns></returns> private static List <VMConfig> GetAllVm() { List <VMConfig> configs; if (ManagerType.Equals("Sangfor")) { configs = restful.GetVMList(SangforDao.GetAllId()); configs = SangforDao.MergeData(configs); } else { configs = manager.GetVMList(); using (var context = new DataModels()) { List <VirtualMachine> virtualMachines = context.VirtualMachines.ToList(); foreach (var vm in virtualMachines) { var conf = configs.FirstOrDefault(c => c.Name.Equals(vm.vm_name)); if (conf != null) { conf.due_time = vm.due_time; } } } } return(configs); }
/// <summary> /// 删除多个虚拟机 /// </summary> /// <param name="vmNames"></param> /// <returns></returns> public static int DeleteVM(string[] vmNames) { if (ManagerType.Equals("Sangfor")) { restful.Delete(SangforDao.GetIdsByNames(vmNames.ToList())); } else { manager.Delete(vmNames.ToList()); } return(1); }
/// <summary> /// 删除虚拟机 /// </summary> /// <param name="vmName"></param> /// <returns></returns> public static string DeleteVM(string vmName) { if (ManagerType.Equals("Sangfor")) { SangforInfo info = SangforDao.GetSangforInfoByName(vmName); if (info != null) { restful.Delete(info.id); } return(""); } else { return(manager.Delete(vmName)); } }
/// <summary> /// 为实验创建虚拟机 /// </summary> /// <param name="vmConfig">虚拟机配置</param> /// <param name="vmName">虚拟机名</param> /// <param name="expId">实验id</param> /// <returns></returns> public static string CreateVMsForExp(VMConfig vmConfig, int applyId, string stulist) { Experiment exp = ExperimentDao.GetExperimentByApplyId(applyId); Course course = CourseDao.GetCourseInfoById((int)exp.course_id); vmConfig.Name = exp.vm_name; string teacherId = course.teacher_id; string[] ids = stulist.Split(' '); List <string> stuIds = new List <string>(); foreach (string id in ids) { if (id != null && id.Length != 0) { stuIds.Add(id); } } string[] names = new string[stuIds.Count()]; string res = "success"; for (int i = 0; i < stuIds.Count(); ++i) { names[i] = vmConfig.Name + "_" + stuIds[i]; } if (ManagerType.Equals("Sangfor")) { List <SangforInfo> infoList = new List <SangforInfo>(); for (int i = 0; i < stuIds.Count(); ++i) { SangforInfo info = new SangforInfo(); info.student_id = stuIds[i]; info.teacher_id = teacherId; info.IsTemplate = false; info.is_exp = true; info.is_exps = "True"; info.Name = names[i]; info.TemplateName = vmConfig.TemplateName; infoList.Add(info); } //vmConfig.Disk = vmConfig.Disk / 1024; foreach (SangforInfo info in infoList) { string result = restful.Create(vmConfig, info.Name, null, null); if (!result.StartsWith("error")) { info.id = result; SangforDao.Add(info); } } // 使用新逻辑创建,优化创建时间 //restful.CreateNewLogic(vmConfig,infoList); } else { res = manager.Create(vmConfig, names.ToList(), stuIds.ToList(), teacherId); } return(res); }