diff --git a/.env.example b/.env.example
index 9a4f2e13b..0fc8fd457 100644
--- a/.env.example
+++ b/.env.example
@@ -1,6 +1,92 @@
-MYSQL_PASSWORD=
+OESS_VERSION=2.0.13
+
+
+# Default root password set for installed MySQL Server.
+#
+MYSQL_ROOT_PASSWORD=test
+#
+# Default password set for installed RabbitMQ Server.
+#
+RABBITMQ_DEFAULT_PASS=guest
+
+
+# Authentication details to MySQL Server.
+#
+MYSQL_USER=root
+MYSQL_PASS=test
+MYSQL_HOST=localhost
+MYSQL_PORT=3306
+MYSQL_DATABASE=oess
+
+
+# Authentication details for RabbitMQ Server.
+#
+RABBITMQ_USER=guest
+RABBITMQ_PASS=guest
+RABBITMQ_HOST=rabbitmq
+RABBITMQ_PORT=5672
+RABBITMQ_VHOST=/
+
+
+# Email notifications
+#
+SMTP_FROM_ADDR=oess@localhost
+SMTP_FROM_NAME=OESS Notifier
+SMTP_IMAGE_URL=http://localhost:8080/oess/notification-img
+
+
+# Optional: WebAPI details for GlobalNOC TSDS instance; Is used to
+# store time series data like network statistics for connections.
+#
+# TSDS_USERNAME=
+# TSDS_PASSWORD=
+# TSDS_URL=
+# TSDS_REALM=
+
+
+# OESS password for `admin` user
+#
OESS_PASSWORD=
+#
+# Base OESS URL. Required to properly set frontend URLs
+#
+OESS_BASE_URL=http://localhost:8080/oess
+#
+# Used as ASN for OESS side of all VRF peerings.
+#
+OESS_LOCAL_ASN=55038
+#
+# Southbound interface to network devices. Options:
+# openflow: deprecated
+# vpn-mpls: netconf provisioned l2vpn, l2ccc, l3vpn (Juniper MX)
+# evpn-vxlan: netconf provisioned vxlan (Juniper QFX)
+# nso: nso based southbound
+# nso+vpn-mpls: runs both vpn-mpls and nso southbounds simultaneously
+#
OESS_NETWORK_TYPE=vpn-mpls
-NSO_HOST=
-NSO_PASSWORD=
-NSO_USERNAME=
+
+
+# Authentication details for NETCONF connection to network devices. Is
+# required for vpn-mpls, evpn-vxlan, and nso+vpn-mpls
+# OESS_NETWORK_TYPEs.
+#
+NETCONF_USERNAME=
+NETCONF_PASSWORD=
+#
+# Interval on which OESS evaluates and resolves difference between
+# expected and actual network configuration.
+#
+NETCONF_DIFF_INTERVAL=60
+
+
+# Authentication details for NSO REST API. Is required for nso
+# OESS_NETWORK_TYPEs.
+#
+# NSO_USERNAME=
+# NSO_PASSWORD=
+# NSO_HOST=
+#
+# Interval on which OESS evaluates and resolves difference between
+# expected and actual network configuration.
+#
+# NSO_DIFF_INTERVAL=60
diff --git a/.gitignore b/.gitignore
index 3ecfcc91d..209b04f35 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,6 +40,9 @@ perl-lib/OESS/MYMETA.json
perl-lib/OESS/MYMETA.yml
perl-lib/OESS/lib/OESS/Collector
perl-lib/OESS/lib/OESS/Collector.pm
+perl-lib/OESS/share/scripts/oess-migrate/connection_id_list.csv
+perl-lib/OESS/share/scripts/oess-migrate/shim_interface_mapping.csv
+perl-lib/OESS/share/scripts/oess-migrate/config.json
etc/packer-config/output-virtualbox-iso/
etc/packer-config/packer_cache/
perl-lib/OESS/blib/
@@ -52,3 +55,4 @@ perl-lib/OESS/lib/OESS/t/conf/database.xml
frontend/.htpasswd
*.DS_Store
.env
+.vscode
diff --git a/Dockerfile b/Dockerfile
index d0d55cf59..a1859bd3a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -6,5 +6,8 @@ RUN yum -y install epel-release
RUN yum -y install perl mariadb-server
RUN yum -y install perl-Carp-Always perl-Test-Deep perl-Test-Exception perl-Test-Pod perl-Test-Pod-Coverage perl-Devel-Cover perl-AnyEvent-HTTP
RUN yum -y install perl-OESS oess-core oess-frontend
+
+COPY perl-lib/OESS /OESS
+
RUN chmod 777 /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
diff --git a/Dockerfile.dev b/Dockerfile.dev
index bb1204537..8f9dd1dd7 100644
--- a/Dockerfile.dev
+++ b/Dockerfile.dev
@@ -7,7 +7,7 @@ RUN curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-serve
RUN yum makecache
RUN yum -y install epel-release
RUN yum -y install perl httpd mariadb-server rabbitmq-server
-RUN yum -y install perl-Carp-Always perl-Test-Deep perl-Test-Exception perl-Test-Pod perl-Test-Pod-Coverage perl-Devel-Cover perl-Net-AMQP-RabbitMQ perl-LWP-Protocol-https perl-AnyEvent-HTTP
+RUN yum -y install perl-Carp-Always perl-Test-Deep perl-Test-Exception perl-Test-Pod perl-Test-Pod-Coverage perl-Devel-Cover perl-Net-AMQP-RabbitMQ perl-LWP-Protocol-https perl-AnyEvent-HTTP perl-GRNOC-CLI perl-Text-CSV
RUN yum -y install perl-OESS oess-core oess-frontend yui2
COPY app/mpls/mpls_discovery.pl /usr/bin/mpls_discovery.pl
diff --git a/Makefile b/Makefile
index eeab480a9..ab6197313 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-OESS_VERSION=2.0.13
+OESS_VERSION=2.0.14
OESS_NETWORK=oess
container:
@@ -9,8 +9,14 @@ container:
#
# Allow container to attach to host port via host.docker.internal hostname:
# --add-host=host.docker.internal:host-gateway
+#
+# To support packet captures:
+# --cap-add=NET_RAW
+# --cap-add=NET_ADMIN
+#
dev:
docker run -it \
+ --rm \
--env-file .env \
--publish 8000:80 \
--publish 5672:5672 \
@@ -22,3 +28,7 @@ dev:
documentation:
perl docs/generate-webservice-docs.pl
+
+test:
+ docker build . -f Dockerfile -t oess-test
+ docker run --rm -it -e OESS_TEST_FILES="$(TEST_FILES)" --volume ${PWD}/perl-lib/OESS:/OESS oess-test
diff --git a/app/Makefile b/app/Makefile
index c53a6cf92..90718610c 100644
--- a/app/Makefile
+++ b/app/Makefile
@@ -1,5 +1,5 @@
NAME= oess-core
-VERSION = 2.0.13
+VERSION = 2.0.14
rpm: dist
rpmbuild -ta dist/$(NAME)-$(VERSION).tar.gz
diff --git a/app/oess-core.spec b/app/oess-core.spec
index 4cc7638b6..5110c0bd5 100644
--- a/app/oess-core.spec
+++ b/app/oess-core.spec
@@ -1,5 +1,5 @@
Name: oess-core
-Version: 2.0.13
+Version: 2.0.14
Release: 1%{?dist}
Summary: The core OESS service providers
@@ -20,7 +20,7 @@ Requires: /bin/bash
Requires: /usr/bin/perl
Requires: perl(base), perl(constant), perl(strict), perl(warnings)
-Requires: perl-OESS >= 2.0.13
+Requires: perl-OESS >= 2.0.14
Requires: perl(AnyEvent), perl(AnyEvent::DBus), perl(AnyEvent::RabbitMQ)
Requires: perl(CPAN), perl(CPAN::Shell)
diff --git a/frontend/Makefile b/frontend/Makefile
index c2c43cb53..891961a27 100644
--- a/frontend/Makefile
+++ b/frontend/Makefile
@@ -1,5 +1,5 @@
NAME= oess-frontend
-VERSION = 2.0.13
+VERSION = 2.0.14
rpm: dist
rpmbuild -ta dist/$(NAME)-$(VERSION).tar.gz
diff --git a/frontend/oess-frontend.spec b/frontend/oess-frontend.spec
index 5c962e62b..e3c0bfafd 100644
--- a/frontend/oess-frontend.spec
+++ b/frontend/oess-frontend.spec
@@ -1,5 +1,5 @@
Name: oess-frontend
-Version: 2.0.13
+Version: 2.0.14
Release: 1%{?dist}
Summary: The OESS webservices and user interface
@@ -13,14 +13,14 @@ BuildRequires: perl
BuildRequires: python >= 2.6, python-libs >= 2.6
BuildRequires: python-simplejson
-Requires: oess-core >= 2.0.13
+Requires: oess-core >= 2.0.14
Requires: yui
Requires: httpd, mod_ssl
Requires: nddi-tiles
Requires: perl-Crypt-SSLeay
Requires: xmlsec1, xmlsec1-openssl
-Requires: perl-OESS >= 2.0.13
+Requires: perl-OESS >= 2.0.14
Requires: perl(strict), perl(warnings)
Requires: perl(AnyEvent)
diff --git a/frontend/webservice/circuit.cgi b/frontend/webservice/circuit.cgi
index 08d09d181..4ce79be92 100755
--- a/frontend/webservice/circuit.cgi
+++ b/frontend/webservice/circuit.cgi
@@ -274,11 +274,6 @@ sub provision {
return;
}
- if (@{$args->{endpoint}->{value}} > 2) {
- $method->set_error("Support for Multi-Point Layer 2 Connections is currently disabled. Please contact your OESS administrator for more information.");
- return;
- }
-
# Endpoint: { entity: 'entity name', bandwidth: 0, tag: 100, inner_tag: 100, peerings: [{ version: 4 }] }
foreach my $value (@{$args->{endpoint}->{value}}) {
my $ep;
@@ -509,11 +504,6 @@ sub update {
my $add_endpoints = [];
my $del_endpoints = [];
- if (@{$args->{endpoint}->{value}} > 2) {
- $method->set_error("Support for Multi-Point Layer 2 Connections is currently disabled. Please contact your OESS administrator for more information.");
- return;
- }
-
foreach my $value (@{$args->{endpoint}->{value}}) {
my $ep;
eval{
diff --git a/frontend/webservice/monitoring.cgi b/frontend/webservice/monitoring.cgi
index 8af651224..6dbca29dc 100755
--- a/frontend/webservice/monitoring.cgi
+++ b/frontend/webservice/monitoring.cgi
@@ -36,6 +36,7 @@ use Log::Log4perl;
use OESS::Database;
use OESS::RabbitMQ::Client;
+use OESS::RabbitMQ::Topic qw(fwdctl_switch_topic_for_node);
use GRNOC::WebService;
Log::Log4perl::init('/etc/oess/logging.conf');
@@ -201,7 +202,7 @@ sub get_mpls_node_status{
return $tmp;
}
- $mq->{'topic'} = 'MPLS.FWDCTL.Switch.' . $node->{'mgmt_addr'};
+ $mq->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $node->{'mgmt_addr'}, tcp_port => $node->{'tcp_port'});
my $result = $mq->is_connected();
warn Dumper($result);
$result = int($result->{'results'}->{'connected'});
diff --git a/frontend/www/js_templates/modify_cloud.js b/frontend/www/js_templates/modify_cloud.js
index fb98b692f..147b3dee5 100644
--- a/frontend/www/js_templates/modify_cloud.js
+++ b/frontend/www/js_templates/modify_cloud.js
@@ -34,7 +34,12 @@ class GlobalState extends Component {
let iframe3 = document.getElementById(`endpoints-statistics-iframe-route`);
iframe3.dataset.vrf = this.connection.vrf_id;
- iframe3.src = `${iframe3.dataset.url}&var-table=OESS-L3VPN-${this.connection.vrf_id}.inet.0&from=now-1h&to=now`;
+
+ if (this.connection.endpoints.length == 0 || this.connection.endpoints[0].controller === "nso") {
+ iframe3.src = `${iframe3.dataset.url}&var-table=OESS-VRF-${this.connection.vrf_id}&from=now-1h&to=now`;
+ } else {
+ iframe3.src = `${iframe3.dataset.url}&var-table=OESS-L3VPN-${this.connection.vrf_id}.inet.0&from=now-1h&to=now`;
+ }
this.connection.endpoints.forEach(function(endpoint, eIndex) {
@@ -54,7 +59,7 @@ class GlobalState extends Component {
let peerSelections = document.getElementById('peering-selection');
peerSelections.appendChild(select);
-
+
let statGraph = `
@@ -65,7 +70,7 @@ class GlobalState extends Component {
-
+
`;
@@ -126,7 +131,6 @@ class GlobalState extends Component {
// Named saveCircuit to work with Object built from Layer2 Conns
async saveCircuit() {
- console.log('Connection:', this.connection);
let addNetworkLoadingModal = $('#add-connection-loading');
addNetworkLoadingModal.modal('show');
@@ -266,8 +270,9 @@ function updateStatisticsIFrame() {
iframe.src = `${iframe.dataset.url}&var-node=${iframe.dataset.node}&var-interface=${iframe.dataset.interface}.${iframe.dataset.unit}` + range.value;
let iframe2 = document.getElementById(`endpoints-statistics-iframe-peer-${container.value}`);
- iframe2.src = `${iframe2.dataset.url}&var-node=${iframe2.dataset.node}&var-vrf=OESS-L3VPN-${iframe2.dataset.vrf}&var-peer=${peer.value}` + range.value;
-
- let iframe3 = document.getElementById(`endpoints-statistics-iframe-route`);
- iframe3.src = `${iframe3.dataset.url}&var-table=OESS-L3VPN-${iframe3.dataset.vrf}.inet.0` + range.value;
+ if (iframe2.dataset.controller === "nso") {
+ iframe2.src = `${iframe2.dataset.url}&var-node=${iframe2.dataset.node}&var-vrf=OESS-VRF-${iframe2.dataset.vrf}&var-peer=${peer.value.split('/')[0]}` + range.value;
+ } else {
+ iframe2.src = `${iframe2.dataset.url}&var-node=${iframe2.dataset.node}&var-vrf=OESS-L3VPN-${iframe2.dataset.vrf}&var-peer=${peer.value}` + range.value;
+ }
}
diff --git a/oess.spec b/oess.spec
index 7ac1f0bb5..20594a69d 100644
--- a/oess.spec
+++ b/oess.spec
@@ -1,14 +1,14 @@
Summary: OESS Metapackage
Name: oess
-Version: 2.0.13
+Version: 2.0.14
Release: 1%{?dist}
License: Apache
Group: GRNOC
#Source:
URL: http://globalnoc.iu.edu
Buildroot: %{_tmppath}/%{name}-root
-Requires: oess-core >= 2.0.13
-Requires: oess-frontend >= 2.0.13
+Requires: oess-core >= 2.0.14
+Requires: oess-frontend >= 2.0.14
%description
Package that installs all of the OESS packages
diff --git a/perl-lib/OESS/MANIFEST b/perl-lib/OESS/MANIFEST
index 05e3ff7c3..519080bb2 100644
--- a/perl-lib/OESS/MANIFEST
+++ b/perl-lib/OESS/MANIFEST
@@ -83,7 +83,7 @@ lib/OESS/Webservice.pm
lib/OESS/Workgroup.pm
Makefile.PL
MANIFEST This list of files
-perl-OESS-2.0.13.tar.gz
+perl-OESS-2.0.14.tar.gz
perl-OESS.spec
share/customer-templates/cisco/2900/ios124/template.txt
share/customer-templates/cisco/3700/ios124/template.txt
@@ -147,6 +147,7 @@ share/upgrade/oess-2.0.1-2.0.2
share/upgrade/oess-2.0.10-2.0.11
share/upgrade/oess-2.0.11-2.0.12
share/upgrade/oess-2.0.12-2.0.13
+share/upgrade/oess-2.0.13-2.0.14
share/upgrade/oess-2.0.2-2.0.3
share/upgrade/oess-2.0.3-2.0.4
share/upgrade/oess-2.0.4-2.0.5
diff --git a/perl-lib/OESS/entrypoint.dev.sh b/perl-lib/OESS/entrypoint.dev.sh
index d25a815d6..21aec27b1 100644
--- a/perl-lib/OESS/entrypoint.dev.sh
+++ b/perl-lib/OESS/entrypoint.dev.sh
@@ -37,10 +37,11 @@ sed -i "s/NSO_HOST/$NSO_HOST/" /etc/oess/database.xml
sed -i "s/NSO_PASSWORD/$NSO_PASSWORD/" /etc/oess/database.xml
sed -i "s/NSO_USERNAME/$NSO_USERNAME/" /etc/oess/database.xml
sed -i "s/OESS_LOCAL_ASN/$OESS_LOCAL_ASN/" /etc/oess/database.xml
-sed -i "s/TSDS_URL/$TSDS_URL/" /etc/oess/database.xml
+sed -i "s@TSDS_URL@$TSDS_URL@" /etc/oess/database.xml
sed -i "s/TSDS_PASSWORD/$TSDS_PASSWORD/" /etc/oess/database.xml
sed -i "s/TSDS_USERNAME/$TSDS_USERNAME/" /etc/oess/database.xml
-sed -i "s/TSDS_REALM/$TSDS_REALM/" /etc/oess/database.xml
+sed -i "s@TSDS_REALM@$TSDS_REALM@" /etc/oess/database.xml
+sed -i "s@GRAFANA_URL@$GRAFANA_URL@" /etc/oess/database.xml
sed -i "s/root/$NETCONF_USERNAME/" /etc/oess/.passwd.xml
sed -i "s/test/$NETCONF_PASSWORD/" /etc/oess/.passwd.xml
diff --git a/perl-lib/OESS/entrypoint.sh b/perl-lib/OESS/entrypoint.sh
index 2581d39d2..2400bf6f2 100644
--- a/perl-lib/OESS/entrypoint.sh
+++ b/perl-lib/OESS/entrypoint.sh
@@ -3,8 +3,8 @@
pwd
ls -la
-cp perl-lib/OESS/t/conf/database.xml /etc/oess/database.xml
-cp perl-lib/OESS/t/conf/passwd.xml /etc/oess/.passwd.xml
+cp /OESS/t/conf/database.xml /etc/oess/database.xml
+cp /OESS/t/conf/passwd.xml /etc/oess/.passwd.xml
rm -rf /usr/share/perl5/vendor_perl/OESS
@@ -14,8 +14,16 @@ sleep 3
/usr/bin/mysqladmin -u root password test
+cd /OESS
-cd perl-lib/OESS
-perl Makefile.PL
-make
-cover -test
+if [ -z "$OESS_TEST_FILES" ]; then
+ echo "Running all tests:"
+ perl Makefile.PL
+ make
+ cover -test
+else
+ echo "Running select tests: $OESS_TEST_FILES"
+ perl Makefile.PL
+ make
+ make test TEST_FILES="$OESS_TEST_FILES"
+fi
diff --git a/perl-lib/OESS/lib/OESS/DB/Endpoint.pm b/perl-lib/OESS/lib/OESS/DB/Endpoint.pm
index 90920eeef..18de49db2 100644
--- a/perl-lib/OESS/lib/OESS/DB/Endpoint.pm
+++ b/perl-lib/OESS/lib/OESS/DB/Endpoint.pm
@@ -145,7 +145,7 @@ sub fetch_all {
SELECT circuit_ep.circuit_edge_id AS circuit_ep_id, circuit_ep.circuit_id,
interface.interface_id, interface.name AS interface, interface.operational_state,
interface.description, interface.cloud_interconnect_id, interface.cloud_interconnect_type,
- node.node_id, node.name AS node, node_instantiation.controller,
+ node.node_id, node.name AS node, node.short_name AS short_node_name, node_instantiation.controller,
unit, extern_vlan_id AS tag, inner_tag,
bandwidth, mtu, cloud_account_id, cloud_connection_id
FROM circuit_edge_interface_membership AS circuit_ep
@@ -207,25 +207,18 @@ sub fetch_all {
$q = "
SELECT vrf_ep.vrf_ep_id, vrf_ep.vrf_id,
- entity.entity_id, entity.name AS entity,
interface.interface_id, interface.name AS interface, interface.operational_state,
interface.description, interface.cloud_interconnect_id, interface.cloud_interconnect_type,
- interface_acl.eval_position,
- node.node_id, node.name AS node, node_instantiation.controller,
+ node.node_id, node.name AS node, node.short_name AS short_node_name, node_instantiation.controller,
unit, tag, inner_tag,
bandwidth, mtu, cloud_account_id, cloud_connection_id
FROM vrf_ep
JOIN interface ON interface.interface_id=vrf_ep.interface_id
JOIN node ON node.node_id=interface.node_id
JOIN node_instantiation ON node.node_id=node_instantiation.node_id and node_instantiation.end_epoch=-1
- JOIN interface_acl ON interface_acl.interface_id=interface.interface_id
- LEFT JOIN entity ON entity.entity_id=interface_acl.entity_id
LEFT JOIN cloud_connection_vrf_ep as cloud on cloud.vrf_ep_id=vrf_ep.vrf_ep_id
$where
- AND (vrf_ep.tag >= interface_acl.vlan_start)
- AND (vrf_ep.tag <= interface_acl.vlan_end)
AND vrf_ep.state != 'decom'
- ORDER BY interface_acl.eval_position ASC
";
my $vrf_endpoints = $args->{db}->execute_query($q, $values);
@@ -233,13 +226,28 @@ sub fetch_all {
return (undef, "Couldn't find VRF Endpoints: " . $args->{db}->get_error);
}
- my $lookup = {};
+ my $entity_q = "
+ SELECT entity_id, name
+ FROM entity
+ WHERE entity_id IN (
+ SELECT entity_id
+ FROM interface_acl
+ WHERE interface_id=? AND (vlan_start <= ? AND vlan_end >= ?)
+ )
+ ";
foreach my $e (@$vrf_endpoints) {
- if (!defined $lookup->{$e->{vrf_ep_id}}) {
- $lookup->{$e->{vrf_ep_id}} = 1;
- $e->{type} = 'vrf';
- push @$endpoints, $e;
+ my $entity = $args->{db}->execute_query($entity_q, [
+ $e->{interface_id},
+ $e->{tag},
+ $e->{tag}
+ ]);
+ if (defined $entity && defined $entity->[0]) {
+ $e->{entity_id} = $entity->[0]->{entity_id};
+ $e->{entity} = $entity->[0]->{name};
}
+
+ $e->{type} = 'vrf';
+ push @$endpoints, $e;
}
}
diff --git a/perl-lib/OESS/lib/OESS/DB/Interface.pm b/perl-lib/OESS/lib/OESS/DB/Interface.pm
index 6823ab374..ed2101835 100644
--- a/perl-lib/OESS/lib/OESS/DB/Interface.pm
+++ b/perl-lib/OESS/lib/OESS/DB/Interface.pm
@@ -126,9 +126,15 @@ sub get_interface{
my $db = $params{'db'};
my $interface_name= $params{'interface'};
my $node_name = $params{'node'};
-
- my $interface = $db->execute_query("select interface_id from interface where name=? and node_id=(select node_id from node where name=?)",[$interface_name, $node_name]);
+ my $node_short_name = $params{'short_name'};
+ my $interface;
+ if (defined($node_short_name)) {
+ $interface = $db->execute_query("select interface_id from interface where name=? and node_id=(select node_id from node where short_name=?)",[$interface_name, $node_short_name]);
+ } else {
+ $interface = $db->execute_query("select interface_id from interface where name=? and node_id=(select node_id from node where name=?)",[$interface_name, $node_name]);
+ }
+
if(!defined($interface) || !defined($interface->[0])){
return;
}
diff --git a/perl-lib/OESS/lib/OESS/DB/Node.pm b/perl-lib/OESS/lib/OESS/DB/Node.pm
index d5b0201f7..aeda4072b 100644
--- a/perl-lib/OESS/lib/OESS/DB/Node.pm
+++ b/perl-lib/OESS/lib/OESS/DB/Node.pm
@@ -20,12 +20,16 @@ sub fetch{
my $node_id = $params{'node_id'};
my $node_name = $params{'name'};
+ my $short_name = $params{'short_name'};
my $details;
my $node;
if (defined $node_id) {
$node = $db->execute_query("select * from node join node_instantiation on node.node_id=node_instantiation.node_id where node.node_id=? and node_instantiation.end_epoch=-1", [ $node_id ]);
+ }
+ elsif (defined $short_name) {
+ $node = $db->execute_query("select * from node join node_instantiation on node.node_id=node_instantiation.node_id where node.short_name=? and node_instantiation.end_epoch=-1", [ $short_name ]);
} else {
$node = $db->execute_query("select * from node join node_instantiation on node.node_id=node_instantiation.node_id where node.name=? and node_instantiation.end_epoch=-1", [ $node_name ]);
}
diff --git a/perl-lib/OESS/lib/OESS/Database.pm b/perl-lib/OESS/lib/OESS/Database.pm
index 74c4c4d96..a08a3c9ef 100644
--- a/perl-lib/OESS/lib/OESS/Database.pm
+++ b/perl-lib/OESS/lib/OESS/Database.pm
@@ -31,11 +31,11 @@ OESS::Database - Database Interaction Module
=head1 VERSION
-Version 2.0.13
+Version 2.0.14
=cut
-our $VERSION = '2.0.13';
+our $VERSION = '2.0.14';
=head1 SYNOPSIS
@@ -83,7 +83,7 @@ use Data::Dumper;
use Socket qw( inet_aton inet_ntoa);
-use constant VERSION => '2.0.13';
+use constant VERSION => '2.0.14';
use constant MAX_VLAN_TAG => 4096;
use constant MIN_VLAN_TAG => 1;
use constant OESS_PW_FILE => "/etc/oess/.passwd.xml";
diff --git a/perl-lib/OESS/lib/OESS/Endpoint.pm b/perl-lib/OESS/lib/OESS/Endpoint.pm
index 63cfb7cde..02b4a3a33 100644
--- a/perl-lib/OESS/lib/OESS/Endpoint.pm
+++ b/perl-lib/OESS/lib/OESS/Endpoint.pm
@@ -134,6 +134,7 @@ sub to_hash{
$obj->{'interface'} = $self->{'interface'};
$obj->{'interface_id'} = $self->{'interface_id'};
$obj->{'node'} = $self->{'node'};
+ $obj->{'short_node_name'} = $self->{'short_node_name'};
$obj->{'node_id'} = $self->{'node_id'};
$obj->{'controller'} = $self->{'controller'};
$obj->{'description'} = $self->{'description'};
@@ -198,6 +199,7 @@ sub from_hash{
$self->{'interface'} = $hash->{'interface'};
$self->{'interface_id'} = $hash->{'interface_id'};
$self->{'node'} = $hash->{'node'};
+ $self->{'short_node_name'} = $hash->{'short_node_name'};
$self->{'node_id'} = $hash->{'node_id'};
$self->{'controller'} = $hash->{'controller'};
$self->{'description'} = $hash->{'description'};
@@ -501,6 +503,14 @@ sub node{
return $self->{'node'};
}
+=head2 short_node_name
+
+=cut
+sub short_node_name{
+ my $self = shift;
+ return $self->{'short_node_name'};
+}
+
=head2 node_id
=cut
diff --git a/perl-lib/OESS/lib/OESS/L2Circuit.pm b/perl-lib/OESS/lib/OESS/L2Circuit.pm
index 41457b1b0..38255de4d 100644
--- a/perl-lib/OESS/lib/OESS/L2Circuit.pm
+++ b/perl-lib/OESS/lib/OESS/L2Circuit.pm
@@ -1224,6 +1224,7 @@ NSO L2Connection:
'endpoint_id' => 1,
'interface' => 'GigabitEthernet0/0',
'tag' => 1,
+ 'unit' => 1,
'device' => 'xr0'
},
{
@@ -1231,6 +1232,7 @@ NSO L2Connection:
'endpoint_id' => 2,
'interface' => 'GigabitEthernet0/1',
'tag' => 1,
+ 'unit' => 1,
'device' => 'xr0'
}
]
@@ -1249,20 +1251,20 @@ sub nso_diff {
my $endpoints = $self->endpoints || [];
foreach my $ep (@{$endpoints}) {
- if (!defined $ep_index->{$ep->node}) {
- $diff->{$ep->node} = "";
- $ep_index->{$ep->node} = {};
+ if (!defined $ep_index->{$ep->short_node_name}) {
+ $diff->{$ep->short_node_name} = "";
+ $ep_index->{$ep->short_node_name} = {};
}
- $ep_index->{$ep->node}->{$ep->interface} = $ep;
+ $ep_index->{$ep->short_node_name}->{$ep->interface} = $ep;
}
foreach my $ep (@{$nsoc->{endpoint}}) {
if (!defined $ep_index->{$ep->{device}}->{$ep->{interface}}) {
$diff->{$ep->{device}} = "" if !defined $diff->{$ep->{device}};
- $diff->{$ep->{device}} .= "- $ep->{interface}\n";
- $diff->{$ep->{device}} .= "- Bandwidth: $ep->{bandwidth}\n";
- $diff->{$ep->{device}} .= "- Tag: $ep->{tag}\n";
- $diff->{$ep->{device}} .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
+ $diff->{$ep->{device}} .= "- $ep->{interface}.$ep->{unit}\n";
+ $diff->{$ep->{device}} .= "- Bandwidth: $ep->{bandwidth}\n";
+ $diff->{$ep->{device}} .= "- Tag: $ep->{tag}\n";
+ $diff->{$ep->{device}} .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
next;
}
my $ref_ep = $ep_index->{$ep->{device}}->{$ep->{interface}};
@@ -1274,20 +1276,20 @@ sub nso_diff {
$ok = 0 if $ep->{inner_tag} != $ref_ep->inner_tag;
if (!$ok) {
$diff->{$ep->{device}} = "" if !defined $diff->{$ep->{device}};
- $diff->{$ep->{device}} .= " $ep->{interface}\n";
+ $diff->{$ep->{device}} .= " $ep->{interface}.$ep->{unit}\n";
}
if ($ep->{bandwidth} != $ref_ep->bandwidth) {
- $diff->{$ep->{device}} .= "- Bandwidth: $ep->{bandwidth}\n";
- $diff->{$ep->{device}} .= "+ Bandwidth: $ref_ep->{bandwidth}\n";
+ $diff->{$ep->{device}} .= "- Bandwidth: $ep->{bandwidth}\n";
+ $diff->{$ep->{device}} .= "+ Bandwidth: $ref_ep->{bandwidth}\n";
}
if ($ep->{tag} != $ref_ep->tag) {
- $diff->{$ep->{device}} .= "- Tag: $ep->{tag}\n";
- $diff->{$ep->{device}} .= "+ Tag: $ref_ep->{tag}\n";
+ $diff->{$ep->{device}} .= "- Tag: $ep->{tag}\n";
+ $diff->{$ep->{device}} .= "+ Tag: $ref_ep->{tag}\n";
}
if ($ep->{inner_tag} != $ref_ep->inner_tag) {
- $diff->{$ep->{device}} .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
- $diff->{$ep->{device}} .= "+ Inner Tag: $ref_ep->{inner_tag}\n" if defined $ref_ep->{inner_tag};
+ $diff->{$ep->{device}} .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
+ $diff->{$ep->{device}} .= "+ Inner Tag: $ref_ep->{inner_tag}\n" if defined $ref_ep->{inner_tag};
}
delete $ep_index->{$ep->{device}}->{$ep->{interface}};
@@ -1296,12 +1298,12 @@ sub nso_diff {
foreach my $device_key (keys %{$ep_index}) {
foreach my $ep_key (keys %{$ep_index->{$device_key}}) {
my $ep = $ep_index->{$device_key}->{$ep_key};
- $diff->{$ep->node} = "" if !defined $diff->{$ep->node};
+ $diff->{$ep->short_node_name} = "" if !defined $diff->{$ep->short_node_name};
- $diff->{$ep->node} .= "+ $ep->{interface}\n";
- $diff->{$ep->node} .= "+ Bandwidth: $ep->{bandwidth}\n";
- $diff->{$ep->node} .= "+ Tag: $ep->{tag}\n";
- $diff->{$ep->node} .= "+ Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
+ $diff->{$ep->short_node_name} .= "+ $ep->{interface}.$ep->{unit}\n";
+ $diff->{$ep->short_node_name} .= "+ Bandwidth: $ep->{bandwidth}\n";
+ $diff->{$ep->short_node_name} .= "+ Tag: $ep->{tag}\n";
+ $diff->{$ep->short_node_name} .= "+ Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
}
}
diff --git a/perl-lib/OESS/lib/OESS/MPLS/Device/Juniper/MX.pm b/perl-lib/OESS/lib/OESS/MPLS/Device/Juniper/MX.pm
index 0ef669d72..74054203f 100644
--- a/perl-lib/OESS/lib/OESS/MPLS/Device/Juniper/MX.pm
+++ b/perl-lib/OESS/lib/OESS/MPLS/Device/Juniper/MX.pm
@@ -52,7 +52,7 @@ sub new{
my $self = \%args;
bless $self, $class;
- $self->{'logger'} = Log::Log4perl->get_logger('OESS.MPLS.Device.Juniper.MX.' . $self->{'mgmt_addr'});
+ $self->{'logger'} = Log::Log4perl->get_logger("OESS.MPLS.Device.Juniper.MX.$self->{mgmt_addr}.$self->{tcp_port}");
$self->{'logger'}->info("MPLS Juniper Switch Created: $self->{'mgmt_addr'}");
#TODO: make this automatically figure out the right REV
@@ -1608,6 +1608,7 @@ sub diff {
if ($force_diff) {
$self->{'logger'}->info('Force diff was initiated. Starting installation.');
$self->{'pending_diff'} = 0;
+ $self->{'logger'}->info('configuration: ' . Dumper($configuration));
return $self->_edit_config(config => $configuration);
}
diff --git a/perl-lib/OESS/lib/OESS/MPLS/Discovery.pm b/perl-lib/OESS/lib/OESS/MPLS/Discovery.pm
index b06736b80..58037dbf7 100644
--- a/perl-lib/OESS/lib/OESS/MPLS/Discovery.pm
+++ b/perl-lib/OESS/lib/OESS/MPLS/Discovery.pm
@@ -45,6 +45,7 @@ use GRNOC::RabbitMQ::Method;
use GRNOC::RabbitMQ::Dispatcher;
use OESS::RabbitMQ::Client;
use OESS::RabbitMQ::Dispatcher;
+use OESS::RabbitMQ::Topic qw(discovery_switch_topic_for_node);
use GRNOC::WebService::Client;
use GRNOC::WebService::Regex;
use OESS::Database;
@@ -312,7 +313,7 @@ sub int_handler{
foreach my $node (@{$self->{'db'}->get_current_nodes(type => 'mpls')}) {
$self->{logger}->info("Calling get_interfaces on $node->{name} $node->{mgmt_addr}.");
- $self->{'rmq_client'}->{'topic'} = "MPLS.Discovery.Switch." . $node->{'mgmt_addr'};
+ $self->{'rmq_client'}->{'topic'} = discovery_switch_topic_for_node(mgmt_addr => $node->{'mgmt_addr'}, tcp_port => $node->{'tcp_port'});
my $start = [gettimeofday];
$self->{'rmq_client'}->get_interfaces(
@@ -369,7 +370,7 @@ sub path_handler {
# For each node, get the list of LSPs, and the associated circuits and paths
foreach my $node (@{$nodes}) {
- $self->{'rmq_client'}->{'topic'} = "MPLS.Discovery.Switch." . $node->{'mgmt_addr'};
+ $self->{'rmq_client'}->{'topic'} = discovery_switch_topic_for_node(mgmt_addr => $node->{'mgmt_addr'}, tcp_port => $node->{'tcp_port'});
foreach my $table (MPLS_TABLE, VPLS_TABLE) {
$cv->begin();
@@ -417,8 +418,8 @@ sub isis_handler{
my %nodes;
foreach my $node (@{$self->{'db'}->get_current_nodes(type => 'mpls')}) {
$nodes{$node->{'short_name'}} = {'pending' => 1};
- $self->{'rmq_client'}->{'topic'} = "MPLS.Discovery.Switch." . $node->{'mgmt_addr'};
- my $start = [gettimeofday];
+ $self->{'rmq_client'}->{'topic'} = discovery_switch_topic_for_node(mgmt_addr => $node->{'mgmt_addr'}, tcp_port => $node->{'tcp_port'});
+ my $start = [gettimeofday];
$self->{'rmq_client'}->get_isis_adjacencies( async_callback => $self->handle_response( cb => sub { my $res = shift;
$self->{'logger'}->debug("Total Time for get_isis_adjacencies " . $node->{'mgmt_addr'} . " call: " . tv_interval($start,[gettimeofday]));
$nodes{$node->{'short_name'}} = $res;
@@ -450,7 +451,7 @@ sub device_handler {
foreach my $node (@{$self->{'db'}->get_current_nodes(type => 'mpls')}) {
$self->{logger}->info("Calling get_system_info on $node->{name} $node->{mgmt_addr}.");
- $self->{'rmq_client'}->{'topic'} = "MPLS.Discovery.Switch." . $node->{'mgmt_addr'};
+ $self->{'rmq_client'}->{'topic'} = discovery_switch_topic_for_node(mgmt_addr => $node->{'mgmt_addr'}, tcp_port => $node->{'tcp_port'});
my $start = [gettimeofday];
$self->{'rmq_client'}->get_system_info(async_callback => sub {
@@ -474,7 +475,7 @@ sub vrf_stats_handler{
my $self = shift;
foreach my $node (@{$self->{'db'}->get_current_nodes(type => 'mpls')}) {
- $self->{'rmq_client'}->{'topic'} = "MPLS.Discovery.Switch." . $node->{'mgmt_addr'};
+ $self->{'rmq_client'}->{'topic'} = discovery_switch_topic_for_node(mgmt_addr => $node->{'mgmt_addr'}, tcp_port => $node->{'tcp_port'});
my $start = [gettimeofday];
$self->{'rmq_client'}->get_vrf_stats( async_callback => $self->handle_response( cb => sub {
my $res = shift;
diff --git a/perl-lib/OESS/lib/OESS/MPLS/FWDCTL.pm b/perl-lib/OESS/lib/OESS/MPLS/FWDCTL.pm
index 980398c42..8753ab59c 100644
--- a/perl-lib/OESS/lib/OESS/MPLS/FWDCTL.pm
+++ b/perl-lib/OESS/lib/OESS/MPLS/FWDCTL.pm
@@ -24,6 +24,7 @@ use GRNOC::RabbitMQ::Dispatcher;
use GRNOC::RabbitMQ::Method;
use OESS::RabbitMQ::Client;
use OESS::RabbitMQ::Dispatcher;
+use OESS::RabbitMQ::Topic qw(fwdctl_switch_topic_for_node);
use OESS::DB;
use OESS::DB::Circuit;
@@ -619,7 +620,7 @@ sub run{
$switch = OESS::MPLS::Switch->new( %args );
}')->fork->send_arg( %args )->run("run");
- my $topic = "MPLS.FWDCTL.Switch." . $self->{'node_by_id'}->{$id}->{'mgmt_addr'};
+ my $topic = fwdctl_switch_topic_for_node(mgmt_addr => $self->{'node_by_id'}->{$id}->{'mgmt_addr'}, tcp_port => $self->{'node_by_id'}->{$id}->{'tcp_port'});
$self->{'children'}->{$id}->{'rpc'} = 1;
$self->{'children'}->{$id}->{'pending_diff'} = $node->{'pending_diff'};
@@ -698,10 +699,11 @@ sub update_cache {
# Targeted Cache Update
foreach my $ep (@{$conn->endpoints}) {
my $addr = $self->{node_by_id}->{$ep->node_id}->{mgmt_addr};
+ my $port = $self->{node_by_id}->{$ep->node_id}->{tcp_port};
next if !$addr;
$condvar->begin;
- $self->{fwdctl_events}->{topic} = "MPLS.FWDCTL.Switch.$addr";
+ $self->{fwdctl_events}->{topic} = fwdctl_switch_topic_for_node(mgmt_addr => $addr, tcp_port => $port);
$self->{fwdctl_events}->update_cache(
async_callback => sub {
my $result = shift;
@@ -718,9 +720,10 @@ sub update_cache {
next;
}
my $addr = $self->{'node_by_id'}->{$id}->{'mgmt_addr'};
+ my $port = $self->{'node_by_id'}->{$id}->{'tcp_port'};
$condvar->begin();
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch.$addr";
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $addr, tcp_port => $port);
$self->{'fwdctl_events'}->update_cache(
async_callback => sub {
my $result = shift;
@@ -797,7 +800,7 @@ sub send_message_to_child{
my $method_name = $message->{'action'};
delete $message->{'action'};
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch." . $self->{'node_by_id'}->{$id}->{'mgmt_addr'};
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $self->{'node_by_id'}->{$id}->{'mgmt_addr'}, tcp_port => $self->{'node_by_id'}->{$id}->{'tcp_port'});
$self->{'logger'}->info("Sending message to topic: " . $self->{'fwdctl_events'}->{'topic'} . "." . $method_name);
$self->{'fwdctl_events'}->$method_name( %$message );
@@ -881,8 +884,9 @@ sub addVrf{
my $node_id = $self->{'node_info'}->{$node}->{'id'};
my $node_ip = $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ my $port = $self->{'node_by_id'}->{$node_id}->{'tcp_port'};
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch.$node_ip";
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $node_ip, tcp_port => $port);
$self->{'fwdctl_events'}->remove_vrf(
vrf_id => $vrf_id,
async_callback => sub {
@@ -900,8 +904,9 @@ sub addVrf{
my $node_id = $self->{'node_info'}->{$node}->{'id'};
my $node_ip = $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ my $port = $self->{'node_by_id'}->{$node_id}->{'tcp_port'};
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch.$node_ip";
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $node_ip, tcp_port => $port);
$self->{'fwdctl_events'}->add_vrf(
vrf_id => $vrf_id,
async_callback => sub {
@@ -1043,11 +1048,12 @@ sub modifyVrf {
my $node_id = $self->{node_info}->{$node}->{id};
my $node_ip = $self->{node_by_id}->{$node_id}->{mgmt_addr};
+ my $port = $self->{node_by_id}->{$node_id}->{tcp_port};
$pending->{endpoints} = $self->filter_endpoints($node, \@pend_endpoints);
$previous->{endpoints} = $self->filter_endpoints($node, \@prev_endpoints);
- $self->{fwdctl_events}->{topic} = "MPLS.FWDCTL.Switch.$node_ip";
+ $self->{fwdctl_events}->{topic} = fwdctl_switch_topic_for_node(mgmt_addr => $node_ip, tcp_port => $port);
$self->{fwdctl_events}->modify_vrf(
vrf_id => $vrf_id,
pending => encode_json($pending),
@@ -1142,15 +1148,15 @@ sub delVrf{
my $node_id = $self->{'node_info'}->{$node}->{'id'};
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch." . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'}, tcp_port => $self->{'node_by_id'}->{$node_id}->{'tcp_port'});
$self->{'fwdctl_events'}->remove_vrf(
vrf_id => $vrf_id,
async_callback => sub {
my $res = shift;
if($res->{'results'}->{'status'} != FWDCTL_SUCCESS){
- $self->{'logger'}->error("Switch " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . " reported an error.");
- $err .= "Switch " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . " reported an error. ";
+ $self->{'logger'}->error("Switch " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . "." . $self->{'node_by_id'}->{$node_id}->{'tcp_port'} . " reported an error.");
+ $err .= "Switch " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . "." . $self->{'node_by_id'}->{$node_id}->{'tcp_port'} . " reported an error. ";
}
$cv->end();
});
@@ -1234,8 +1240,9 @@ sub addVlan{
foreach my $node (keys %nodes){
my $node_id = $self->{'node_info'}->{$node}->{'id'};
my $node_addr = $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ my $port = $self->{'node_by_id'}->{$node_id}->{'tcp_port'};
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch." . $node_addr;
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $node_addr, tcp_port => $port);
$self->{'fwdctl_events'}->remove_vlan(circuit_id => $circuit_id,
async_callback => sub {
$self->{'logger'}->error("Removed MPLS circuit from $node_addr.");
@@ -1255,15 +1262,15 @@ sub addVlan{
my $node_id = $self->{'node_info'}->{$node}->{'id'};
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch." . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'}, tcp_port => $self->{'node_by_id'}->{$node_id}->{'tcp_port'});
$self->{'fwdctl_events'}->add_vlan(
circuit_id => $circuit_id,
async_callback => sub {
my $res = shift;
if($res->{'results'}->{'status'} != FWDCTL_SUCCESS){
- $self->{'logger'}->error("Switch " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . " reported an error.");
- $err .= "Switch : " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . " reported an error";
+ $self->{'logger'}->error("Switch " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . "." . $self->{'node_by_id'}->{$node_id}->{'tcp_port'} . " reported an error.");
+ $err .= "Switch : " . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'} . "." . $self->{'node_by_id'}->{$node_id}->{'tcp_port'} . " reported an error";
}
$cv->end();
});
@@ -1329,13 +1336,14 @@ sub modifyVlan {
my $node_id = $self->{node_info}->{$node}->{id};
my $node_ip = $self->{node_by_id}->{$node_id}->{mgmt_addr};
+ my $port = $self->{node_by_id}->{$node_id}->{tcp_port};
$pending->{endpoints} = $self->filter_endpoints($node, \@pend_endpoints);
$pending->{site_id} = $self->determine_site_id($node, \@pend_endpoints);
$previous->{endpoints} = $self->filter_endpoints($node, \@prev_endpoints);
$previous->{site_id} = $self->determine_site_id($node, \@prev_endpoints);
- $self->{fwdctl_events}->{topic} = "MPLS.FWDCTL.Switch.$node_ip";
+ $self->{fwdctl_events}->{topic} = fwdctl_switch_topic_for_node(mgmt_addr => $node_ip, tcp_port => $port);
$self->{fwdctl_events}->modify_vlan(
circuit_id => $circuit_id,
pending => encode_json($pending),
@@ -1416,10 +1424,11 @@ sub deleteVlan{
my $node_id = $self->{'node_info'}->{$node}->{'id'};
my $node_addr = $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ my $port = $self->{'node_by_id'}->{$node_id}->{'tcp_port'};
$self->{'logger'}->info("Sending deleteVLAN to child: " . $node_addr);
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch." . $node_addr;
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $node_addr, tcp_port => $port);
$self->{'fwdctl_events'}->remove_vlan(
circuit_id => $circuit_id,
async_callback => sub {
@@ -1467,7 +1476,7 @@ sub diff {
$self->{'children'}->{$node_id}->{'pending_diff'} = PENDING_DIFF_NONE;
}
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch." . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'}, tcp_port => $self->{'node_by_id'}->{$node_id}->{'tcp_port'});
$self->{'fwdctl_events'}->diff(
force_diff => $force_diff,
async_callback => sub {
@@ -1530,7 +1539,7 @@ sub get_diff_text {
return &$error_cb($err);
}
- $self->{'fwdctl_events'}->{'topic'} = "MPLS.FWDCTL.Switch." . $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'};
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $self->{'node_by_id'}->{$node_id}->{'mgmt_addr'}, tcp_port => $self->{'node_by_id'}->{$node_id}->{'tcp_port'});
$self->{'fwdctl_events'}->get_diff_text(
async_callback => sub {
my $response = shift;
@@ -1695,7 +1704,7 @@ sub save_mpls_nodes_status {
my $nodes = $self->{'db'}->get_current_nodes(type => 'mpls');
foreach my $node (@{$nodes}) {
- $self->{'fwdctl_events'}->{'topic'} = 'MPLS.FWDCTL.Switch.' . $node->{'mgmt_addr'};
+ $self->{'fwdctl_events'}->{'topic'} = fwdctl_switch_topic_for_node(mgmt_addr => $node->{'mgmt_addr'}, tcp_port => $node->{'tcp_port'});
$self->{'fwdctl_events'}->is_connected(
async_callback => sub {
diff --git a/perl-lib/OESS/lib/OESS/MPLS/Switch.pm b/perl-lib/OESS/lib/OESS/MPLS/Switch.pm
index df3c14a37..7ae5e8cfa 100644
--- a/perl-lib/OESS/lib/OESS/MPLS/Switch.pm
+++ b/perl-lib/OESS/lib/OESS/MPLS/Switch.pm
@@ -70,7 +70,7 @@ sub new {
$self->{'topic'} = "MPLS.FWDCTL.Switch";
}
- my $topic = $self->{'topic'} . "." . $self->{'node'}->{'mgmt_addr'};
+ my $topic = $self->{'topic'} . "." . $self->{'node'}->{'mgmt_addr'} . "." . $self->{'node'}->{'tcp_port'};
$self->{'logger'}->error("Listening to topic: " . $topic);
my $dispatcher = GRNOC::RabbitMQ::Dispatcher->new( host => $args{'rabbitMQ_host'},
diff --git a/perl-lib/OESS/lib/OESS/NSO/Client.pm b/perl-lib/OESS/lib/OESS/NSO/Client.pm
index 509582511..389b19390 100644
--- a/perl-lib/OESS/lib/OESS/NSO/Client.pm
+++ b/perl-lib/OESS/lib/OESS/NSO/Client.pm
@@ -68,7 +68,7 @@ sub create_l2connection {
my $obj = {
endpoint_id => $ep->circuit_ep_id,
bandwidth => $ep->bandwidth,
- device => $ep->node,
+ device => $ep->short_node_name,
interface => $ep->interface,
unit => $ep->unit,
tag => $ep->tag
@@ -155,7 +155,7 @@ sub edit_l2connection {
my $obj = {
endpoint_id => $ep->circuit_ep_id,
bandwidth => $ep->bandwidth,
- device => $ep->node,
+ device => $ep->short_node_name,
interface => $ep->interface,
unit => $ep->unit,
tag => $ep->tag
@@ -307,7 +307,7 @@ sub create_l3connection {
my $obj = {
endpoint_id => $ep->vrf_endpoint_id,
bandwidth => $ep->bandwidth,
- device => $ep->node,
+ device => $ep->short_node_name,
interface => $ep->interface,
unit => $ep->unit,
tag => $ep->tag,
@@ -331,6 +331,9 @@ sub create_l3connection {
md5_key => $peer->md5_key,
ip_version => $peer->ip_version
};
+ if (defined $ep->cloud_interconnect_type && $ep->cloud_interconnect_type eq 'gcp-partner-interconnect') {
+ $peer_obj->{ebgp_multihop_ttl} = 4;
+ }
push @{$obj->{peer}}, $peer_obj;
}
@@ -413,7 +416,7 @@ sub edit_l3connection {
my $obj = {
endpoint_id => $ep->vrf_endpoint_id,
bandwidth => $ep->bandwidth,
- device => $ep->node,
+ device => $ep->short_node_name,
interface => $ep->interface,
unit => $ep->unit,
tag => $ep->tag,
@@ -437,6 +440,9 @@ sub edit_l3connection {
md5_key => $peer->md5_key,
ip_version => $peer->ip_version
};
+ if (defined $ep->cloud_interconnect_type && $ep->cloud_interconnect_type eq 'gcp-partner-interconnect') {
+ $peer_obj->{ebgp_multihop_ttl} = 4;
+ }
push @{$obj->{peer}}, $peer_obj;
}
@@ -534,30 +540,51 @@ Returns:
=cut
sub get_backbones {
my $self = shift;
+ my $sub = shift;
- my $backbones;
- eval {
- my $res = $self->{www}->get(
- $self->{config_obj}->nso_host . "/restconf/data/tailf-ncs:services/backbone:backbone/",
- 'Content-type' => 'application/yang-data+json'
- );
- if ($res->code >= 400) {
- die "HTTP Code: " . $res->code . " HTTP Content: " . $res->content;
- }
- if ($res->content eq '') { # Empty payload indicates success
- $backbones = [];
- } else {
- my $result = decode_json($res->content);
- my $err = $self->get_json_errors($result);
- die $err if defined $err;
- $backbones = $result->{"backbone:backbone"};
+ my $username = $self->{config_obj}->nso_username;
+ my $password = $self->{config_obj}->nso_password;
+
+ my $userpass = "$username:$password";
+ $userpass = Encode::encode("UTF-8", "$username:$password");
+
+ my $credentials = MIME::Base64::encode($userpass, '');
+
+ http_request(
+ GET => $self->{config_obj}->nso_host . "/restconf/data/tailf-ncs:services/backbone:backbone/",
+ headers => {
+ 'content-type' => 'application/yang-data+json',
+ 'authorization' => "Basic $credentials",
+ 'www-authenticate' => 'Basic realm="restconf", charset="UTF-8"',
+ },
+ sub {
+ my ($body, $hdr) = @_;
+
+ my $response;
+
+ if ($hdr->{Status} >= 400) {
+ &$sub($response, "HTTP Code: $hdr->{Status} HTTP Content: $body");
+ return;
+ }
+
+ if ($body eq '') {
+ $response = [];
+ } else {
+ my $result = eval {
+ my $res = decode_json($body);
+ my $err = $self->get_json_errors($res);
+ die $err if defined $err;
+ return $res;
+ };
+ if ($@) {
+ &$sub($response, "$@");
+ return;
+ }
+ $response = $result->{'backbone:backbone'};
+ }
+ &$sub($response, undef);
}
- };
- if ($@) {
- my $err = $@;
- return (undef, $err);
- }
- return ($backbones, undef);
+ );
}
=head2 get_vrf_statistics
@@ -637,13 +664,21 @@ sub get_vrf_statistics {
sub {
my ($body, $hdr) = @_;
- my $response = [];
+ my $response;
- # TODO add eval
- my $result = decode_json($body);
- my $err = $self->get_json_errors($result);
- if (defined $err) {
- &$sub($response, $err);
+ if ($hdr->{Status} >= 400) {
+ &$sub($response, "HTTP Code: $hdr->{Status} HTTP Content: $body");
+ return;
+ }
+
+ my $result = eval {
+ my $res = decode_json($body);
+ my $err = $self->get_json_errors($res);
+ die $err if defined $err;
+ return $res;
+ };
+ if ($@) {
+ &$sub($response, "$@");
return;
}
@@ -651,8 +686,10 @@ sub get_vrf_statistics {
# xml tag and ending cli prompt. This results in an XML
# encoded string wrapped in the Response tag.
my $raw_response = $result->{"tailf-ned-cisco-ios-xr-stats:output"}->{"result"};
- $raw_response =~ s/^.*
.*\z/<\/Response>/s;
+ $raw_response =~ s/^(.|\s)*?//g; # Remove xml document declarations
+ $raw_response =~ s/RP.*\#\z//; # Strip CLI Prompt
+ $raw_response = "" . $raw_response . ""; # Wrap all tags in single tag
# Parse XMl string and extract statistics
my $dom;
@@ -670,11 +707,11 @@ sub get_vrf_statistics {
my $instance = undef;
foreach my $context ($instances->get_nodelist) {
- my $instance_name = $context->findvalue('//Instance/Naming/InstanceName');
+ my $instance_name = $context->findvalue('./Naming/InstanceName');
$instance_name =~ s/\s+//g;
next if $instance_name ne 'default';
- my $vrfs = $context->findnodes('//Instance/InstanceActive/VRFTable/VRF');
+ my $vrfs = $context->findnodes('./InstanceActive/VRFTable/VRF');
foreach my $context ($vrfs->get_nodelist) {
my $ok = $context->exists('./Naming/VRFName');
@@ -820,19 +857,24 @@ sub get_platform {
sub {
my ($body, $hdr) = @_;
- my $response = [];
+ my $response;
- eval {
- my $result = decode_json($body);
- my $err = $self->get_json_errors($result);
- if (defined $err) {
- &$sub($result, $err);
- }
- &$sub($result->{'tailf-ncs:platform'}, $err);
+ if ($hdr->{Status} >= 400) {
+ &$sub($response, "HTTP Code: $hdr->{Status} HTTP Content: $body");
+ return;
+ }
+
+ my $result = eval {
+ my $res = decode_json($body);
+ my $err = $self->get_json_errors($res);
+ die $err if defined $err;
+ return $res;
};
if ($@) {
- &$sub(undef, $@);
+ &$sub($response, "$@");
+ return;
}
+ &$sub($result->{'tailf-ncs:platform'}, undef);
}
);
}
@@ -895,19 +937,24 @@ sub get_interfaces {
sub {
my ($body, $hdr) = @_;
- my $response = [];
+ my $response;
- eval {
- my $result = decode_json($body);
- my $err = $self->get_json_errors($result);
- if (defined $err) {
- &$sub($result, $err);
- }
- &$sub($result->{'tailf-ned-cisco-ios-xr:interface'}, $err);
+ if ($hdr->{Status} >= 400) {
+ &$sub($response, "HTTP Code: $hdr->{Status} HTTP Content: $body");
+ return;
+ }
+
+ my $result = eval {
+ my $res = decode_json($body);
+ my $err = $self->get_json_errors($res);
+ die $err if defined $err;
+ return $res;
};
if ($@) {
- &$sub(undef, $@);
+ &$sub($response, "$@");
+ return;
}
+ &$sub($result->{'tailf-ned-cisco-ios-xr:interface'}, undef);
}
);
}
diff --git a/perl-lib/OESS/lib/OESS/NSO/ClientStub.pm b/perl-lib/OESS/lib/OESS/NSO/ClientStub.pm
index b9f50c995..8182b7db6 100644
--- a/perl-lib/OESS/lib/OESS/NSO/ClientStub.pm
+++ b/perl-lib/OESS/lib/OESS/NSO/ClientStub.pm
@@ -84,6 +84,7 @@ sub get_l2connections {
'endpoint_id' => 1,
'interface' => 'GigabitEthernet0/0',
'tag' => 1,
+ 'unit' => 1,
'device' => 'xr0'
},
{
@@ -91,6 +92,7 @@ sub get_l2connections {
'endpoint_id' => 2,
'interface' => 'GigabitEthernet0/1',
'tag' => 1,
+ 'unit' => 1,
'device' => 'xr0'
}
],
@@ -200,9 +202,10 @@ sub get_l3connections {
"ce_id" => 1,
"remote_ce_id" => 2
},
- "device" => "Node 11",
+ "device" => "N11",
"interface" => "e15/6",
"tag" => 300,
+ "unit" => 300,
"bandwidth" => 200,
"peer" => [
{
@@ -226,6 +229,7 @@ sub get_l3connections {
"device" => "xr1",
"interface" => "GigabitEthernet0/1",
"tag" => 300,
+ "unit" => 300,
"bandwidth" => 100,
"peer" => [
{
diff --git a/perl-lib/OESS/lib/OESS/NSO/Discovery.pm b/perl-lib/OESS/lib/OESS/NSO/Discovery.pm
index aabb95338..e5d04f23a 100644
--- a/perl-lib/OESS/lib/OESS/NSO/Discovery.pm
+++ b/perl-lib/OESS/lib/OESS/NSO/Discovery.pm
@@ -22,7 +22,7 @@ use OESS::RabbitMQ::Dispatcher;
use constant MAX_TSDS_MESSAGES => 30;
use constant TSDS_RIB_TYPE => 'rib_table';
use constant TSDS_PEER_TYPE => 'bgp_peer';
-use constant VRF_STATS_INTERVAL => 60;
+use constant VRF_STATS_INTERVAL => 240;
=head1 OESS::NSO::Discovery
@@ -62,15 +62,6 @@ sub new {
return $self;
}
-=head2 connection_handler
-
-=cut
-sub connection_handler {
- my $self = shift;
-
- return 1;
-}
-
=head2 fetch_platform
=cut
@@ -95,6 +86,8 @@ sub fetch_platform {
if (!defined $device) {
warn "Couldn't find node $result->{name}.";
$self->{logger}->error("Couldn't find node $result->{name}.");
+ $self->{db}->rollback;
+ next;
}
$device->model($result->{model});
@@ -111,7 +104,7 @@ sub fetch_platform {
$cv->begin;
$self->{nso}->get_platform(
- $node->{name},
+ $node->{short_name},
sub {
my ($result, $err) = @_;
if (defined $err) {
@@ -146,8 +139,18 @@ sub fetch_interfaces {
sub {
my $cv = shift;
- my $types = ["Bundle-Ether", "GigabitEthernet", "TenGigE", "FortyGigE", "HundredGigE", "FourHundredGigE"];
- my $ports = [];
+ my $types = ["Bundle-Ether", "GigabitEthernet", "TenGigE", "FortyGigE", "HundredGigE", "FourHundredGigE"];
+ my $ports = [];
+ # TODO Get negotiated interface capacity/speed via NSO; Required for correct Bundle-Ether capacity/speed
+ # if not set via device configuration.
+ my $default_speeds = {
+ "Bundle-Ether" => 10000,
+ "GigabitEthernet" => 1000,
+ "TenGigE" => 10000,
+ "FortyGigE" => 40000,
+ "HundredGigE" => 100000,
+ "FourHundredGigE" => 400000,
+ };
foreach my $key (keys %{$self->{nodes}}) {
my $node = $self->{nodes}->{$key};
@@ -157,10 +160,11 @@ sub fetch_interfaces {
foreach my $type (@$types) {
next if !defined $result->{$type};
+ my $default_speed = $default_speeds->{$type};
foreach my $port (@{$result->{$type}}) {
my $port_info = {
admin_state => (exists $port->{shutdown}) ? 'down' : 'up',
- bandwidth => (exists $port->{speed}) ? $port->{speed} : 1000,
+ bandwidth => (exists $port->{speed}) ? $port->{speed} : $default_speed,
description => (exists $port->{description}) ? $port->{description} : '',
mtu => (exists $port->{mtu}) ? $port->{mtu} : 0,
name => $type . $port->{id},
@@ -177,6 +181,7 @@ sub fetch_interfaces {
my $port = new OESS::Interface(db => $self->{db}, node => $data->{node}, name => $data->{name});
if (defined $port) {
$port->admin_state($data->{admin_state});
+ $port->operational_state($data->{admin_state}); # Using admin_state as best guess for now
$port->bandwidth($data->{bandwidth});
$port->description($data->{description});
$port->mtu($data->{mtu});
@@ -202,6 +207,7 @@ sub fetch_interfaces {
}
}
$self->{db}->commit;
+ $self->{logger}->info("Interfaces fetched from NSO.");
$cv->send;
}
@@ -211,7 +217,7 @@ sub fetch_interfaces {
$cv->begin;
$self->{nso}->get_interfaces(
- $node->{name},
+ $node->{short_name},
sub {
my ($result, $err) = @_;
if (defined $err) {
@@ -225,8 +231,6 @@ sub fetch_interfaces {
);
}
$cv->end;
-
- $self->{logger}->info("Interfaces fetched from NSO.");
}
=head2 link_handler
@@ -235,104 +239,70 @@ sub fetch_interfaces {
sub link_handler {
my $self = shift;
- # lookup links name and put into index
- my ($links, $links_err) = OESS::DB::Link::fetch_all(db => $self->{db}, controller => 'nso');
-
- my $links_index = {};
- foreach my $link (@$links) {
- $links_index->{$link->{name}} = $link;
- }
# get links from nso
- my ($backbones, $err) = $self->{nso}->get_backbones();
- if (defined $err) {
- $self->{logger}->error($err);
- return;
- }
+ $self->{nso}->get_backbones(sub {
+ my ($backbones, $err) = @_;
+ if (defined $err) {
+ $self->{logger}->error($err);
+ return;
+ }
- # lookup nso links in index
- foreach my $bb (@$backbones) {
+ # lookup links name and put into index
+ my ($links, $links_err) = OESS::DB::Link::fetch_all(db => $self->{db}, controller => 'nso');
- my $n = (defined $bb->{summary}->{endpoint}) ? scalar @{$bb->{summary}->{endpoint}} : 0;
- if ($n != 2) {
- $self->{logger}->error("Couldn't process link $bb->{name}. Got $n endpoints but only expected 2.");
- next;
+ my $links_index = {};
+ foreach my $link (@$links) {
+ $links_index->{$link->{name}} = $link;
}
- # Lookup interface ids of backbone edges
- my $eps = [];
- foreach my $ep (@{$bb->{summary}->{endpoint}}) {
- my $id = OESS::DB::Interface::get_interface(
- db => $self->{db},
- interface => $ep->{'if-full'},
- node => $ep->{'device'},
- );
- if (!defined $id) {
- $self->{logger}->warn("Couldn't find interface for $ep->{'device'} - $ep->{'if-full'} in database.");
+ # lookup nso links in index
+ foreach my $bb (@$backbones) {
+ my $n = (defined $bb->{summary}->{endpoint}) ? scalar @{$bb->{summary}->{endpoint}} : 0;
+ if ($n != 2) {
+ $self->{logger}->error("Couldn't process link $bb->{name}. Got $n endpoints but only expected 2.");
next;
}
- push @$eps, { id => $id, ip => $ep->{'ipv4-address'} };
- }
- if (@$eps != 2) {
- $self->{logger}->error("Couldn't sync link $bb->{name} due to interface lookup errors.");
- next;
- }
- # We assume admin-state represents both status and
- # link-state. This is likely a bad assumption.
- if ($bb->{'admin-state'} eq 'in-service') {
- $bb->{link_state} = 'active';
- $bb->{status} = 'up';
- } else {
- $bb->{link_state} = 'available';
- $bb->{status} = 'down';
- }
-
- # if !exists create
- if (!defined $links_index->{$bb->{name}}) {
- $self->{logger}->info("Creating link $bb->{name}.");
-
- my ($link_id, $link_err) = OESS::DB::Link::create(
- db => $self->{db},
- model => {
- name => $bb->{name},
- status => $bb->{status},
- metric => 1,
- interface_a_id => $eps->[0]->{id},
- ip_a => $eps->[0]->{ip},
- interface_z_id => $eps->[1]->{id},
- ip_z => $eps->[1]->{ip},
+ # Lookup interface ids of backbone edges
+ my $eps = [];
+ foreach my $ep (@{$bb->{summary}->{endpoint}}) {
+ my $id = OESS::DB::Interface::get_interface(
+ db => $self->{db},
+ interface => $ep->{'if-full'},
+ short_name => $ep->{'device'},
+ );
+ if (!defined $id) {
+ $self->{logger}->warn("Couldn't find interface for $ep->{'device'} - $ep->{'if-full'} in database.");
+ next;
}
- );
- $self->{logger}->error($link_err) if defined $link_err;
- }
- # el update if interfaces changed
- else {
- my $link = $links_index->{$bb->{name}};
-
- my $interfaces_changed = 1;
- if ($eps->[0]->{id} == $link->{interface_a_id} && $eps->[1]->{id} == $link->{interface_z_id}) {
- $interfaces_changed = 0;
+ push @$eps, { id => $id, ip => $ep->{'ipv4-address'} };
+ }
+ if (@$eps != 2) {
+ $self->{logger}->error("Couldn't sync link $bb->{name} due to interface lookup errors.");
+ next;
}
- if ($eps->[0]->{id} == $link->{interface_z_id} && $eps->[1]->{id} == $link->{interface_a_id}) {
- $interfaces_changed = 0;
+
+ # We assume admin-state represents both status and
+ # link-state. This is likely a bad assumption.
+ if ($bb->{'admin-state'} eq 'in-service') {
+ $bb->{link_state} = 'active';
+ $bb->{status} = 'up';
+ } else {
+ $bb->{link_state} = 'available';
+ $bb->{status} = 'down';
}
- my $state_changed = ($bb->{link_state} ne $link->{link_state}) ? 1 : 0;
- my $status_changed = ($bb->{status} ne $link->{status}) ? 1 : 0;
-
- if ($interfaces_changed || $state_changed || $status_changed) {
- my $msg = "Updating link $bb->{name}:";
- $msg .= " interface changed." if $interfaces_changed;
- $msg .= " state changed." if $state_changed;
- $msg .= " status changed." if $status_changed;
- $self->{logger}->info($msg);
-
- my ($link_id, $link_err) = OESS::DB::Link::update(
- db => $self->{db},
- link => {
- link_id => $link->{link_id},
- link_state => $bb->{link_state},
- status => $bb->{status},
+
+ # if !exists create
+ if (!defined $links_index->{$bb->{name}}) {
+ $self->{logger}->info("Creating link $bb->{name}.");
+
+ my ($link_id, $link_err) = OESS::DB::Link::create(
+ db => $self->{db},
+ model => {
+ name => $bb->{name},
+ status => $bb->{status},
+ metric => 1,
interface_a_id => $eps->[0]->{id},
ip_a => $eps->[0]->{ip},
interface_z_id => $eps->[1]->{id},
@@ -341,32 +311,70 @@ sub link_handler {
);
$self->{logger}->error($link_err) if defined $link_err;
}
+ # el update if interfaces changed
+ else {
+ my $link = $links_index->{$bb->{name}};
+
+ my $interfaces_changed = 1;
+ if ($eps->[0]->{id} == $link->{interface_a_id} && $eps->[1]->{id} == $link->{interface_z_id}) {
+ $interfaces_changed = 0;
+ }
+ if ($eps->[0]->{id} == $link->{interface_z_id} && $eps->[1]->{id} == $link->{interface_a_id}) {
+ $interfaces_changed = 0;
+ }
+ my $state_changed = ($bb->{link_state} ne $link->{link_state}) ? 1 : 0;
+ my $status_changed = ($bb->{status} ne $link->{status}) ? 1 : 0;
+
+ if ($interfaces_changed || $state_changed || $status_changed) {
+ my $msg = "Updating link $bb->{name}:";
+ $msg .= " interface changed." if $interfaces_changed;
+ $msg .= " state changed." if $state_changed;
+ $msg .= " status changed." if $status_changed;
+ $self->{logger}->info($msg);
+
+ my ($link_id, $link_err) = OESS::DB::Link::update(
+ db => $self->{db},
+ link => {
+ link_id => $link->{link_id},
+ link_state => $bb->{link_state},
+ status => $bb->{status},
+ interface_a_id => $eps->[0]->{id},
+ ip_a => $eps->[0]->{ip},
+ interface_z_id => $eps->[1]->{id},
+ ip_z => $eps->[1]->{ip},
+ }
+ );
+ $self->{logger}->error($link_err) if defined $link_err;
+ }
+
+ # remove link from index
+ delete $links_index->{$bb->{name}};
+ }
- # remove link from index
- delete $links_index->{$bb->{name}};
}
- }
+ # decom all links still in index
+ foreach my $name (keys %$links_index) {
+ my $link = $links_index->{$name};
+ $self->{logger}->info("Decommissioning link $link->{name}.");
+
+ my ($link_id, $link_err) = OESS::DB::Link::update(
+ db => $self->{db},
+ link => {
+ link_id => $link->{link_id},
+ link_state => 'decom',
+ status => 'down',
+ interface_a_id => $link->{interface_a_id},
+ ip_a => $link->{ip_a},
+ interface_z_id => $link->{interface_z_id},
+ ip_z => $link->{ip_z},
+ }
+ );
+ $self->{logger}->error($link_err) if defined $link_err;
+ }
- # decom all links still in index
- foreach my $name (keys %$links_index) {
- my $link = $links_index->{$name};
- $self->{logger}->info("Decommissioning link $link->{name}.");
-
- my ($link_id, $link_err) = OESS::DB::Link::update(
- db => $self->{db},
- link => {
- link_id => $link->{link_id},
- link_state => 'decom',
- status => 'down',
- interface_a_id => $link->{interface_a_id},
- ip_a => $link->{ip_a},
- interface_z_id => $link->{interface_z_id},
- ip_z => $link->{ip_z},
- }
- );
- $self->{logger}->error($link_err) if defined $link_err;
- }
+ return 1;
+ });
return 1;
}
@@ -422,11 +430,6 @@ sub start {
}
# Setup polling subroutines
- $self->{connection_timer} = AnyEvent->timer(
- after => 20,
- interval => 60,
- cb => sub { $self->connection_handler(@_); }
- );
$self->{device_timer} = AnyEvent->timer(
after => 10,
interval => 60,
@@ -502,15 +505,16 @@ sub vrf_stats_handler {
$self->handle_vrf_stats(node => $node->{name}, stats => $results->{$node->{name}});
}
+ $self->{logger}->info("Statistics submitted to TSDS.");
$cv->send;
}
);
foreach my $key (keys %{$self->{nodes}}) {
my $node = $self->{nodes}->{$key};
-
+
$cv->begin;
$self->{nso}->get_vrf_statistics(
- $node->{name},
+ $node->{short_name},
sub {
my ($result, $err) = @_;
if (defined $err) {
@@ -524,8 +528,6 @@ sub vrf_stats_handler {
);
}
$cv->end;
-
- $self->{logger}->info("Statistics submitted to TSDS.");
}
=head2 handle_vrf_stats
@@ -545,7 +547,7 @@ sub handle_vrf_stats {
while (@$stats > 0) {
my $stat = shift @$stats;
-
+
my $prev_stat = $self->{previous_peer}->{$stat->{node}}->{$stat->{vrf_name}}->{$stat->{remote_ip}};
if (!defined $prev_stat) {
$self->{logger}->warn("Previous stats unavailable for $stat->{node}. Collection will resume with the next datapoints.");
@@ -575,7 +577,7 @@ sub handle_vrf_stats {
};
my $rib_metadata = {
routing_table => $stat->{vrf_name},
- node => $stat->{node},
+ node => $node,
};
push @$all_val, {
type => TSDS_RIB_TYPE,
@@ -596,7 +598,7 @@ sub handle_vrf_stats {
peer_address => $stat->{remote_ip},
vrf => $stat->{vrf_name},
as => $stat->{remote_as},
- node => $stat->{node},
+ node => $node,
};
push @$all_val, {
type => TSDS_PEER_TYPE,
@@ -611,7 +613,7 @@ sub handle_vrf_stats {
$self->{previous_peer}->{$stat->{node}}->{$stat->{vrf_name}}->{$stat->{remote_ip}} = $stat;
eval {
- $self->{logger}->debug("Updating VRF $stat->{vrf_name} neighbor $stat->{remote_ip} with state $peer_data->{state}.");
+ $self->{logger}->debug("Updating VRF $stat->{vrf_name} neighbor $stat->{remote_ip} on $stat->{node} with state $peer_data->{state}.");
my $q = "
update vrf_ep_peer set operational_state=? where peer_ip like ? and vrf_ep_id in (
select vrf_ep_id from vrf_ep where vrf_id=?
@@ -623,7 +625,7 @@ sub handle_vrf_stats {
);
};
if ($@) {
- $self->{logger}->warn("Couldn't update VRF $stat->{vrf_name} neighbor with state $peer_data->{state}: $@");
+ $self->{logger}->warn("Couldn't update VRF $stat->{vrf_name} neighbor $stat->{remote_ip} on $stat->{node} with state $peer_data->{state}: $@");
}
if (@$all_val >= MAX_TSDS_MESSAGES || @$stats == 0) {
diff --git a/perl-lib/OESS/lib/OESS/NSO/FWDCTL.pm b/perl-lib/OESS/lib/OESS/NSO/FWDCTL.pm
index a69f03902..02b917705 100644
--- a/perl-lib/OESS/lib/OESS/NSO/FWDCTL.pm
+++ b/perl-lib/OESS/lib/OESS/NSO/FWDCTL.pm
@@ -254,7 +254,7 @@ sub diff {
# Needed to ensure diff state may be set to PENDING_DIFF_NONE after approval
my $all_nodes = OESS::DB::Node::fetch_all(db => $self->{db}, controller => 'nso');
foreach my $node (@$all_nodes) {
- $network_diff->{$node->{name}} = "";
+ $network_diff->{$node->{short_name}} = "";
}
foreach my $node_hash (@$all_nodes) {
@@ -346,30 +346,30 @@ sub diff {
# If the database asserts there is no diff pending but memory
# disagrees, then the pending state was modified by an admin. The
# pending diff may now proceed.
- foreach my $node_name (keys %$network_diff) {
- my $node = new OESS::Node(db => $self->{db}, name => $node_name);
- my $diff_len = length $network_diff->{$node_name};
+ foreach my $short_node_name (keys %$network_diff) {
+ my $node = new OESS::Node(db => $self->{db}, short_name => $short_node_name);
+ my $diff_len = length $network_diff->{$short_node_name};
if ($diff_len < 30) {
- $self->{pending_diff}->{$node_name} = PENDING_DIFF_NONE;
+ $self->{pending_diff}->{$short_node_name} = PENDING_DIFF_NONE;
$node->pending_diff(PENDING_DIFF_NONE);
$node->update;
- $self->{logger}->info("Applying network diff. No approval required for $node_name.") if $diff_len > 0;
+ $self->{logger}->info("Applying network diff. No approval required for $short_node_name.") if $diff_len > 0;
} else {
- if ($self->{pending_diff}->{$node_name} == PENDING_DIFF_NONE) {
- $self->{pending_diff}->{$node_name} = PENDING_DIFF;
+ if ($self->{pending_diff}->{$short_node_name} == PENDING_DIFF_NONE) {
+ $self->{pending_diff}->{$short_node_name} = PENDING_DIFF;
$node->pending_diff(PENDING_DIFF);
$node->update;
- $self->{logger}->info("Not applying network diff. Manual approval required for $node_name.");
+ $self->{logger}->info("Not applying network diff. Manual approval required for $short_node_name.");
}
- if ($self->{pending_diff}->{$node_name} == PENDING_DIFF && $node->pending_diff == PENDING_DIFF_NONE) {
- $self->{pending_diff}->{$node_name} = PENDING_DIFF_APPROVED;
- $self->{logger}->info("Applying network diff. Manual approval granted for $node_name.");
+ if ($self->{pending_diff}->{$short_node_name} == PENDING_DIFF && $node->pending_diff == PENDING_DIFF_NONE) {
+ $self->{pending_diff}->{$short_node_name} = PENDING_DIFF_APPROVED;
+ $self->{logger}->info("Applying network diff. Manual approval granted for $short_node_name.");
}
}
- $self->{logger}->debug("Diff for $node_name has length of $diff_len:\n$network_diff->{$node_name}");
+ $self->{logger}->debug("Diff for $short_node_name has length of $diff_len:\n$network_diff->{$short_node_name}");
}
$self->{logger}->debug('Changes: ' . Dumper($changes));
@@ -380,7 +380,7 @@ sub diff {
# If conn endpoint on node with a blocked diff skip
my $diff_approval_required = 0;
foreach my $ep (@{$conn->endpoints}) {
- if ($self->{pending_diff}->{$ep->node} == PENDING_DIFF) {
+ if ($self->{pending_diff}->{$ep->short_node_name} == PENDING_DIFF) {
$diff_approval_required = 1;
last;
}
@@ -402,7 +402,7 @@ sub diff {
# If conn endpoint on node with a blocked diff skip
my $diff_approval_required = 0;
foreach my $ep (@{$conn->endpoints}) {
- if ($self->{pending_diff}->{$ep->node} == PENDING_DIFF) {
+ if ($self->{pending_diff}->{$ep->short_node_name} == PENDING_DIFF) {
$diff_approval_required = 1;
last;
}
@@ -424,7 +424,7 @@ sub diff {
# If conn endpoint on node with a blocked diff skip
my $diff_approval_required = 0;
foreach my $ep (@{$conn->{endpoint}}) {
- if ($self->{pending_diff}->{$ep->{device}} == PENDING_DIFF) {
+ if ($self->{pending_diff}->{$ep->{short_node_name}} == PENDING_DIFF) {
$diff_approval_required = 1;
last;
}
@@ -445,7 +445,7 @@ sub diff {
# If conn endpoint on node with a blocked diff skip
my $diff_approval_required = 0;
foreach my $ep (@{$conn->endpoints}) {
- if ($self->{pending_diff}->{$ep->node} == PENDING_DIFF) {
+ if ($self->{pending_diff}->{$ep->short_node_name} == PENDING_DIFF) {
$diff_approval_required = 1;
last;
}
@@ -467,7 +467,7 @@ sub diff {
# If conn endpoint on node with a blocked diff skip
my $diff_approval_required = 0;
foreach my $ep (@{$conn->endpoints}) {
- if ($self->{pending_diff}->{$ep->node} == PENDING_DIFF) {
+ if ($self->{pending_diff}->{$ep->short_node_name} == PENDING_DIFF) {
$diff_approval_required = 1;
last;
}
@@ -489,7 +489,7 @@ sub diff {
# If conn endpoint on node with a blocked diff skip
my $diff_approval_required = 0;
foreach my $ep (@{$conn->{endpoint}}) {
- if ($self->{pending_diff}->{$ep->{device}} == PENDING_DIFF) {
+ if ($self->{pending_diff}->{$ep->{short_node_name}} == PENDING_DIFF) {
$diff_approval_required = 1;
last;
}
@@ -563,9 +563,9 @@ sub get_diff_text {
my $all_nodes = OESS::DB::Node::fetch_all(db => $self->{db}, controller => 'nso');
foreach my $node (@$all_nodes) {
if ($node->{node_id} eq $node_id) {
- $node_name = $node->{name};
+ $node_name = $node->{short_name};
}
- $network_diff->{$node->{name}} = "";
+ $network_diff->{$node->{short_name}} = "";
}
foreach my $node (@$all_nodes) {
diff --git a/perl-lib/OESS/lib/OESS/NSO/FWDCTLService.pm b/perl-lib/OESS/lib/OESS/NSO/FWDCTLService.pm
index 3cf789040..74b0e6a7e 100644
--- a/perl-lib/OESS/lib/OESS/NSO/FWDCTLService.pm
+++ b/perl-lib/OESS/lib/OESS/NSO/FWDCTLService.pm
@@ -93,7 +93,7 @@ sub start {
# Setup polling subroutines
$self->{connection_timer} = AnyEvent->timer(
after => 5,
- interval => 30,
+ interval => 300,
cb => sub { $self->diff(@_); }
);
diff --git a/perl-lib/OESS/lib/OESS/Node.pm b/perl-lib/OESS/lib/OESS/Node.pm
index 0934769fa..ac0e09acf 100644
--- a/perl-lib/OESS/lib/OESS/Node.pm
+++ b/perl-lib/OESS/lib/OESS/Node.pm
@@ -15,24 +15,25 @@ sub new{
my $class = ref($that) || $that;
my %args = (
- db => undef,
- logger => Log::Log4perl->get_logger("OESS.Node"),
- name => undef,
- node_id => undef,
+ db => undef,
+ logger => Log::Log4perl->get_logger("OESS.Node"),
+ name => undef,
+ node_id => undef,
+ short_name => undef,
@_
);
my $self = \%args;
bless $self, $class;
- if (!defined $self->{db}) {
+
+ if (defined $self->{db} && (defined $self->{name} || defined $self->{short_name} || defined $self->{node_id})) {
+ $self->_fetch_from_db();
+ return $self;
+ } else {
$self->{'logger'}->error("No Database Object specified");
return;
}
-
- $self->_fetch_from_db();
-
- return $self;
}
=head2 from_hash
@@ -97,7 +98,8 @@ sub _fetch_from_db{
my $hash = OESS::DB::Node::fetch(
db => $db,
name => $self->{name},
- node_id => $self->{node_id}
+ node_id => $self->{node_id},
+ short_name => $self->{short_name}
);
$self->from_hash($hash);
}
diff --git a/perl-lib/OESS/lib/OESS/RabbitMQ/Topic.pm b/perl-lib/OESS/lib/OESS/RabbitMQ/Topic.pm
index e83c3deea..f490e8762 100644
--- a/perl-lib/OESS/lib/OESS/RabbitMQ/Topic.pm
+++ b/perl-lib/OESS/lib/OESS/RabbitMQ/Topic.pm
@@ -7,7 +7,7 @@ use Data::Dumper;
use Exporter qw(import);
use Log::Log4perl;
-our @EXPORT = qw(discovery_topic_for_node fwdctl_topic_for_node fwdctl_topic_for_connection);
+our @EXPORT = qw(discovery_topic_for_node fwdctl_topic_for_node fwdctl_topic_for_connection discovery_switch_topic_for_node fwdctl_switch_topic_for_node);
=head1 OESS::RabbitMQ::Topic
@@ -115,4 +115,94 @@ sub fwdctl_topic_for_node {
}
}
+=head2 discovery_switch_topic_for_node
+
+ my ($topic, $err) = discovery_switch_topic_for_node(
+ mgmt_addr => '127.0.0.1',
+ tcp_port => 830,
+ controller => 'netconf'
+ );
+
+discovery_switch_topic_for_node returns the Discovery.Switch topic which
+should be used for working with C<$node>. The topic chosen is based on
+the controller associated with the C<$node>.
+
+=cut
+sub discovery_switch_topic_for_node {
+ # TODO Take Switch object as argument
+ # TODO Return error when used incorrectly
+ my $args = {
+ mgmt_addr => undef,
+ tcp_port => 830,
+ controller => 'netconf',
+ @_
+ };
+
+ my $controller = $args->{controller};
+
+ if ($controller eq 'openflow') {
+ # There are no switch processes in the 'openflow' controller
+ # return (undef, "Unexpected controller '$controller' found for node.");
+ return undef;
+ }
+ elsif ($controller eq 'netconf') {
+ # return ("MPLS.Discovery.Switch.$args->{mgmt_addr}.$args->{tcp_port}", undef);
+ return "MPLS.Discovery.Switch.$args->{mgmt_addr}.$args->{tcp_port}";
+ }
+ elsif ($controller eq 'nso') {
+ # There are no switch processes in the 'nso' controller
+ # return (undef, "Unexpected controller '$controller' found for node.");
+ return;
+ }
+ else {
+ # return (undef, "Unexpected controller '$controller' found for node.");
+ return;
+ }
+}
+
+=head2 fwdctl_switch_topic_for_node
+
+ my ($topic, $err) = fwdctl_switch_topic_for_node(
+ mgmt_addr => '127.0.0.1',
+ tcp_port => 830,
+ controller => 'netconf'
+ );
+
+fwdctl_switch_topic_for_node returns the FWDCTL.Switch topic which
+should be used for working with C<$node>. The topic chosen is based on
+the controller associated with the C<$node>.
+
+=cut
+sub fwdctl_switch_topic_for_node {
+ # TODO Take Switch object as argument
+ # TODO Return error when used incorrectly
+ my $args = {
+ mgmt_addr => undef,
+ tcp_port => 830,
+ controller => 'netconf',
+ @_
+ };
+
+ my $controller = $args->{controller};
+
+ if ($controller eq 'openflow') {
+ # There are no switch processes in the 'openflow' controller
+ # return (undef, "Unexpected controller '$controller' found for node.");
+ return;
+ }
+ elsif ($controller eq 'netconf') {
+ # return ("MPLS.FWDCTL.Switch.$args->{mgmt_addr}.$args->{tcp_port}", undef);
+ return "MPLS.FWDCTL.Switch.$args->{mgmt_addr}.$args->{tcp_port}";
+ }
+ elsif ($controller eq 'nso') {
+ # There are no switch processes in the 'nso' controller
+ # return (undef, "Unexpected controller '$controller' found for node.");
+ return;
+ }
+ else {
+ # return (undef, "Unexpected controller '$controller' found for node.");
+ return;
+ }
+}
+
return 1;
diff --git a/perl-lib/OESS/lib/OESS/VRF.pm b/perl-lib/OESS/lib/OESS/VRF.pm
index c61940e5a..786dd1eef 100644
--- a/perl-lib/OESS/lib/OESS/VRF.pm
+++ b/perl-lib/OESS/lib/OESS/VRF.pm
@@ -647,57 +647,55 @@ sub nso_diff {
my $endpoints = $self->endpoints || [];
foreach my $ep (@{$endpoints}) {
- if (!defined $ep_index->{$ep->node}) {
- $diff->{$ep->node} = "";
- $ep_index->{$ep->node} = {};
+ if (!defined $ep_index->{$ep->short_node_name}) {
+ $diff->{$ep->short_node_name} = "";
+ $ep_index->{$ep->short_node_name} = {};
}
- $ep_index->{$ep->node}->{$ep->interface} = $ep;
+ $ep_index->{$ep->short_node_name}->{$ep->vrf_endpoint_id} = $ep;
}
foreach my $ep (@{$nsoc->{endpoint}}) {
- if (!defined $ep_index->{$ep->{device}}->{$ep->{interface}}) {
+ if (!defined $ep_index->{$ep->{device}}->{$ep->{endpoint_id}}) {
$diff->{$ep->{device}} = "" if !defined $diff->{$ep->{device}};
- $diff->{$ep->{device}} .= "- $ep->{interface}\n";
- $diff->{$ep->{device}} .= "- Bandwidth: $ep->{bandwidth}\n";
- $diff->{$ep->{device}} .= "- Tag: $ep->{tag}\n";
- $diff->{$ep->{device}} .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
+ $diff->{$ep->{device}} .= "- $ep->{interface}.$ep->{unit}\n";
+ $diff->{$ep->{device}} .= "- Bandwidth: $ep->{bandwidth}\n";
+ $diff->{$ep->{device}} .= "- Tag: $ep->{tag}\n";
+ $diff->{$ep->{device}} .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
foreach my $peer (@{$ep->{peer}}) {
- $diff->{$ep->{device}} .= "- Peer $peer->{peer_id}:\n";
- $diff->{$ep->{device}} .= "- Local ASN: $peer->{local_asn}\n";
- $diff->{$ep->{device}} .= "- Local IP: $peer->{local_ip}\n";
- $diff->{$ep->{device}} .= "- Peer ASN: $peer->{peer_asn}\n";
- $diff->{$ep->{device}} .= "- Peer IP: $peer->{peer_ip}\n";
- $diff->{$ep->{device}} .= "- BFD: $peer->{bfd}\n";
+ $diff->{$ep->{device}} .= "- Peer: $peer->{peer_id}\n";
+ $diff->{$ep->{device}} .= "- Local ASN: $peer->{local_asn}\n";
+ $diff->{$ep->{device}} .= "- Local IP: $peer->{local_ip}\n";
+ $diff->{$ep->{device}} .= "- Peer ASN: $peer->{peer_asn}\n";
+ $diff->{$ep->{device}} .= "- Peer IP: $peer->{peer_ip}\n";
+ $diff->{$ep->{device}} .= "- BFD: $peer->{bfd}\n";
}
next;
}
- my $ref_ep = $ep_index->{$ep->{device}}->{$ep->{interface}};
+ my $ref_ep = $ep_index->{$ep->{device}}->{$ep->{endpoint_id}};
# Compare endpoints
- my $ok = 1;
- $ok = 0 if $ep->{bandwidth} != $ref_ep->bandwidth;
- $ok = 0 if $ep->{tag} != $ref_ep->tag;
- $ok = 0 if $ep->{inner_tag} != $ref_ep->inner_tag;
- if (!$ok) {
- $diff->{$ep->{device}} = "" if !defined $diff->{$ep->{device}};
- $diff->{$ep->{device}} .= " $ep->{interface}\n";
- }
+ my $ep_ok = 1;
+ my $ep_diff = " $ep->{interface}.$ep->{unit}\n";
if ($ep->{bandwidth} != $ref_ep->bandwidth) {
- $diff->{$ep->{device}} .= "- Bandwidth: $ep->{bandwidth}\n";
- $diff->{$ep->{device}} .= "+ Bandwidth: $ref_ep->{bandwidth}\n";
+ $ep_ok = 0;
+ $ep_diff .= "- Bandwidth: $ep->{bandwidth}\n";
+ $ep_diff .= "+ Bandwidth: $ref_ep->{bandwidth}\n";
}
if ($ep->{tag} != $ref_ep->tag) {
- $diff->{$ep->{device}} .= "- Tag: $ep->{tag}\n";
- $diff->{$ep->{device}} .= "+ Tag: $ref_ep->{tag}\n";
+ $ep_ok = 0;
+ $ep_diff .= "- Tag: $ep->{tag}\n";
+ $ep_diff .= "+ Tag: $ref_ep->{tag}\n";
}
if ($ep->{inner_tag} != $ref_ep->inner_tag) {
- $diff->{$ep->{device}} .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
- $diff->{$ep->{device}} .= "+ Inner Tag: $ref_ep->{inner_tag}\n" if defined $ref_ep->{inner_tag};
+ $ep_ok = 0;
+ $ep_diff .= "- Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
+ $ep_diff .= "+ Inner Tag: $ref_ep->{inner_tag}\n" if defined $ref_ep->{inner_tag};
}
# Compare an Endpoint's Peers
+ my $peer_ok = 1;
my $peer_diff = "";
my $index = {};
foreach my $peer (@{$ref_ep->peers}) {
@@ -706,13 +704,16 @@ sub nso_diff {
foreach my $pr (@{$ep->{peer}}) {
if (!defined $index->{$pr->{peer_id}}) {
+ $peer_ok = 0;
+
# Peer should be removed
- $peer_diff .= "- Peer $pr->{peer_id}\n";
- $peer_diff .= "- Local ASN: $pr->{local_asn}\n";
- $peer_diff .= "- Local IP: $pr->{local_ip}\n";
- $peer_diff .= "- Peer ASN: $pr->{peer_asn}\n";
- $peer_diff .= "- Peer IP: $pr->{peer_ip}\n";
- $peer_diff .= "- BFD: $pr->{bfd}\n";
+ $peer_diff .= "- Peer: $pr->{peer_id}\n";
+ $peer_diff .= "- Local ASN: $pr->{local_asn}\n";
+ $peer_diff .= "- Local IP: $pr->{local_ip}\n";
+ $peer_diff .= "- Peer ASN: $pr->{peer_asn}\n";
+ $peer_diff .= "- Peer IP: $pr->{peer_ip}\n";
+ $peer_diff .= "- BFD: $pr->{bfd}\n";
+ next;
}
my $ref = $index->{$pr->{peer_id}};
@@ -725,67 +726,76 @@ sub nso_diff {
# thenetwork config.
my @ref_peer_ip = split('/', $ref->peer_ip);
$ok = 0 if $pr->{peer_ip} ne $ref_peer_ip[0];
+ $ok = 0 if $pr->{bfd} != $ref->bfd;
if (!$ok) {
- $peer_diff .= " Peer $pr->{peer_id}:\n";
+ $peer_ok = 0;
+ $peer_diff .= " Peer: $pr->{peer_id}\n";
}
if ($pr->{local_ip} ne $ref->local_ip) {
- $peer_diff .= "- Local IP: $pr->{local_ip}\n";
- $peer_diff .= "+ Local IP: $ref->{local_ip}\n";
+ $peer_diff .= "- Local IP: $pr->{local_ip}\n";
+ $peer_diff .= "+ Local IP: $ref->{local_ip}\n";
}
if ($pr->{peer_asn} != $ref->peer_asn) {
- $peer_diff .= "- Peer ASN: $pr->{peer_asn}\n";
- $peer_diff .= "+ Peer ASN: $ref->{peer_asn}\n";
+ $peer_diff .= "- Peer ASN: $pr->{peer_asn}\n";
+ $peer_diff .= "+ Peer ASN: $ref->{peer_asn}\n";
}
if ($pr->{peer_ip} ne $ref_peer_ip[0]) {
- $peer_diff .= "- Peer IP: $pr->{peer_ip}\n";
- $peer_diff .= "+ Peer IP: $ref_peer_ip[0]\n";
+ $peer_diff .= "- Peer IP: $pr->{peer_ip}\n";
+ $peer_diff .= "+ Peer IP: $ref_peer_ip[0]\n";
}
if ($pr->{bfd} != $ref->bfd) {
- $peer_diff .= "- BFD: $pr->{bfd}\n";
- $peer_diff .= "+ BFD: $ref->{bfd}\n";
+ $peer_diff .= "- BFD: $pr->{bfd}\n";
+ $peer_diff .= "+ BFD: $ref->{bfd}\n";
}
delete $index->{$pr->{peer_id}};
}
foreach my $id (keys %{$index}) {
+ $peer_ok = 0;
# Peer should be added
my $pr = $index->{$id};
my @ref_peer_ip = split('/', $pr->peer_ip);
- $peer_diff .= "+ Peer $pr->{vrf_ep_peer_id}:\n";
- $peer_diff .= "+ Local ASN: $pr->{local_asn}\n";
- $peer_diff .= "+ Local IP: $pr->{local_ip}\n";
- $peer_diff .= "+ Peer ASN: $pr->{peer_asn}\n";
- $peer_diff .= "+ Peer IP: $ref_peer_ip[0]\n";
- $peer_diff .= "+ BFD: $pr->{bfd}\n";
+ $peer_diff .= "+ Peer: $pr->{vrf_ep_peer_id}\n";
+ $peer_diff .= "+ Local ASN: $self->{local_asn}\n";
+ $peer_diff .= "+ Local IP: $pr->{local_ip}\n";
+ $peer_diff .= "+ Peer ASN: $pr->{peer_asn}\n";
+ $peer_diff .= "+ Peer IP: $ref_peer_ip[0]\n";
+ $peer_diff .= "+ BFD: $pr->{bfd}\n";
}
# End Compare an Endpoint's Peers
- $diff->{$ep->{device}} .= $peer_diff;
- delete $ep_index->{$ep->{device}}->{$ep->{interface}};
+ if ($ep_ok && $peer_ok) {
+ $diff->{$ep->{device}} .= "";
+ } else {
+ $diff->{$ep->{device}} .= $ep_diff;
+ $diff->{$ep->{device}} .= $peer_diff;
+ }
+
+ delete $ep_index->{$ep->{device}}->{$ep->{endpoint_id}};
}
foreach my $device_key (keys %{$ep_index}) {
foreach my $ep_key (keys %{$ep_index->{$device_key}}) {
my $ep = $ep_index->{$device_key}->{$ep_key};
- $diff->{$ep->node} = "" if !defined $diff->{$ep->node};
+ $diff->{$ep->short_node_name} = "" if !defined $diff->{$ep->short_node_name};
- $diff->{$ep->node} .= "+ $ep->{interface}\n";
- $diff->{$ep->node} .= "+ Bandwidth: $ep->{bandwidth}\n";
- $diff->{$ep->node} .= "+ Tag: $ep->{tag}\n";
- $diff->{$ep->node} .= "+ Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
+ $diff->{$ep->short_node_name} .= "+ $ep->{interface}.$ep->{unit}\n";
+ $diff->{$ep->short_node_name} .= "+ Bandwidth: $ep->{bandwidth}\n";
+ $diff->{$ep->short_node_name} .= "+ Tag: $ep->{tag}\n";
+ $diff->{$ep->short_node_name} .= "+ Inner Tag: $ep->{inner_tag}\n" if defined $ep->{inner_tag};
foreach my $peer (@{$ep->peers}) {
my @ref_peer_ip = split('/', $peer->{peer_ip});
- $diff->{$ep->node} .= "+ Peer $peer->{vrf_ep_peer_id}:\n";
- $diff->{$ep->node} .= "+ Local ASN: $self->{local_asn}\n";
- $diff->{$ep->node} .= "+ Local IP: $peer->{local_ip}\n";
- $diff->{$ep->node} .= "+ Peer ASN: $peer->{peer_asn}\n";
- $diff->{$ep->node} .= "+ Peer IP: $ref_peer_ip[0]\n";
- $diff->{$ep->node} .= "+ BFD: $peer->{bfd}\n";
+ $diff->{$ep->short_node_name} .= "+ Peer: $peer->{vrf_ep_peer_id}\n";
+ $diff->{$ep->short_node_name} .= "+ Local ASN: $self->{local_asn}\n";
+ $diff->{$ep->short_node_name} .= "+ Local IP: $peer->{local_ip}\n";
+ $diff->{$ep->short_node_name} .= "+ Peer ASN: $peer->{peer_asn}\n";
+ $diff->{$ep->short_node_name} .= "+ Peer IP: $ref_peer_ip[0]\n";
+ $diff->{$ep->short_node_name} .= "+ BFD: $peer->{bfd}\n";
}
}
}
diff --git a/perl-lib/OESS/perl-OESS.spec b/perl-lib/OESS/perl-OESS.spec
index beb5a51e2..2134f7b70 100644
--- a/perl-lib/OESS/perl-OESS.spec
+++ b/perl-lib/OESS/perl-OESS.spec
@@ -1,6 +1,6 @@
Summary: OESS Perl Libraries
Name: perl-OESS
-Version: 2.0.13
+Version: 2.0.14
Release: 1%{?dist}
License: APL 2.0
Group: Network
@@ -53,6 +53,8 @@ Requires: perl(Getopt::Long)
Requires: perl(Graph::Directed)
Requires: perl(Graph::Undirected)
Requires: perl(GRNOC::Config)
+Requires: perl(GRNOC::CLI)
+Requires: perl(Text::CSV)
Requires: perl(GRNOC::Log) >= 1.0.4
Requires: perl(GRNOC::RabbitMQ) >= 1.1.1
Requires: perl(GRNOC::RabbitMQ::Client)
diff --git a/perl-lib/OESS/share/nddi.sql b/perl-lib/OESS/share/nddi.sql
index 3597718d0..b1f71b418 100755
--- a/perl-lib/OESS/share/nddi.sql
+++ b/perl-lib/OESS/share/nddi.sql
@@ -666,7 +666,7 @@ CREATE TABLE `oess_version` (
LOCK TABLES `oess_version` WRITE;
/*!40000 ALTER TABLE `oess_version` DISABLE KEYS */;
-INSERT INTO `oess_version` VALUES ('2.0.13');
+INSERT INTO `oess_version` VALUES ('2.0.14');
/*!40000 ALTER TABLE `oess_version` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/perl-lib/OESS/share/scripts/oess-migrate/config.json.example b/perl-lib/OESS/share/scripts/oess-migrate/config.example.json
similarity index 100%
rename from perl-lib/OESS/share/scripts/oess-migrate/config.json.example
rename to perl-lib/OESS/share/scripts/oess-migrate/config.example.json
diff --git a/perl-lib/OESS/share/scripts/oess-migrate/connection_id_list.example.csv b/perl-lib/OESS/share/scripts/oess-migrate/connection_id_list.example.csv
new file mode 100644
index 000000000..a4f87d5a2
--- /dev/null
+++ b/perl-lib/OESS/share/scripts/oess-migrate/connection_id_list.example.csv
@@ -0,0 +1,3 @@
+Type,connection_id
+l2vpn,3000
+l3vpn,6000
diff --git a/perl-lib/OESS/share/scripts/oess-migrate/oess-migrate b/perl-lib/OESS/share/scripts/oess-migrate/oess-migrate
index 1bab24b8d..1ee121472 100755
--- a/perl-lib/OESS/share/scripts/oess-migrate/oess-migrate
+++ b/perl-lib/OESS/share/scripts/oess-migrate/oess-migrate
@@ -3,9 +3,12 @@
use strict;
use warnings;
+no warnings qw(uninitialized);
+
use Data::Dumper;
use Getopt::Long qw(:config auto_help);
use GRNOC::CLI;
+use GRNOC::WebService::Client;
use JSON;
use Pod::Usage qw(pod2usage);
use Text::CSV;
@@ -17,9 +20,10 @@ use OESS::DB::VRF;
use OESS::L2Circuit;
use OESS::VRF;
+my $skipme = {};
my $config;
-
+my $standard_delay = 60;
=head2 load_config
@@ -37,7 +41,7 @@ sub load_config {
return decode_json($json);
}
-=head2
+=head2 load_csv
load_csv opens $file and then returns a mapping from old interfaces to
new interfaces using the provided CSV.
@@ -70,6 +74,10 @@ sub load_csv {
my $mapping = {};
foreach my $row (@$rows) {
+ if ($row->{LEGACY_DEVICE} !~ /net\.internet2\.edu$/)
+ $row->{LEGACY_DEVICE} = $row->{LEGACY_DEVICE} . '.net.internet2.edu';
+ }
+
if ($reverse) {
my $i = $row->{NGI_INTERFACE};
my $n = $row->{NGI_DEVICE};
@@ -89,6 +97,42 @@ sub load_csv {
return $mapping;
}
+=head2 load_connection_csv
+
+load_connection_csv opens $file and then returns a hash representing each row
+of the provided CSV.
+
+=cut
+sub load_connection_csv {
+ my $file = shift;
+ my $type = shift;
+
+ my $csv = new Text::CSV();
+ my $rows = [];
+
+ open my $fh, "<:encoding(utf8)", $file or die "$file: $!";
+ $csv->column_names($csv->getline($fh));
+ while (my $row = $csv->getline_hr($fh)) {
+ push @$rows, $row;
+ }
+ close $fh;
+
+ my $results = [];
+ foreach my $row (@$rows) {
+ if ($row->{Type} eq $type) {
+ if ($type eq 'l2vpn') {
+ $row->{circuit_id} = $row->{connection_id};
+ }
+ if ($type eq 'l3vpn') {
+ $row->{vrf_id} = $row->{connection_id};
+ }
+ push @$results, $row;
+ }
+ }
+
+ return $results;
+}
+
=head2 is_cloud_connection
=cut
@@ -269,7 +313,6 @@ sub migrate_l3connection {
endpoint => $new_endpoints,
external_identifier => $vrf->{external_identifier},
};
-
my $res = $l3client->provision(%$req);
if (!defined $res) {
return $l3client->get_error;
@@ -291,15 +334,17 @@ sub interfaces {
my $file = undef;
my $interface_id = undef;
my $exclude_cloud = undef;
+ my $reverse = undef;
GetOptions(
- "file=s" => \$file,
+ "file=s" => \$file,
"interface-id=i" => \$interface_id,
- "exclude-cloud=i" => \$exclude_cloud
+ "exclude-cloud=i" => \$exclude_cloud,
+ "reverse=i" => \$reverse
);
die "No interface mapping file provided." if !defined $file;
- my $mapping = load_csv($file, 0);
+ my $mapping = load_csv($file, $reverse);
if (defined $interface_id) {
my $src_interface = OESS::DB::Interface::fetch(
@@ -323,7 +368,7 @@ sub interfaces {
interface => $dst->[1]
);
if (!defined $dst_interface_id) {
- warn "ERROR $interface_id Couldn't find destination interface_id for $dst->[0] $dst->[1].";
+ warn "ERROR $interface_id Couldn't find interface_id for destination $dst->[0] $dst->[1].";
return;
}
@@ -332,8 +377,7 @@ sub interfaces {
warn "ERROR $interface_id $err";
}
} else {
-
- foreach my $key (@$mapping) {
+ foreach my $key (keys %$mapping) {
my @src = split(' - ', $key);
my $src_interface_id = OESS::DB::Interface::get_interface(
db => $db,
@@ -365,7 +409,7 @@ sub interfaces {
interface => $dst->[1]
);
if (!defined $dst_interface_id) {
- warn "ERROR $src_interface_id Couldn't find destination interface_id for $dst->[0] $dst->[1].";
+ warn "ERROR $src_interface_id Couldn't find interface_id for destination $dst->[0] $dst->[1].";
next;
}
@@ -374,6 +418,8 @@ sub interfaces {
warn "ERROR $src_interface_id $err";
next;
}
+
+ print "OK $src_interface_id to $dst_interface_id\n";
}
}
@@ -383,26 +429,32 @@ sub l2connections {
my $db = shift;
my $connection_id = undef;
+ my $connection_id_list = undef;
my $file = undef;
my $interface_id = undef;
my $node_id = undef;
my $workgroup_id = undef;
my $exclude_cloud = undef;
my $exclude_mp = undef;
+ my $reverse = undef;
+ my $delay = 1;
GetOptions(
- "connection-id=i" => \$connection_id,
- "file=s" => \$file,
- "interface-id=i" => \$interface_id,
- "node-id=i" => \$node_id,
- "workgroup-id=i" => \$workgroup_id,
- "exclude-cloud=i" => \$exclude_cloud,
- "exclude-mp=i" => \$exclude_mp
+ "connection-id=i" => \$connection_id,
+ "connection-id-list=s" => \$connection_id_list,
+ "file=s" => \$file,
+ "interface-id=i" => \$interface_id,
+ "node-id=i" => \$node_id,
+ "workgroup-id=i" => \$workgroup_id,
+ "exclude-cloud=i" => \$exclude_cloud,
+ "exclude-mp=i" => \$exclude_mp,
+ "reverse=i" => \$reverse,
+ "delay=i" => \$delay
);
warn "l2connections c $connection_id f $file i $interface_id n $node_id w $workgroup_id";
die "No interface mapping file provided." if !defined $file;
- my $mapping = load_csv($file);
+ my $mapping = load_csv($file, $reverse);
my $args = { db => $db };
$args->{circuit_id} = $connection_id if defined $connection_id;
@@ -410,12 +462,27 @@ sub l2connections {
$args->{node_id} = $node_id if defined $node_id;
$args->{workgroup_id} = $workgroup_id if defined $workgroup_id;
- my $results = OESS::DB::Circuit::fetch_circuits(%$args);
- die "Couldn't fetch l2connections from the database." if !defined $results;
+ my $results;
+ if (defined $connection_id_list) {
+ $results = load_connection_csv($connection_id_list, 'l2vpn');
+ die "Couldn't fetch l2connections from CSV $connection_id_list." if !defined $results;
+ } else {
+ $results = OESS::DB::Circuit::fetch_circuits(%$args);
+ die "Couldn't fetch l2connections from the database." if !defined $results;
+ }
my $connections = [];
foreach my $result (@$results) {
+ if (defined $skipme->{$result->{circuit_id}}) {
+ print "SKIP LIST $result->{circuit_id}\n";
+ next;
+ }
+
my $conn = new OESS::L2Circuit(db => $db, circuit_id => $result->{circuit_id});
+ if (!defined $conn) {
+ warn "ERROR $result->{circuit_id} Couldn't load l2connection.";
+ next;
+ }
$conn->load_endpoints;
if ($exclude_cloud == 1 && is_cloud_connection($conn)) {
@@ -431,21 +498,54 @@ sub l2connections {
push @$connections, $conn;
}
- my $cli = new GRNOC::CLI();
- my $n = @$connections;
- my $continue = $cli->confirm("Migrate $n listed connection(s)?");
- return 1 if !$continue;
+ # Ask for verification when moving more than one connection
+ if (!defined $connection_id) {
+ my $cli = new GRNOC::CLI();
+ my $n = @$connections;
+ my $continue = $cli->confirm("Migrate $n listed connection(s)?");
+ return 1 if !$continue;
+ }
my $success = [];
my $failure = [];
+
+ my $prev_workgroup_id = -1;
+ my $prev_interval = 0;
+
foreach my $conn (@$connections) {
+ my $n_seconds = 0;
+
+ if ($prev_workgroup_id == -1) {
+ # First iteration
+ $n_seconds = 0;
+ }
+ elsif ($prev_workgroup_id == $conn->{workgroup_id}) {
+ # Previous connection owned by the same workgroup as
+ # this connection. Pause a bit longer than usual.
+ $n_seconds = $delay - $prev_interval;
+ }
+ else {
+ # Pause for the standard ammount of time between
+ # migrations.
+ $n_seconds = $standard_delay;
+ }
+
+ print "WAIT $n_seconds s\n";
+ sleep $n_seconds;
+
+ my $start = time;
my $err = migrate_l2connection($conn, $mapping);
+ my $end = time;
+
+ $prev_interval = $end - $start;
+ $prev_workgroup_id = $conn->{workgroup_id};
+
if ($err) {
$conn->{error} = $err;
- warn "ERROR $conn->{circuit_id} $conn->{error}";
+ warn "ERROR $conn->{circuit_id} $conn->{error} $interval s";
push @$failure, $conn;
} else {
- print "OK $conn->{circuit_id}\n";
+ print "OK $conn->{circuit_id} $interval s\n";
push @$success, $conn;
}
}
@@ -457,39 +557,60 @@ sub l3connections {
my $db = shift;
my $connection_id = undef;
+ my $connection_id_list = undef;
my $file = undef;
my $interface_id = undef;
my $node_id = undef;
my $workgroup_id = undef;
my $exclude_cloud = undef;
my $exclude_mp = undef;
+ my $reverse = undef;
+ my $delay = 1;
GetOptions(
- "connection-id=i" => \$connection_id,
- "file=s" => \$file,
- "interface-id=i" => \$interface_id,
- "node-id=i" => \$node_id,
- "workgroup-id=i" => \$workgroup_id,
- "exclude-cloud=i" => \$exclude_cloud
+ "connection-id=i" => \$connection_id,
+ "connection-id-list=s" => \$connection_id_list,
+ "file=s" => \$file,
+ "interface-id=i" => \$interface_id,
+ "node-id=i" => \$node_id,
+ "workgroup-id=i" => \$workgroup_id,
+ "exclude-cloud=i" => \$exclude_cloud,
+ "reverse=i" => \$reverse,
+ "delay=i" => \$delay
);
warn "l3connections c $connection_id f $file i $interface_id n $node_id w $workgroup_id";
die "No interface mapping file provided." if !defined $file;
- my $mapping = load_csv($file);
+ my $mapping = load_csv($file, $reverse);
my $args = { db => $db };
- $args->{vrf_id} = $connection_id if defined $connection_id;
+ $args->{vrf_id} = $connection_id if defined $connection_id;
$args->{interface_id} = $interface_id if defined $interface_id;
$args->{node_id} = $node_id if defined $node_id;
$args->{workgroup_id} = $workgroup_id if defined $workgroup_id;
$args->{state} = 'active';
- my $results = OESS::DB::VRF::get_vrfs(%$args);
- die "Couldn't fetch l3connections from the database." if !defined $results;
+ my $results;
+ if (defined $connection_id_list) {
+ $results = load_connection_csv($connection_id_list, 'l3vpn');
+ die "Couldn't fetch l3connections from CSV $connection_id_list." if !defined $results;
+ } else {
+ $results = OESS::DB::VRF::get_vrfs(%$args);
+ die "Couldn't fetch l3connections from the database." if !defined $results;
+ }
my $connections = [];
foreach my $result (@$results) {
+ if (defined $skipme->{$result->{circuit_id}}) {
+ print "SKIP LIST $result->{circuit_id}\n";
+ next;
+ }
+
my $conn = new OESS::VRF(db => $db, vrf_id => $result->{vrf_id});
+ if (!defined $conn) {
+ warn "ERROR $result->{vrf_id} Couldn't load l3connection.";
+ next;
+ }
$conn->load_endpoints;
foreach my $ep (@{$conn->endpoints}) {
$ep->load_peers;
@@ -504,21 +625,54 @@ sub l3connections {
push @$connections, $conn;
}
- my $cli = new GRNOC::CLI();
- my $n = @$connections;
- my $continue = $cli->confirm("Migrate $n listed connection(s)?");
- return 1 if !$continue;
+ # Ask for verification when moving more than one connection
+ if (!defined $connection_id) {
+ my $cli = new GRNOC::CLI();
+ my $n = @$connections;
+ my $continue = $cli->confirm("Migrate $n listed connection(s)?");
+ return 1 if !$continue;
+ }
my $success = [];
my $failure = [];
+
+ my $prev_workgroup_id = -1;
+ my $prev_interval = 0;
+
foreach my $conn (@$connections) {
+ my $n_seconds = 0;
+
+ if ($prev_workgroup_id == -1) {
+ # First iteration
+ $n_seconds = 0;
+ }
+ elsif ($prev_workgroup_id == $conn->{workgroup_id}) {
+ # Previous connection owned by the same workgroup as
+ # this connection. Pause a bit longer than usual.
+ $n_seconds = $delay - $prev_interval;
+ }
+ else {
+ # Pause for the standard ammount of time between
+ # migrations.
+ $n_seconds = $standard_delay;
+ }
+
+ print "WAIT $n_seconds s\n";
+ sleep $n_seconds;
+
+ my $start = time;
my $err = migrate_l3connection($conn, $mapping);
+ my $end = time;
+
+ $prev_interval = $end - $start;
+ $prev_workgroup_id = $conn->{workgroup_id};
+
if ($err) {
$conn->{error} = $err;
- warn "ERROR $conn->{vrf_id} $conn->{error}";
+ warn "ERROR $conn->{vrf_id} $conn->{error} $interval s";
push @$failure, $conn;
} else {
- print "OK $conn->{vrf_id}\n";
+ print "OK $conn->{vrf_id} $interval s\n";
push @$success, $conn;
}
}
@@ -565,28 +719,33 @@ oess-migrate interfaces [options]
--file Path to CSV indicating old to new port mapping
--interface-id Migrate a sinlge interface identified by interface-id
--exclude-cloud Exclude all cloud interfaces from migration
+ --reverse Swap source and destination ports in CSV for undo operations
oess-migrate l2connections [options]
Options:
- --connection-id Migrate connection identified by connection-id
- --delay Introduce delay between migrations in seconds
- --file Path to CSV indicating old to new port mapping
- --interface-id Migrate all connections terminating on interface-id
- --node-id Migrate all connections terminating on node-id
- --workgroup-id Migrate all connections owned by workgroup-id
- --exclude-cloud Exclude all cloud connections from migration
- --exclude-mp Exclude all multi-point connections from migration
+ --connection-id Migrate connection identified by connection-id
+ --connection-id-list Migrate connection identified by connection-id
+ --delay Introduce delay between migrations in seconds
+ --file Path to CSV indicating old to new port mapping
+ --interface-id Migrate all connections terminating on interface-id
+ --node-id Migrate all connections terminating on node-id
+ --workgroup-id Migrate all connections owned by workgroup-id
+ --exclude-cloud Exclude all cloud connections from migration
+ --exclude-mp Exclude all multi-point connections from migration
+ --reverse Swap source and destination ports in CSV for undo operations
oess-migrate l3connections [options]
Options:
- --connection-id Migrate connection identified by connection-id
- --delay Introduce delay between migrations in seconds
- --file Path to CSV indicating old to new port mapping
- --interface-id Migrate all connections terminating on interface-id
- --node-id Migrate all connections terminating on node-id
- --workgroup-id Migrate all connections owned by workgroup-id
- --exclude-cloud Exclude all cloud connections from migration
+ --connection-id Migrate connection identified by connection-id
+ --connection-id-list Migrate connection identified by connection-id
+ --delay Introduce delay between migrations in seconds
+ --file Path to CSV indicating old to new port mapping
+ --interface-id Migrate all connections terminating on interface-id
+ --node-id Migrate all connections terminating on node-id
+ --workgroup-id Migrate all connections owned by workgroup-id
+ --exclude-cloud Exclude all cloud connections from migration
+ --reverse Swap source and destination ports in CSV for undo operations
=cut
diff --git a/perl-lib/OESS/share/scripts/oess-migrate/shim_interface_mapping.csv.example b/perl-lib/OESS/share/scripts/oess-migrate/shim_interface_mapping.example.csv
similarity index 100%
rename from perl-lib/OESS/share/scripts/oess-migrate/shim_interface_mapping.csv.example
rename to perl-lib/OESS/share/scripts/oess-migrate/shim_interface_mapping.example.csv
diff --git a/perl-lib/OESS/share/upgrade/oess-2.0.13-2.0.14 b/perl-lib/OESS/share/upgrade/oess-2.0.13-2.0.14
new file mode 100644
index 000000000..422ed42f5
--- /dev/null
+++ b/perl-lib/OESS/share/upgrade/oess-2.0.13-2.0.14
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+#-------------------------------------------------------------------
+#----- OESS 2.0.13 - 2.0.14 upgrade module
+#-----
+#----- Copyright(C) 2010 The Trustees of Indiana University
+#--------------------------------------------------------------------
+#----- $HeadURL: $
+#----- $Id: $
+#-----
+#----- This is run when upgrading the database from
+#----- version 2.0.13 to version 2.0.14
+#--------------------------------------------------------------------
+
+use strict;
+use warnings;
+use OESS::Database;
+
+my $prev_version = "2.0.13";
+my $version = "2.0.14";
+
+sub main{
+ print "*******************************************************************\n";
+ print "********* OESS DB UPGRADE ************\n";
+ print "*******************************************************************\n";
+ print "********* This will upgrade from $prev_version to $version **********\n";
+ print "********* of the OESS DB any other version will not work ************\n";
+
+ continue_parameter("Do you wish to continue");
+
+ my $dbq = new OESS::Database();
+ my $current_version = $dbq->get_oess_schema_version();
+ if($current_version eq $prev_version){
+ eval {
+ $dbq->{'dbh'}->begin_work();
+ upgrade($dbq);
+ $dbq->{'dbh'}->commit();
+ };
+ if ($@) {
+ $dbq->{'dbh'}->rollback();
+ print "$@\n";
+ exit;
+ }
+ } else{
+ print "Wrong version of OESS DB\n";
+ print "This script only upgrades from version $prev_version to $version\n";
+ exit;
+ }
+
+ print STDERR "Upgrade Successful!!\n";
+}
+
+sub upgrade{
+ my $dbq = shift;
+ my $term = shift;
+ my $dbh = $dbq->{'dbh'};
+ my $str;
+ my $sth;
+
+ $str = "update oess_version set version = '$version'";
+ $sth = $dbh->prepare($str) or die "Unable to prepare version update \n";
+ $sth->execute() or die "Unable to update version\n";
+}
+
+main();
+
+sub continue_parameter {
+ my $name = shift;
+
+ print "$name [y/n]: ";
+ my $yes_or_no = <>;
+ chomp($yes_or_no);
+
+ exit(0) if ($yes_or_no !~ /y/i || $yes_or_no =~ /n/i);
+}
+
+sub required_parameter {
+ my $name = shift;
+
+ while (1) {
+ print "$name (required): ";
+ my $response = <>;
+ chomp($response);
+
+ return $response if ($response);
+
+ print "\nThis option is required!\n\n";
+ }
+}
diff --git a/perl-lib/OESS/t/conf/database.xml b/perl-lib/OESS/t/conf/database.xml
index c491aae43..5e914519f 100644
--- a/perl-lib/OESS/t/conf/database.xml
+++ b/perl-lib/OESS/t/conf/database.xml
@@ -1,6 +1,12 @@
+
+
+
+
+
+
diff --git a/perl-lib/OESS/t/conf/integration.sql b/perl-lib/OESS/t/conf/integration.sql
index 0f223d2bb..9bc2fa49b 100644
--- a/perl-lib/OESS/t/conf/integration.sql
+++ b/perl-lib/OESS/t/conf/integration.sql
@@ -714,7 +714,7 @@ CREATE TABLE `oess_version` (
LOCK TABLES `oess_version` WRITE;
/*!40000 ALTER TABLE `oess_version` DISABLE KEYS */;
-INSERT INTO `oess_version` VALUES ('2.0.13');
+INSERT INTO `oess_version` VALUES ('2.0.14');
/*!40000 ALTER TABLE `oess_version` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/perl-lib/OESS/t/conf/mpls/discovery.sql b/perl-lib/OESS/t/conf/mpls/discovery.sql
index 53e201cf6..1a4890962 100644
--- a/perl-lib/OESS/t/conf/mpls/discovery.sql
+++ b/perl-lib/OESS/t/conf/mpls/discovery.sql
@@ -719,7 +719,7 @@ CREATE TABLE `oess_version` (
LOCK TABLES `oess_version` WRITE;
/*!40000 ALTER TABLE `oess_version` DISABLE KEYS */;
-INSERT INTO `oess_version` VALUES ('2.0.13');
+INSERT INTO `oess_version` VALUES ('2.0.14');
/*!40000 ALTER TABLE `oess_version` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/perl-lib/OESS/t/conf/oess_known_state.sql b/perl-lib/OESS/t/conf/oess_known_state.sql
index 4aaf84fc6..c605e4052 100644
--- a/perl-lib/OESS/t/conf/oess_known_state.sql
+++ b/perl-lib/OESS/t/conf/oess_known_state.sql
@@ -616,7 +616,7 @@ CREATE TABLE `node` (
LOCK TABLES `node` WRITE;
/*!40000 ALTER TABLE `node` DISABLE KEYS */;
-INSERT INTO `node` VALUES (1,'Node 1',-121.987513,37.373779,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(11,'Node 11',-118.295056,33.737916,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(21,'Node 21',-81.658192,41.505358,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(31,'Node 31',-87.616073,42.895358,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(41,'Node 41',-94.582098,39.101078,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(51,'Node 51',-95.351,29.771315,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(61,'Node 61',-106.492903,31.755708,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(71,'Node 71',-104.979894,39.475459,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(81,'Node 81',-74.005199,40.720069,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(91,'Node 91',-84.38759,33.758537,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(101,'Node 101',-77.014891,38.908459,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(111,'Node 111',-87.64306,41.896504,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(121,'Node 121',0,0,'up',11,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(131,'Node 131',-95.993431,36.157192,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(141,'Node 141',-111.953379,40.757603,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(151,'1223.sc11.org-vlsr1',0,0,'unknown',21,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(161,'1327.sc11.org-vlsr1',0,0,'unknown',31,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(171,'192.168.0.25-vlsr1',0,0,'unknown',41,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(181,'192.168.0.25-vlsr2',0,0,'unknown',41,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(191,'192.168.0.25-vlsr3',0,0,'unknown',41,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(201,'192.168.3.5-VLSRB',0,0,'unknown',51,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(211,'192.168.4.5-VLSRC',0,0,'unknown',61,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(221,'200.143.240.223-CAS',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(231,'200.143.240.223-DR-RJO',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(241,'200.143.240.223-RJO',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(251,'200.143.240.223-SJC',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(261,'200.143.240.223-SPO',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(271,'ampath.net-vlsr1',0,0,'unknown',81,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(281,'andymacbook.net-macbook',0,0,'unknown',91,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(291,'ani.es.net-anl-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(301,'ani.es.net-aofa-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(311,'ani.es.net-nersc-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(321,'ani.es.net-star-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(331,'ani.es.net-sunn-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(341,'anna-lab2.internet2.edu-switch1',0,0,'unknown',111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(351,'anna-lab2.internet2.edu-switch2',0,0,'unknown',111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(361,'anna-lab2.internet2.edu-switch3',0,0,'unknown',111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(371,'anna-lab3.internet2.edu-ALBU',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(381,'anna-lab3.internet2.edu-ATLA',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(391,'anna-lab3.internet2.edu-BATO',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(401,'anna-lab3.internet2.edu-BOST',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(411,'anna-lab3.internet2.edu-CHIC',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(421,'anna-lab3.internet2.edu-CLEV',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(431,'anna-lab3.internet2.edu-DENV',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(441,'anna-lab3.internet2.edu-ELPA',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(451,'anna-lab3.internet2.edu-HOUS',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(461,'anna-lab3.internet2.edu-INDI',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(471,'anna-lab3.internet2.edu-JACK',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(481,'anna-lab3.internet2.edu-KANS',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(491,'anna-lab3.internet2.edu-LOSA',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(501,'anna-lab3.internet2.edu-LOUI',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(511,'anna-lab3.internet2.edu-NASH',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(521,'anna-lab3.internet2.edu-NEWY',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(531,'anna-lab3.internet2.edu-PHIL',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(541,'anna-lab3.internet2.edu-PITT',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(551,'anna-lab3.internet2.edu-SALT',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(561,'anna-lab3.internet2.edu-SUNN',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(571,'anna-lab3.internet2.edu-WASH',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(581,'anna.internet2.edu-raptor1',0,0,'unknown',131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(591,'anna.internet2.edu-raptor2',0,0,'unknown',131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(601,'autobahn-NORDUNET_DK.nc.7beeb89d',0,0,'unknown',141,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(611,'autobahn-NORDUNET_DK.nc.c3f14eaf',0,0,'unknown',141,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(621,'autobahn-NORDUNET_DK.nc.ff01bb8f',0,0,'unknown',141,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(631,'bicc-idc.hpna-vlsr1',0,0,'unknown',151,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(641,'bicc-idc.hpna-vlsr2',0,0,'unknown',151,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(651,'blue.pod.lan-vlsr1',0,0,'unknown',161,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(661,'blue.pod.lan-vlsr2',0,0,'unknown',161,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(671,'blue.pod.lan-vlsr3',0,0,'unknown',161,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(681,'caltech.edu-vlsr1',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(691,'caltech.edu-vlsr2',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(701,'caltech.edu-vlsr4',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(711,'caltech.edu-vlsr5',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(721,'caltech.edu-vlsr7',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(731,'caltech.sc10.org-vlsr1',0,0,'unknown',181,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(741,'caltech.sc10.org-vlsr2',0,0,'unknown',181,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(751,'cern.ch-vinci2',0,0,'unknown',191,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(761,'cipo.rnp.br-BHE',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(771,'cipo.rnp.br-BLM',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(781,'cipo.rnp.br-BSA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(791,'cipo.rnp.br-CTA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(801,'cipo.rnp.br-FLA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(811,'cipo.rnp.br-FNS',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(821,'cipo.rnp.br-POA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(831,'cipo.rnp.br-RJO',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(841,'cipo.rnp.br-SLS',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(851,'cipo.rnp.br-SPO',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(861,'colorado.edu-vlsr1',0,0,'unknown',211,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(871,'ctc.net.rt.iu.edu-vlsr1',0,0,'unknown',221,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(881,'dallas-tx-learn.net-dlls',0,0,'unknown',231,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(891,'dcn.jgn-x.jp-kote-mx80-1',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(901,'dcn.jgn-x.jp-kote-mx80-3',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(911,'dcn.jgn-x.jp-ndojima-mx80-1',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(921,'dcn.jgn-x.jp-ntenjin-mx80-1',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(931,'dcn.jgn2plus.jp-hakusan-dc-1',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(941,'dcn.jgn2plus.jp-kashima-dc-1',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(951,'dcn.jgn2plus.jp-kfukuoka-dc-1',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(961,'dcn.jgn2plus.jp-kote-dc-2',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(971,'dcn.nordu.net-cph',0,0,'unknown',271,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(981,'dcn.nordu.net-hel',0,0,'unknown',271,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(991,'dcn.nordu.net-sto',0,0,'unknown',271,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1001,'dcn.thairen.net.th-vlsr1',0,0,'unknown',281,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1011,'dcn.thairen.net.th-vlsr2',0,0,'unknown',281,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1021,'dcn.thairen.net.th-vlsr3',0,0,'unknown',281,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1031,'dcn.umnet.umich.edu-vlsr1',0,0,'unknown',291,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1041,'dev.dcn.internet2.edu-64.57.25.98',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1051,'dev.dcn.internet2.edu-ALBU',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1061,'dev.dcn.internet2.edu-ATLA',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1071,'dev.dcn.internet2.edu-BATO',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1081,'dev.dcn.internet2.edu-BOST',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1091,'dev.dcn.internet2.edu-CHAR',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1101,'dev.dcn.internet2.edu-CHIC',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1111,'dev.dcn.internet2.edu-CLEV',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1121,'dev.dcn.internet2.edu-DENV',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1131,'dev.dcn.internet2.edu-HOUS',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1141,'dev.dcn.internet2.edu-INDI',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1151,'dev.dcn.internet2.edu-JACK',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1161,'dev.dcn.internet2.edu-KANS',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1171,'dev.dcn.internet2.edu-LOSA',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1181,'dev.dcn.internet2.edu-LOUI',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1191,'dev.dcn.internet2.edu-NEWY',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1201,'dev.dcn.internet2.edu-PHIL',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1211,'dev.dcn.internet2.edu-PITT',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1221,'dev.dcn.internet2.edu-SALT',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1231,'dev.dcn.internet2.edu-SEAT',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1241,'dev.dcn.internet2.edu-SUNN',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1251,'dev.dcn.internet2.edu-WASH',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1261,'dev.es.net-albu-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1271,'dev.es.net-albu-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1281,'dev.es.net-ameslab-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1291,'dev.es.net-anl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1301,'dev.es.net-aofa-cr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1311,'dev.es.net-aofa-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1321,'dev.es.net-atla-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1331,'dev.es.net-atla-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1341,'dev.es.net-bnl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1351,'dev.es.net-bnl-mr3',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1361,'dev.es.net-bois-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1371,'dev.es.net-bost-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1381,'dev.es.net-chic-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1391,'dev.es.net-chic-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1401,'dev.es.net-clev-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1411,'dev.es.net-clev-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1421,'dev.es.net-denv-cr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1431,'dev.es.net-denv-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1441,'dev.es.net-doe-gtn-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1451,'dev.es.net-doe-nnsa-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1461,'dev.es.net-elpa-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1471,'dev.es.net-elpa-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1481,'dev.es.net-eqx-ash-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1491,'dev.es.net-eqx-chi-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1501,'dev.es.net-eqx-sj-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1511,'dev.es.net-esnet-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1521,'dev.es.net-fnal-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1531,'dev.es.net-fnal-mr3',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1541,'dev.es.net-forr-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1551,'dev.es.net-ga-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1561,'dev.es.net-hous-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1571,'dev.es.net-hous-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1581,'dev.es.net-inl-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1591,'dev.es.net-jgi-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1601,'dev.es.net-kans-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1611,'dev.es.net-kans-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1621,'dev.es.net-lasv-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1631,'dev.es.net-lbl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1641,'dev.es.net-llnl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1651,'dev.es.net-llnl-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1661,'dev.es.net-llnldc-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1671,'dev.es.net-lvk-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1681,'dev.es.net-nash-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1691,'dev.es.net-nash-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1701,'dev.es.net-nersc-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1711,'dev.es.net-newy-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1721,'dev.es.net-nrel-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1731,'dev.es.net-nso-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1741,'dev.es.net-orau-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1751,'dev.es.net-ornl-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1761,'dev.es.net-osti-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1771,'dev.es.net-paix-pa-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1781,'dev.es.net-pantex-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1791,'dev.es.net-pnwg-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1801,'dev.es.net-pnwg-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1811,'dev.es.net-pppl-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1821,'dev.es.net-sdsc-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1831,'dev.es.net-slac-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1841,'dev.es.net-snla-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1851,'dev.es.net-snll-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1861,'dev.es.net-snv-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1871,'dev.es.net-srs-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1881,'dev.es.net-star-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1891,'dev.es.net-star-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1901,'dev.es.net-sunn-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1911,'dev.es.net-sunn-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1921,'dev.es.net-wash-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1931,'dev.es.net-wash-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1941,'dev.uslhcnet.org-vlsr1',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1951,'dev.uslhcnet.org-vlsr2',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1961,'dev.uslhcnet.org-vlsr3',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1971,'dev.uslhcnet.org-vlsr4',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1981,'dev.uslhcnet.org-vlsr5',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1991,'dev.uslhcnet.org-vlsr6',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2001,'devint.es.net-albu-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2011,'devint.es.net-albu-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2021,'devint.es.net-ameslab-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2031,'devint.es.net-anl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2041,'devint.es.net-aofa-cr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2051,'devint.es.net-aofa-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2061,'devint.es.net-atla-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2071,'devint.es.net-atla-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2081,'devint.es.net-bnl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2091,'devint.es.net-bnl-mr3',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2101,'devint.es.net-bois-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2111,'devint.es.net-bost-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2121,'devint.es.net-chic-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2131,'devint.es.net-chic-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2141,'devint.es.net-clev-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2151,'devint.es.net-clev-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2161,'devint.es.net-denv-ar1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2171,'devint.es.net-denv-cr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2181,'devint.es.net-denv-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2191,'devint.es.net-doe-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2201,'devint.es.net-doe-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2211,'devint.es.net-elpa-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2221,'devint.es.net-elpa-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2231,'devint.es.net-eqx-ash-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2241,'devint.es.net-eqx-chi-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2251,'devint.es.net-eqx-sj-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2261,'devint.es.net-esnet-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2271,'devint.es.net-fnal-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2281,'devint.es.net-fnal-mr3',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2291,'devint.es.net-ga-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2301,'devint.es.net-hous-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2311,'devint.es.net-hous-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2321,'devint.es.net-inl-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2331,'devint.es.net-jgi-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2341,'devint.es.net-kans-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2351,'devint.es.net-kans-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2361,'devint.es.net-kcp-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2371,'devint.es.net-lasv-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2381,'devint.es.net-lbl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2391,'devint.es.net-llnl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2401,'devint.es.net-llnl-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2411,'devint.es.net-llnldc-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2421,'devint.es.net-lvk-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2431,'devint.es.net-nash-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2441,'devint.es.net-nash-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2451,'devint.es.net-nersc-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2461,'devint.es.net-nersc-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2471,'devint.es.net-newy-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2481,'devint.es.net-nga-fst-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2491,'devint.es.net-nrel-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2501,'devint.es.net-nso-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2511,'devint.es.net-nstec-lvk-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2521,'devint.es.net-orau-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2531,'devint.es.net-ornl-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2541,'devint.es.net-osti-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2551,'devint.es.net-paix-pa-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2561,'devint.es.net-pantex-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2571,'devint.es.net-pnwg-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2581,'devint.es.net-pnwg-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2591,'devint.es.net-pppl-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2601,'devint.es.net-sdsc-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2611,'devint.es.net-slac-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2621,'devint.es.net-snla-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2631,'devint.es.net-snll-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2641,'devint.es.net-snv-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2651,'devint.es.net-snv-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2661,'devint.es.net-srs-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2671,'devint.es.net-star-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2681,'devint.es.net-star-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2691,'devint.es.net-sunn-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2701,'devint.es.net-sunn-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2711,'devint.es.net-wash-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2721,'devint.es.net-wash-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2731,'dragon.maxgigapop.net-ARLG',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2741,'dragon.maxgigapop.net-CLPK',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2751,'dragon.maxgigapop.net-CLPK6509',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2761,'dragon.maxgigapop.net-DCGW',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2771,'dragon.maxgigapop.net-DCNE',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2781,'dragon.maxgigapop.net-GSFC',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2791,'dragon.maxgigapop.net-LAB4',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2801,'dragon.maxgigapop.net-MAX',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2811,'dragon.maxgigapop.net-MAX2',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2821,'dragon.maxgigapop.net-MAX3',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2831,'dragon.maxgigapop.net-MAX5',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2841,'dragon.maxgigapop.net-MAXMMLAB',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2851,'dragon.maxgigapop.net-MCLN',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2861,'dragon.maxgigapop.net-NCSA',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2871,'dragon.maxgigapop.net-TRC',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2881,'dynes.caltech.edu-vlsr1',0,0,'unknown',351,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2891,'dynes.east.isi.edu-vlsr1',0,0,'unknown',361,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2901,'dynes.frgp.net-vlsr1',0,0,'unknown',371,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2911,'dynes.illinois.edu-vlsr1',0,0,'unknown',381,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2921,'dynes.maxgigapop.net-vlsr1',0,0,'unknown',391,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2931,'dynes.rice.edu-vlsr1',0,0,'unknown',401,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2941,'dynes.udel.edu-vlsr1',0,0,'unknown',411,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2951,'es.net-albu-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2961,'es.net-albu-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2971,'es.net-ameslab-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2981,'es.net-anl-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2991,'es.net-anl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3001,'es.net-aofa-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3011,'es.net-aofa-cr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3021,'es.net-aofa-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3031,'es.net-atla-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3041,'es.net-bnl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3051,'es.net-bnl-mr3',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3061,'es.net-bois-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3071,'es.net-bost-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3081,'es.net-chic-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3091,'es.net-clev-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3101,'es.net-clev-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3111,'es.net-denv-cr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3121,'es.net-doe-gtn-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3131,'es.net-doe-nnsa-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3141,'es.net-elpa-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3151,'es.net-eqx-ash-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3161,'es.net-eqx-chi-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3171,'es.net-eqx-sj-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3181,'es.net-esnet-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3191,'es.net-fnal-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3201,'es.net-fnal-mr3',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3211,'es.net-forr-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3221,'es.net-ga-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3231,'es.net-hous-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3241,'es.net-inl-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3251,'es.net-jgi-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3261,'es.net-kans-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3271,'es.net-lasv-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3281,'es.net-lbl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3291,'es.net-llnl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3301,'es.net-llnldc-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3311,'es.net-lvk-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3321,'es.net-nash-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3331,'es.net-nersc-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3341,'es.net-nersc-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3351,'es.net-newy-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3361,'es.net-nrel-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3371,'es.net-nso-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3381,'es.net-orau-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3391,'es.net-ornl-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3401,'es.net-osti-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3411,'es.net-paix-pa-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3421,'es.net-pantex-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3431,'es.net-pnwg-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3441,'es.net-pppl-rt5',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3451,'es.net-sdsc-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3461,'es.net-slac-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3471,'es.net-snla-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3481,'es.net-snll-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3491,'es.net-snll-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3501,'es.net-snv-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3511,'es.net-srs-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3521,'es.net-star-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3531,'es.net-star-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3541,'es.net-star-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3551,'es.net-sunn-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3561,'es.net-sunn-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3571,'es.net-sunn-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3581,'es.net-wash-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3591,'es.net-wash-ar1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3601,'es.net-wash-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3611,'geant.net-GEANT.nc.134d0264',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3621,'geant.net-GEANT.nc.15a9b1d2',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3631,'geant.net-GEANT.nc.1ca32d66',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3641,'geant.net-GEANT.nc.3c99c60a',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3651,'geant.net-GEANT.nc.4445c8f2',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3661,'geant.net-GEANT.nc.69f40d93',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3671,'geant.net-GEANT.nc.6b910c9c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3681,'geant.net-GEANT.nc.6d75bf2a',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3691,'geant.net-GEANT.nc.6fd765ff',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3701,'geant.net-GEANT.nc.72b06be0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3711,'geant.net-GEANT.nc.7493038c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3721,'geant.net-GEANT.nc.8096417',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3731,'geant.net-GEANT.nc.9c8ff0b7',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3741,'geant.net-GEANT.nc.b101084f',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3751,'geant.net-GEANT.nc.b7e5bbf9',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3761,'geant.net-GEANT.nc.c4f0d74',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3771,'geant.net-GEANT.nc.cb26a97b',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3781,'geant.net-GEANT.nc.d618d27d',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3791,'geant.net-GEANT.nc.da7a4470',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3801,'geant.net-GRNET.nc.3d3e0114',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3811,'geant.net-GRNET.nc.91be554c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3821,'geant.net-GRNET.nc.e0a8d891',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3831,'geant.net-HEANET.nc.184281fc',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3841,'geant.net-HEANET.nc.3474a5f4',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3851,'geant.net-HEANET.nc.34bc5fea',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3861,'geant.net-HEANET.nc.798c9543',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3871,'geant.net-HEANET.nc.90d6ad0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3881,'geant.net-HEANET.nc.9311dd0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3891,'geant.net-HEANET.nc.a8e0301c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3901,'geant.net-HEANET.nc.d11fbbbb',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3911,'geant.net-HEANET.nc.d2115c6e',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3921,'geant.net-HEANET.nc.ec376bc0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3931,'geant.net-JANET.nc.5dd6bb49',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3941,'geant.net-JANET.nc.af4c5531',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3951,'geant.net-PIONIER.nc.1dbc79a0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3961,'geant.net-PIONIER.nc.24503110',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3971,'geant.net-PIONIER.nc.dcd22102',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3981,'gigapop.gen.tx-switch1',0,0,'unknown',441,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3991,'green.pod.lan-vlsr1',0,0,'unknown',451,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4001,'green.pod.lan-vlsr2',0,0,'unknown',451,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4011,'green.pod.lan-vlsr3',0,0,'unknown',451,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4021,'gta.pod-VLSRA',0,0,'unknown',461,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4031,'gta.pod-VLSRB',0,0,'unknown',461,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4041,'gta.teste.dois-VLSRC',0,0,'unknown',471,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4051,'gta.teste.um-VLSRB',0,0,'unknown',481,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4061,'gta.ufrj.br-VLSRB',0,0,'unknown',491,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4071,'gta.ufrj.br-VLSRC',0,0,'unknown',491,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4081,'hep.fiu.edu-vlsr1',0,0,'unknown',501,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4091,'houston-tx-learn.net-hstn',0,0,'unknown',511,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4101,'internet2.sc10.org-vlsr1',0,0,'unknown',521,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4111,'ion.internet2.edu-rtr.atla',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4121,'ion.internet2.edu-rtr.chic',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4131,'ion.internet2.edu-rtr.hous',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4141,'ion.internet2.edu-rtr.kans',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4151,'ion.internet2.edu-rtr.losa',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4161,'ion.internet2.edu-rtr.newy',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4171,'ion.internet2.edu-rtr.salt',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4181,'ion.internet2.edu-rtr.seat',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4191,'ion.internet2.edu-rtr.wash',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4201,'jeju.kr-vlsr1',0,0,'unknown',541,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4211,'jeju.kr-vlsr2',0,0,'unknown',541,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4221,'jeju.kr-vlsr3',0,0,'unknown',541,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4231,'jhu.edu-vlsr1',0,0,'unknown',551,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4241,'kke.co.jp-vlsr1',0,0,'unknown',561,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4251,'kke.co.jp-vlsr2',0,0,'unknown',561,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4261,'kke.co.jp-vlsr3',0,0,'unknown',561,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4271,'korenidc.jejunu.ac.kr-vlsr1',0,0,'unknown',571,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4281,'korenidc.jejunu.ac.kr-vlsr2',0,0,'unknown',571,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4291,'korenidc.jejunu.ac.kr-vlsr3',0,0,'unknown',571,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4301,'korenidc.koren.kr-vlsr1',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4311,'korenidc.koren.kr-vlsr2',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4321,'korenidc.koren.kr-vlsr3',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4331,'korenidc.koren.kr-vlsr4',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4341,'korenidc.koren.kr-vlsr5',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4351,'korenidc.koren.kr-vlsr6',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4361,'localdomain-ovs0',0,0,'unknown',591,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4371,'localdomain-ovs1',0,0,'unknown',591,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4381,'localdomain-ovs2',0,0,'unknown',591,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4391,'loni.org-loni-dcn-e1',0,0,'unknown',601,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4401,'loni.org-lsu-dcn',0,0,'unknown',601,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4411,'magpi.net-vlsr1',0,0,'unknown',611,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4421,'mren.org-vlsr1',0,0,'unknown',621,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4431,'nclidc.jejunu.ac.kr-vlsr1',0,0,'unknown',631,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4441,'nclidc.jejunu.ac.kr-vlsr2',0,0,'unknown',631,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4451,'nclidc.jejunu.ac.kr-vlsr3',0,0,'unknown',631,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4461,'nclidc2.jejunu.ac.kr-vlsr1',0,0,'unknown',641,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4471,'nclidc2.jejunu.ac.kr-vlsr2',0,0,'unknown',641,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4481,'nclidc2.jejunu.ac.kr-vlsr3',0,0,'unknown',641,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4491,'nclidc3.jejunu.ac.kr-vlsr3',0,0,'unknown',651,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4501,'nclidc3.jejunu.ac.kr-vlsr4',0,0,'unknown',651,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4511,'nddi.net.internet2.edu-nddi-sw.chic.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4521,'nddi.net.internet2.edu-nddi-sw.losa.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4531,'nddi.net.internet2.edu-nddi-sw.newy32aoa.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4541,'nddi.net.internet2.edu-nddi-sw.seat.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4551,'nddi.net.internet2.edu-nddi-sw.wash2.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4561,'net.wisc.edu-vlsr1',0,0,'unknown',671,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4571,'noc.ote.kddi.com-Fukuoka',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4581,'noc.ote.kddi.com-Osaka',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4591,'noc.ote.kddi.com-Sendai',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4601,'noc.ote.kddi.com-Tokyo',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4611,'nordu.net-dcn-ex-1',0,0,'unknown',691,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4621,'nordu.net-dcn-ex-2',0,0,'unknown',691,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4631,'nordu.net-dcn-ex-3',0,0,'unknown',691,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4641,'nordunet-cph.dcn',0,0,'unknown',701,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4651,'nordunet5-rey.dcn',0,0,'unknown',711,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4661,'nysernet.org-nyc-vlsr1',0,0,'unknown',721,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4671,'nysernet.org-syr-vlsr1',0,0,'unknown',721,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4681,'nysernet.org-syr-vlsr2',0,0,'unknown',721,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4691,'openflow.maxgigapop.net-arlg',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4701,'openflow.maxgigapop.net-clpk',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4711,'openflow.maxgigapop.net-dcgw',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4721,'openflow.maxgigapop.net-max',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4731,'oscars-lamhyp1.cenic.org-node1',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4741,'oscars-lamhyp1.cenic.org-node2',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4751,'oscars-lamhyp1.cenic.org-node3',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4761,'oscars-lamhyp1.cenic.org-node4',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4771,'oscars.pacificwave.net-pwave-svl-sw-2',0,0,'unknown',751,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4781,'ou.edu-vlsr1',0,0,'unknown',761,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4791,'pacificwave.net-SEATTLE',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4801,'pacificwave.net-losa2-pw-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4811,'pacificwave.net-pwave-lax818-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4821,'pacificwave.net-pwave-paix-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4831,'pacificwave.net-pwave-svl-sw-2',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4841,'pacificwave.net-snvl2-pw-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4851,'red.pod.lan-vlsr1',0,0,'unknown',781,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4861,'red.pod.lan-vlsr2',0,0,'unknown',781,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4871,'red.pod.lan-vlsr3',0,0,'unknown',781,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4881,'region2.ion.internet2.edu-rtr.atla',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4891,'region2.ion.internet2.edu-rtr.chic',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4901,'region2.ion.internet2.edu-rtr.hous',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4911,'region2.ion.internet2.edu-rtr.kans',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4921,'region2.ion.internet2.edu-rtr.losa',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4931,'region2.ion.internet2.edu-rtr.newy',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4941,'region2.ion.internet2.edu-rtr.salt',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4951,'region2.ion.internet2.edu-rtr.seat',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4961,'region2.ion.internet2.edu-rtr.wash',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4971,'rhel-oess-ieng-MX240',0,0,'unknown',801,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4981,'rhel-oess-ieng-mx240-a',0,0,'unknown',801,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4991,'rutgers.edu-vlsr1',0,0,'unknown',811,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5001,'sc09.org-core-sw-1',0,0,'unknown',821,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5011,'sc10.org-core-rtr1',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5021,'sc10.org-core-rtr2',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5031,'sc10.org-core-sw1',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5041,'sc10.org-rtr-2042',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5051,'sc10.org-rtr-2212',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5061,'sc10.org-rtr-3230',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5071,'sc10.org-rtr-3851',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5081,'sc11.org-core-1',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5091,'sc11.org-core-2',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5101,'sc11.org-edge-1',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5111,'sc11.org-edge-2',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5121,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5131,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu-1',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5141,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu-2',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5151,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu-3',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5161,'smu.edu-vlsr1',0,0,'unknown',861,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5171,'sox.net-rtr.nash',0,0,'unknown',871,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5181,'srs.sc11.org-dnoc-1214',0,0,'unknown',881,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5191,'srs.sc11.org-dnoc-2637',0,0,'unknown',881,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5201,'srs.sc11.org-noc',0,0,'unknown',881,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5211,'startlab-idc.hpna-vlsr1',0,0,'unknown',891,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5221,'startlab-idc.hpna-vlsr2',0,0,'unknown',891,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5231,'tamu.edu-tamu-sw1',0,0,'unknown',901,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5241,'testbed.es.net-bnl-tb-rt-2',0,0,'unknown',911,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5251,'testbed.es.net-newy-tb-rt-1',0,0,'unknown',911,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5261,'testlab.grnoc.iu.edu-ac10-m71-1',0,0,'unknown',921,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5271,'testlab.grnoc.iu.edu-ad10-m71-1',0,0,'unknown',921,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5281,'testlab.grnoc.iu.edu-af10-m71-1',0,0,'unknown',921,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5291,'transpac3.iu.edu-rtr.losa',0,0,'unknown',931,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5301,'ttu.edu-vlsr1',0,0,'unknown',941,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5311,'tufts.edu-vlsr1',0,0,'unknown',951,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5321,'tx-learn.net-dlls',0,0,'unknown',961,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5331,'tx-learn.net-hstn',0,0,'unknown',961,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5341,'tx-learn.org-switch1',0,0,'unknown',971,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5351,'ufrgs.rnp.br-vlsr-cisco',0,0,'unknown',981,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5361,'ufrgs.rnp.br-vlsr-extreme',0,0,'unknown',981,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5371,'ufsc.cipo.rnp.br-vlsr1',0,0,'unknown',991,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5381,'ufsc.cipo.rnp.br-vlsr2',0,0,'unknown',991,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5391,'uh.edu-vlsr1',0,0,'unknown',1001,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5401,'uiowa.edu-vlsr1',0,0,'unknown',1011,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5411,'ultralight.org-vlsr1',0,0,'unknown',1021,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5421,'umassd.net-andromeda',0,0,'unknown',1031,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5431,'unl.edu-vlsr1',0,0,'unknown',1041,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5441,'upenn.edu-vlsr1',0,0,'unknown',1051,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5451,'uslhcnet.org-vlsr1',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5461,'uslhcnet.org-vlsr10',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5471,'uslhcnet.org-vlsr2',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5481,'uslhcnet.org-vlsr3',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5491,'uslhcnet.org-vlsr4',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5501,'uslhcnet.org-vlsr5',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5511,'uslhcnet.org-vlsr6',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5521,'uslhcnet.org-vlsr7',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5531,'uslhcnet.org-vlsr8',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5541,'uslhcnet.org-vlsr9',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5551,'uta.edu-vlsr1',0,0,'unknown',1071,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5561,'utdallas.edu-vlsr1',0,0,'unknown',1081,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5571,'uva.nl-uva-node1',0,0,'unknown',1091,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5581,'uva.nl-uva-node2',0,0,'unknown',1091,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5591,'uvalight.net-geller',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5601,'uvalight.net-kazan',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5611,'uvalight.net-sweggb1',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5621,'uvalight.net-sweggb2',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5631,'uvalight.net-sweggb3',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5641,'uvalight.net-swlh1',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5651,'uvalight.net-swlh2',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5661,'uvalight.net-swnl',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5671,'vanderbilt.edu-vlsr1',0,0,'unknown',1111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5681,'vanderbilt.sc10.org-vlsr1',0,0,'unknown',1121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5691,'yellow.pod.lan-vlsr1',0,0,'unknown',1131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5701,'yellow.pod.lan-vlsr2',0,0,'unknown',1131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5711,'yellow.pod.lan-vlsr3',0,0,'unknown',1131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5721,'Node 5721',-81.623511,30.272111,'up',1,'1-4095','1','1',4000,0,1,4000,'no',0,'unknown',NULL),(5731,'Node 5731',-78.59455,35.85617,'down',1,'1-4095','1','1',100,5,1,4000,'no',0,'unknown',NULL),(5732,'Node 5732',-93.255669,44.972381,'up',1,'100-2500','1','1',1000,0,1,128,'no',0,'unknown',NULL),(5733,'Node 5733',-113.993369,46.871898,'up',1,'100-2500','1','1',1000,0,1,0,'no',0,'unknown',NULL),(5734,'Node 5734',-122.338413,47.614457,'up',1,'100-2500','1','1',1000,0,1,128,'no',0,'unknown',NULL),(5735,'Node 5735',-122.684858,45.531469,'up',1,'100-2500','1','1',1000,0,1,128,'no',0,'unknown',NULL);
+INSERT INTO `node` VALUES (1,'Node 1',-121.987513,37.373779,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(11,'Node 11',-118.295056,33.737916,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown','N11'),(21,'Node 21',-81.658192,41.505358,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown','N21'),(31,'Node 31',-87.616073,42.895358,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown','N31'),(41,'Node 41',-94.582098,39.101078,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown','N41'),(51,'Node 51',-95.351,29.771315,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown','N51'),(61,'Node 61',-106.492903,31.755708,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(71,'Node 71',-104.979894,39.475459,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(81,'Node 81',-74.005199,40.720069,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(91,'Node 91',-84.38759,33.758537,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(101,'Node 101',-77.014891,38.908459,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(111,'Node 111',-87.64306,41.896504,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(121,'Node 121',0,0,'up',11,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(131,'Node 131',-95.993431,36.157192,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(141,'Node 141',-111.953379,40.757603,'up',1,'100-4094','1','0',4000,0,1,4000,'no',0,'unknown',NULL),(151,'1223.sc11.org-vlsr1',0,0,'unknown',21,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(161,'1327.sc11.org-vlsr1',0,0,'unknown',31,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(171,'192.168.0.25-vlsr1',0,0,'unknown',41,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(181,'192.168.0.25-vlsr2',0,0,'unknown',41,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(191,'192.168.0.25-vlsr3',0,0,'unknown',41,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(201,'192.168.3.5-VLSRB',0,0,'unknown',51,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(211,'192.168.4.5-VLSRC',0,0,'unknown',61,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(221,'200.143.240.223-CAS',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(231,'200.143.240.223-DR-RJO',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(241,'200.143.240.223-RJO',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(251,'200.143.240.223-SJC',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(261,'200.143.240.223-SPO',0,0,'unknown',71,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(271,'ampath.net-vlsr1',0,0,'unknown',81,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(281,'andymacbook.net-macbook',0,0,'unknown',91,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(291,'ani.es.net-anl-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(301,'ani.es.net-aofa-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(311,'ani.es.net-nersc-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(321,'ani.es.net-star-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(331,'ani.es.net-sunn-ani',0,0,'unknown',101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(341,'anna-lab2.internet2.edu-switch1',0,0,'unknown',111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(351,'anna-lab2.internet2.edu-switch2',0,0,'unknown',111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(361,'anna-lab2.internet2.edu-switch3',0,0,'unknown',111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(371,'anna-lab3.internet2.edu-ALBU',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(381,'anna-lab3.internet2.edu-ATLA',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(391,'anna-lab3.internet2.edu-BATO',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(401,'anna-lab3.internet2.edu-BOST',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(411,'anna-lab3.internet2.edu-CHIC',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(421,'anna-lab3.internet2.edu-CLEV',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(431,'anna-lab3.internet2.edu-DENV',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(441,'anna-lab3.internet2.edu-ELPA',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(451,'anna-lab3.internet2.edu-HOUS',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(461,'anna-lab3.internet2.edu-INDI',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(471,'anna-lab3.internet2.edu-JACK',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(481,'anna-lab3.internet2.edu-KANS',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(491,'anna-lab3.internet2.edu-LOSA',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(501,'anna-lab3.internet2.edu-LOUI',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(511,'anna-lab3.internet2.edu-NASH',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(521,'anna-lab3.internet2.edu-NEWY',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(531,'anna-lab3.internet2.edu-PHIL',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(541,'anna-lab3.internet2.edu-PITT',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(551,'anna-lab3.internet2.edu-SALT',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(561,'anna-lab3.internet2.edu-SUNN',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(571,'anna-lab3.internet2.edu-WASH',0,0,'unknown',121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(581,'anna.internet2.edu-raptor1',0,0,'unknown',131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(591,'anna.internet2.edu-raptor2',0,0,'unknown',131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(601,'autobahn-NORDUNET_DK.nc.7beeb89d',0,0,'unknown',141,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(611,'autobahn-NORDUNET_DK.nc.c3f14eaf',0,0,'unknown',141,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(621,'autobahn-NORDUNET_DK.nc.ff01bb8f',0,0,'unknown',141,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(631,'bicc-idc.hpna-vlsr1',0,0,'unknown',151,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(641,'bicc-idc.hpna-vlsr2',0,0,'unknown',151,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(651,'blue.pod.lan-vlsr1',0,0,'unknown',161,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(661,'blue.pod.lan-vlsr2',0,0,'unknown',161,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(671,'blue.pod.lan-vlsr3',0,0,'unknown',161,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(681,'caltech.edu-vlsr1',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(691,'caltech.edu-vlsr2',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(701,'caltech.edu-vlsr4',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(711,'caltech.edu-vlsr5',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(721,'caltech.edu-vlsr7',0,0,'unknown',171,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(731,'caltech.sc10.org-vlsr1',0,0,'unknown',181,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(741,'caltech.sc10.org-vlsr2',0,0,'unknown',181,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(751,'cern.ch-vinci2',0,0,'unknown',191,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(761,'cipo.rnp.br-BHE',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(771,'cipo.rnp.br-BLM',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(781,'cipo.rnp.br-BSA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(791,'cipo.rnp.br-CTA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(801,'cipo.rnp.br-FLA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(811,'cipo.rnp.br-FNS',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(821,'cipo.rnp.br-POA',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(831,'cipo.rnp.br-RJO',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(841,'cipo.rnp.br-SLS',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(851,'cipo.rnp.br-SPO',0,0,'unknown',201,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(861,'colorado.edu-vlsr1',0,0,'unknown',211,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(871,'ctc.net.rt.iu.edu-vlsr1',0,0,'unknown',221,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(881,'dallas-tx-learn.net-dlls',0,0,'unknown',231,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(891,'dcn.jgn-x.jp-kote-mx80-1',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(901,'dcn.jgn-x.jp-kote-mx80-3',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(911,'dcn.jgn-x.jp-ndojima-mx80-1',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(921,'dcn.jgn-x.jp-ntenjin-mx80-1',0,0,'unknown',251,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(931,'dcn.jgn2plus.jp-hakusan-dc-1',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(941,'dcn.jgn2plus.jp-kashima-dc-1',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(951,'dcn.jgn2plus.jp-kfukuoka-dc-1',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(961,'dcn.jgn2plus.jp-kote-dc-2',0,0,'unknown',261,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(971,'dcn.nordu.net-cph',0,0,'unknown',271,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(981,'dcn.nordu.net-hel',0,0,'unknown',271,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(991,'dcn.nordu.net-sto',0,0,'unknown',271,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1001,'dcn.thairen.net.th-vlsr1',0,0,'unknown',281,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1011,'dcn.thairen.net.th-vlsr2',0,0,'unknown',281,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1021,'dcn.thairen.net.th-vlsr3',0,0,'unknown',281,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1031,'dcn.umnet.umich.edu-vlsr1',0,0,'unknown',291,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1041,'dev.dcn.internet2.edu-64.57.25.98',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1051,'dev.dcn.internet2.edu-ALBU',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1061,'dev.dcn.internet2.edu-ATLA',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1071,'dev.dcn.internet2.edu-BATO',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1081,'dev.dcn.internet2.edu-BOST',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1091,'dev.dcn.internet2.edu-CHAR',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1101,'dev.dcn.internet2.edu-CHIC',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1111,'dev.dcn.internet2.edu-CLEV',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1121,'dev.dcn.internet2.edu-DENV',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1131,'dev.dcn.internet2.edu-HOUS',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1141,'dev.dcn.internet2.edu-INDI',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1151,'dev.dcn.internet2.edu-JACK',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1161,'dev.dcn.internet2.edu-KANS',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1171,'dev.dcn.internet2.edu-LOSA',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1181,'dev.dcn.internet2.edu-LOUI',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1191,'dev.dcn.internet2.edu-NEWY',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1201,'dev.dcn.internet2.edu-PHIL',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1211,'dev.dcn.internet2.edu-PITT',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1221,'dev.dcn.internet2.edu-SALT',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1231,'dev.dcn.internet2.edu-SEAT',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1241,'dev.dcn.internet2.edu-SUNN',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1251,'dev.dcn.internet2.edu-WASH',0,0,'unknown',301,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1261,'dev.es.net-albu-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1271,'dev.es.net-albu-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1281,'dev.es.net-ameslab-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1291,'dev.es.net-anl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1301,'dev.es.net-aofa-cr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1311,'dev.es.net-aofa-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1321,'dev.es.net-atla-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1331,'dev.es.net-atla-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1341,'dev.es.net-bnl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1351,'dev.es.net-bnl-mr3',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1361,'dev.es.net-bois-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1371,'dev.es.net-bost-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1381,'dev.es.net-chic-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1391,'dev.es.net-chic-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1401,'dev.es.net-clev-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1411,'dev.es.net-clev-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1421,'dev.es.net-denv-cr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1431,'dev.es.net-denv-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1441,'dev.es.net-doe-gtn-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1451,'dev.es.net-doe-nnsa-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1461,'dev.es.net-elpa-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1471,'dev.es.net-elpa-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1481,'dev.es.net-eqx-ash-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1491,'dev.es.net-eqx-chi-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1501,'dev.es.net-eqx-sj-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1511,'dev.es.net-esnet-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1521,'dev.es.net-fnal-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1531,'dev.es.net-fnal-mr3',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1541,'dev.es.net-forr-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1551,'dev.es.net-ga-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1561,'dev.es.net-hous-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1571,'dev.es.net-hous-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1581,'dev.es.net-inl-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1591,'dev.es.net-jgi-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1601,'dev.es.net-kans-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1611,'dev.es.net-kans-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1621,'dev.es.net-lasv-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1631,'dev.es.net-lbl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1641,'dev.es.net-llnl-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1651,'dev.es.net-llnl-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1661,'dev.es.net-llnldc-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1671,'dev.es.net-lvk-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1681,'dev.es.net-nash-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1691,'dev.es.net-nash-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1701,'dev.es.net-nersc-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1711,'dev.es.net-newy-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1721,'dev.es.net-nrel-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1731,'dev.es.net-nso-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1741,'dev.es.net-orau-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1751,'dev.es.net-ornl-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1761,'dev.es.net-osti-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1771,'dev.es.net-paix-pa-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1781,'dev.es.net-pantex-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1791,'dev.es.net-pnwg-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1801,'dev.es.net-pnwg-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1811,'dev.es.net-pppl-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1821,'dev.es.net-sdsc-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1831,'dev.es.net-slac-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1841,'dev.es.net-snla-rt2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1851,'dev.es.net-snll-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1861,'dev.es.net-snv-mr2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1871,'dev.es.net-srs-rt1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1881,'dev.es.net-star-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1891,'dev.es.net-star-sdn1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1901,'dev.es.net-sunn-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1911,'dev.es.net-sunn-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1921,'dev.es.net-wash-cr1',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1931,'dev.es.net-wash-sdn2',0,0,'unknown',311,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1941,'dev.uslhcnet.org-vlsr1',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1951,'dev.uslhcnet.org-vlsr2',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1961,'dev.uslhcnet.org-vlsr3',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1971,'dev.uslhcnet.org-vlsr4',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1981,'dev.uslhcnet.org-vlsr5',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(1991,'dev.uslhcnet.org-vlsr6',0,0,'unknown',321,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2001,'devint.es.net-albu-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2011,'devint.es.net-albu-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2021,'devint.es.net-ameslab-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2031,'devint.es.net-anl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2041,'devint.es.net-aofa-cr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2051,'devint.es.net-aofa-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2061,'devint.es.net-atla-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2071,'devint.es.net-atla-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2081,'devint.es.net-bnl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2091,'devint.es.net-bnl-mr3',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2101,'devint.es.net-bois-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2111,'devint.es.net-bost-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2121,'devint.es.net-chic-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2131,'devint.es.net-chic-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2141,'devint.es.net-clev-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2151,'devint.es.net-clev-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2161,'devint.es.net-denv-ar1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2171,'devint.es.net-denv-cr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2181,'devint.es.net-denv-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2191,'devint.es.net-doe-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2201,'devint.es.net-doe-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2211,'devint.es.net-elpa-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2221,'devint.es.net-elpa-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2231,'devint.es.net-eqx-ash-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2241,'devint.es.net-eqx-chi-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2251,'devint.es.net-eqx-sj-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2261,'devint.es.net-esnet-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2271,'devint.es.net-fnal-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2281,'devint.es.net-fnal-mr3',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2291,'devint.es.net-ga-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2301,'devint.es.net-hous-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2311,'devint.es.net-hous-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2321,'devint.es.net-inl-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2331,'devint.es.net-jgi-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2341,'devint.es.net-kans-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2351,'devint.es.net-kans-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2361,'devint.es.net-kcp-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2371,'devint.es.net-lasv-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2381,'devint.es.net-lbl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2391,'devint.es.net-llnl-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2401,'devint.es.net-llnl-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2411,'devint.es.net-llnldc-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2421,'devint.es.net-lvk-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2431,'devint.es.net-nash-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2441,'devint.es.net-nash-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2451,'devint.es.net-nersc-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2461,'devint.es.net-nersc-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2471,'devint.es.net-newy-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2481,'devint.es.net-nga-fst-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2491,'devint.es.net-nrel-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2501,'devint.es.net-nso-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2511,'devint.es.net-nstec-lvk-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2521,'devint.es.net-orau-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2531,'devint.es.net-ornl-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2541,'devint.es.net-osti-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2551,'devint.es.net-paix-pa-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2561,'devint.es.net-pantex-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2571,'devint.es.net-pnwg-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2581,'devint.es.net-pnwg-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2591,'devint.es.net-pppl-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2601,'devint.es.net-sdsc-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2611,'devint.es.net-slac-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2621,'devint.es.net-snla-rt2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2631,'devint.es.net-snll-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2641,'devint.es.net-snv-mr2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2651,'devint.es.net-snv-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2661,'devint.es.net-srs-rt1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2671,'devint.es.net-star-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2681,'devint.es.net-star-sdn1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2691,'devint.es.net-sunn-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2701,'devint.es.net-sunn-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2711,'devint.es.net-wash-cr1',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2721,'devint.es.net-wash-sdn2',0,0,'unknown',331,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2731,'dragon.maxgigapop.net-ARLG',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2741,'dragon.maxgigapop.net-CLPK',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2751,'dragon.maxgigapop.net-CLPK6509',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2761,'dragon.maxgigapop.net-DCGW',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2771,'dragon.maxgigapop.net-DCNE',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2781,'dragon.maxgigapop.net-GSFC',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2791,'dragon.maxgigapop.net-LAB4',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2801,'dragon.maxgigapop.net-MAX',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2811,'dragon.maxgigapop.net-MAX2',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2821,'dragon.maxgigapop.net-MAX3',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2831,'dragon.maxgigapop.net-MAX5',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2841,'dragon.maxgigapop.net-MAXMMLAB',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2851,'dragon.maxgigapop.net-MCLN',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2861,'dragon.maxgigapop.net-NCSA',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2871,'dragon.maxgigapop.net-TRC',0,0,'unknown',341,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2881,'dynes.caltech.edu-vlsr1',0,0,'unknown',351,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2891,'dynes.east.isi.edu-vlsr1',0,0,'unknown',361,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2901,'dynes.frgp.net-vlsr1',0,0,'unknown',371,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2911,'dynes.illinois.edu-vlsr1',0,0,'unknown',381,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2921,'dynes.maxgigapop.net-vlsr1',0,0,'unknown',391,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2931,'dynes.rice.edu-vlsr1',0,0,'unknown',401,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2941,'dynes.udel.edu-vlsr1',0,0,'unknown',411,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2951,'es.net-albu-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2961,'es.net-albu-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2971,'es.net-ameslab-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2981,'es.net-anl-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(2991,'es.net-anl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3001,'es.net-aofa-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3011,'es.net-aofa-cr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3021,'es.net-aofa-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3031,'es.net-atla-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3041,'es.net-bnl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3051,'es.net-bnl-mr3',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3061,'es.net-bois-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3071,'es.net-bost-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3081,'es.net-chic-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3091,'es.net-clev-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3101,'es.net-clev-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3111,'es.net-denv-cr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3121,'es.net-doe-gtn-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3131,'es.net-doe-nnsa-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3141,'es.net-elpa-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3151,'es.net-eqx-ash-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3161,'es.net-eqx-chi-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3171,'es.net-eqx-sj-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3181,'es.net-esnet-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3191,'es.net-fnal-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3201,'es.net-fnal-mr3',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3211,'es.net-forr-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3221,'es.net-ga-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3231,'es.net-hous-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3241,'es.net-inl-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3251,'es.net-jgi-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3261,'es.net-kans-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3271,'es.net-lasv-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3281,'es.net-lbl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3291,'es.net-llnl-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3301,'es.net-llnldc-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3311,'es.net-lvk-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3321,'es.net-nash-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3331,'es.net-nersc-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3341,'es.net-nersc-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3351,'es.net-newy-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3361,'es.net-nrel-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3371,'es.net-nso-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3381,'es.net-orau-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3391,'es.net-ornl-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3401,'es.net-osti-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3411,'es.net-paix-pa-rt1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3421,'es.net-pantex-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3431,'es.net-pnwg-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3441,'es.net-pppl-rt5',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3451,'es.net-sdsc-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3461,'es.net-slac-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3471,'es.net-snla-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3481,'es.net-snll-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3491,'es.net-snll-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3501,'es.net-snv-mr2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3511,'es.net-srs-rt2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3521,'es.net-star-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3531,'es.net-star-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3541,'es.net-star-sdn1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3551,'es.net-sunn-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3561,'es.net-sunn-cr1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3571,'es.net-sunn-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3581,'es.net-wash-ani',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3591,'es.net-wash-ar1',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3601,'es.net-wash-sdn2',0,0,'unknown',421,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3611,'geant.net-GEANT.nc.134d0264',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3621,'geant.net-GEANT.nc.15a9b1d2',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3631,'geant.net-GEANT.nc.1ca32d66',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3641,'geant.net-GEANT.nc.3c99c60a',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3651,'geant.net-GEANT.nc.4445c8f2',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3661,'geant.net-GEANT.nc.69f40d93',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3671,'geant.net-GEANT.nc.6b910c9c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3681,'geant.net-GEANT.nc.6d75bf2a',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3691,'geant.net-GEANT.nc.6fd765ff',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3701,'geant.net-GEANT.nc.72b06be0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3711,'geant.net-GEANT.nc.7493038c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3721,'geant.net-GEANT.nc.8096417',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3731,'geant.net-GEANT.nc.9c8ff0b7',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3741,'geant.net-GEANT.nc.b101084f',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3751,'geant.net-GEANT.nc.b7e5bbf9',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3761,'geant.net-GEANT.nc.c4f0d74',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3771,'geant.net-GEANT.nc.cb26a97b',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3781,'geant.net-GEANT.nc.d618d27d',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3791,'geant.net-GEANT.nc.da7a4470',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3801,'geant.net-GRNET.nc.3d3e0114',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3811,'geant.net-GRNET.nc.91be554c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3821,'geant.net-GRNET.nc.e0a8d891',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3831,'geant.net-HEANET.nc.184281fc',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3841,'geant.net-HEANET.nc.3474a5f4',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3851,'geant.net-HEANET.nc.34bc5fea',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3861,'geant.net-HEANET.nc.798c9543',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3871,'geant.net-HEANET.nc.90d6ad0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3881,'geant.net-HEANET.nc.9311dd0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3891,'geant.net-HEANET.nc.a8e0301c',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3901,'geant.net-HEANET.nc.d11fbbbb',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3911,'geant.net-HEANET.nc.d2115c6e',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3921,'geant.net-HEANET.nc.ec376bc0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3931,'geant.net-JANET.nc.5dd6bb49',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3941,'geant.net-JANET.nc.af4c5531',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3951,'geant.net-PIONIER.nc.1dbc79a0',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3961,'geant.net-PIONIER.nc.24503110',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3971,'geant.net-PIONIER.nc.dcd22102',0,0,'unknown',431,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3981,'gigapop.gen.tx-switch1',0,0,'unknown',441,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(3991,'green.pod.lan-vlsr1',0,0,'unknown',451,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4001,'green.pod.lan-vlsr2',0,0,'unknown',451,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4011,'green.pod.lan-vlsr3',0,0,'unknown',451,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4021,'gta.pod-VLSRA',0,0,'unknown',461,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4031,'gta.pod-VLSRB',0,0,'unknown',461,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4041,'gta.teste.dois-VLSRC',0,0,'unknown',471,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4051,'gta.teste.um-VLSRB',0,0,'unknown',481,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4061,'gta.ufrj.br-VLSRB',0,0,'unknown',491,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4071,'gta.ufrj.br-VLSRC',0,0,'unknown',491,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4081,'hep.fiu.edu-vlsr1',0,0,'unknown',501,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4091,'houston-tx-learn.net-hstn',0,0,'unknown',511,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4101,'internet2.sc10.org-vlsr1',0,0,'unknown',521,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4111,'ion.internet2.edu-rtr.atla',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4121,'ion.internet2.edu-rtr.chic',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4131,'ion.internet2.edu-rtr.hous',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4141,'ion.internet2.edu-rtr.kans',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4151,'ion.internet2.edu-rtr.losa',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4161,'ion.internet2.edu-rtr.newy',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4171,'ion.internet2.edu-rtr.salt',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4181,'ion.internet2.edu-rtr.seat',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4191,'ion.internet2.edu-rtr.wash',0,0,'unknown',531,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4201,'jeju.kr-vlsr1',0,0,'unknown',541,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4211,'jeju.kr-vlsr2',0,0,'unknown',541,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4221,'jeju.kr-vlsr3',0,0,'unknown',541,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4231,'jhu.edu-vlsr1',0,0,'unknown',551,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4241,'kke.co.jp-vlsr1',0,0,'unknown',561,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4251,'kke.co.jp-vlsr2',0,0,'unknown',561,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4261,'kke.co.jp-vlsr3',0,0,'unknown',561,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4271,'korenidc.jejunu.ac.kr-vlsr1',0,0,'unknown',571,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4281,'korenidc.jejunu.ac.kr-vlsr2',0,0,'unknown',571,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4291,'korenidc.jejunu.ac.kr-vlsr3',0,0,'unknown',571,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4301,'korenidc.koren.kr-vlsr1',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4311,'korenidc.koren.kr-vlsr2',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4321,'korenidc.koren.kr-vlsr3',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4331,'korenidc.koren.kr-vlsr4',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4341,'korenidc.koren.kr-vlsr5',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4351,'korenidc.koren.kr-vlsr6',0,0,'unknown',581,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4361,'localdomain-ovs0',0,0,'unknown',591,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4371,'localdomain-ovs1',0,0,'unknown',591,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4381,'localdomain-ovs2',0,0,'unknown',591,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4391,'loni.org-loni-dcn-e1',0,0,'unknown',601,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4401,'loni.org-lsu-dcn',0,0,'unknown',601,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4411,'magpi.net-vlsr1',0,0,'unknown',611,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4421,'mren.org-vlsr1',0,0,'unknown',621,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4431,'nclidc.jejunu.ac.kr-vlsr1',0,0,'unknown',631,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4441,'nclidc.jejunu.ac.kr-vlsr2',0,0,'unknown',631,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4451,'nclidc.jejunu.ac.kr-vlsr3',0,0,'unknown',631,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4461,'nclidc2.jejunu.ac.kr-vlsr1',0,0,'unknown',641,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4471,'nclidc2.jejunu.ac.kr-vlsr2',0,0,'unknown',641,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4481,'nclidc2.jejunu.ac.kr-vlsr3',0,0,'unknown',641,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4491,'nclidc3.jejunu.ac.kr-vlsr3',0,0,'unknown',651,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4501,'nclidc3.jejunu.ac.kr-vlsr4',0,0,'unknown',651,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4511,'nddi.net.internet2.edu-nddi-sw.chic.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4521,'nddi.net.internet2.edu-nddi-sw.losa.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4531,'nddi.net.internet2.edu-nddi-sw.newy32aoa.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4541,'nddi.net.internet2.edu-nddi-sw.seat.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4551,'nddi.net.internet2.edu-nddi-sw.wash2.net.internet2.edu',0,0,'unknown',661,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4561,'net.wisc.edu-vlsr1',0,0,'unknown',671,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4571,'noc.ote.kddi.com-Fukuoka',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4581,'noc.ote.kddi.com-Osaka',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4591,'noc.ote.kddi.com-Sendai',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4601,'noc.ote.kddi.com-Tokyo',0,0,'unknown',681,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4611,'nordu.net-dcn-ex-1',0,0,'unknown',691,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4621,'nordu.net-dcn-ex-2',0,0,'unknown',691,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4631,'nordu.net-dcn-ex-3',0,0,'unknown',691,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4641,'nordunet-cph.dcn',0,0,'unknown',701,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4651,'nordunet5-rey.dcn',0,0,'unknown',711,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4661,'nysernet.org-nyc-vlsr1',0,0,'unknown',721,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4671,'nysernet.org-syr-vlsr1',0,0,'unknown',721,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4681,'nysernet.org-syr-vlsr2',0,0,'unknown',721,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4691,'openflow.maxgigapop.net-arlg',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4701,'openflow.maxgigapop.net-clpk',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4711,'openflow.maxgigapop.net-dcgw',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4721,'openflow.maxgigapop.net-max',0,0,'unknown',731,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4731,'oscars-lamhyp1.cenic.org-node1',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4741,'oscars-lamhyp1.cenic.org-node2',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4751,'oscars-lamhyp1.cenic.org-node3',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4761,'oscars-lamhyp1.cenic.org-node4',0,0,'unknown',741,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4771,'oscars.pacificwave.net-pwave-svl-sw-2',0,0,'unknown',751,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4781,'ou.edu-vlsr1',0,0,'unknown',761,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4791,'pacificwave.net-SEATTLE',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4801,'pacificwave.net-losa2-pw-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4811,'pacificwave.net-pwave-lax818-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4821,'pacificwave.net-pwave-paix-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4831,'pacificwave.net-pwave-svl-sw-2',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4841,'pacificwave.net-snvl2-pw-sw-1',0,0,'unknown',771,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4851,'red.pod.lan-vlsr1',0,0,'unknown',781,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4861,'red.pod.lan-vlsr2',0,0,'unknown',781,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4871,'red.pod.lan-vlsr3',0,0,'unknown',781,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4881,'region2.ion.internet2.edu-rtr.atla',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4891,'region2.ion.internet2.edu-rtr.chic',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4901,'region2.ion.internet2.edu-rtr.hous',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4911,'region2.ion.internet2.edu-rtr.kans',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4921,'region2.ion.internet2.edu-rtr.losa',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4931,'region2.ion.internet2.edu-rtr.newy',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4941,'region2.ion.internet2.edu-rtr.salt',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4951,'region2.ion.internet2.edu-rtr.seat',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4961,'region2.ion.internet2.edu-rtr.wash',0,0,'unknown',791,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4971,'rhel-oess-ieng-MX240',0,0,'unknown',801,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4981,'rhel-oess-ieng-mx240-a',0,0,'unknown',801,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(4991,'rutgers.edu-vlsr1',0,0,'unknown',811,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5001,'sc09.org-core-sw-1',0,0,'unknown',821,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5011,'sc10.org-core-rtr1',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5021,'sc10.org-core-rtr2',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5031,'sc10.org-core-sw1',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5041,'sc10.org-rtr-2042',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5051,'sc10.org-rtr-2212',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5061,'sc10.org-rtr-3230',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5071,'sc10.org-rtr-3851',0,0,'unknown',831,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5081,'sc11.org-core-1',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5091,'sc11.org-core-2',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5101,'sc11.org-edge-1',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5111,'sc11.org-edge-2',0,0,'unknown',841,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5121,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5131,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu-1',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5141,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu-2',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5151,'sdnlab.grnoc.iu.edu-virt3-testcontroller2.sdnlab.grnoc.iu.edu-3',0,0,'unknown',851,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5161,'smu.edu-vlsr1',0,0,'unknown',861,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5171,'sox.net-rtr.nash',0,0,'unknown',871,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5181,'srs.sc11.org-dnoc-1214',0,0,'unknown',881,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5191,'srs.sc11.org-dnoc-2637',0,0,'unknown',881,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5201,'srs.sc11.org-noc',0,0,'unknown',881,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5211,'startlab-idc.hpna-vlsr1',0,0,'unknown',891,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5221,'startlab-idc.hpna-vlsr2',0,0,'unknown',891,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5231,'tamu.edu-tamu-sw1',0,0,'unknown',901,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5241,'testbed.es.net-bnl-tb-rt-2',0,0,'unknown',911,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5251,'testbed.es.net-newy-tb-rt-1',0,0,'unknown',911,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5261,'testlab.grnoc.iu.edu-ac10-m71-1',0,0,'unknown',921,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5271,'testlab.grnoc.iu.edu-ad10-m71-1',0,0,'unknown',921,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5281,'testlab.grnoc.iu.edu-af10-m71-1',0,0,'unknown',921,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5291,'transpac3.iu.edu-rtr.losa',0,0,'unknown',931,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5301,'ttu.edu-vlsr1',0,0,'unknown',941,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5311,'tufts.edu-vlsr1',0,0,'unknown',951,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5321,'tx-learn.net-dlls',0,0,'unknown',961,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5331,'tx-learn.net-hstn',0,0,'unknown',961,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5341,'tx-learn.org-switch1',0,0,'unknown',971,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5351,'ufrgs.rnp.br-vlsr-cisco',0,0,'unknown',981,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5361,'ufrgs.rnp.br-vlsr-extreme',0,0,'unknown',981,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5371,'ufsc.cipo.rnp.br-vlsr1',0,0,'unknown',991,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5381,'ufsc.cipo.rnp.br-vlsr2',0,0,'unknown',991,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5391,'uh.edu-vlsr1',0,0,'unknown',1001,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5401,'uiowa.edu-vlsr1',0,0,'unknown',1011,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5411,'ultralight.org-vlsr1',0,0,'unknown',1021,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5421,'umassd.net-andromeda',0,0,'unknown',1031,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5431,'unl.edu-vlsr1',0,0,'unknown',1041,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5441,'upenn.edu-vlsr1',0,0,'unknown',1051,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5451,'uslhcnet.org-vlsr1',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5461,'uslhcnet.org-vlsr10',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5471,'uslhcnet.org-vlsr2',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5481,'uslhcnet.org-vlsr3',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5491,'uslhcnet.org-vlsr4',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5501,'uslhcnet.org-vlsr5',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5511,'uslhcnet.org-vlsr6',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5521,'uslhcnet.org-vlsr7',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5531,'uslhcnet.org-vlsr8',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5541,'uslhcnet.org-vlsr9',0,0,'unknown',1061,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5551,'uta.edu-vlsr1',0,0,'unknown',1071,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5561,'utdallas.edu-vlsr1',0,0,'unknown',1081,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5571,'uva.nl-uva-node1',0,0,'unknown',1091,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5581,'uva.nl-uva-node2',0,0,'unknown',1091,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5591,'uvalight.net-geller',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5601,'uvalight.net-kazan',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5611,'uvalight.net-sweggb1',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5621,'uvalight.net-sweggb2',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5631,'uvalight.net-sweggb3',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5641,'uvalight.net-swlh1',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5651,'uvalight.net-swlh2',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5661,'uvalight.net-swnl',0,0,'unknown',1101,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5671,'vanderbilt.edu-vlsr1',0,0,'unknown',1111,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5681,'vanderbilt.sc10.org-vlsr1',0,0,'unknown',1121,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5691,'yellow.pod.lan-vlsr1',0,0,'unknown',1131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5701,'yellow.pod.lan-vlsr2',0,0,'unknown',1131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5711,'yellow.pod.lan-vlsr3',0,0,'unknown',1131,'1-4095','1','1',4000,0,1,0,'no',0,'unknown',NULL),(5721,'Node 5721',-81.623511,30.272111,'up',1,'1-4095','1','1',4000,0,1,4000,'no',0,'unknown',NULL),(5731,'Node 5731',-78.59455,35.85617,'down',1,'1-4095','1','1',100,5,1,4000,'no',0,'unknown',NULL),(5732,'Node 5732',-93.255669,44.972381,'up',1,'100-2500','1','1',1000,0,1,128,'no',0,'unknown',NULL),(5733,'Node 5733',-113.993369,46.871898,'up',1,'100-2500','1','1',1000,0,1,0,'no',0,'unknown',NULL),(5734,'Node 5734',-122.338413,47.614457,'up',1,'100-2500','1','1',1000,0,1,128,'no',0,'unknown',NULL),(5735,'Node 5735',-122.684858,45.531469,'up',1,'100-2500','1','1',1000,0,1,128,'no',0,'unknown',NULL);
/*!40000 ALTER TABLE `node` ENABLE KEYS */;
UNLOCK TABLES;
@@ -702,7 +702,7 @@ CREATE TABLE `oess_version` (
LOCK TABLES `oess_version` WRITE;
/*!40000 ALTER TABLE `oess_version` DISABLE KEYS */;
-INSERT INTO `oess_version` VALUES ('2.0.13');
+INSERT INTO `oess_version` VALUES ('2.0.14');
/*!40000 ALTER TABLE `oess_version` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/perl-lib/OESS/t/z-Object/L2Circuit.nso_diff.00.t b/perl-lib/OESS/t/z-Object/L2Circuit.nso_diff.00.t
index 1d7c0462c..5df7a7447 100644
--- a/perl-lib/OESS/t/z-Object/L2Circuit.nso_diff.00.t
+++ b/perl-lib/OESS/t/z-Object/L2Circuit.nso_diff.00.t
@@ -55,6 +55,7 @@ my $nso_l2connection = {
'endpoint_id' => 1,
'interface' => 'GigabitEthernet0/0',
'tag' => 1,
+ 'unit' => 1,
'device' => 'xr0'
},
{
@@ -62,6 +63,7 @@ my $nso_l2connection = {
'endpoint_id' => 2,
'interface' => 'GigabitEthernet0/1',
'tag' => 1,
+ 'unit' => 1,
'device' => 'xr0'
}
],
@@ -81,32 +83,32 @@ my $nso_l2connection = {
my $expect1 = {
- 'Node 11' => '+ e15/6
-+ Bandwidth: 0
-+ Tag: 3126
+ 'N11' => '+ e15/6.3126
++ Bandwidth: 0
++ Tag: 3126
',
- 'Node 31' => '+ e15/4
-+ Bandwidth: 0
-+ Tag: 2005
+ 'N31' => '+ e15/4.2005
++ Bandwidth: 0
++ Tag: 2005
',
- 'xr0' => '- GigabitEthernet0/0
-- Bandwidth: 0
-- Tag: 1
-- GigabitEthernet0/1
-- Bandwidth: 0
-- Tag: 1
+ 'xr0' => '- GigabitEthernet0/0.1
+- Bandwidth: 0
+- Tag: 1
+- GigabitEthernet0/1.1
+- Bandwidth: 0
+- Tag: 1
'
};
push @$nso_l2connection_tests, { circuit_id => 4081, result => $expect1 };
my $expect2 = {
- 'xr0' => '- GigabitEthernet0/0
-- Bandwidth: 0
-- Tag: 1
-- GigabitEthernet0/1
-- Bandwidth: 0
-- Tag: 1
+ 'xr0' => '- GigabitEthernet0/0.1
+- Bandwidth: 0
+- Tag: 1
+- GigabitEthernet0/1.1
+- Bandwidth: 0
+- Tag: 1
'
};
push @$nso_l2connection_tests, { model => {}, result => $expect2 };
@@ -116,8 +118,8 @@ my $expect3 = {};
push @$nso_l2connection_tests, {
model => {
endpoints => [
- { interface => 'GigabitEthernet0/0', node => 'xr0', tag => 1, bandwidth => 0 },
- { interface => 'GigabitEthernet0/1', node => 'xr0', tag => 1, bandwidth => 0 }
+ { interface => 'GigabitEthernet0/0', short_node_name => 'xr0', tag => 1, unit => 1, bandwidth => 0 },
+ { interface => 'GigabitEthernet0/1', short_node_name => 'xr0', tag => 1, unit => 1, bandwidth => 0 }
]
},
result => $expect3
diff --git a/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.00.t b/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.00.t
index e174f47ab..275a0eafc 100644
--- a/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.00.t
+++ b/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.00.t
@@ -49,29 +49,29 @@ my $fwdctl = new OESS::NSO::FWDCTL(
);
my $expect1 = {
- 'Node 11' => '+ e15/6
-+ Bandwidth: 0
-+ Tag: 3126
-- e15/6
-- Bandwidth: 200
-- Tag: 300
-- Peer 1:
-- Local ASN: 64600
-- Local IP: 192.168.3.2/31
-- Peer ASN: 64001
-- Peer IP: 192.168.3.3
-- BFD: 1
+ 'N11' => '+ e15/6.3126
++ Bandwidth: 0
++ Tag: 3126
+- e15/6.300
+- Bandwidth: 200
+- Tag: 300
+- Peer: 1
+- Local ASN: 64600
+- Local IP: 192.168.3.2/31
+- Peer ASN: 64001
+- Peer IP: 192.168.3.3
+- BFD: 1
',
- 'Node 31' => '+ e15/4
-+ Bandwidth: 0
-+ Tag: 2005
+ 'N31' => '+ e15/4.2005
++ Bandwidth: 0
++ Tag: 2005
',
- 'xr0' => '- GigabitEthernet0/0
-- Bandwidth: 0
-- Tag: 1
-- GigabitEthernet0/1
-- Bandwidth: 0
-- Tag: 1
+ 'xr0' => '- GigabitEthernet0/0.1
+- Bandwidth: 0
+- Tag: 1
+- GigabitEthernet0/1.1
+- Bandwidth: 0
+- Tag: 1
'
};
@@ -79,13 +79,13 @@ my $err = $fwdctl->addVlan(circuit_id => 4081);
ok(!defined $err, 'Vlan created');
my ($text1, $err1) = $fwdctl->get_diff_text(node_id => 11);
-ok($text1 eq $expect1->{'Node 11'}, 'Got expected diff');
-if ($text1 ne $expect1->{'Node 11'}) {
- print "Expected:\n$expect1->{'Node 11'}\nGot:\n$text1";
+ok($text1 eq $expect1->{'N11'}, 'Got expected diff');
+if ($text1 ne $expect1->{'N11'}) {
+ print "Expected:\n$expect1->{'N11'}\nGot:\n$text1";
}
my ($text2, $err2) = $fwdctl->get_diff_text(node_id => 31);
-ok($text2 eq $expect1->{'Node 31'}, 'Got expected diff');
+ok($text2 eq $expect1->{'N31'}, 'Got expected diff');
my ($text3, $err3) = $fwdctl->get_diff_text(node_name => 'xr0');
ok($text3 eq $expect1->{'xr0'}, 'Got expected diff');
@@ -101,14 +101,17 @@ my $fwdctl2 = new OESS::NSO::FWDCTL(
);
my $expect2 = {
- 'xr0' => '- GigabitEthernet0/0
-- Bandwidth: 0
-- Tag: 1
-- GigabitEthernet0/1
-- Bandwidth: 0
-- Tag: 1
+ 'xr0' => '- GigabitEthernet0/0.1
+- Bandwidth: 0
+- Tag: 1
+- GigabitEthernet0/1.1
+- Bandwidth: 0
+- Tag: 1
'
};
my ($text4, $err4) = $fwdctl2->get_diff_text(node_name => 'xr0');
ok($text4 eq $expect2->{'xr0'}, 'Got expected diff');
+if ($text4 ne $expect2->{'xr0'}) {
+ print "Expected:\n$expect2->{'xr0'}\nGot:\n$text4";
+}
diff --git a/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.01.t b/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.01.t
index fa9413aa2..f90f7dfc5 100644
--- a/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.01.t
+++ b/perl-lib/OESS/t/z-Object/NSO/FWDCTL.get_diff_text.01.t
@@ -49,46 +49,46 @@ my $fwdctl = new OESS::NSO::FWDCTL(
);
my $expect1 = {
- 'Node 31' => '+ e15/4
-+ Bandwidth: 100
-+ Tag: 2010
-+ Peer 2:
-+ Local ASN: 7
-+ Local IP: 192.168.2.2/31
-+ Peer ASN: 64602
-+ Peer IP: 192.168.2.3
-+ BFD: 0
+ 'N31' => '+ e15/4.200
++ Bandwidth: 100
++ Tag: 2010
++ Peer: 2
++ Local ASN: 7
++ Local IP: 192.168.2.2/31
++ Peer ASN: 64602
++ Peer IP: 192.168.2.3
++ BFD: 0
',
- 'Node 11' => ' e15/6
-- Bandwidth: 200
-+ Bandwidth: 100
-- Tag: 300
-+ Tag: 3010
- Peer 1:
-- Local IP: 192.168.3.2/31
-+ Local IP: 192.168.1.2/31
-- Peer ASN: 64001
-+ Peer ASN: 64601
-- Peer IP: 192.168.3.3
-+ Peer IP: 192.168.1.3
-- BFD: 1
-+ BFD: 0
-+ Peer 3:
-+ Local ASN:
-+ Local IP: 192.168.5.2/31
-+ Peer ASN: 64605
-+ Peer IP: 192.168.5.3
-+ BFD: 0
+ 'N11' => ' e15/6.300
+- Bandwidth: 200
++ Bandwidth: 100
+- Tag: 300
++ Tag: 3010
+ Peer: 1
+- Local IP: 192.168.3.2/31
++ Local IP: 192.168.1.2/31
+- Peer ASN: 64001
++ Peer ASN: 64601
+- Peer IP: 192.168.3.3
++ Peer IP: 192.168.1.3
+- BFD: 1
++ BFD: 0
++ Peer: 3
++ Local ASN: 7
++ Local IP: 192.168.5.2/31
++ Peer ASN: 64605
++ Peer IP: 192.168.5.3
++ BFD: 0
',
- 'xr1' => '- GigabitEthernet0/1
-- Bandwidth: 100
-- Tag: 300
-- Peer 2:
-- Local ASN: 64600
-- Local IP: 192.168.2.2/31
-- Peer ASN: 64602
-- Peer IP: 192.168.2.3
-- BFD: 0
+ 'xr1' => '- GigabitEthernet0/1.300
+- Bandwidth: 100
+- Tag: 300
+- Peer: 2
+- Local ASN: 64600
+- Local IP: 192.168.2.2/31
+- Peer ASN: 64602
+- Peer IP: 192.168.2.3
+- BFD: 0
'
};
@@ -96,10 +96,19 @@ my $err = $fwdctl->addVrf(vrf_id => 1);
ok(!defined $err, 'Vrf created');
my ($text1, $err1) = $fwdctl->get_diff_text(node_id => 11);
-ok($text1 eq $expect1->{'Node 11'}, 'Got expected diff');
+ok($text1 eq $expect1->{'N11'}, 'Got expected diff');
+if ($text1 ne $expect1->{'N11'}) {
+ print "Expected:\n$expect1->{'N11'}\nGot:\n$text1";
+}
my ($text2, $err2) = $fwdctl->get_diff_text(node_id => 31);
-ok($text2 eq $expect1->{'Node 31'}, 'Got expected diff');
+ok($text2 eq $expect1->{'N31'}, 'Got expected diff');
+if ($text2 ne $expect1->{'N31'}) {
+ print "Expected:\n$expect1->{'N31'}\nGot:\n$text2";
+}
my ($text3, $err3) = $fwdctl->get_diff_text(node_name => 'xr1');
ok($text3 eq $expect1->{'xr1'}, 'Got expected diff');
+if ($text3 ne $expect1->{'xr1'}) {
+ print "Expected:\n$expect1->{'xr1'}\nGot:\n$text3";
+}
diff --git a/perl-lib/OESS/t/z-Object/VRF.nso_diff.00.t b/perl-lib/OESS/t/z-Object/VRF.nso_diff.00.t
index 28cab6b18..e13e5993c 100644
--- a/perl-lib/OESS/t/z-Object/VRF.nso_diff.00.t
+++ b/perl-lib/OESS/t/z-Object/VRF.nso_diff.00.t
@@ -43,46 +43,46 @@ my ($nso_l3connections, $err) = $nso->get_l3connections();
my $nso_l3connection = $nso_l3connections->[0];
my $expect1 = {
- 'Node 31' => '+ e15/4
-+ Bandwidth: 100
-+ Tag: 2010
-+ Peer 2:
-+ Local ASN: 7
-+ Local IP: 192.168.2.2/31
-+ Peer ASN: 64602
-+ Peer IP: 192.168.2.3
-+ BFD: 0
+ 'N31' => '+ e15/4.200
++ Bandwidth: 100
++ Tag: 2010
++ Peer: 2
++ Local ASN: 7
++ Local IP: 192.168.2.2/31
++ Peer ASN: 64602
++ Peer IP: 192.168.2.3
++ BFD: 0
',
- 'Node 11' => ' e15/6
-- Bandwidth: 200
-+ Bandwidth: 100
-- Tag: 300
-+ Tag: 3010
- Peer 1:
-- Local IP: 192.168.3.2/31
-+ Local IP: 192.168.1.2/31
-- Peer ASN: 64001
-+ Peer ASN: 64601
-- Peer IP: 192.168.3.3
-+ Peer IP: 192.168.1.3
-- BFD: 1
-+ BFD: 0
-+ Peer 3:
-+ Local ASN:
-+ Local IP: 192.168.5.2/31
-+ Peer ASN: 64605
-+ Peer IP: 192.168.5.3
-+ BFD: 0
+ 'N11' => ' e15/6.300
+- Bandwidth: 200
++ Bandwidth: 100
+- Tag: 300
++ Tag: 3010
+ Peer: 1
+- Local IP: 192.168.3.2/31
++ Local IP: 192.168.1.2/31
+- Peer ASN: 64001
++ Peer ASN: 64601
+- Peer IP: 192.168.3.3
++ Peer IP: 192.168.1.3
+- BFD: 1
++ BFD: 0
++ Peer: 3
++ Local ASN: 7
++ Local IP: 192.168.5.2/31
++ Peer ASN: 64605
++ Peer IP: 192.168.5.3
++ BFD: 0
',
- 'xr1' => '- GigabitEthernet0/1
-- Bandwidth: 100
-- Tag: 300
-- Peer 2:
-- Local ASN: 64600
-- Local IP: 192.168.2.2/31
-- Peer ASN: 64602
-- Peer IP: 192.168.2.3
-- BFD: 0
+ 'xr1' => '- GigabitEthernet0/1.300
+- Bandwidth: 100
+- Tag: 300
+- Peer: 2
+- Local ASN: 64600
+- Local IP: 192.168.2.2/31
+- Peer ASN: 64602
+- Peer IP: 192.168.2.3
+- BFD: 0
'
};
push @$nso_l3connection_tests, { vrf_id => 1, result => $expect1 };
diff --git a/perl-lib/OESS/t/z-Object/VRF.nso_diff.01.t b/perl-lib/OESS/t/z-Object/VRF.nso_diff.01.t
new file mode 100644
index 000000000..86fc4e8f7
--- /dev/null
+++ b/perl-lib/OESS/t/z-Object/VRF.nso_diff.01.t
@@ -0,0 +1,502 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FindBin;
+my $path;
+
+BEGIN {
+ if ($FindBin::Bin =~ /(.*)/) {
+ $path = $1;
+ }
+}
+use lib "$path/..";
+
+
+use Data::Dumper;
+use Test::Deep;
+use Test::More tests => 4;
+
+use OESSDatabaseTester;
+
+use OESS::DB;
+use OESS::Endpoint;
+use OESS::Peer;
+use OESS::VRF;
+use OESS::NSO::ClientStub;
+
+OESSDatabaseTester::resetOESSDB(
+ config => "$path/../conf/database.xml",
+ dbdump => "$path/../conf/oess_known_state.sql"
+);
+
+
+my $db = new OESS::DB(
+ config => "$path/../conf/database.xml"
+);
+
+
+my $nso_l3connection_tests = [];
+
+my $nso_conn1 = {
+ "connection_id" => 456,
+ "endpoint" => [
+ {
+ "endpoint_id" => 8,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 300,
+ "unit" => 300,
+ "bandwidth" => 200,
+ "peer" => [
+ {
+ "peer_id" => 1,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.3.2/31",
+ "peer_asn" => 64001,
+ "peer_ip" => "192.168.3.3",
+ "bfd" => 1,
+ "ip_version" => "ipv4"
+ }
+ ]
+ },
+ {
+ "endpoint_id" => 9,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 301,
+ "unit" => 301,
+ "bandwidth" => 100,
+ "peer" => [
+ {
+ "peer_id" => 2,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.2.2/31",
+ "peer_asn" => 64602,
+ "peer_ip" => "192.168.2.3",
+ "bfd" => 0,
+ "ip_version" => "ipv4"
+ }
+ ]
+ }
+ ]
+};
+my $diff1 = {
+ 'N11' => '- e15/6.300
+- Bandwidth: 200
+- Tag: 300
+- Peer: 1
+- Local ASN: 64600
+- Local IP: 192.168.3.2/31
+- Peer ASN: 64001
+- Peer IP: 192.168.3.3
+- BFD: 1
+- e15/6.301
+- Bandwidth: 100
+- Tag: 301
+- Peer: 2
+- Local ASN: 64600
+- Local IP: 192.168.2.2/31
+- Peer ASN: 64602
+- Peer IP: 192.168.2.3
+- BFD: 0
+'
+};
+my $oess_conn1 = new OESS::VRF(
+ db => $db,
+ model => {
+ local_asn => 64600,
+ vrf_id => 456
+ }
+);
+
+
+my $nso_conn2 = {
+ "connection_id" => 456,
+ "endpoint" => [
+ {
+ "endpoint_id" => 8,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 300,
+ "unit" => 300,
+ "bandwidth" => 200,
+ "peer" => [
+ {
+ "peer_id" => 1,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.3.2/31",
+ "peer_asn" => 64001,
+ "peer_ip" => "192.168.3.3",
+ "bfd" => 1,
+ "ip_version" => "ipv4"
+ }
+ ]
+ },
+ {
+ "endpoint_id" => 9,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 301,
+ "unit" => 301,
+ "bandwidth" => 100,
+ "peer" => [
+ {
+ "peer_id" => 2,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.2.2/31",
+ "peer_asn" => 64602,
+ "peer_ip" => "192.168.2.3",
+ "bfd" => 0,
+ "ip_version" => "ipv4"
+ }
+ ]
+ }
+ ]
+};
+my $diff2 = {
+ 'N11' => ' e15/6.300
+- Peer: 1
+- Local ASN: 64600
+- Local IP: 192.168.3.2/31
+- Peer ASN: 64001
+- Peer IP: 192.168.3.3
+- BFD: 1
+ e15/6.301
+- Peer: 2
+- Local ASN: 64600
+- Local IP: 192.168.2.2/31
+- Peer ASN: 64602
+- Peer IP: 192.168.2.3
+- BFD: 0
+'
+};
+my $oess_conn2 = new OESS::VRF(
+ db => $db,
+ model => {
+ local_asn => 64600,
+ vrf_id => 456
+ }
+);
+$oess_conn2->add_endpoint(new OESS::Endpoint(
+ db => $db,
+ model => {
+ vrf_endpoint_id => 8,
+ node => 'Node 11',
+ short_node_name => 'N11',
+ interface => 'e15/6',
+ unit => 300,
+ tag => 300,
+ inner_tag => undef,
+ bandwidth => 200,
+ mtu => 9000,
+ operational_state => 'up'
+ }
+));
+$oess_conn2->add_endpoint(new OESS::Endpoint(
+ db => $db,
+ model => {
+ vrf_endpoint_id => 9,
+ node => 'Node 11',
+ short_node_name => 'N11',
+ interface => 'e15/6',
+ unit => 301,
+ tag => 301,
+ inner_tag => undef,
+ bandwidth => 100,
+ mtu => 9000,
+ operational_state => 'up'
+ }
+));
+
+
+# update each peers local and remote ips
+my $nso_conn3 = {
+ "connection_id" => 456,
+ "endpoint" => [
+ {
+ "endpoint_id" => 8,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 300,
+ "unit" => 300,
+ "bandwidth" => 200,
+ "peer" => [
+ {
+ "peer_id" => 1,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.3.2/31",
+ "peer_asn" => 64001,
+ "peer_ip" => "192.168.3.3",
+ "bfd" => 1,
+ "ip_version" => "ipv4"
+ }
+ ]
+ },
+ {
+ "endpoint_id" => 9,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 301,
+ "unit" => 301,
+ "bandwidth" => 100,
+ "peer" => [
+ {
+ "peer_id" => 2,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.2.2/31",
+ "peer_asn" => 64602,
+ "peer_ip" => "192.168.2.3",
+ "bfd" => 0,
+ "ip_version" => "ipv4"
+ }
+ ]
+ }
+ ]
+};
+my $diff3 = {
+ 'N11' => ' e15/6.300
+ Peer: 1
+- Local IP: 192.168.3.2/31
++ Local IP: 192.168.5.2/31
+- Peer IP: 192.168.3.3
++ Peer IP: 192.168.5.3
+- BFD: 1
++ BFD: 0
+ e15/6.301
+ Peer: 2
+- Local IP: 192.168.2.2/31
++ Local IP: 192.168.4.2/31
+- Peer ASN: 64602
++ Peer ASN: 64002
+- Peer IP: 192.168.2.3
++ Peer IP: 192.168.4.3
+'
+};
+my $oess_conn3 = new OESS::VRF(
+ db => $db,
+ model => {
+ local_asn => 64600,
+ vrf_id => 456
+ }
+);
+my $ep8 = new OESS::Endpoint(
+ db => $db,
+ model => {
+ vrf_endpoint_id => 8,
+ node => 'Node 11',
+ short_node_name => 'N11',
+ interface => 'e15/6',
+ unit => 300,
+ tag => 300,
+ inner_tag => undef,
+ bandwidth => 200,
+ mtu => 9000,
+ operational_state => 'up'
+ }
+);
+my $pr1 = new OESS::Peer(
+ db => $db,
+ model => {
+ local_ip => '192.168.5.2/31',
+ peer_ip => '192.168.5.3',
+ peer_asn => 64001,
+ ip_version => 'ipv4',
+ bfd => 0,
+ vrf_ep_peer_id => 1
+ }
+);
+$ep8->add_peer($pr1);
+$oess_conn3->add_endpoint($ep8);
+my $ep9 = new OESS::Endpoint(
+ db => $db,
+ model => {
+ vrf_endpoint_id => 9,
+ node => 'Node 11',
+ short_node_name => 'N11',
+ interface => 'e15/6',
+ unit => 301,
+ tag => 301,
+ inner_tag => undef,
+ bandwidth => 100,
+ mtu => 9000,
+ operational_state => 'up'
+ }
+);
+my $pr2 = new OESS::Peer(
+ db => $db,
+ model => {
+ local_ip => '192.168.4.2/31',
+ peer_ip => '192.168.4.3',
+ peer_asn => 64002,
+ ip_version => 'ipv4',
+ bfd => 0,
+ vrf_ep_peer_id => 2
+ }
+);
+$ep9->add_peer($pr2);
+$oess_conn3->add_endpoint($ep9);
+
+
+# one comppletely new peer
+my $nso_conn4 = {
+ "connection_id" => 456,
+ "endpoint" => [
+ {
+ "endpoint_id" => 8,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 300,
+ "unit" => 300,
+ "bandwidth" => 200,
+ "peer" => [
+ {
+ "peer_id" => 1,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.3.2/31",
+ "peer_asn" => 64001,
+ "peer_ip" => "192.168.3.3",
+ "bfd" => 1,
+ "ip_version" => "ipv4"
+ }
+ ]
+ },
+ {
+ "endpoint_id" => 9,
+ "vars" => {
+ "pdp" => "CHIC-JJJ-0",
+ },
+ "device" => "N11",
+ "interface" => "e15/6",
+ "tag" => 301,
+ "unit" => 301,
+ "bandwidth" => 100,
+ "peer" => [
+ {
+ "peer_id" => 2,
+ "local_asn" => 64600,
+ "local_ip" => "192.168.2.2/31",
+ "peer_asn" => 64602,
+ "peer_ip" => "192.168.2.3",
+ "bfd" => 0,
+ "ip_version" => "ipv4"
+ }
+ ]
+ }
+ ]
+};
+my $diff4 = {
+ 'N11' => ' e15/6.301
+- Peer: 2
+- Local ASN: 64600
+- Local IP: 192.168.2.2/31
+- Peer ASN: 64602
+- Peer IP: 192.168.2.3
+- BFD: 0
++ Peer: 3
++ Local ASN: 64600
++ Local IP: 192.168.4.2/31
++ Peer ASN: 64004
++ Peer IP: 192.168.4.3
++ BFD: 0
+'
+};
+my $oess_conn4 = new OESS::VRF(
+ db => $db,
+ model => {
+ local_asn => 64600,
+ vrf_id => 456
+ }
+);
+my $ep82 = new OESS::Endpoint(
+ db => $db,
+ model => {
+ vrf_endpoint_id => 8,
+ node => 'Node 11',
+ short_node_name => 'N11',
+ interface => 'e15/6',
+ unit => 300,
+ tag => 300,
+ inner_tag => undef,
+ bandwidth => 200,
+ mtu => 9000,
+ operational_state => 'up'
+ }
+);
+my $pr12 = new OESS::Peer(
+ db => $db,
+ model => {
+ local_ip => '192.168.3.2/31',
+ peer_ip => '192.168.3.3',
+ peer_asn => 64001,
+ ip_version => 'ipv4',
+ bfd => 1,
+ vrf_ep_peer_id => 1
+ }
+);
+$ep82->add_peer($pr12);
+$oess_conn4->add_endpoint($ep82);
+my $ep92 = new OESS::Endpoint(
+ db => $db,
+ model => {
+ vrf_endpoint_id => 9,
+ node => 'Node 11',
+ short_node_name => 'N11',
+ interface => 'e15/6',
+ unit => 301,
+ tag => 301,
+ inner_tag => undef,
+ bandwidth => 100,
+ mtu => 9000,
+ operational_state => 'up'
+ }
+);
+my $pr32 = new OESS::Peer(
+ db => $db,
+ model => {
+ local_ip => '192.168.4.2/31',
+ peer_ip => '192.168.4.3',
+ peer_asn => 64004,
+ ip_version => 'ipv4',
+ bfd => 0,
+ vrf_ep_peer_id => 3
+ }
+);
+$ep92->add_peer($pr32);
+$oess_conn4->add_endpoint($ep92);
+
+
+my $tests = [
+ { nso_conn => $nso_conn1, oess_conn => $oess_conn1, diff => $diff1 },
+ { nso_conn => $nso_conn2, oess_conn => $oess_conn2, diff => $diff2 },
+ { nso_conn => $nso_conn3, oess_conn => $oess_conn3, diff => $diff3 },
+ { nso_conn => $nso_conn4, oess_conn => $oess_conn4, diff => $diff4 },
+];
+
+foreach my $test (@$tests) {
+ my $result_diff = $test->{oess_conn}->nso_diff($test->{nso_conn});
+ my $ok = cmp_deeply($result_diff, $test->{diff}, 'Human readable diff generated');
+ warn Dumper($result_diff) if !$ok;
+}