/// <summary> /// 删除虚拟机 /// </summary> /// <param name="vmName">虚拟机名称</param> /// <returns>success|error:错误信息</returns> public string Delete(string id) { string info = ""; APIManager.OffServer(id); info = APIManager.DeleteServer(id); if (info == "") { SangforDao.DeleteById(id); return("success"); } else if (info.Equals("No Content")) { return("error:No Content"); } else if (info.Equals("|No Authority")) { return("error:No Authority"); } else { //var param = HttpUtil.Deserialize(JObject.Parse(info)); //return "error:"+param["error"]["message"]; return("error:" + info); } }
/// <summary> /// 采用新逻辑批量创建虚拟机,用于优化多台创建的情况 /// </summary> public void CreateNewLogic(VMConfig config, List <SangforInfo> infos) { List <string> nameList = new List <string>(); List <string> newNameList = new List <string>(); //nameList.Add(config.Name); newNameList.Add(config.TemplateName); int num = 0; while (true) { List <string> idList = new List <string>(); nameList = new List <string>(); foreach (string name in newNameList) { nameList.Add(name); } if (num == infos.Count()) { break; } foreach (string name in nameList) { config.TemplateName = name; string id = Create(config, infos[num].Name, null, null); if (!id.StartsWith("error")) { infos[num].id = id; idList.Add(id); SangforDao.Add(infos[num]); newNameList.Add(infos[num].Name); } num++; if (num == infos.Count()) { break; } } Thread.Sleep(180000); foreach (string id in idList) { PowerOption(id, 2); } Thread.Sleep(120000); } }
/// <summary> /// 创建虚拟机 /// </summary> /// <param name="config">虚拟机配置</param> /// <param name="vmName">虚拟机名称</param> /// <param name="ID">模板id</param> /// <param name="hostName">未知参数</param> /// <returns>success|error:错误信息</returns> public string Create(VMConfig config, string vmName, string ID, string hostName = "") { SangforInfo info1 = SangforDao.GetSangforInfoByName(config.TemplateName); config.Disk = Convert.ToInt64(info1.image_disk); string flavorRef = MessageManager.FindFlavor(config.CPU, config.Memory, config.Disk); if (flavorRef.Equals("Not Found")) { flavorRef = MessageManager.CreateFlavor(config); } string uuid = ConfigurationManager.AppSettings["AcloudNetworks"]; string zone = ConfigurationManager.AppSettings["AcloudAvailability_zone"]; string info = ""; //if (info1 == null) //{ // return "error"; //} //string serverId = info1.id; //PowerOption(serverId, 2); //string volumeId = MessageManager.FindVolume(serverId); //Dictionary<string, object> data = //MessageManager.PackageCreateJsonByVolume(flavorRef, uuid, vmName, zone, volumeId); Dictionary <string, object> data = MessageManager.PackageCreateJsonByImage(flavorRef, uuid, vmName, zone, info1.id); info = APIManager.CreateServer(data); string id = MessageManager.AnalyzeCreateInfo(info); if (id.Equals("error") == false) { return(id); } else if (info.Equals("No Content")) { return("error:No Content"); } else if (info.Equals("|No Authority")) { return("error:No Authority"); } else { return("error" + info); } }
/// <summary> /// 批量删除虚拟机 /// </summary> /// <param name="vmNames">虚拟机名称列表</param> /// <returns>删除的台数(int)</returns> public int Delete(List <string> ids) { int i = 0; foreach (string id in ids) { string info = ""; APIManager.OffServer(id); info = APIManager.DeleteServer(id); if (info == "") { SangforDao.DeleteById(id); i++; } } return(i); }
/// <summary> /// 开启关闭虚拟机 /// </summary> /// <param name="vmName">虚拟机名称</param> /// <param name="option">1为开机 2为关机</param> /// <returns>success|error:错误信息</returns> public string PowerOption(string id, int option) { //string id = MysqlManager.FindServer(vmName); string info = ""; //处理传参是name的情况 SangforInfo sang = SangforDao.GetSangforInfoByName(id); if (sang != null) { id = sang.id; } if (option == 2) { info = APIManager.OffServer(id); } else if (option == 1) { info = APIManager.OnServer(id); } if (info == "") { return("success"); } else if (info.Equals("No Content")) { return("error:No Content"); } else if (info.Equals("|No Authority")) { return("error:No Authority"); } else { return("error:" + info); } }