private void ConvertHeliconZooEngineToElement(HeliconZooEngine item, ConfigurationElement engine) { engine.SetAttributeValue("name", item.name); engine.SetAttributeValue("displayName", item.displayName); engine.SetAttributeValue("arguments", item.arguments); engine.SetAttributeValue("fullPath", item.fullPath); engine.SetAttributeValue("arguments", item.arguments); engine.SetAttributeValue("transport", item.transport); engine.SetAttributeValue("protocol", item.protocol); engine.SetAttributeValue("host", item.host); engine.SetAttributeValue("portLower", item.portLower); engine.SetAttributeValue("portUpper", item.portUpper); engine.SetAttributeValue("maxInstances", item.maxInstances); engine.SetAttributeValue("minInstances", item.minInstances); engine.SetAttributeValue("timeLimit", item.timeLimit); engine.SetAttributeValue("gracefulShutdownTimeout", item.gracefulShutdownTimeout); engine.SetAttributeValue("memoryLimit", item.memoryLimit); ConfigurationElementCollection envColl = engine.GetChildElement("environmentVariables").GetCollection(); foreach (HeliconZooEnv env in item.environmentVariables) { ConfigurationElement envElement = envColl.CreateElement(); envElement.SetAttributeValue("name", env.Name); envElement.SetAttributeValue("value", env.Value); envColl.Add(envElement); } }
protected void EngineGrid_OnRowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "EngineEdit") { HeliconZooEngine engine = FindEngineByName((string)e.CommandArgument); if (null != engine) { BindEngineForm(engine); ShowEngineForm(); } } if (e.CommandName == "EngineDisable") { HeliconZooEngine engine = FindEngineByName((string)e.CommandArgument); if (null != engine) { engine.disabled = !engine.disabled; RebindEngines(); } } if (e.CommandName == "EngineDelete") { HeliconZooEngine engine = FindEngineByName((string)e.CommandArgument); if (null != engine) { Dictionary <string, HeliconZooEngine> engines = GetEngines(); engines.Remove(engine.name); RebindEngines(); } } }
protected void ButtonSaveEngine_Click(object sender, EventArgs e) { HeliconZooEngine engine = EngineFromForm(); HeliconZooEngine savedEngine = FindEngineByName(engine.name); Dictionary <string, HeliconZooEngine> engines = GetEngines(); // new user engine or update existing engines[engine.name] = engine; ClearEngineForm(); HideEngineForm(); // rebind grid RebindEngines(); }
private HeliconZooEngine EngineFromForm() { HeliconZooEngine engine = new HeliconZooEngine() { name = EngineName.Text.Trim(), displayName = EngineFriendlyName.Text.Trim(), arguments = EngineArguments.Text.Trim(), fullPath = EngineFullPath.Text.Trim(), transport = EngineTransport.SelectedValue, protocol = EngineProtocol.SelectedValue, portLower = ParseLong(EnginePortLower.Text, -1), portUpper = ParseLong(EnginePortUpper.Text, -1), minInstances = ParseLong(EngineMinInstances.Text, -1), maxInstances = ParseLong(EngineMaxInstances.Text, -1), timeLimit = ParseLong(EngineTimeLimit.Text, -1), gracefulShutdownTimeout = ParseLong(EngineGracefulShutdownTimeout.Text, -1), memoryLimit = ParseLong(EngineMemoryLimit.Text, -1), isUserEngine = true }; // envs List <HeliconZooEnv> tempEnvList = new List <HeliconZooEnv>(); for (int i = 0; i < _envBoxsPair.Length; i++) { EnvBoxPair pair = _envBoxsPair[i]; if (!string.IsNullOrEmpty(pair.Name.Text.Trim()) && !string.IsNullOrEmpty(pair.Value.Text.Trim())) { tempEnvList.Add(new HeliconZooEnv() { Name = pair.Name.Text.Trim(), Value = pair.Value.Text.Trim() }); } } engine.environmentVariables = tempEnvList.ToArray(); return(engine); }
private HeliconZooEngine ConvertElementToHeliconZooEngine(ConfigurationElement item) { HeliconZooEngine result = new HeliconZooEngine(); result.name = (string)item.GetAttributeValue("name"); result.displayName = (string)item.GetAttributeValue("displayName"); result.arguments = (string)item.GetAttributeValue("arguments"); result.fullPath = (string)item.GetAttributeValue("fullPath"); result.arguments = (string)item.GetAttributeValue("arguments"); result.transport = (string)item.GetAttributeValue("transport"); result.protocol = (string)item.GetAttributeValue("protocol"); result.host = (string)item.GetAttributeValue("host"); result.portLower = (long)item.GetAttributeValue("portLower"); result.portUpper = (long)item.GetAttributeValue("portUpper"); result.maxInstances = (long)item.GetAttributeValue("maxInstances"); result.minInstances = (long)item.GetAttributeValue("minInstances"); result.timeLimit = (long)item.GetAttributeValue("timeLimit"); result.gracefulShutdownTimeout = (long)item.GetAttributeValue("gracefulShutdownTimeout"); result.memoryLimit = (long)item.GetAttributeValue("memoryLimit"); List <HeliconZooEnv> envList = new List <HeliconZooEnv>(); ConfigurationElementCollection envColl = item.GetChildElement("environmentVariables").GetCollection(); foreach (ConfigurationElement el in envColl) { envList.Add(ConvertElementToHeliconZooEnv(el)); } result.environmentVariables = envList.ToArray(); // TODO: fix this result.isUserEngine = false; // TODO: disabled return(result); }
private void BindEngineForm(HeliconZooEngine engine) { EngineName.Text = engine.name; EngineFriendlyName.Text = engine.displayName; EngineFullPath.Text = engine.fullPath; EngineArguments.Text = engine.arguments; EngineTransport.Text = engine.transport.ToLower(); EngineProtocol.Text = engine.protocol.ToLower(); EnginePortLower.Text = ToStringClearDeafult(engine.portLower); EnginePortUpper.Text = ToStringClearDeafult(engine.portUpper); EngineMinInstances.Text = ToStringClearDeafult(engine.minInstances); EngineMaxInstances.Text = ToStringClearDeafult(engine.maxInstances); EngineTimeLimit.Text = ToStringClearDeafult(engine.timeLimit); EngineGracefulShutdownTimeout.Text = ToStringClearDeafult(engine.gracefulShutdownTimeout); EngineMemoryLimit.Text = ToStringClearDeafult(engine.memoryLimit); for (int i = 0; i < engine.environmentVariables.Length && i < _envBoxsPair.Length; i++) { HeliconZooEnv env = engine.environmentVariables[i]; _envBoxsPair[i].Name.Text = env.Name; _envBoxsPair[i].Value.Text = env.Value; } }
public HeliconZooEngine[] GetEngines() { // Read applicationHost.config List <HeliconZooEngine> result = new List <HeliconZooEngine>(); using (var srvman = new ServerManager()) { Configuration appConfig = srvman.GetApplicationHostConfiguration(); ConfigurationSection heliconZooServer; try { heliconZooServer = appConfig.GetSection("system.webServer/heliconZooServer"); } catch (Exception) { // heliconZooServer is not found // looks like zoo is not installed return(result.ToArray()); } ConfigurationElement engines = heliconZooServer.GetChildElement("engines"); ConfigurationElementCollection enginesCollection = engines.GetCollection(); //switchboard ConfigurationElement switchboard = heliconZooServer.GetChildElement("switchboard"); ConfigurationElementCollection switchboardCollection = switchboard.GetCollection(); bool switchboardDisabledDefault = true; foreach (ConfigurationElement switchboardElement in switchboardCollection) { if ((string)switchboardElement.GetAttributeValue("name") == "*") { bool isEnabled = GetSwitchBoardValue(switchboardElement); switchboardDisabledDefault = !isEnabled; break; } } //main engines foreach (ConfigurationElement item in enginesCollection) { HeliconZooEngine newItem = ConvertElementToHeliconZooEngine(item); newItem.disabled = switchboardDisabledDefault; result.Add(newItem); } //userEngines ConfigurationElement userEngines = heliconZooServer.GetChildElement("userEngines"); ConfigurationElementCollection userEnginesCollection = userEngines.GetCollection(); foreach (ConfigurationElement item in userEnginesCollection) { HeliconZooEngine newItem = ConvertElementToHeliconZooEngine(item); //remove if exists HeliconZooEngine serverItem = Collection_GetHeliconZooEngineByName(result, newItem.name); if (serverItem != null) { result.Remove(serverItem); } //override settings newItem.isUserEngine = true; newItem.disabled = switchboardDisabledDefault; result.Add(newItem); } //Web console HeliconZooEngine webConsole = new HeliconZooEngine { displayName = "Web console", name = "console" }; result.Add(webConsole); foreach (ConfigurationElement switchboardElement in switchboardCollection) { HeliconZooEngine item = Collection_GetHeliconZooEngineByName(result, (string)switchboardElement.GetAttributeValue("name")); if (item != null) { bool isEnabled = GetSwitchBoardValue(switchboardElement); item.disabled = !isEnabled; } else { //default value //item.disabled = !switchboardEnabledDefaults; } } } return(result.ToArray()); }
private static int GenerateIntId(HeliconZooEngine engine) { return(engine.name.GetHashCode()); }