public static void SetEngines(int serviceId, HeliconZooEngine[] userEngines)
        {
            // update applicationHost.config
            HeliconZoo zooServer = new HeliconZoo();
            ServiceProviderProxy.Init(zooServer, serviceId);
            zooServer.SetEngines(userEngines);

            // update Helicon Zoo quotas in Quotas table
            UpdateQuotas(serviceId, userEngines);
        }
Exemplo n.º 2
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();
        }
Exemplo n.º 3
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;
            
        }
Exemplo n.º 4
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);
            }
            
            
        }
Exemplo n.º 5
0
        public void SetEngines(HeliconZooEngine[] userEngines)
        {
            // Write to applicationHost.config

            using (var srvman = new ServerManager())
            {

                Configuration appConfig = srvman.GetApplicationHostConfiguration();

                
                ConfigurationSection heliconZooServer = appConfig.GetSection("system.webServer/heliconZooServer");
                ConfigurationElement engines = heliconZooServer.GetChildElement("userEngines");
                ConfigurationElementCollection enginesCollection = engines.GetCollection();
                enginesCollection.Clear();


                ConfigurationElement switchboard = heliconZooServer.GetChildElement("switchboard");
                ConfigurationElementCollection switchboardCollection = switchboard.GetCollection();
                switchboardCollection.Clear();
                
                
              
                foreach(HeliconZooEngine item in userEngines)
                {
                    if (item.isUserEngine)
                    {
                        ConfigurationElement engine = enginesCollection.CreateElement();
                        ConvertHeliconZooEngineToElement(item, engine);
                        enginesCollection.Add(engine);
                    }

                
                }

                srvman.CommitChanges();
            }
        }
    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;
        }

    }
    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;
    }
Exemplo n.º 8
0
 public void SetEngines(int serviceId, HeliconZooEngine[] userEngines)
 {
     HeliconZooController.SetEngines(serviceId, userEngines);
 }
Exemplo n.º 9
0
 public void SetEngines(HeliconZooEngine[] userEngines)
 {
     ZooProvider.SetEngines(userEngines);
 }
Exemplo n.º 10
0
 /// <remarks/>
 public void SetEnginesAsync(HeliconZooEngine[] userEngines, object userState) {
     if ((this.SetEnginesOperationCompleted == null)) {
         this.SetEnginesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetEnginesOperationCompleted);
     }
     this.InvokeAsync("SetEngines", new object[] {
                 userEngines}, this.SetEnginesOperationCompleted, userState);
 }
Exemplo n.º 11
0
 /// <remarks/>
 public void SetEnginesAsync(HeliconZooEngine[] userEngines) {
     this.SetEnginesAsync(userEngines, null);
 }
Exemplo n.º 12
0
 /// <remarks/>
 public System.IAsyncResult BeginSetEngines(HeliconZooEngine[] userEngines, System.AsyncCallback callback, object asyncState) {
     return this.BeginInvoke("SetEngines", new object[] {
                 userEngines}, callback, asyncState);
 }
Exemplo n.º 13
0
 public void SetEngines(HeliconZooEngine[] userEngines) {
     this.Invoke("SetEngines", new object[] {
                 userEngines});
 }
Exemplo n.º 14
0
 private static int GenerateIntId(HeliconZooEngine engine)
 {
     return engine.name.GetHashCode();
 }
Exemplo n.º 15
0
        private static void UpdateQuotas(int serviceId, HeliconZooEngine[] userEngines)
        {
            List<HeliconZooEngine> updatedEngines = new List<HeliconZooEngine>(userEngines);

            int providerId, groupId;
            DataProvider.GetHeliconZooProviderAndGroup("HeliconZoo", out providerId, out groupId);


            // get existing Helicon Zoo quotas
            List<string> existingQuotas = new List<string>();
            IDataReader reader = DataProvider.GetHeliconZooQuotas(providerId);
            while (reader.Read())
            {
                string quota = (string) reader["QuotaName"];
                if (quota.StartsWith(HeliconZooQuotaPrefix))
                {
                    quota = quota.Substring(HeliconZooQuotaPrefix.Length);
                }
                existingQuotas.Add(quota);
            }

            // sort: engine to remove and add
            List<string> engineNamesToRemove = new List<string>();
            List<HeliconZooEngine> enginesToAdd = new List<HeliconZooEngine>();

            // find engine to remove in existing engines
            foreach (string existingEngineName in existingQuotas)
            {
                if (
                    Array.Find(updatedEngines.ToArray(), engine => engine.name == existingEngineName) == null 
                    &&
                    !engineNamesToRemove.Contains(existingEngineName)
                    )
                {
                    engineNamesToRemove.Add(existingEngineName);
                }
            }


            // find engines to add
            foreach (HeliconZooEngine engine in updatedEngines)
            {
                if (!existingQuotas.Contains(engine.name))
                {
                    enginesToAdd.Add(engine);
                }
            }

            // remove engines
            foreach (string engineName in engineNamesToRemove)
            {
                DataProvider.RemoveHeliconZooQuota(groupId, HeliconZooQuotaPrefix+engineName);
            }

            // add engines
            int order = 0;
            foreach (HeliconZooEngine engine in enginesToAdd)
            {
                int quotaId = GenerateIntId(engine);
                DataProvider.AddHeliconZooQuota(groupId, quotaId, 
                    HeliconZooQuotaPrefix+engine.name, 
                    engine.displayName,
                    existingQuotas.Count + order++);
            }
        }