implementation of store_modules
This commit is contained in:
@@ -110,6 +110,14 @@ Returns the set of ports on this Device.
|
|||||||
|
|
||||||
__PACKAGE__->has_many( ports => 'App::Netdisco::DB::Result::DevicePort', 'ip' );
|
__PACKAGE__->has_many( ports => 'App::Netdisco::DB::Result::DevicePort', 'ip' );
|
||||||
|
|
||||||
|
=head2 modules
|
||||||
|
|
||||||
|
Returns the set chassis modules on this Device.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->has_many( modules => 'App::Netdisco::DB::Result::DeviceModule', 'ip' );
|
||||||
|
|
||||||
=head2 power_modules
|
=head2 power_modules
|
||||||
|
|
||||||
Returns the set of power modules on this Device.
|
Returns the set of power modules on this Device.
|
||||||
|
|||||||
@@ -54,6 +54,15 @@ __PACKAGE__->set_primary_key("ip", "index");
|
|||||||
# Created by DBIx::Class::Schema::Loader v0.07015 @ 2012-01-07 14:20:02
|
# Created by DBIx::Class::Schema::Loader v0.07015 @ 2012-01-07 14:20:02
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:nuwxZBoiip9trdJFmgk3Fw
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:nuwxZBoiip9trdJFmgk3Fw
|
||||||
|
|
||||||
|
=head1 RELATIONSHIPS
|
||||||
|
|
||||||
|
=head2 device
|
||||||
|
|
||||||
|
Returns the entry from the C<device> table on which this VLAN entry was discovered.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->belongs_to( device => 'App::Netdisco::DB::Result::Device', 'ip' );
|
||||||
|
|
||||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||||
1;
|
1;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ sub discover {
|
|||||||
store_wireless($device, $snmp);
|
store_wireless($device, $snmp);
|
||||||
store_vlans($device, $snmp);
|
store_vlans($device, $snmp);
|
||||||
store_power($device, $snmp);
|
store_power($device, $snmp);
|
||||||
#store_modules($device, $snmp);
|
store_modules($device, $snmp);
|
||||||
|
|
||||||
return job_done("Ended Discover for $host");
|
return job_done("Ended Discover for $host");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use base 'Exporter';
|
|||||||
our @EXPORT = ();
|
our @EXPORT = ();
|
||||||
our @EXPORT_OK = qw/
|
our @EXPORT_OK = qw/
|
||||||
store_device store_interfaces store_wireless
|
store_device store_interfaces store_wireless
|
||||||
store_vlans store_power
|
store_vlans store_power store_modules
|
||||||
/;
|
/;
|
||||||
our %EXPORT_TAGS = (all => \@EXPORT_OK);
|
our %EXPORT_TAGS = (all => \@EXPORT_OK);
|
||||||
|
|
||||||
@@ -411,4 +411,64 @@ sub store_power {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=head2 store_modules( $device, $snmp )
|
||||||
|
|
||||||
|
Given a Device database object, and a working SNMP connection, discover and
|
||||||
|
store the device's module information.
|
||||||
|
|
||||||
|
The Device database object can be a fresh L<DBIx::Class::Row> object which is
|
||||||
|
not yet stored to the database.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub store_modules {
|
||||||
|
my ($device, $snmp) = @_;
|
||||||
|
|
||||||
|
my $e_index = $snmp->e_index;
|
||||||
|
|
||||||
|
if (!defined $e_index) {
|
||||||
|
# TODO log
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $e_descr = $snmp->e_descr;
|
||||||
|
my $e_type = $snmp->e_type;
|
||||||
|
my $e_parent = $snmp->e_parent;
|
||||||
|
my $e_name = $snmp->e_name;
|
||||||
|
my $e_class = $snmp->e_class;
|
||||||
|
my $e_pos = $snmp->e_pos;
|
||||||
|
my $e_hwver = $snmp->e_hwver;
|
||||||
|
my $e_fwver = $snmp->e_fwver;
|
||||||
|
my $e_swver = $snmp->e_swver;
|
||||||
|
my $e_model = $snmp->e_model;
|
||||||
|
my $e_serial = $snmp->e_serial;
|
||||||
|
my $e_fru = $snmp->e_fru;
|
||||||
|
|
||||||
|
# build device modules list for DBIC
|
||||||
|
my @modules;
|
||||||
|
foreach my $entry (keys %$e_class) {
|
||||||
|
push @modules, {
|
||||||
|
index => $e_index->{$entry},
|
||||||
|
type => $e_type->{$entry},
|
||||||
|
parent => $e_parent->{$entry},
|
||||||
|
name => $e_name->{$entry},
|
||||||
|
class => $e_class->{$entry},
|
||||||
|
pos => $e_pos->{$entry},
|
||||||
|
hw_ver => $e_hwver->{$entry},
|
||||||
|
fw_ver => $e_fwver->{$entry},
|
||||||
|
sw_ver => $e_swver->{$entry},
|
||||||
|
model => $e_model->{$entry},
|
||||||
|
serial => $e_serial->{$entry},
|
||||||
|
fru => $e_fru->{$entry},
|
||||||
|
description => $e_descr->{$entry},
|
||||||
|
last_discover => \'now()',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
schema('netdisco')->txn_do(sub {
|
||||||
|
$device->modules->delete;
|
||||||
|
$device->modules->populate(\@modules);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
Reference in New Issue
Block a user