/// <summary> /// 创造带课程和教师名的exp返回 /// </summary> /// <param name="e"></param> /// <returns></returns> public static expReturn GetExpRet(Experiment e) { expReturn exp = new expReturn(); var properties = exp.GetType().GetProperties(); var type = e.GetType(); foreach (var pi in properties) { if (pi.Name == "teacher_name" || pi.Name == "course_name" || pi.Name == "term_name" || pi.Name == "term_id") { continue; } var value = type.GetProperty(pi.Name).GetValue(e, null); if (value != null) { pi.SetValue(exp, value); } } Course course = CourseDao.GetCourseInfoById((int)e.course_id); exp.course_name = course.name; exp.teacher_name = UserDao.GetUserById(course.teacher_id).name; exp.term_id = Convert.ToInt32(course.term_id); exp.term_name = CourseDao.GetTermById(exp.term_id).name; return(exp); }
/// <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); }