handle optional dns col in node_ip
This commit is contained in:
@@ -30,8 +30,6 @@ __PACKAGE__->add_columns(
|
|||||||
is_nullable => 1,
|
is_nullable => 1,
|
||||||
original => { default_value => \"now()" },
|
original => { default_value => \"now()" },
|
||||||
},
|
},
|
||||||
"dns",
|
|
||||||
{ data_type => "text", is_nullable => 1 },
|
|
||||||
);
|
);
|
||||||
__PACKAGE__->set_primary_key("mac", "ip");
|
__PACKAGE__->set_primary_key("mac", "ip");
|
||||||
|
|
||||||
@@ -39,6 +37,28 @@ __PACKAGE__->set_primary_key("mac", "ip");
|
|||||||
# 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:9+CuvuVWH88WxAf6IBij8g
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9+CuvuVWH88WxAf6IBij8g
|
||||||
|
|
||||||
|
# some customize their node_ip table to have a dns column which
|
||||||
|
# is the cached record at the time of discovery
|
||||||
|
|
||||||
|
__PACKAGE__->add_column("dns" =>
|
||||||
|
{ data_type => "text", is_nullable => 1, accessor => undef });
|
||||||
|
|
||||||
|
sub dns {
|
||||||
|
my $row = shift;
|
||||||
|
return $row->get_column('dns')
|
||||||
|
if $row->result_source->has_column('dns');
|
||||||
|
|
||||||
|
use Net::DNS;
|
||||||
|
my $q = Net::DNS::Resolver->new->query($row->ip);
|
||||||
|
if ($q) {
|
||||||
|
foreach my $rr ($q->answer) {
|
||||||
|
next unless $rr->type eq 'PTR';
|
||||||
|
return $rr->ptrdname;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
__PACKAGE__->belongs_to( oui => 'Netdisco::DB::Result::Oui',
|
__PACKAGE__->belongs_to( oui => 'Netdisco::DB::Result::Oui',
|
||||||
sub {
|
sub {
|
||||||
my $args = shift;
|
my $args = shift;
|
||||||
@@ -64,7 +84,8 @@ sub ip_aliases {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
order_by => {'-desc' => 'time_last'},
|
order_by => {'-desc' => 'time_last'},
|
||||||
columns => [qw/ mac ip dns active /],
|
columns => [qw/ mac ip active /],
|
||||||
|
( $row->result_source->has_column('dns') ? ('+columns' => 'dns') : () ),
|
||||||
'+select' => [
|
'+select' => [
|
||||||
\"to_char(time_first, 'YYYY-MM-DD HH24:MI')",
|
\"to_char(time_first, 'YYYY-MM-DD HH24:MI')",
|
||||||
\"to_char(time_last, 'YYYY-MM-DD HH24:MI')",
|
\"to_char(time_last, 'YYYY-MM-DD HH24:MI')",
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
package Netdisco::DB::ResultSet::NodeIp;
|
package Netdisco::DB::ResultSet::NodeIp;
|
||||||
use base 'DBIx::Class::ResultSet';
|
use base 'DBIx::Class::ResultSet';
|
||||||
|
|
||||||
|
# some customize their node_ip table to have a dns column which
|
||||||
|
# is the cached record at the time of discovery
|
||||||
|
sub has_dns_col {
|
||||||
|
my $set = shift;
|
||||||
|
return $set->result_source->has_column('dns');
|
||||||
|
}
|
||||||
|
|
||||||
my $search_attr = {
|
my $search_attr = {
|
||||||
order_by => {'-desc' => 'time_last'},
|
order_by => {'-desc' => 'time_last'},
|
||||||
columns => [qw/ mac ip dns active oui.company /],
|
columns => [qw/ mac ip active oui.company /],
|
||||||
'+select' => [
|
'+select' => [
|
||||||
\"to_char(time_first, 'YYYY-MM-DD HH24:MI')",
|
\"to_char(time_first, 'YYYY-MM-DD HH24:MI')",
|
||||||
\"to_char(time_last, 'YYYY-MM-DD HH24:MI')",
|
\"to_char(time_last, 'YYYY-MM-DD HH24:MI')",
|
||||||
@@ -27,7 +34,10 @@ sub by_ip {
|
|||||||
ip => { $op => $ip },
|
ip => { $op => $ip },
|
||||||
($archive ? () : (active => 1)),
|
($archive ? () : (active => 1)),
|
||||||
},
|
},
|
||||||
$search_attr,
|
{
|
||||||
|
%$search_attr,
|
||||||
|
( $set->has_dns_col ? ('+columns' => 'dns') : () ),
|
||||||
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,7 +50,10 @@ sub by_name {
|
|||||||
dns => { '-ilike' => $name },
|
dns => { '-ilike' => $name },
|
||||||
($archive ? () : (active => 1)),
|
($archive ? () : (active => 1)),
|
||||||
},
|
},
|
||||||
$search_attr,
|
{
|
||||||
|
%$search_attr,
|
||||||
|
( $set->has_dns_col ? ('+columns' => 'dns') : () ),
|
||||||
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user