/// <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> /// <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); }