summaryrefslogtreecommitdiff
path: root/scripts/vrrp/vyatta-show-vrrp.pl
diff options
context:
space:
mode:
authorJohn Southworth <john.southworth@vyatta.com>2012-05-15 11:34:33 -0700
committerJohn Southworth <john.southworth@vyatta.com>2012-05-15 11:34:33 -0700
commit6325118d9aa1ae7890a29c6f211ce456d04d68a9 (patch)
treed6cbbcad7acb4cd01cf520eff96e1641bd6a175f /scripts/vrrp/vyatta-show-vrrp.pl
parent0da3c8a7e5b7506a4b9a7d1bedbd48fd45e7d89d (diff)
downloadvyatta-op-6325118d9aa1ae7890a29c6f211ce456d04d68a9.tar.gz
vyatta-op-6325118d9aa1ae7890a29c6f211ce456d04d68a9.zip
Add Vyatta wrappers for new keepalived output
1. Move show and clear vrrp scripts from vyatta-cfg-system. These belong in vyatta-op. 2. Create templates for new vrrp commands 3. Make show commands go through a perl module so they can be referenced from the webgui.
Diffstat (limited to 'scripts/vrrp/vyatta-show-vrrp.pl')
-rw-r--r--scripts/vrrp/vyatta-show-vrrp.pl114
1 files changed, 114 insertions, 0 deletions
diff --git a/scripts/vrrp/vyatta-show-vrrp.pl b/scripts/vrrp/vyatta-show-vrrp.pl
new file mode 100644
index 0000000..afc490b
--- /dev/null
+++ b/scripts/vrrp/vyatta-show-vrrp.pl
@@ -0,0 +1,114 @@
+#!/usr/bin/env perl
+#
+# **** License ****
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# This code was originally developed by Vyatta, Inc.
+# Portions created by Vyatta are Copyright (C) 2007-2012 Vyatta, Inc.
+# All Rights Reserved.
+#
+# Author: John Southworth
+# Date: May 2012
+# Description: Process operational data from keepalived
+#
+# **** End License ****
+#
+
+use strict;
+use lib "/opt/vyatta/share/perl5";
+
+use Getopt::Long;
+use Vyatta::VRRP::OPMode;
+use Sort::Versions;
+use v5.10;
+
+my ($show, $intf, $vrid);
+GetOptions("show=s" => \$show,
+ "intf=s" => \$intf,
+ "vrid=s" => \$vrid
+ );
+
+sub list_vrrp_intf {
+ my $intf = shift;
+ my $hash = {};
+ process_data $hash;
+ if ($intf) {
+ printf "%s\n", join " ", sort versioncmp keys(%{$hash->{instances}->{$intf}});
+ } else {
+ printf "%s\n", join " ", sort versioncmp keys(%{$hash->{instances}});
+ }
+}
+
+sub list_vrrp_sync_groups {
+ my $hash = {};
+ process_data $hash;
+ printf "%s\n", join " ", sort versioncmp keys(%{$hash->{'sync-groups'}});
+}
+
+sub show_vrrp_summary {
+ my ($intf, $vrid) = @_;
+ my $hash = {};
+ process_data $hash;
+ return if (check_intf($hash, $intf, $vrid));
+ print_summary $hash, $intf, $vrid;
+}
+
+sub show_vrrp_stats {
+ my ($intf, $vrid) = @_;
+ my $hash = {};
+ process_stats $hash;
+ return if (check_intf($hash, $intf, $vrid));
+ print_stats $hash, $intf, $vrid;
+}
+
+sub show_vrrp_detail {
+ my ($intf, $vrid) = @_;
+ my $hash = {};
+ process_data $hash;
+ return if (check_intf($hash, $intf, $vrid));
+ print_detail $hash, $intf, $vrid;
+}
+
+sub show_vrrp_sync_groups {
+ my $sync = shift;
+ my $hash = {};
+ process_data $hash;
+ if ($sync && !exists($hash->{'sync-groups'}->{$sync})){
+ print "Sync-group: $sync does not exist\n";
+ return;
+ }
+ print_sync $hash, $intf;
+}
+
+given ($show) {
+ when ('summary') {
+ show_vrrp_summary $intf, $vrid;
+ }
+ when ('detail') {
+ show_vrrp_detail $intf, $vrid;
+ }
+ when ('stats') {
+ show_vrrp_stats $intf, $vrid;
+ }
+ when ('sync') {
+ show_vrrp_sync_groups $intf;
+ }
+ when ('interface') {
+ list_vrrp_intf $intf;
+ }
+ when ('syncs') {
+ list_vrrp_sync_groups;
+ }
+ default {
+ exit;
+ }
+}
+
+