#929 implement first half of multi tenancy with tenant_databases setting

This commit is contained in:
Oliver Gorwits
2022-09-24 19:01:05 +01:00
parent b391f83d60
commit 1d5f3ce316
71 changed files with 355 additions and 205 deletions

View File

@@ -72,10 +72,10 @@ get '/ajax/content/search/device' => require_login sub {
my $see_all = param('seeallcolumns');
if ($see_all) {
$rs_columns = schema('netdisco')->resultset('Device');
$rs_columns = schema(vars->{'tenant'})->resultset('Device');
}
else {
$rs_columns = schema('netdisco')->resultset('Device')->columns(
$rs_columns = schema(vars->{'tenant'})->resultset('Device')->columns(
[ "ip", "dns", "name",
"location", "model", "os_ver", "serial", "chassis_id"
]

View File

@@ -131,7 +131,7 @@ get '/ajax/content/search/node' => require_login sub {
($using_wildcards ? \['me.mac::text ILIKE ?', $likeval]
: ((!defined $mac or $mac->errstr) ? \'0=1' : ('me.mac' => $mac->as_ieee)) );
my $sightings = schema('netdisco')->resultset('Node')
my $sightings = schema(vars->{'tenant'})->resultset('Node')
->search({-and => [@where_mac, @active, @times]}, {
order_by => {'-desc' => 'time_last'},
'+columns' => [
@@ -143,7 +143,7 @@ get '/ajax/content/search/node' => require_login sub {
join => 'device',
});
my $ips = schema('netdisco')->resultset('NodeIp')
my $ips = schema(vars->{'tenant'})->resultset('NodeIp')
->search({-and => [@where_mac, @active, @times]}, {
order_by => {'-desc' => 'time_last'},
'+columns' => [
@@ -155,7 +155,7 @@ get '/ajax/content/search/node' => require_login sub {
join => 'oui'
});
my $netbios = schema('netdisco')->resultset('NodeNbt')
my $netbios = schema(vars->{'tenant'})->resultset('NodeNbt')
->search({-and => [@where_mac, @active, @times]}, {
order_by => {'-desc' => 'time_last'},
'+columns' => [
@@ -167,7 +167,7 @@ get '/ajax/content/search/node' => require_login sub {
join => 'oui'
});
my $wireless = schema('netdisco')->resultset('NodeWireless')->search(
my $wireless = schema(vars->{'tenant'})->resultset('NodeWireless')->search(
{ -and => [@where_mac, @wifitimes] },
{ order_by => { '-desc' => 'time_last' },
'+columns' => [
@@ -180,7 +180,7 @@ get '/ajax/content/search/node' => require_login sub {
}
);
my $rs_dp = schema('netdisco')->resultset('DevicePort');
my $rs_dp = schema(vars->{'tenant'})->resultset('DevicePort');
if ($sightings->has_rows or $ips->has_rows or $netbios->has_rows) {
my $ports = param('deviceports')
? $rs_dp->search({ -and => [@where_mac] }, { order_by => { '-desc' => 'creation' }}) : undef;
@@ -208,7 +208,7 @@ get '/ajax/content/search/node' => require_login sub {
}
}
my $set = schema('netdisco')->resultset('NodeNbt')
my $set = schema(vars->{'tenant'})->resultset('NodeNbt')
->search_by_name({nbname => $likeval, @active, @times});
unless ( $set->has_rows ) {
@@ -216,11 +216,11 @@ get '/ajax/content/search/node' => require_login sub {
and my $ip = NetAddr::IP::Lite->new($node)) {
# search_by_ip() will extract cidr notation if necessary
$set = schema('netdisco')->resultset('NodeIp')
$set = schema(vars->{'tenant'})->resultset('NodeIp')
->search_by_ip({ip => $ip, @active, @times});
}
else {
$set = schema('netdisco')->resultset('NodeIp')
$set = schema(vars->{'tenant'})->resultset('NodeIp')
->search_by_dns({
($using_wildcards ? (dns => $likeval) :
(dns => "${likeval}.\%",
@@ -233,7 +233,7 @@ get '/ajax/content/search/node' => require_login sub {
# we'll try the OUI company name as a fallback
if (param('show_vendor') and not $set->has_rows) {
$set = schema('netdisco')->resultset('NodeIp')
$set = schema(vars->{'tenant'})->resultset('NodeIp')
->with_times
->search(
{'oui.company' => { -ilike => ''.sql_match($node)}, @times},

View File

@@ -45,7 +45,7 @@ get '/ajax/content/search/port' => require_login sub {
my $rs;
if ($q =~ m/^[0-9]+$/ and $q < 4096) {
$rs = schema('netdisco')->resultset('DevicePort')
$rs = schema(vars->{'tenant'})->resultset('DevicePort')
->columns( [qw/ ip port name up up_admin speed /] )->search({
"port_vlans.vlan" => $q,
( param('uplink') ? () : (-or => [
@@ -70,7 +70,7 @@ get '/ajax/content/search/port' => require_login sub {
and (($mac->as_ieee eq '00:00:00:00:00:00')
or ($mac->as_ieee !~ m/$RE{net}{MAC}/)));
$rs = schema('netdisco')->resultset('DevicePort')
$rs = schema(vars->{'tenant'})->resultset('DevicePort')
->columns( [qw/ ip port name up up_admin speed /] )
->search({
-and => [

View File

@@ -27,11 +27,11 @@ get '/ajax/content/search/vlan' => require_login sub {
my $rs;
if ( $q =~ m/^\d+$/ ) {
$rs = schema('netdisco')->resultset('Device')
$rs = schema(vars->{'tenant'})->resultset('Device')
->carrying_vlan( { vlan => $q } );
}
else {
$rs = schema('netdisco')->resultset('Device')
$rs = schema(vars->{'tenant'})->resultset('Device')
->carrying_vlan_name( { name => $q } );
}