Example #1
0
        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);
            }
        }
Example #2
0
 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();
         }
     }
 }
Example #3
0
    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();
    }
Example #4
0
    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);
    }
Example #5
0
        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);
        }
Example #6
0
    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;
        }
    }
Example #7
0
        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());
        }
Example #8
0
 private static int GenerateIntId(HeliconZooEngine engine)
 {
     return(engine.name.GetHashCode());
 }