Beispiel #1
0
        private ParsePoolStats.PoolStatsRootObject GetPoolStats(string name, string deviceName)
        {
            var responseContent = "";

            try
            {
                ICR icr = new ICR(ApiAccount, ApiPassword);
                ParsePoolStats.url url = new ParsePoolStats.url();
                url.resource = url.resource + name + "/stats";
                string resource = url.resource;
                JsonSerializerSettings settings = new JsonSerializerSettings
                {
                    MissingMemberHandling = MissingMemberHandling.Ignore,
                    NullValueHandling     = NullValueHandling.Ignore
                };
                ParsePoolStats.PoolStatsRootObject data = new ParsePoolStats.PoolStatsRootObject();
                IRestResponse response = icr.EstablishConnection(resource, deviceName);
                responseContent = response.Content;
                responseContent = responseContent.Replace("connqAll.ageEdm", "connqAllageEdm");
                responseContent = responseContent.Replace("connqAll.ageEma", "connqAllageEma");
                responseContent = responseContent.Replace("connqAll.ageHead", "connqAllageHead");
                responseContent = responseContent.Replace("connqAll.ageMax", "connqAllageMax");
                responseContent = responseContent.Replace("connqAll.depth", "connqAlldepth");
                responseContent = responseContent.Replace("connqAll.serviced", "connqAllserviced");
                responseContent = responseContent.Replace("connq.ageEdm", "connqageEdm");
                responseContent = responseContent.Replace("connq.ageEma", "connqageEma");
                responseContent = responseContent.Replace("connq.ageHead", "connqageHead");
                responseContent = responseContent.Replace("connq.ageMax", "connqageMax");
                responseContent = responseContent.Replace("connq.depth", "connqdepth");
                responseContent = responseContent.Replace("connq.serviced", "connqserviced");
                responseContent = responseContent.Replace("serverside.bitsIn", "serversidebitsIn");
                responseContent = responseContent.Replace("serverside.bitsOut", "serversidebitsOut");
                responseContent = responseContent.Replace("serverside.curConns", "serversidecurConns");
                responseContent = responseContent.Replace("serverside.maxConns", "serversidemaxConns");
                responseContent = responseContent.Replace("serverside.pktsIn", "serversidepktsIn");
                responseContent = responseContent.Replace("serverside.pktsOut", "serversidepktsOut");
                responseContent = responseContent.Replace("serverside.totConns", "serversidetotConns");
                responseContent = responseContent.Replace("status.availabilityState", "statusavailabilityState");
                responseContent = responseContent.Replace("status.enabledState", "statusenabledState");
                responseContent = responseContent.Replace("status.statusReason", "statusstatusReason");
                int start = responseContent.IndexOf("entries\":{\"h") + "entries\":{\"".Length;
                int end   = responseContent.IndexOf(":{\"nestedStats\"");
                int total = end - start - 1;
                responseContent = responseContent.Remove(start, total);
                responseContent = responseContent.Insert(start, "STATS");

                data = JsonConvert.DeserializeObject <ParsePoolStats.PoolStatsRootObject>(responseContent, settings);
                return(data);
            }
            catch (Exception ex)
            {
                Helper.LogError(ex.Message + "\r\n" + responseContent + "\r\n");
            }
            return(null);
        }
Beispiel #2
0
        public void GetPool(AppPMMEntities Db, string deviceName)
        {
            var responseContent = "";

            try
            {
                ICR icr = new ICR(ApiAccount, ApiPassword);

                IRestResponse response = icr.EstablishConnection("/mgmt/tm/ltm/pool", deviceName);

                responseContent = response.Content;

                //Helper.LogError(responseContent);

                var data = JsonConvert.DeserializeObject <RootPoolObject>(responseContent, new JsonSerializerSettings {
                    MissingMemberHandling = MissingMemberHandling.Ignore, NullValueHandling = NullValueHandling.Ignore
                });
                if (data != null)
                {
                    var pools = data.items.ToList();
                    foreach (var pool in pools)
                    {
                        F5Pool f5Pool = new F5Pool();
                        f5Pool.DeviceName        = deviceName;
                        f5Pool.Name              = pool.name;
                        f5Pool.Monitor           = pool.monitor;
                        f5Pool.LoadBalancingMode = pool.loadBalancingMode;
                        ParsePoolStats.PoolStatsRootObject stats = GetPoolStats(pool.name, deviceName);
                        f5Pool.StatusAvailabilityState = stats.entries.STATS.nestedStats.entries.statusavailabilityState.description;
                        f5Pool.StatusEnabledState      = stats.entries.STATS.nestedStats.entries.statusenabledState.description;
                        f5Pool.StatusStatusReason      = stats.entries.STATS.nestedStats.entries.statusstatusReason.description;
                        f5Pool.CurSessions             = stats.entries.STATS.nestedStats.entries.curSessions.value;
                        f5Pool.TotRequests             = stats.entries.STATS.nestedStats.entries.totRequests.value;
                        Db.F5Pool.Add(f5Pool);

                        Db.SaveChanges();

                        // get pool members
                        GetPoolMemberStats(Db, f5Pool.F5PoolId, pool.name, deviceName);
                    }
                }
            }
            catch (Exception ex)
            {
                Helper.LogError(ex.Message + "\r\n" + responseContent + "\r\n");
            }
        }