* Made the sysfs directory references static.
* Fixed a typo in Database->insert_or_update_bridges(). * Added 'bond_mac_address' and 'bond_operational' to the bonds table. * Gathered data needed for bonds in tools/anvil-update-states and got bonds recording successfully (but more testing needed). Signed-off-by: Digimer <digimer@alteeve.ca>
This commit is contained in:
parent
66f280c9a7
commit
b0232c6180
@ -863,9 +863,6 @@ sub _set_paths
|
|||||||
secure => {
|
secure => {
|
||||||
postgres_pgpass => "/var/lib/pgsql/.pgpass",
|
postgres_pgpass => "/var/lib/pgsql/.pgpass",
|
||||||
},
|
},
|
||||||
sysfs => {
|
|
||||||
network_interfaces => "/sys/class/net",
|
|
||||||
},
|
|
||||||
sql => {
|
sql => {
|
||||||
'anvil.sql' => "/usr/sbin/anvil.sql",
|
'anvil.sql' => "/usr/sbin/anvil.sql",
|
||||||
},
|
},
|
||||||
|
@ -1446,14 +1446,14 @@ sub insert_or_update_bridges
|
|||||||
my $bridge_id = $parameter->{bridge_id} ? $parameter->{bridge_id} : "NULL";
|
my $bridge_id = $parameter->{bridge_id} ? $parameter->{bridge_id} : "NULL";
|
||||||
my $bridge_stp_enabled = $parameter->{bridge_stp_enabled} ? $parameter->{bridge_stp_enabled} : "NULL";
|
my $bridge_stp_enabled = $parameter->{bridge_stp_enabled} ? $parameter->{bridge_stp_enabled} : "NULL";
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
|
||||||
uuid => $uuid,
|
uuid => $uuid,
|
||||||
file => $file,
|
file => $file,
|
||||||
line => $line,
|
line => $line,
|
||||||
bridge_uuid => $bridge_uuid,
|
bridge_uuid => $bridge_uuid,
|
||||||
bridge_host_uuid => $bridge_host_uuid,
|
bridge_host_uuid => $bridge_host_uuid,
|
||||||
bridge_name => $bridge_name,
|
bridge_name => $bridge_name,
|
||||||
bridge_id => $bridge_id,
|
bridge_id => $bridge_id,
|
||||||
bridge_down_delay => $bridge_down_delay,
|
bridge_stp_enabled => $bridge_stp_enabled,
|
||||||
}});
|
}});
|
||||||
|
|
||||||
if (not $bridge_name)
|
if (not $bridge_name)
|
||||||
@ -1642,12 +1642,16 @@ This is the bond's device name.
|
|||||||
|
|
||||||
=head2 bond_mode (required)
|
=head2 bond_mode (required)
|
||||||
|
|
||||||
This is the bonding mode named used for this bond.
|
This is the bonding mode used for this bond.
|
||||||
|
|
||||||
=head2 bond_mtu (optional)
|
=head2 bond_mtu (optional)
|
||||||
|
|
||||||
This is the MTU for the bonded interface.
|
This is the MTU for the bonded interface.
|
||||||
|
|
||||||
|
=head2 bond_operational (optional)
|
||||||
|
|
||||||
|
This is set to C<< up >>, C<< down >> or C<< unknown >>. It indicates whether the bond has a working slaved interface or not.
|
||||||
|
|
||||||
=head2 bond_primary_slave (optional)
|
=head2 bond_primary_slave (optional)
|
||||||
|
|
||||||
This is the primary interface name in the bond.
|
This is the primary interface name in the bond.
|
||||||
@ -1660,6 +1664,10 @@ This is the primary interface reselect policy.
|
|||||||
|
|
||||||
This is the interface currently being used by the bond.
|
This is the interface currently being used by the bond.
|
||||||
|
|
||||||
|
=head2 bond_mac_address (optional)
|
||||||
|
|
||||||
|
This is the current / active MAC address in use by the bond interface.
|
||||||
|
|
||||||
=head2 bond_mii_status (optional)
|
=head2 bond_mii_status (optional)
|
||||||
|
|
||||||
This is the current status of the interface (C<< up >> or C<< down >>).
|
This is the current status of the interface (C<< up >> or C<< down >>).
|
||||||
@ -1698,6 +1706,8 @@ sub insert_or_update_bonds
|
|||||||
my $bond_mii_polling_interval = $parameter->{bond_mii_polling_interval} ? $parameter->{bond_mii_polling_interval} : "NULL";
|
my $bond_mii_polling_interval = $parameter->{bond_mii_polling_interval} ? $parameter->{bond_mii_polling_interval} : "NULL";
|
||||||
my $bond_up_delay = $parameter->{bond_up_delay} ? $parameter->{bond_up_delay} : "NULL";
|
my $bond_up_delay = $parameter->{bond_up_delay} ? $parameter->{bond_up_delay} : "NULL";
|
||||||
my $bond_down_delay = $parameter->{bond_down_delay} ? $parameter->{bond_down_delay} : "NULL";
|
my $bond_down_delay = $parameter->{bond_down_delay} ? $parameter->{bond_down_delay} : "NULL";
|
||||||
|
my $bond_mac_address = $parameter->{bond_mac_address} ? $parameter->{bond_mac_address} : "NULL";
|
||||||
|
my $bond_operational = $parameter->{bond_operational} ? $parameter->{bond_operational} : "NULL";
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
|
||||||
uuid => $uuid,
|
uuid => $uuid,
|
||||||
file => $file,
|
file => $file,
|
||||||
@ -1714,6 +1724,8 @@ sub insert_or_update_bonds
|
|||||||
bond_mii_polling_interval => $bond_mii_polling_interval,
|
bond_mii_polling_interval => $bond_mii_polling_interval,
|
||||||
bond_up_delay => $bond_up_delay,
|
bond_up_delay => $bond_up_delay,
|
||||||
bond_down_delay => $bond_down_delay,
|
bond_down_delay => $bond_down_delay,
|
||||||
|
bond_mac_address => $bond_mac_address,
|
||||||
|
bond_operational => $bond_operational,
|
||||||
}});
|
}});
|
||||||
|
|
||||||
if (not $bond_name)
|
if (not $bond_name)
|
||||||
@ -1803,6 +1815,8 @@ INSERT INTO
|
|||||||
bond_mii_polling_interval,
|
bond_mii_polling_interval,
|
||||||
bond_up_delay,
|
bond_up_delay,
|
||||||
bond_down_delay,
|
bond_down_delay,
|
||||||
|
bond_mac_address,
|
||||||
|
bond_operational,
|
||||||
modified_date
|
modified_date
|
||||||
) VALUES (
|
) VALUES (
|
||||||
".$anvil->data->{sys}{use_db_fh}->quote($bond_uuid).",
|
".$anvil->data->{sys}{use_db_fh}->quote($bond_uuid).",
|
||||||
@ -1817,6 +1831,8 @@ INSERT INTO
|
|||||||
".$anvil->data->{sys}{use_db_fh}->quote($bond_mii_polling_interval).",
|
".$anvil->data->{sys}{use_db_fh}->quote($bond_mii_polling_interval).",
|
||||||
".$anvil->data->{sys}{use_db_fh}->quote($bond_up_delay).",
|
".$anvil->data->{sys}{use_db_fh}->quote($bond_up_delay).",
|
||||||
".$anvil->data->{sys}{use_db_fh}->quote($bond_down_delay).",
|
".$anvil->data->{sys}{use_db_fh}->quote($bond_down_delay).",
|
||||||
|
".$anvil->data->{sys}{use_db_fh}->quote($bond_mac_address).",
|
||||||
|
".$anvil->data->{sys}{use_db_fh}->quote($bond_operational).",
|
||||||
".$anvil->data->{sys}{use_db_fh}->quote($anvil->data->{sys}{db_timestamp})."
|
".$anvil->data->{sys}{use_db_fh}->quote($anvil->data->{sys}{db_timestamp})."
|
||||||
);
|
);
|
||||||
";
|
";
|
||||||
@ -1839,7 +1855,9 @@ SELECT
|
|||||||
bond_mii_status,
|
bond_mii_status,
|
||||||
bond_mii_polling_interval,
|
bond_mii_polling_interval,
|
||||||
bond_up_delay,
|
bond_up_delay,
|
||||||
bond_down_delay
|
bond_down_delay,
|
||||||
|
bond_mac_address,
|
||||||
|
bond_operational
|
||||||
FROM
|
FROM
|
||||||
bonds
|
bonds
|
||||||
WHERE
|
WHERE
|
||||||
@ -1866,6 +1884,8 @@ WHERE
|
|||||||
my $old_bond_mii_polling_interval = defined $row->[8] ? $row->[8] : "NULL";
|
my $old_bond_mii_polling_interval = defined $row->[8] ? $row->[8] : "NULL";
|
||||||
my $old_bond_up_delay = defined $row->[9] ? $row->[9] : "NULL";
|
my $old_bond_up_delay = defined $row->[9] ? $row->[9] : "NULL";
|
||||||
my $old_bond_down_delay = defined $row->[10] ? $row->[10] : "NULL";
|
my $old_bond_down_delay = defined $row->[10] ? $row->[10] : "NULL";
|
||||||
|
my $old_bond_mac_address = defined $row->[11] ? $row->[11] : "NULL";
|
||||||
|
my $old_bond_operational = defined $row->[12] ? $row->[12] : "NULL";
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => $debug, list => {
|
||||||
old_bond_host_uuid => $old_bond_host_uuid,
|
old_bond_host_uuid => $old_bond_host_uuid,
|
||||||
old_bond_name => $old_bond_name,
|
old_bond_name => $old_bond_name,
|
||||||
@ -1878,6 +1898,8 @@ WHERE
|
|||||||
old_bond_mii_polling_interval => $old_bond_mii_polling_interval,
|
old_bond_mii_polling_interval => $old_bond_mii_polling_interval,
|
||||||
old_bond_up_delay => $old_bond_up_delay,
|
old_bond_up_delay => $old_bond_up_delay,
|
||||||
old_bond_down_delay => $old_bond_down_delay,
|
old_bond_down_delay => $old_bond_down_delay,
|
||||||
|
old_bond_mac_address => $old_bond_mac_address,
|
||||||
|
old_bond_operational => $old_bond_operational,
|
||||||
}});
|
}});
|
||||||
|
|
||||||
# Anything change?
|
# Anything change?
|
||||||
@ -1891,7 +1913,9 @@ WHERE
|
|||||||
($old_bond_mii_status ne $bond_mii_status) or
|
($old_bond_mii_status ne $bond_mii_status) or
|
||||||
($old_bond_mii_polling_interval ne $bond_mii_polling_interval) or
|
($old_bond_mii_polling_interval ne $bond_mii_polling_interval) or
|
||||||
($old_bond_up_delay ne $bond_up_delay) or
|
($old_bond_up_delay ne $bond_up_delay) or
|
||||||
($old_bond_down_delay ne $bond_down_delay))
|
($old_bond_down_delay ne $bond_down_delay) or
|
||||||
|
($old_bond_mac_address ne $bond_mac_address) or
|
||||||
|
($old_bond_operational ne $bond_operational))
|
||||||
{
|
{
|
||||||
# Something changed, save.
|
# Something changed, save.
|
||||||
my $query = "
|
my $query = "
|
||||||
@ -1909,6 +1933,8 @@ SET
|
|||||||
bond_mii_polling_interval = ".$anvil->data->{sys}{use_db_fh}->quote($bond_mii_polling_interval).",
|
bond_mii_polling_interval = ".$anvil->data->{sys}{use_db_fh}->quote($bond_mii_polling_interval).",
|
||||||
bond_up_delay = ".$anvil->data->{sys}{use_db_fh}->quote($bond_up_delay).",
|
bond_up_delay = ".$anvil->data->{sys}{use_db_fh}->quote($bond_up_delay).",
|
||||||
bond_down_delay = ".$anvil->data->{sys}{use_db_fh}->quote($bond_down_delay).",
|
bond_down_delay = ".$anvil->data->{sys}{use_db_fh}->quote($bond_down_delay).",
|
||||||
|
bond_mac_address = ".$anvil->data->{sys}{use_db_fh}->quote($bond_mac_address).",
|
||||||
|
bond_operational = ".$anvil->data->{sys}{use_db_fh}->quote($bond_operational).",
|
||||||
modified_date = ".$anvil->data->{sys}{use_db_fh}->quote($anvil->data->{sys}{db_timestamp})."
|
modified_date = ".$anvil->data->{sys}{use_db_fh}->quote($anvil->data->{sys}{db_timestamp})."
|
||||||
WHERE
|
WHERE
|
||||||
bond_uuid = ".$anvil->data->{sys}{use_db_fh}->quote($bond_uuid)."
|
bond_uuid = ".$anvil->data->{sys}{use_db_fh}->quote($bond_uuid)."
|
||||||
|
@ -46,7 +46,7 @@ sub scan
|
|||||||
{
|
{
|
||||||
my ($anvil) = @_;
|
my ($anvil) = @_;
|
||||||
|
|
||||||
my $directory = $anvil->data->{path}{sysfs}{network_interfaces};
|
my $directory = "/sys/class/net";
|
||||||
print $THIS_FILE." ".__LINE__."; directory: [".$directory."]\n";
|
print $THIS_FILE." ".__LINE__."; directory: [".$directory."]\n";
|
||||||
local(*DIRECTORY);
|
local(*DIRECTORY);
|
||||||
$anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => 3, key => "log_0018", variables => { directory => $directory }});
|
$anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => 3, key => "log_0018", variables => { directory => $directory }});
|
||||||
|
@ -54,7 +54,7 @@ sub report_network
|
|||||||
# We'll read through '/sys/class/net' looking for network interfaces.
|
# We'll read through '/sys/class/net' looking for network interfaces.
|
||||||
# * 'sys::network::interface::<iface_name>::ip' - If an IP address is set
|
# * 'sys::network::interface::<iface_name>::ip' - If an IP address is set
|
||||||
# * 'sys::network::interface::<iface_name>::subnet' - If an IP is set
|
# * 'sys::network::interface::<iface_name>::subnet' - If an IP is set
|
||||||
my $directory = $anvil->data->{path}{sysfs}{network_interfaces};
|
my $directory = "/sys/class/net";
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { directory => $directory }});
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { directory => $directory }});
|
||||||
|
|
||||||
local(*DIRECTORY);
|
local(*DIRECTORY);
|
||||||
@ -64,7 +64,7 @@ sub report_network
|
|||||||
{
|
{
|
||||||
next if $file eq ".";
|
next if $file eq ".";
|
||||||
next if $file eq "..";
|
next if $file eq "..";
|
||||||
next if $file eq "lo";
|
next if $file eq "lo";
|
||||||
next if $file =~ /virbr\d/;
|
next if $file =~ /virbr\d/;
|
||||||
my $full_path = "$directory/$file";
|
my $full_path = "$directory/$file";
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { full_path => $full_path }});
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { full_path => $full_path }});
|
||||||
@ -77,12 +77,21 @@ sub report_network
|
|||||||
my $mtu = -e $full_path."/mtu" ? $anvil->Storage->read_file({file => $full_path."/mtu"}) : 0;
|
my $mtu = -e $full_path."/mtu" ? $anvil->Storage->read_file({file => $full_path."/mtu"}) : 0;
|
||||||
my $duplex = -e $full_path."/duplex" ? $anvil->Storage->read_file({file => $full_path."/duplex"}) : "unknown"; # full or half?
|
my $duplex = -e $full_path."/duplex" ? $anvil->Storage->read_file({file => $full_path."/duplex"}) : "unknown"; # full or half?
|
||||||
my $operational = -e $full_path."/operstate" ? $anvil->Storage->read_file({file => $full_path."/operstate"}) : "unknown"; # up or down
|
my $operational = -e $full_path."/operstate" ? $anvil->Storage->read_file({file => $full_path."/operstate"}) : "unknown"; # up or down
|
||||||
my $ip_address = "";
|
|
||||||
my $subnet_mask = "";
|
|
||||||
my $speed = $link_state ? $anvil->Storage->read_file({file => $full_path."/speed", debug => 2}) : 0; # Mbps (ie: 1000 = Gbps), gives a very high number for unplugged link
|
my $speed = $link_state ? $anvil->Storage->read_file({file => $full_path."/speed", debug => 2}) : 0; # Mbps (ie: 1000 = Gbps), gives a very high number for unplugged link
|
||||||
my $media = "unknown";
|
my $media = "unknown";
|
||||||
my $type = "interface";
|
my $type = "interface";
|
||||||
|
|
||||||
|
# These are variables that will be needed if this is a bond interface.
|
||||||
|
my $ip_address = "";
|
||||||
|
my $subnet_mask = "";
|
||||||
|
my $bond_mode = "";
|
||||||
|
my $primary_slave = "";
|
||||||
|
my $primary_reselect = "";
|
||||||
|
my $active_slave = "";
|
||||||
|
my $mii_polling_interval = "";
|
||||||
|
my $up_delay = "";
|
||||||
|
my $down_delay = "";
|
||||||
|
|
||||||
if (exists $anvil->data->{sys}{network}{interface}{$interface})
|
if (exists $anvil->data->{sys}{network}{interface}{$interface})
|
||||||
{
|
{
|
||||||
$ip_address = $anvil->data->{sys}{network}{interface}{$interface}{ip} ? $anvil->data->{sys}{network}{interface}{$interface}{ip} : "";
|
$ip_address = $anvil->data->{sys}{network}{interface}{$interface}{ip} ? $anvil->data->{sys}{network}{interface}{$interface}{ip} : "";
|
||||||
@ -129,17 +138,43 @@ sub report_network
|
|||||||
# Yup, we'll neet to dig into the bond proc files to get the proper slaved
|
# Yup, we'll neet to dig into the bond proc files to get the proper slaved
|
||||||
# interface MAC addresses.
|
# interface MAC addresses.
|
||||||
$type = "bond";
|
$type = "bond";
|
||||||
|
|
||||||
|
# Read the bond mode.
|
||||||
|
$bond_mode = $anvil->Storage->read_file({file => "/sys/devices/virtual/net/".$interface."/bonding/mode"});
|
||||||
|
$bond_mode =~ s/\s.*//;
|
||||||
|
$primary_slave = $anvil->Storage->read_file({file => "/sys/devices/virtual/net/".$interface."/bonding/primary"});
|
||||||
|
$primary_reselect = $anvil->Storage->read_file({file => "/sys/devices/virtual/net/".$interface."/bonding/primary_reselect"});
|
||||||
|
$primary_reselect =~ s/\s.*//;
|
||||||
|
$active_slave = $anvil->Storage->read_file({file => "/sys/devices/virtual/net/".$interface."/bonding/active_slave"});
|
||||||
|
$mii_polling_interval = $anvil->Storage->read_file({file => "/sys/devices/virtual/net/".$interface."/bonding/miimon"});
|
||||||
|
$up_delay = $anvil->Storage->read_file({file => "/sys/devices/virtual/net/".$interface."/bonding/updelay"});
|
||||||
|
$down_delay = $anvil->Storage->read_file({file => "/sys/devices/virtual/net/".$interface."/bonding/downdelay"});
|
||||||
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
|
||||||
|
active_slave => $active_slave,
|
||||||
|
bond_mode => $bond_mode,
|
||||||
|
mii_polling_interval => $mii_polling_interval,
|
||||||
|
primary_reselect => $primary_reselect,
|
||||||
|
primary_slave => $primary_slave,
|
||||||
|
type => $type,
|
||||||
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
|
||||||
duplex => $duplex,
|
active_slave => $active_slave,
|
||||||
interface => $interface,
|
bond_mode => $bond_mode,
|
||||||
mac_address => $mac_address,
|
down_delay => $down_delay,
|
||||||
mtu => $mtu,
|
duplex => $duplex,
|
||||||
operational => $operational,
|
interface => $interface,
|
||||||
speed => $speed,
|
mac_address => $mac_address,
|
||||||
subnet_mask => $subnet_mask,
|
mii_polling_interval => $mii_polling_interval,
|
||||||
type => $type,
|
mtu => $mtu,
|
||||||
|
operational => $operational,
|
||||||
|
primary_reselect => $primary_reselect,
|
||||||
|
primary_slave => $primary_slave,
|
||||||
|
speed => $speed,
|
||||||
|
subnet_mask => $subnet_mask,
|
||||||
|
type => $type,
|
||||||
|
up_delay => $up_delay,
|
||||||
}});
|
}});
|
||||||
|
|
||||||
# If the MAC address starts with '52:54:00', we've got a virtio NIC.
|
# If the MAC address starts with '52:54:00', we've got a virtio NIC.
|
||||||
@ -175,28 +210,42 @@ sub report_network
|
|||||||
|
|
||||||
# Log
|
# Log
|
||||||
$anvil->data->{network}{interfaces}{by_name}{$interface} = {
|
$anvil->data->{network}{interfaces}{by_name}{$interface} = {
|
||||||
duplex => $duplex,
|
active_slave => $active_slave,
|
||||||
ip_address => $ip_address,
|
bond_mode => $bond_mode,
|
||||||
link_state => $link_state,
|
down_delay => $down_delay,
|
||||||
mac_address => $mac_address,
|
duplex => $duplex,
|
||||||
media => $media,
|
ip_address => $ip_address,
|
||||||
mtu => $mtu,
|
link_state => $link_state,
|
||||||
operational => $operational,
|
mac_address => $mac_address,
|
||||||
speed => $speed,
|
media => $media,
|
||||||
subnet_mask => $subnet_mask,
|
mii_polling_interval => $mii_polling_interval,
|
||||||
type => $type,
|
mtu => $mtu,
|
||||||
|
operational => $operational,
|
||||||
|
primary_reselect => $primary_reselect,
|
||||||
|
primary_slave => $primary_slave,
|
||||||
|
speed => $speed,
|
||||||
|
subnet_mask => $subnet_mask,
|
||||||
|
type => $type,
|
||||||
|
up_delay => $up_delay,
|
||||||
};
|
};
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
|
||||||
"network::interfaces::by_name::${interface}::duplex" => $duplex,
|
"network::interfaces::by_name::${interface}::active_slave" => $anvil->data->{network}{interfaces}{by_name}{$interface}{active_slave},
|
||||||
"network::interfaces::by_name::${interface}::ip_address" => $ip_address,
|
"network::interfaces::by_name::${interface}::bond_mode" => $anvil->data->{network}{interfaces}{by_name}{$interface}{bond_mode},
|
||||||
"network::interfaces::by_name::${interface}::link_state" => $link_state,
|
"network::interfaces::by_name::${interface}::down_delay" => $anvil->data->{network}{interfaces}{by_name}{$interface}{down_delay},
|
||||||
"network::interfaces::by_name::${interface}::mac_address" => $mac_address,
|
"network::interfaces::by_name::${interface}::duplex" => $anvil->data->{network}{interfaces}{by_name}{$interface}{duplex},
|
||||||
"network::interfaces::by_name::${interface}::media" => $media,
|
"network::interfaces::by_name::${interface}::ip_address" => $anvil->data->{network}{interfaces}{by_name}{$interface}{ip_address},
|
||||||
"network::interfaces::by_name::${interface}::mtu" => $mtu,
|
"network::interfaces::by_name::${interface}::link_state" => $anvil->data->{network}{interfaces}{by_name}{$interface}{link_state},
|
||||||
"network::interfaces::by_name::${interface}::operational" => $operational,
|
"network::interfaces::by_name::${interface}::mac_address" => $anvil->data->{network}{interfaces}{by_name}{$interface}{mac_address},
|
||||||
"network::interfaces::by_name::${interface}::speed" => $speed,
|
"network::interfaces::by_name::${interface}::media" => $anvil->data->{network}{interfaces}{by_name}{$interface}{media},
|
||||||
"network::interfaces::by_name::${interface}::subnet_mask" => $subnet_mask,
|
"network::interfaces::by_name::${interface}::mii_polling_interval" => $anvil->data->{network}{interfaces}{by_name}{$interface}{mii_polling_interval},
|
||||||
"network::interfaces::by_name::${interface}::type" => $type,
|
"network::interfaces::by_name::${interface}::mtu" => $anvil->data->{network}{interfaces}{by_name}{$interface}{mtu},
|
||||||
|
"network::interfaces::by_name::${interface}::operational" => $anvil->data->{network}{interfaces}{by_name}{$interface}{operational},
|
||||||
|
"network::interfaces::by_name::${interface}::primary_reselect" => $anvil->data->{network}{interfaces}{by_name}{$interface}{primary_reselect},
|
||||||
|
"network::interfaces::by_name::${interface}::primary_slave" => $anvil->data->{network}{interfaces}{by_name}{$interface}{primary_slave},
|
||||||
|
"network::interfaces::by_name::${interface}::speed" => $anvil->data->{network}{interfaces}{by_name}{$interface}{speed},
|
||||||
|
"network::interfaces::by_name::${interface}::subnet_mask" => $anvil->data->{network}{interfaces}{by_name}{$interface}{subnet_mask},
|
||||||
|
"network::interfaces::by_name::${interface}::type" => $anvil->data->{network}{interfaces}{by_name}{$interface}{type},
|
||||||
|
"network::interfaces::by_name::${interface}::up_delay" => $anvil->data->{network}{interfaces}{by_name}{$interface}{up_delay},
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,34 +253,48 @@ sub report_network
|
|||||||
|
|
||||||
foreach my $interface (sort {$a cmp $b} keys %{$anvil->data->{network}{interfaces}{by_name}})
|
foreach my $interface (sort {$a cmp $b} keys %{$anvil->data->{network}{interfaces}{by_name}})
|
||||||
{
|
{
|
||||||
my $duplex = $anvil->data->{network}{interfaces}{by_name}{$interface}{duplex};
|
my $active_slave = $anvil->data->{network}{interfaces}{by_name}{$interface}{active_slave};
|
||||||
my $ip_address = $anvil->data->{network}{interfaces}{by_name}{$interface}{ip_address};
|
my $bond_mode = $anvil->data->{network}{interfaces}{by_name}{$interface}{bond_mode};
|
||||||
my $link_state = $anvil->data->{network}{interfaces}{by_name}{$interface}{link_state};
|
my $down_delay = $anvil->data->{network}{interfaces}{by_name}{$interface}{down_delay};
|
||||||
my $mac_address = $anvil->data->{network}{interfaces}{by_name}{$interface}{mac_address};
|
my $duplex = $anvil->data->{network}{interfaces}{by_name}{$interface}{duplex};
|
||||||
my $media = $anvil->data->{network}{interfaces}{by_name}{$interface}{media};
|
my $ip_address = $anvil->data->{network}{interfaces}{by_name}{$interface}{ip_address};
|
||||||
my $mtu = $anvil->data->{network}{interfaces}{by_name}{$interface}{mtu};
|
my $link_state = $anvil->data->{network}{interfaces}{by_name}{$interface}{link_state};
|
||||||
my $operational = $anvil->data->{network}{interfaces}{by_name}{$interface}{operational};
|
my $mac_address = $anvil->data->{network}{interfaces}{by_name}{$interface}{mac_address};
|
||||||
my $speed = $anvil->data->{network}{interfaces}{by_name}{$interface}{speed};
|
my $media = $anvil->data->{network}{interfaces}{by_name}{$interface}{media};
|
||||||
my $subnet_mask = $anvil->data->{network}{interfaces}{by_name}{$interface}{subnet_mask};
|
my $mii_polling_interval = $anvil->data->{network}{interfaces}{by_name}{$interface}{mii_polling_interval};
|
||||||
my $type = $anvil->data->{network}{interfaces}{by_name}{$interface}{type};
|
my $mtu = $anvil->data->{network}{interfaces}{by_name}{$interface}{mtu};
|
||||||
my $default_gateway = $anvil->data->{sys}{network}{interface}{$interface}{default_gateway};
|
my $operational = $anvil->data->{network}{interfaces}{by_name}{$interface}{operational};
|
||||||
my $gateway = $anvil->data->{sys}{network}{interface}{$interface}{gateway};
|
my $primary_reselect = $anvil->data->{network}{interfaces}{by_name}{$interface}{primary_reselect};
|
||||||
my $dns = $anvil->data->{sys}{network}{interface}{$interface}{dns};
|
my $primary_slave = $anvil->data->{network}{interfaces}{by_name}{$interface}{primary_slave};
|
||||||
|
my $speed = $anvil->data->{network}{interfaces}{by_name}{$interface}{speed};
|
||||||
|
my $subnet_mask = $anvil->data->{network}{interfaces}{by_name}{$interface}{subnet_mask};
|
||||||
|
my $type = $anvil->data->{network}{interfaces}{by_name}{$interface}{type};
|
||||||
|
my $up_delay = $anvil->data->{network}{interfaces}{by_name}{$interface}{up_delay};
|
||||||
|
my $default_gateway = $anvil->data->{sys}{network}{interface}{$interface}{default_gateway};
|
||||||
|
my $gateway = $anvil->data->{sys}{network}{interface}{$interface}{gateway};
|
||||||
|
my $dns = $anvil->data->{sys}{network}{interface}{$interface}{dns};
|
||||||
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
|
||||||
default_gateway => $default_gateway,
|
active_slave => $active_slave,
|
||||||
dns => $dns,
|
bond_mode => $bond_mode,
|
||||||
duplex => $duplex,
|
default_gateway => $default_gateway,
|
||||||
gateway => $gateway,
|
down_delay => $down_delay,
|
||||||
interface => $interface,
|
dns => $dns,
|
||||||
ip_address => $ip_address,
|
duplex => $duplex,
|
||||||
link_state => $link_state,
|
gateway => $gateway,
|
||||||
mac_address => $mac_address,
|
interface => $interface,
|
||||||
media => $media,
|
ip_address => $ip_address,
|
||||||
mtu => $mtu,
|
link_state => $link_state,
|
||||||
operational => $operational,
|
mac_address => $mac_address,
|
||||||
speed => $speed,
|
media => $media,
|
||||||
subnet_mask => $subnet_mask,
|
mii_polling_interval => $mii_polling_interval,
|
||||||
type => $type,
|
mtu => $mtu,
|
||||||
|
operational => $operational,
|
||||||
|
primary_reselect => $primary_reselect,
|
||||||
|
primary_slave => $primary_slave,
|
||||||
|
speed => $speed,
|
||||||
|
subnet_mask => $subnet_mask,
|
||||||
|
type => $type,
|
||||||
|
up_delay => $up_delay,
|
||||||
}});
|
}});
|
||||||
|
|
||||||
if ($type eq "interface")
|
if ($type eq "interface")
|
||||||
@ -266,6 +329,37 @@ sub report_network
|
|||||||
}
|
}
|
||||||
elsif ($type eq "bond")
|
elsif ($type eq "bond")
|
||||||
{
|
{
|
||||||
|
my $bond_uuid = $anvil->Database->insert_or_update_bonds({
|
||||||
|
file => $THIS_FILE,
|
||||||
|
line => __LINE__,
|
||||||
|
bond_name => $interface,
|
||||||
|
bond_mode => $bond_mode,
|
||||||
|
bond_mtu => $mtu,
|
||||||
|
bond_link_state => $link_state,
|
||||||
|
bond_operational => $operational,
|
||||||
|
bond_mac_address => $mac_address,
|
||||||
|
bond_primary_slave => $primary_slave,
|
||||||
|
bond_primary_reselect => $primary_reselect,
|
||||||
|
bond_active_slave => $active_slave,
|
||||||
|
bond_mii_polling_interval => $mii_polling_interval,
|
||||||
|
bond_up_delay => $up_delay,
|
||||||
|
bond_down_delay => $down_delay,
|
||||||
|
});
|
||||||
|
|
||||||
|
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { bond_uuid => $bond_uuid }});
|
||||||
|
if (($bond_uuid) && ($ip_address))
|
||||||
|
{
|
||||||
|
my $ip_address_uuid = $anvil->Database->insert_or_update_ip_addresses({
|
||||||
|
debug => 2,
|
||||||
|
ip_address_on_type => $type,
|
||||||
|
ip_address_on_uuid => $bond_uuid,
|
||||||
|
ip_address_address => $ip_address,
|
||||||
|
ip_address_subnet_mask => $subnet_mask,
|
||||||
|
ip_address_gateway => $gateway,
|
||||||
|
ip_address_default_gateway => $default_gateway,
|
||||||
|
ip_address_dns => $dns,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -520,7 +520,7 @@ CREATE TABLE bonds (
|
|||||||
bond_uuid uuid not null primary key,
|
bond_uuid uuid not null primary key,
|
||||||
bond_host_uuid uuid not null,
|
bond_host_uuid uuid not null,
|
||||||
bond_name text not null,
|
bond_name text not null,
|
||||||
bond_mode integer not null, -- This is the numerical bond type (will translate to the user's language in the Anvil!)
|
bond_mode text not null, -- This is the numerical bond type (will translate to the user's language in the Anvil!)
|
||||||
bond_mtu bigint,
|
bond_mtu bigint,
|
||||||
bond_primary_slave text,
|
bond_primary_slave text,
|
||||||
bond_primary_reselect text,
|
bond_primary_reselect text,
|
||||||
@ -529,6 +529,8 @@ CREATE TABLE bonds (
|
|||||||
bond_mii_polling_interval bigint,
|
bond_mii_polling_interval bigint,
|
||||||
bond_up_delay bigint,
|
bond_up_delay bigint,
|
||||||
bond_down_delay bigint,
|
bond_down_delay bigint,
|
||||||
|
bond_mac_address text,
|
||||||
|
bond_operational text, -- This is 'up', 'down' or 'unknown'
|
||||||
modified_date timestamp with time zone not null,
|
modified_date timestamp with time zone not null,
|
||||||
|
|
||||||
FOREIGN KEY(bond_host_uuid) REFERENCES hosts(host_uuid)
|
FOREIGN KEY(bond_host_uuid) REFERENCES hosts(host_uuid)
|
||||||
@ -540,7 +542,7 @@ CREATE TABLE history.bonds (
|
|||||||
bond_uuid uuid,
|
bond_uuid uuid,
|
||||||
bond_host_uuid uuid,
|
bond_host_uuid uuid,
|
||||||
bond_name text,
|
bond_name text,
|
||||||
bond_mode integer,
|
bond_mode text,
|
||||||
bond_mtu bigint,
|
bond_mtu bigint,
|
||||||
bond_primary_slave text,
|
bond_primary_slave text,
|
||||||
bond_primary_reselect text,
|
bond_primary_reselect text,
|
||||||
@ -549,6 +551,8 @@ CREATE TABLE history.bonds (
|
|||||||
bond_mii_polling_interval bigint,
|
bond_mii_polling_interval bigint,
|
||||||
bond_up_delay bigint,
|
bond_up_delay bigint,
|
||||||
bond_down_delay bigint,
|
bond_down_delay bigint,
|
||||||
|
bond_mac_address text,
|
||||||
|
bond_operational text,
|
||||||
modified_date timestamp with time zone not null
|
modified_date timestamp with time zone not null
|
||||||
);
|
);
|
||||||
ALTER TABLE history.bonds OWNER TO #!variable!user!#;
|
ALTER TABLE history.bonds OWNER TO #!variable!user!#;
|
||||||
@ -572,6 +576,8 @@ BEGIN
|
|||||||
bond_mii_polling_interval,
|
bond_mii_polling_interval,
|
||||||
bond_up_delay,
|
bond_up_delay,
|
||||||
bond_down_delay,
|
bond_down_delay,
|
||||||
|
bond_mac_address,
|
||||||
|
bond_operational,
|
||||||
modified_date)
|
modified_date)
|
||||||
VALUES
|
VALUES
|
||||||
(history_bonds.bond_uuid,
|
(history_bonds.bond_uuid,
|
||||||
@ -586,6 +592,8 @@ BEGIN
|
|||||||
history_bonds.bond_mii_polling_interval,
|
history_bonds.bond_mii_polling_interval,
|
||||||
history_bonds.bond_up_delay,
|
history_bonds.bond_up_delay,
|
||||||
history_bonds.bond_down_delay,
|
history_bonds.bond_down_delay,
|
||||||
|
history_bonds.bond_mac_address,
|
||||||
|
history_bonds.bond_operational,
|
||||||
history_bonds.modified_date);
|
history_bonds.modified_date);
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
|
Loading…
Reference in New Issue
Block a user