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); }
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"); } }