#929 implement first half of multi tenancy with tenant_databases setting
This commit is contained in:
@@ -13,7 +13,7 @@ get '/ajax/content/device/addresses' => require_login sub {
|
||||
my $q = param('q');
|
||||
|
||||
my $device
|
||||
= schema('netdisco')->resultset('Device')->search_for_device($q)
|
||||
= schema(vars->{'tenant'})->resultset('Device')->search_for_device($q)
|
||||
or send_error( 'Bad device', 400 );
|
||||
|
||||
my @results = $device->device_ips
|
||||
|
||||
@@ -12,11 +12,11 @@ register_device_tab({ tag => 'details', label => 'Details' });
|
||||
# device details table
|
||||
ajax '/ajax/content/device/details' => require_login sub {
|
||||
my $q = param('q');
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
my $device = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
|
||||
my @results
|
||||
= schema('netdisco')->resultset('Device')
|
||||
= schema(vars->{'tenant'})->resultset('Device')
|
||||
->search({ 'me.ip' => $device->ip },
|
||||
{
|
||||
'+select' => ['snapshot.ip'],
|
||||
@@ -27,11 +27,11 @@ ajax '/ajax/content/device/details' => require_login sub {
|
||||
->hri->all;
|
||||
|
||||
my @power
|
||||
= schema('netdisco')->resultset('DevicePower')
|
||||
= schema(vars->{'tenant'})->resultset('DevicePower')
|
||||
->search( { 'me.ip' => $device->ip } )->with_poestats->hri->all;
|
||||
|
||||
my @interfaces
|
||||
= schema('netdisco')->resultset('Device')
|
||||
= schema(vars->{'tenant'})->resultset('Device')
|
||||
->find($device->ip)
|
||||
->device_ips->hri->all;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ register_device_tab({ tag => 'modules', label => 'Modules' });
|
||||
ajax '/ajax/content/device/modules' => require_login sub {
|
||||
my $q = param('q');
|
||||
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
my $device = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
my @set = $device->modules->search({}, {order_by => { -asc => [qw/parent class pos index/] }});
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ ajax '/ajax/content/device/netmap' => require_login sub {
|
||||
|
||||
ajax '/ajax/data/device/netmappositions' => require_login sub {
|
||||
my $q = param('q');
|
||||
my $qdev = schema('netdisco')->resultset('Device')
|
||||
my $qdev = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
|
||||
my $p = param('positions') or send_error('Missing positions', 400);
|
||||
@@ -55,7 +55,7 @@ ajax '/ajax/data/device/netmappositions' => require_login sub {
|
||||
}
|
||||
return unless scalar keys %clean;
|
||||
|
||||
my $posrow = schema('netdisco')->resultset('NetmapPositions')->find({
|
||||
my $posrow = schema(vars->{'tenant'})->resultset('NetmapPositions')->find({
|
||||
device => (($mapshow eq 'neighbors') ? $qdev->ip : undef),
|
||||
host_groups => \[ '= ?', [host_groups => [sort @hgrplist]] ],
|
||||
locations => \[ '= ?', [locations => [sort @lgrplist]] ],
|
||||
@@ -66,7 +66,7 @@ ajax '/ajax/data/device/netmappositions' => require_login sub {
|
||||
$posrow->update({ positions => to_json(\%clean) });
|
||||
}
|
||||
else {
|
||||
schema('netdisco')->resultset('NetmapPositions')->create({
|
||||
schema(vars->{'tenant'})->resultset('NetmapPositions')->create({
|
||||
device => (($mapshow eq 'neighbors') ? $qdev->ip : undef),
|
||||
host_groups => [sort @hgrplist],
|
||||
locations => [sort @lgrplist],
|
||||
@@ -136,7 +136,7 @@ sub make_link_infostring {
|
||||
|
||||
ajax '/ajax/data/device/netmap' => require_login sub {
|
||||
my $q = param('q');
|
||||
my $qdev = schema('netdisco')->resultset('Device')
|
||||
my $qdev = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
|
||||
my $vlan = param('vlan');
|
||||
@@ -168,7 +168,7 @@ ajax '/ajax/data/device/netmap' => require_login sub {
|
||||
# LINKS
|
||||
|
||||
my %seen_link = ();
|
||||
my $links = schema('netdisco')->resultset('Virtual::DeviceLinks')->search({
|
||||
my $links = schema(vars->{'tenant'})->resultset('Virtual::DeviceLinks')->search({
|
||||
($mapshow eq 'neighbors' ? ( -or => [
|
||||
{ left_ip => $qdev->ip },
|
||||
{ right_ip => $qdev->ip },
|
||||
@@ -195,7 +195,7 @@ ajax '/ajax/data/device/netmap' => require_login sub {
|
||||
|
||||
# DEVICES (NODES)
|
||||
|
||||
my $posrow = schema('netdisco')->resultset('NetmapPositions')->find({
|
||||
my $posrow = schema(vars->{'tenant'})->resultset('NetmapPositions')->find({
|
||||
device => (($mapshow eq 'neighbors') ? $qdev->ip : undef),
|
||||
host_groups => \[ '= ?', [host_groups => [sort @hgrplist]] ],
|
||||
locations => \[ '= ?', [locations => [sort @lgrplist]] ],
|
||||
@@ -203,7 +203,7 @@ ajax '/ajax/data/device/netmap' => require_login sub {
|
||||
});
|
||||
my $pos_for = from_json( $posrow ? $posrow->positions : '{}' );
|
||||
|
||||
my $devices = schema('netdisco')->resultset('Device')->search({}, {
|
||||
my $devices = schema(vars->{'tenant'})->resultset('Device')->search({}, {
|
||||
'+select' => [\'floor(log(throughput.total))'], '+as' => ['log'],
|
||||
join => 'throughput', distinct => 1,
|
||||
})->with_times;
|
||||
|
||||
@@ -18,7 +18,7 @@ get '/ajax/content/device/ports' => require_login sub {
|
||||
$prefer = ''
|
||||
unless defined $prefer and $prefer =~ m/^(?:port|name|vlan)$/;
|
||||
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
my $device = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
my $set = $device->ports->with_properties;
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ use Module::Load ();
|
||||
use Try::Tiny;
|
||||
|
||||
register_device_tab({ tag => 'snmp', label => 'SNMP',
|
||||
render_if => sub { schema('netdisco')->resultset('DeviceBrowser')->count() } });
|
||||
render_if => sub { schema(vars->{'tenant'})->resultset('DeviceBrowser')->count() } });
|
||||
|
||||
get '/ajax/content/device/snmp' => require_login sub {
|
||||
my $device = try { schema('netdisco')->resultset('Device')
|
||||
my $device = try { schema(vars->{'tenant'})->resultset('Device')
|
||||
->search_for_device( param('q') ) }
|
||||
or send_error('Bad Device', 404);
|
||||
|
||||
@@ -27,7 +27,7 @@ get '/ajax/content/device/snmp' => require_login sub {
|
||||
};
|
||||
|
||||
ajax '/ajax/data/device/:ip/snmptree/:base' => require_login sub {
|
||||
my $device = try { schema('netdisco')->resultset('Device')
|
||||
my $device = try { schema(vars->{'tenant'})->resultset('Device')
|
||||
->find( param('ip') ) }
|
||||
or send_error('Bad Device', 404);
|
||||
|
||||
@@ -41,14 +41,14 @@ ajax '/ajax/data/device/:ip/snmptree/:base' => require_login sub {
|
||||
children => \0,
|
||||
state => { disabled => \1 },
|
||||
icon => 'icon-search',
|
||||
}] unless schema('netdisco')->resultset('DeviceSnapshot')->find($device->ip);
|
||||
}] unless schema(vars->{'tenant'})->resultset('DeviceSnapshot')->find($device->ip);
|
||||
|
||||
return to_json [{
|
||||
text => 'No MIB data. Please run `~/bin/netdisco-do loadmibs`.',
|
||||
children => \0,
|
||||
state => { disabled => \1 },
|
||||
icon => 'icon-search',
|
||||
}] unless schema('netdisco')->resultset('SNMPObject')->count();
|
||||
}] unless schema(vars->{'tenant'})->resultset('SNMPObject')->count();
|
||||
|
||||
my $items = _get_snmp_data($device->ip, $base);
|
||||
to_json $items;
|
||||
@@ -61,7 +61,7 @@ ajax '/ajax/data/snmp/typeahead' => require_login sub {
|
||||
my $deviceonly = param('deviceonly');
|
||||
my $table = ($deviceonly ? 'DeviceBrowser' : 'SNMPObject');
|
||||
|
||||
my @found = schema('netdisco')->resultset($table)
|
||||
my @found = schema(vars->{'tenant'})->resultset($table)
|
||||
->search({ -or => [ oid => $term,
|
||||
oid => { -like => ($term .'.%') },
|
||||
leaf => { -ilike => ('%'. $term .'%') } ],
|
||||
@@ -80,14 +80,14 @@ ajax '/ajax/data/snmp/nodesearch' => require_login sub {
|
||||
|
||||
my $found = undef;
|
||||
if ($partial) {
|
||||
$found = schema('netdisco')->resultset('SNMPObject')
|
||||
$found = schema(vars->{'tenant'})->resultset('SNMPObject')
|
||||
->search({ -or => [ oid => $to_match,
|
||||
oid => { -like => ($to_match .'.%') },
|
||||
leaf => { -ilike => ($to_match .'%') } ] },
|
||||
{ rows => 1, order_by => 'oid_parts' })->first;
|
||||
}
|
||||
else {
|
||||
$found = schema('netdisco')->resultset('SNMPObject')
|
||||
$found = schema(vars->{'tenant'})->resultset('SNMPObject')
|
||||
->search({ -or => [ oid => $to_match,
|
||||
leaf => $to_match ] },
|
||||
{ rows => 1, order_by => 'oid_parts' })->first;
|
||||
@@ -108,14 +108,14 @@ ajax '/ajax/data/snmp/nodesearch' => require_login sub {
|
||||
};
|
||||
|
||||
ajax '/ajax/content/device/:ip/snmpnode/:oid' => require_login sub {
|
||||
my $device = try { schema('netdisco')->resultset('Device')
|
||||
my $device = try { schema(vars->{'tenant'})->resultset('Device')
|
||||
->find( param('ip') ) }
|
||||
or send_error('Bad Device', 404);
|
||||
|
||||
my $oid = param('oid');
|
||||
$oid =~ m/^\.1(\.\d+)*$/ or send_error('Bad OID', 404);
|
||||
|
||||
my $object = schema('netdisco')->resultset('DeviceBrowser')
|
||||
my $object = schema(vars->{'tenant'})->resultset('DeviceBrowser')
|
||||
->with_snmp_object($device->ip)->find({ 'snmp_object.oid' => $oid })
|
||||
or send_error('Bad OID', 404);
|
||||
|
||||
@@ -138,7 +138,7 @@ sub _get_snmp_data {
|
||||
my @parts = grep {length} split m/\./, $base;
|
||||
|
||||
my %meta = map { ('.'. join '.', @{$_->{oid_parts}}) => $_ }
|
||||
schema('netdisco')->resultset('Virtual::FilteredSNMPObject')
|
||||
schema(vars->{'tenant'})->resultset('Virtual::FilteredSNMPObject')
|
||||
->search({}, { bind => [
|
||||
$ip,
|
||||
(scalar @parts + 1),
|
||||
|
||||
@@ -15,7 +15,7 @@ register_device_tab({ tag => 'vlans', label => 'VLANs', provides_csv => 1 });
|
||||
get '/ajax/content/device/vlans' => require_login sub {
|
||||
my $q = param('q');
|
||||
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
my $device = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
my @results = $device->vlans->search(
|
||||
{ vlan => { '>' => 0 } }, { order_by => 'vlan' } )->hri->all;
|
||||
|
||||
Reference in New Issue
Block a user