public JsonResult ResetErrorMessage() { var model = (IpmiResetModel)Session[Definitions.SYSTEM_RESET_MODEL_KEY]; if (null != model) { model.ErrorMessage = string.Empty; model.IpmiResponse = string.Empty; model.CurrentCount = 0; model.BMCCfig.IpmiAccessable = true; this._UpdateSessionModel(model); } else { model = new IpmiResetModel(); } return(Json(model)); }
public JsonResult UpdateIfAbortAtFailure(JsonContainer jsonData) { var model = (IpmiResetModel)Session[Definitions.SYSTEM_RESET_MODEL_KEY]; if (null != jsonData && !string.IsNullOrEmpty(jsonData.JsonString)) { var ischecked = false; bool.TryParse(jsonData.JsonString, out ischecked); model.SutCfig.ifAboutAtFailure = ischecked; this._UpdateSessionModel(model); } if (null == model) { model = new IpmiResetModel(); } return(Json(model)); }
public ActionResult Index() { var model = Session[Definitions.SYSTEM_RESET_MODEL_KEY] as IpmiResetModel; var commandMapFileName = Path.Combine(Server.MapPath(@"~/App_Data/"), "IpmiCommandList.json"); using (StreamReader file = System.IO.File.OpenText(commandMapFileName)) { var serializer = new JsonSerializer(); var map = (CommandMaps)serializer.Deserialize(file, typeof(CommandMaps)); Session[Definitions.COMMAND_MAP_KEY] = map; } if (null == model) { model = new IpmiResetModel(); this._UpdateSessionModel(model); } return(View(model)); }
public JsonResult UpdateBmcPasswordConfig(JsonContainer jsonData) { var model = (IpmiResetModel)Session[Definitions.SYSTEM_RESET_MODEL_KEY]; if (null != model && null != jsonData) { model.CurrentCount = 0; model.ErrorMessage = string.Empty; model.BMCCfig.MEMode = MeMode.Recovery.ToString(); model.BMCCfig.Password = string.IsNullOrEmpty(jsonData.JsonString) ? string.Empty : jsonData.JsonString; model.BMCCfig.IpmiAccessable = true; this._UpdateSessionModel(model); } if (null == model) { model = new IpmiResetModel(); } return(Json(model)); }
public JsonResult PingSut() { var model = (IpmiResetModel)Session[Definitions.SYSTEM_RESET_MODEL_KEY]; if (null != model && null != model.SutCfig && model.Status != ProcessStatus.Alive.ToString()) { //var proxy = XmlRpcProxyGen.Create<IXmlRpcInterface>(); //var json = proxy.PingHost(model.SutCfig.IpAddress); //var serializer = new JsonSerializer(); //var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)); //var reader = new StreamReader(stream); //var respons = (PingHostResponse)serializer.Deserialize(reader, typeof(PingHostResponse)); //model.SutCfig.IsPowerOn = respons.hostUp; var reply = this._PingIPAddress(ref model); } if (null == model) { model = new IpmiResetModel(); } return(Json(model)); }
public JsonResult UpdateDelay(JsonContainer jsonData) { var model = (IpmiResetModel)Session[Definitions.SYSTEM_RESET_MODEL_KEY]; if (null != jsonData && !string.IsNullOrEmpty(jsonData.JsonString) && _regexDigits.Match(jsonData.JsonString).Success) { var delay = 0; if (int.TryParse(jsonData.JsonString, out delay)) { model.Delay = delay.ToString(); } this._UpdateSessionModel(model); } if (null == model) { model = new IpmiResetModel(); } return(Json(model)); }
public JsonResult UpdateTimeout(JsonContainer jsonData) { var model = (IpmiResetModel)Session[Definitions.SYSTEM_RESET_MODEL_KEY]; if (null != jsonData && !string.IsNullOrEmpty(jsonData.JsonString) && _regexDigits.Match(jsonData.JsonString).Success) { var timeout = 0; int.TryParse(jsonData.JsonString, out timeout); model.TimeoutInMimutes = timeout; model.CurrentCount = 0; this._UpdateSessionModel(model); } if (null == model) { model = new IpmiResetModel(); } return(Json(model)); }
public JsonResult UpdateSuTConfig(JsonContainer jsonData) { var model = (IpmiResetModel)Session[Definitions.SYSTEM_RESET_MODEL_KEY]; if (null != model && null != jsonData) { model.SutCfig.IpAddress = string.IsNullOrEmpty(jsonData.JsonString) ? string.Empty : jsonData.JsonString; model.ErrorMessage = string.Empty; if (!Utils.IsValidIpV4(model.SutCfig.IpAddress)) { model.SutCfig.IsPowerOn = false; model.ErrorMessage = "Please enter a valid SUT IP address. NOTE:If you select the Customer Defined option and like to send BMC comman, please click on the <Refresh> icon."; } this._UpdateSessionModel(model); } if (null == model) { model = new IpmiResetModel(); } return(Json(model)); }
private void _UpdateSessionModel(IpmiResetModel model) { lock (_updateModelSyncObj) { for (int i = 0; i < 3; ++i) { try { try { Session.Remove(Definitions.SYSTEM_RESET_MODEL_KEY); } catch { } model.CmdMaps = (CommandMaps)Session[Definitions.COMMAND_MAP_KEY]; Session[Definitions.SYSTEM_RESET_MODEL_KEY] = model; } catch { } } } }
private StringBuilder _InvokeIpmiCommand(IpmiResetModel model, string ipaddress, string command) { var sb = new StringBuilder(); lock (_invokeSyncObj) { var errorIgnoreFilter = (string)WebConfigurationManager.AppSettings["ipmitoolErrorIgnoreFilter"]; var ipmiCommandTimeout = int.Parse(WebConfigurationManager.AppSettings["ipmiCommandTimeoutInMin"]); if (string.IsNullOrEmpty(errorIgnoreFilter)) { errorIgnoreFilter = "(Timeout)|(Node busy)"; } var ignore = new Regex(errorIgnoreFilter); if (model.BMCCfig.CanSubmit && model.BMCCfig.IpmiAccessable) { var ipmitoolPath = (string)WebConfigurationManager.AppSettings["ipmitoolPath"]; var ipmiCommand = string.Format(@" -I lanplus -H {0} -U {1} -P {2} {3}", ipaddress, model.BMCCfig.User, model.BMCCfig.Password, command, "\""); var startInfo = new ProcessStartInfo { UseShellExecute = false, CreateNoWindow = false, WorkingDirectory = ipmitoolPath, RedirectStandardOutput = true, RedirectStandardError = true, FileName = Path.Combine(ipmitoolPath, "ipmitool.exe"), Arguments = ipmiCommand }; bool succss = false; bool isCustomerDefinedCommand = model.RestType == CommandType.CustomerDefined.ToString(); for (int i = 0; i < 3 && !succss; ++i) { try { var process = new Process() { StartInfo = startInfo }; process.Start(); var proc = Process.GetProcessesByName("ipmitool"); if (null != proc) { var t = ipmiCommandTimeout * 3600 * 1000; foreach (var p in proc) { if (!p.WaitForExit(t)) { p.Kill(); model.ErrorMessage = string.Format("Time out {0} min reached, forces to terminat the process for ipmi command [{1}].", ipmiCommandTimeout, command); break; } } } var err = process.StandardError.ReadToEnd(); if (string.IsNullOrEmpty(err)) { var msg = process.StandardOutput.ReadToEnd(); if (isCustomerDefinedCommand && command == model.CustomerDefinedCommand) { model.IpmiResponse = model.FormatCustomerDefinedIpmiResponse(command, msg); this._UpdateSessionModel(model); } else { sb.Append(msg.Replace("\r\n", string.Empty)); } } else { if (ignore.Match(err).Success) { Thread.Sleep(1000); continue; } model.BMCCfig.IpmiAccessable = false; model.ErrorMessage = err; this._UpdateSessionModel(model); } succss = true; } catch (Exception e) { model.ErrorMessage = e.Message; model.Status = ProcessStatus.ShutDown.ToString(); this._UpdateSessionModel(model); _shouldTerminate = true; } } } } return(sb); }