private void button_RemoveVirtual_Click(object sender, EventArgs e) { System.Windows.Forms.ListBox.SelectedIndexCollection selItems = listBox_VirtualServersUsing.SelectedIndices; if (selItems.Count > 0) { iControl.LocalLBVirtualServerVirtualServerRule[][] rules = new iControl.LocalLBVirtualServerVirtualServerRule[selItems.Count][]; String[] vs_list = new String[selItems.Count]; iRuleInfo iri = (iRuleInfo)m_tn.Tag; for (int i = 0; i < selItems.Count; i++) { vs_list[i] = listBox_VirtualServersUsing.Items[selItems[i]].ToString(); rules[i] = new iControl.LocalLBVirtualServerVirtualServerRule[1]; rules[i][0] = new iControl.LocalLBVirtualServerVirtualServerRule(); rules[i][0].rule_name = iri.rule_name; rules[i][0].priority = 500; } try { Clients.VirtualServer.remove_rule(vs_list, rules); for (int i = 0; i < selItems.Count; i++) { listBox_VirtualServersUsing.Items.RemoveAt(selItems[i]); listBox_VirtualServersNotUsing.Items.Add(vs_list[i]); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error Occurred"); } } }
private void refreshMembershipLTM() { bool bFoundMatch = false; String [] vs_list = Clients.VirtualServer.get_list(); iControl.LocalLBVirtualServerVirtualServerRule [][] rule_lists = Clients.VirtualServer.get_rule(vs_list); iRuleInfo iri = (iRuleInfo)m_tn.Tag; listBox_VirtualServersUsing.Items.Clear(); listBox_VirtualServersNotUsing.Items.Clear(); listBox_VirtualServersUsing.Refresh(); listBox_VirtualServersNotUsing.Refresh(); if (vs_list.Length > 0) { // Loop over virtual servers for (int i = 0; i < rule_lists.Length; i++) { bFoundMatch = false; for (int j = 0; j < rule_lists[i].Length; j++) { // found a match! if (rule_lists[i][j].rule_name.Equals(iri.rule_name)) { listBox_VirtualServersUsing.Items.Add(vs_list[i]); bFoundMatch = true; } } if (!bFoundMatch) { listBox_VirtualServersNotUsing.Items.Add(vs_list[i]); } } } else { //listBox_VirtualServersUsing.Items.Add("No Virtual Servers Found") } // search for pools listBox_Pools.Items.Clear(); listBox_Pools.Refresh(); int matchCount = 0; String [] pool_list = Clients.Pool.get_list(); for (int i = 0; i < pool_list.Length; i++) { if (-1 != iri.rule_details.IndexOf(pool_list[i])) { listBox_Pools.Items.Add(pool_list[i]); matchCount++; } } if (0 == matchCount) { listBox_Pools.Items.Add("*None Found*"); } }
private void refreshDetails() { iRuleInfo iri = (iRuleInfo)m_tn.Tag; this.Text = "iRule '" + iri.rule_name + "' information"; label_Name.Text = iri.rule_name; label_Lines.Text = getNumLines(iri.rule_details).ToString(); label_Chars.Text = iri.rule_details.Length.ToString(); }
private void button_ResetStats_Click(object sender, System.EventArgs e) { iRuleInfo iri = (iRuleInfo)m_tn.Tag; DialogResult dr = MessageBox.Show("Are you sure you want to reset statistics for rule '" + iri.rule_name + "'", "Are you sure?", MessageBoxButtons.YesNo); if (DialogResult.Yes == dr) { Clients.Rule.reset_statistics(new string[] { iri.rule_name }); refreshStatistics(); } }
private void button_ApplyDescription_Click(object sender, EventArgs e) { try { iRuleInfo iri = (iRuleInfo)m_tn.Tag; Clients.Interfaces.LocalLBRule.set_description(new String[] { iri.rule_name }, new String[] { textBox_Description.Text }); m_tn.ToolTipText = textBox_Description.Text; } catch (Exception) { } button_ApplyDescription.Enabled = false; }
private void refreshStatistics() { iRuleInfo iri = (iRuleInfo)m_tn.Tag; if (null != iri) { if (iri.rule_type == iRuleInfo.RuleType.GLOBALLB) { refreshStatisticsGTM(); } else { refreshStatisticsLTM(); } } }
private void refreshMembership() { iRuleInfo iri = (iRuleInfo)m_tn.Tag; if (null != iri) { if (iri.rule_type == iRuleInfo.RuleType.GLOBALLB) { refreshMembershipGTM(); } else { refreshMembershipLTM(); } } }
private void iRuleInfoDialog_Load(object sender, System.EventArgs e) { comboBox_Metric.SelectedIndex = 0; iRuleInfo iri = (iRuleInfo)m_tn.Tag; if (null != iri) { // HACK, until we insert GTM Wideip Membership code if (iri.rule_type == iRuleInfo.RuleType.GLOBALLB) { tabPage_Membership_LTM.Hide(); } } refreshDetails(); refreshStatistics(); refreshMembership(); refreshDescription(); }
private void refreshDescription() { try { iRuleInfo iri = (iRuleInfo)m_tn.Tag; String [] description_list = Clients.Interfaces.LocalLBRule.get_description(new String[] { iri.rule_name }); if ((null != description_list) && (null != description_list[0])) { textBox_Description.Text = description_list[0]; } } catch (Exception) { label_Description.Visible = false; button_ApplyDescription.Visible = false; textBox_Description.Visible = false; } }
private void button_AddVirtual_Click(object sender, EventArgs e) { System.Windows.Forms.ListBox.SelectedIndexCollection selItems = listBox_VirtualServersNotUsing.SelectedIndices; if (selItems.Count > 0) { iControl.LocalLBVirtualServerVirtualServerRule[][] rules = new iControl.LocalLBVirtualServerVirtualServerRule[selItems.Count][]; String[] vs_list = new String[selItems.Count]; iRuleInfo iri = (iRuleInfo)m_tn.Tag; for (int i = 0; i < selItems.Count; i++) { vs_list[i] = listBox_VirtualServersNotUsing.Items[selItems[i]].ToString(); rules[i] = new iControl.LocalLBVirtualServerVirtualServerRule[1]; rules[i][0] = new iControl.LocalLBVirtualServerVirtualServerRule(); rules[i][0].rule_name = iri.rule_name; rules[i][0].priority = 500; // Look for a specified priority in the iRule itself System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("priority\\s+(?<pri>[0-9]+)\\s+"); System.Text.RegularExpressions.Match match = regex.Match(iri.rule_details); if (null != match) { int pri = 500; try { String sPri = match.Groups["pri"].Value; pri = Convert.ToInt32(sPri); } catch (Exception) { } rules[i][0].priority = pri; } } // Query old iRules for selected VIPs (to look for matching priorities) iControl.LocalLBVirtualServerVirtualServerRule[][] existing_rules = Clients.VirtualServer.get_rule(vs_list); for (int i = 0; i < vs_list.Length; i++) { for (int j = 0; j < existing_rules[i].Length; j++) { if (rules[i][0].priority == existing_rules[i][j].priority) { // Increment it and try again... rules[i][0].priority++; j = -1; continue; } } } // Apply the iRules to the selected Virtuals try { Clients.VirtualServer.add_rule(vs_list, rules); for (int i = 0; i < selItems.Count; i++) { listBox_VirtualServersNotUsing.Items.RemoveAt(selItems[i]); listBox_VirtualServersUsing.Items.Add(vs_list[i]); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error Occurred"); } } }
private void refreshStatisticsGTM() { iRuleInfo iri = (iRuleInfo)m_tn.Tag; iControl.GlobalLBRuleRuleStatistics stats = Clients.GlobalLBRule.get_statistics(new string[] { iri.rule_name }); listView_Statistics.Items.Clear(); listView_Statistics.Refresh(); for (int i = 0; i < stats.statistics.Length; i++) { String eventName = ""; long priority = 0; UInt64 aborts = 0; UInt64 avg_cycles = 0; UInt64 failures = 0; UInt64 max_cycles = 0; UInt64 min_cycles = 0; UInt64 total_executions = 0; eventName = stats.statistics[i].event_name; priority = stats.statistics[i].priority; for (int j = 0; j < stats.statistics[i].statistics.Length; j++) { switch (stats.statistics[i].statistics[j].type) { case iControl.CommonStatisticType.STATISTIC_RULE_ABORTS: aborts = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_AVERAGE_CYCLES: avg_cycles = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_FAILURES: failures = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_MAXIMUM_CYCLES: max_cycles = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_MINIMUM_CYCLES: min_cycles = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_TOTAL_EXECUTIONS: total_executions = build64(stats.statistics[i].statistics[j].value); break; } } ListViewItem lvi = new ListViewItem(); lvi.Text = eventName; //lvi.SubItems.Add(eventName); lvi.SubItems.Add(priority.ToString()); lvi.SubItems.Add(total_executions.ToString()); lvi.SubItems.Add(failures.ToString()); lvi.SubItems.Add(aborts.ToString()); lvi.SubItems.Add(min_cycles.ToString()); lvi.SubItems.Add(avg_cycles.ToString()); lvi.SubItems.Add(max_cycles.ToString()); listView_Statistics.Items.Add(lvi); } }
private void refreshStatisticsLTM() { iRuleInfo iri = (iRuleInfo)m_tn.Tag; iControl.LocalLBRuleRuleStatistics stats = Clients.Rule.get_statistics(new string [] { iri.rule_name }); listView_Statistics.Items.Clear(); listView_Statistics.Refresh(); for (int i = 0; i < stats.statistics.Length; i++) { String eventName = ""; long priority = 0; UInt64 aborts = 0; UInt64 avg_cycles = 0; UInt64 failures = 0; UInt64 max_cycles = 0; UInt64 min_cycles = 0; UInt64 total_executions = 0; eventName = stats.statistics[i].event_name; priority = stats.statistics[i].priority; for (int j = 0; j < stats.statistics[i].statistics.Length; j++) { switch (stats.statistics[i].statistics[j].type) { case iControl.CommonStatisticType.STATISTIC_RULE_ABORTS: aborts = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_AVERAGE_CYCLES: avg_cycles = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_FAILURES: failures = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_MAXIMUM_CYCLES: max_cycles = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_MINIMUM_CYCLES: min_cycles = build64(stats.statistics[i].statistics[j].value); break; case iControl.CommonStatisticType.STATISTIC_RULE_TOTAL_EXECUTIONS: total_executions = build64(stats.statistics[i].statistics[j].value); break; } } double dMin = 0; double dAvg = 0; double dMax = 0; String sMin = ""; String sAvg = ""; String sMax = ""; double speedMhz = Convert.ToDouble(textBox_CPUSpeed.Text); UInt64 speed = Convert.ToUInt64(1000000 * speedMhz); switch (comboBox_Metric.SelectedIndex) { case METRIC_CYCLES: { sMin = min_cycles.ToString(); sAvg = avg_cycles.ToString(); sMax = max_cycles.ToString(); } break; case METRIC_RUNTIME: { dMin = Convert.ToDouble(min_cycles) * (1000.0 / speed); dAvg = Convert.ToDouble(avg_cycles) * (1000.0 / speed); dMax = Convert.ToDouble(max_cycles) * (1000.0 / speed); sMin = dMin.ToString("N4") + " ms."; sAvg = dAvg.ToString("N4") + " ms."; sMax = dMax.ToString("N4") + " ms."; } break; case METRIC_CPUUSAGE: { dMin = 100.0 * (Convert.ToDouble(min_cycles) / Convert.ToDouble(speed)); dAvg = 100.0 * (Convert.ToDouble(avg_cycles) / Convert.ToDouble(speed)); dMax = 100.0 * (Convert.ToDouble(max_cycles) / Convert.ToDouble(speed)); sMin = dMin.ToString("N4") + "%"; sAvg = dAvg.ToString("N4") + "%"; sMax = dMax.ToString("N4") + "%"; } break; case METRIC_MAX_REQUESTS: { sMin = "Unknown"; if (0 != min_cycles) { //dMin = Convert.ToDouble(speed) / Convert.ToDouble(min_cycles); //sMin = dMin.ToString("N2"); sMin = Convert.ToInt64(speed / min_cycles).ToString(); } sAvg = "Unknown"; if (0 != avg_cycles) { //dAvg = Convert.ToDouble(speed) / Convert.ToDouble(avg_cycles); //sAvg = dAvg.ToString("N2"); sAvg = Convert.ToInt64(speed / avg_cycles).ToString(); } sMax = "Uknown"; if (0 != max_cycles) { //dMax = Convert.ToDouble(speed) / Convert.ToDouble(max_cycles); //sMax = dMax.ToString("N2"); sMax = Convert.ToInt64(speed / max_cycles).ToString(); } } break; } ListViewItem lvi = new ListViewItem(); lvi.Text = eventName; //lvi.SubItems.Add(eventName); lvi.SubItems.Add(priority.ToString()); lvi.SubItems.Add(total_executions.ToString()); lvi.SubItems.Add(failures.ToString()); lvi.SubItems.Add(aborts.ToString()); lvi.SubItems.Add(sMin); lvi.SubItems.Add(sAvg); lvi.SubItems.Add(sMax); listView_Statistics.Items.Add(lvi); } }