#929 implement first half of multi tenancy with tenant_databases setting
This commit is contained in:
@@ -57,12 +57,12 @@ sub get_device {
|
||||
# in case the management IP of one device is in use on another device,
|
||||
# we first try to get an exact match for the IP as mgmt interface.
|
||||
my $alias =
|
||||
schema('netdisco')->resultset('DeviceIp')->find($ip, $ip)
|
||||
schema(vars->{'tenant'})->resultset('DeviceIp')->find($ip, $ip)
|
||||
||
|
||||
schema('netdisco')->resultset('DeviceIp')->search({alias => $ip})->first;
|
||||
schema(vars->{'tenant'})->resultset('DeviceIp')->search({alias => $ip})->first;
|
||||
$ip = $alias->ip if defined $alias;
|
||||
|
||||
return schema('netdisco')->resultset('Device')->with_times
|
||||
return schema(vars->{'tenant'})->resultset('Device')->with_times
|
||||
->find_or_new({ip => $ip});
|
||||
}
|
||||
|
||||
@@ -82,12 +82,12 @@ sub delete_device {
|
||||
return 0 if not $device->in_storage;
|
||||
|
||||
my $happy = 0;
|
||||
schema('netdisco')->txn_do(sub {
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
# will delete everything related too...
|
||||
schema('netdisco')->resultset('Device')
|
||||
schema(vars->{'tenant'})->resultset('Device')
|
||||
->search({ ip => $device->ip })->delete({archive_nodes => $archive});
|
||||
|
||||
schema('netdisco')->resultset('UserLog')->create({
|
||||
schema(vars->{'tenant'})->resultset('UserLog')->create({
|
||||
username => session('logged_in_user'),
|
||||
userip => scalar eval {request->remote_address},
|
||||
event => (sprintf "Delete device %s", $device->ip),
|
||||
@@ -116,11 +116,11 @@ sub renumber_device {
|
||||
return 0 if not $device->in_storage;
|
||||
|
||||
my $happy = 0;
|
||||
schema('netdisco')->txn_do(sub {
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
$device->renumber($new_ip)
|
||||
or die "cannot renumber to: $new_ip"; # rollback
|
||||
|
||||
schema('netdisco')->resultset('UserLog')->create({
|
||||
schema(vars->{'tenant'})->resultset('UserLog')->create({
|
||||
username => session('logged_in_user'),
|
||||
userip => scalar eval {request->remote_address},
|
||||
event => (sprintf "Renumber device %s to %s", $ip, $new_ip),
|
||||
|
||||
@@ -373,13 +373,13 @@ Nodes without topology information are not included.
|
||||
sub make_graph {
|
||||
my $G = Graph::Undirected->new();
|
||||
|
||||
my $devices = schema('netdisco')->resultset('Device')
|
||||
my $devices = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search({}, { columns => [qw/ip dns location /] });
|
||||
my $links = schema('netdisco')->resultset('DevicePort')
|
||||
my $links = schema(vars->{'tenant'})->resultset('DevicePort')
|
||||
->search({remote_ip => { -not => undef }},
|
||||
{ columns => [qw/ip remote_ip speed remote_type/]});
|
||||
my %aliases = map {$_->alias => $_->ip}
|
||||
schema('netdisco')->resultset('DeviceIp')
|
||||
schema(vars->{'tenant'})->resultset('DeviceIp')
|
||||
->search({}, { columns => [qw/ip alias/] })->all;
|
||||
|
||||
my %devs = ( map {($_->ip => $_->dns)} $devices->all );
|
||||
|
||||
@@ -120,7 +120,7 @@ sub _filter_nbname {
|
||||
unless ( check_mac( $mac, $ip ) ) {
|
||||
|
||||
# Just assume it's the last MAC we saw this IP at.
|
||||
my $node_ip = schema('netdisco')->resultset('NodeIp')
|
||||
my $node_ip = schema(vars->{'tenant'})->resultset('NodeIp')
|
||||
->single( { ip => $ip, -bool => 'active' } );
|
||||
|
||||
if ( !defined $node_ip ) {
|
||||
@@ -158,7 +158,7 @@ sub store_nbt {
|
||||
my ( $hash_ref, $now ) = @_;
|
||||
$now ||= 'now()';
|
||||
|
||||
schema('netdisco')->resultset('NodeNbt')->update_or_create(
|
||||
schema(vars->{'tenant'})->resultset('NodeNbt')->update_or_create(
|
||||
{ mac => $hash_ref->{'mac'},
|
||||
ip => $hash_ref->{'ip'},
|
||||
nbname => $hash_ref->{'nbname'},
|
||||
|
||||
@@ -175,13 +175,13 @@ sub store_arp {
|
||||
|
||||
debug sprintf 'store_arp - mac %s ip %s', $mac->as_ieee, $ip;
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $current = schema('netdisco')->resultset('NodeIp')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $current = schema(vars->{'tenant'})->resultset('NodeIp')
|
||||
->search(
|
||||
{ ip => $ip, -bool => 'active'},
|
||||
{ columns => [qw/mac ip/] })->update({active => \'false'});
|
||||
|
||||
schema('netdisco')->resultset('NodeIp')
|
||||
schema(vars->{'tenant'})->resultset('NodeIp')
|
||||
->update_or_create(
|
||||
{
|
||||
mac => $mac->as_ieee,
|
||||
|
||||
@@ -29,7 +29,7 @@ sub _email {
|
||||
}
|
||||
|
||||
sub monitor {
|
||||
my $monitor = schema('netdisco')->resultset('Virtual::NodeMonitor');
|
||||
my $monitor = schema(vars->{'tenant'})->resultset('Virtual::NodeMonitor');
|
||||
|
||||
while (my $entry = $monitor->next) {
|
||||
my $body = <<"end_body";
|
||||
|
||||
@@ -152,7 +152,7 @@ sub get_port {
|
||||
# accept either ip or dbic object
|
||||
$device = get_device($device);
|
||||
|
||||
my $port = schema('netdisco')->resultset('DevicePort')
|
||||
my $port = schema(vars->{'tenant'})->resultset('DevicePort')
|
||||
->find({ip => $device->ip, port => $portname});
|
||||
|
||||
return $port;
|
||||
|
||||
@@ -36,7 +36,7 @@ sub get_port_macs {
|
||||
my $bindarray = [ { sqlt_datatype => "array" }, $fw_mac_list ];
|
||||
|
||||
my $macs
|
||||
= schema('netdisco')->resultset('Virtual::PortMacs')->search({},
|
||||
= schema(vars->{'tenant'})->resultset('Virtual::PortMacs')->search({},
|
||||
{ bind => [$bindarray, $bindarray], select => [ 'mac', 'ip' ], group_by => [ 'mac', 'ip' ] } );
|
||||
my $cursor = $macs->cursor;
|
||||
while ( my @vals = $cursor->next ) {
|
||||
|
||||
@@ -31,7 +31,7 @@ figures.
|
||||
=cut
|
||||
|
||||
sub update_stats {
|
||||
my $schema = schema('netdisco');
|
||||
my $schema = schema(vars->{'tenant'});
|
||||
eval { require SNMP::Info };
|
||||
my $snmpinfo_ver = ($@ ? 'n/a' : $SNMP::Info::VERSION);
|
||||
my $postgres_ver = pretty_version($schema->storage->dbh->{pg_server_version}, 2);
|
||||
|
||||
Reference in New Issue
Block a user