Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
 /// <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);
 }
Exemplo n.º 5
0
 /// <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));
     }
 }
Exemplo n.º 6
0
        /// <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);
        }