#929 implement first half of multi tenancy with tenant_databases setting
This commit is contained in:
@@ -13,8 +13,8 @@ register_admin_task({
|
||||
});
|
||||
|
||||
ajax '/ajax/content/admin/duplicatedevices' => require_role admin => sub {
|
||||
my @set = schema('netdisco')->resultset('Device')->search({
|
||||
serial => { '-in' => schema('netdisco')->resultset('Device')->search({
|
||||
my @set = schema(vars->{'tenant'})->resultset('Device')->search({
|
||||
serial => { '-in' => schema(vars->{'tenant'})->resultset('Device')->search({
|
||||
'-and' => [serial => { '!=', undef }, serial => { '!=', '' }],
|
||||
}, {
|
||||
group_by => ['serial'],
|
||||
|
||||
@@ -24,8 +24,8 @@ sub _sanity_ok {
|
||||
ajax '/ajax/control/admin/nodemonitor/add' => require_role admin => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $monitor = schema('netdisco')->resultset('NodeMonitor')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $monitor = schema(vars->{'tenant'})->resultset('NodeMonitor')
|
||||
->create({
|
||||
mac => param('mac'),
|
||||
matchoui => (param('matchoui') ? \'true' : \'false'),
|
||||
@@ -39,8 +39,8 @@ ajax '/ajax/control/admin/nodemonitor/add' => require_role admin => sub {
|
||||
ajax '/ajax/control/admin/nodemonitor/del' => require_role admin => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
schema('netdisco')->resultset('NodeMonitor')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
schema(vars->{'tenant'})->resultset('NodeMonitor')
|
||||
->find({mac => param('mac')})->delete;
|
||||
});
|
||||
};
|
||||
@@ -48,8 +48,8 @@ ajax '/ajax/control/admin/nodemonitor/del' => require_role admin => sub {
|
||||
ajax '/ajax/control/admin/nodemonitor/update' => require_role admin => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $monitor = schema('netdisco')->resultset('NodeMonitor')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $monitor = schema(vars->{'tenant'})->resultset('NodeMonitor')
|
||||
->find({mac => param('mac')});
|
||||
return unless $monitor;
|
||||
|
||||
@@ -65,7 +65,7 @@ ajax '/ajax/control/admin/nodemonitor/update' => require_role admin => sub {
|
||||
};
|
||||
|
||||
ajax '/ajax/content/admin/nodemonitor' => require_role admin => sub {
|
||||
my $set = schema('netdisco')->resultset('NodeMonitor')
|
||||
my $set = schema(vars->{'tenant'})->resultset('NodeMonitor')
|
||||
->search(undef, { order_by => [qw/active date mac/] });
|
||||
|
||||
content_type('text/html');
|
||||
|
||||
@@ -17,11 +17,11 @@ register_admin_task(
|
||||
|
||||
get '/ajax/content/admin/orphaned' => require_role admin => sub {
|
||||
|
||||
my @tree = schema('netdisco')->resultset('Virtual::UnDirEdgesAgg')
|
||||
my @tree = schema(vars->{'tenant'})->resultset('Virtual::UnDirEdgesAgg')
|
||||
->search( undef, { prefetch => 'device' } )->hri->all;
|
||||
|
||||
my @orphans
|
||||
= schema('netdisco')->resultset('Virtual::OrphanedDevices')->search()
|
||||
= schema(vars->{'tenant'})->resultset('Virtual::OrphanedDevices')->search()
|
||||
->order_by('ip')->hri->all;
|
||||
|
||||
return unless ( scalar @tree || scalar @orphans );
|
||||
|
||||
@@ -13,7 +13,7 @@ register_admin_task({
|
||||
});
|
||||
|
||||
ajax '/ajax/content/admin/performance' => require_role admin => sub {
|
||||
my $set = schema('netdisco')->resultset('Virtual::PollerPerformance');
|
||||
my $set = schema(vars->{'tenant'})->resultset('Virtual::PollerPerformance');
|
||||
|
||||
content_type('text/html');
|
||||
template 'ajax/admintask/performance.tt', {
|
||||
|
||||
@@ -32,8 +32,8 @@ sub _sanity_ok {
|
||||
ajax '/ajax/control/admin/pseudodevice/add' => require_role admin => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $device = schema(vars->{'tenant'})->resultset('Device')
|
||||
->create({
|
||||
ip => param('ip'),
|
||||
dns => (hostname_from_ip(param('ip')) || ''),
|
||||
@@ -55,7 +55,7 @@ ajax '/ajax/control/admin/pseudodevice/add' => require_role admin => sub {
|
||||
]);
|
||||
|
||||
# device_ip table is used to show whether topo is "broken"
|
||||
schema('netdisco')->resultset('DeviceIp')
|
||||
schema(vars->{'tenant'})->resultset('DeviceIp')
|
||||
->create({
|
||||
ip => param('ip'),
|
||||
alias => param('ip'),
|
||||
@@ -66,8 +66,8 @@ ajax '/ajax/control/admin/pseudodevice/add' => require_role admin => sub {
|
||||
ajax '/ajax/control/admin/pseudodevice/update' => require_role admin => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $device = schema(vars->{'tenant'})->resultset('Device')
|
||||
->with_port_count->find({ip => param('ip')});
|
||||
return unless $device;
|
||||
my $count = $device->port_count;
|
||||
@@ -87,7 +87,7 @@ ajax '/ajax/control/admin/pseudodevice/update' => require_role admin => sub {
|
||||
->single({port => "Port${port}"})->delete;
|
||||
|
||||
# clear outdated manual topology links
|
||||
schema('netdisco')->resultset('Topology')->search({
|
||||
schema(vars->{'tenant'})->resultset('Topology')->search({
|
||||
-or => [
|
||||
{ dev1 => $device->ip, port1 => "Port${port}" },
|
||||
{ dev2 => $device->ip, port2 => "Port${port}" },
|
||||
@@ -106,7 +106,7 @@ ajax '/ajax/control/admin/pseudodevice/update' => require_role admin => sub {
|
||||
};
|
||||
|
||||
ajax '/ajax/content/admin/pseudodevice' => require_role admin => sub {
|
||||
my $set = schema('netdisco')->resultset('Device')
|
||||
my $set = schema(vars->{'tenant'})->resultset('Device')
|
||||
->search(
|
||||
{-bool => 'is_pseudo'},
|
||||
{order_by => { -desc => 'last_discover' }},
|
||||
|
||||
@@ -13,7 +13,7 @@ register_admin_task({
|
||||
});
|
||||
|
||||
ajax '/ajax/content/admin/slowdevices' => require_role admin => sub {
|
||||
my $set = schema('netdisco')->resultset('Virtual::SlowDevices');
|
||||
my $set = schema(vars->{'tenant'})->resultset('Virtual::SlowDevices');
|
||||
|
||||
content_type('text/html');
|
||||
template 'ajax/admintask/slowdevices.tt', {
|
||||
|
||||
@@ -17,13 +17,13 @@ ajax '/ajax/control/admin/timedoutdevices/del' => require_role admin => sub {
|
||||
send_error('Missing backend', 400) unless param('backend');
|
||||
send_error('Missing device', 400) unless param('device');
|
||||
|
||||
schema('netdisco')->resultset('DeviceSkip')->find_or_create({
|
||||
schema(vars->{'tenant'})->resultset('DeviceSkip')->find_or_create({
|
||||
backend => param('backend'), device => param('device'),
|
||||
},{ key => 'device_skip_pkey' })->update({ deferrals => 0 });
|
||||
};
|
||||
|
||||
ajax '/ajax/content/admin/timedoutdevices' => require_role admin => sub {
|
||||
my @set = schema('netdisco')->resultset('DeviceSkip')->search({
|
||||
my @set = schema(vars->{'tenant'})->resultset('DeviceSkip')->search({
|
||||
deferrals => { '>' => 0 }
|
||||
},{ rows => (setting('dns')->{max_outstanding} || 50), order_by =>
|
||||
[{ -desc => 'deferrals' }, { -asc => [qw/device backend/] }]
|
||||
|
||||
@@ -35,7 +35,7 @@ sub _sanity_ok {
|
||||
ajax '/ajax/control/admin/topology/add' => require_any_role [qw(admin port_control)] => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
my $device = schema('netdisco')->resultset('Topology')
|
||||
my $device = schema(vars->{'tenant'})->resultset('Topology')
|
||||
->create({
|
||||
dev1 => param('dev1'),
|
||||
port1 => param('port1'),
|
||||
@@ -46,7 +46,7 @@ ajax '/ajax/control/admin/topology/add' => require_any_role [qw(admin port_contr
|
||||
# re-set remote device details in affected ports
|
||||
# could fail for bad device or port names
|
||||
try {
|
||||
schema('netdisco')->txn_do(sub {
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
# only work on root_ips
|
||||
my $left = get_device(param('dev1'));
|
||||
my $right = get_device(param('dev2'));
|
||||
@@ -84,8 +84,8 @@ ajax '/ajax/control/admin/topology/add' => require_any_role [qw(admin port_contr
|
||||
ajax '/ajax/control/admin/topology/del' => require_any_role [qw(admin port_control)] => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $device = schema('netdisco')->resultset('Topology')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $device = schema(vars->{'tenant'})->resultset('Topology')
|
||||
->search({
|
||||
dev1 => param('dev1'),
|
||||
port1 => param('port1'),
|
||||
@@ -97,7 +97,7 @@ ajax '/ajax/control/admin/topology/del' => require_any_role [qw(admin port_contr
|
||||
# re-set remote device details in affected ports
|
||||
# could fail for bad device or port names
|
||||
try {
|
||||
schema('netdisco')->txn_do(sub {
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
# only work on root_ips
|
||||
my $left = get_device(param('dev1'));
|
||||
my $right = get_device(param('dev2'));
|
||||
@@ -133,7 +133,7 @@ ajax '/ajax/control/admin/topology/del' => require_any_role [qw(admin port_contr
|
||||
};
|
||||
|
||||
ajax '/ajax/content/admin/topology' => require_any_role [qw(admin port_control)] => sub {
|
||||
my $set = schema('netdisco')->resultset('Topology')
|
||||
my $set = schema(vars->{'tenant'})->resultset('Topology')
|
||||
->search({},{order_by => [qw/dev1 dev2 port1/]});
|
||||
|
||||
content_type('text/html');
|
||||
|
||||
@@ -23,7 +23,7 @@ register_admin_task(
|
||||
|
||||
get '/ajax/content/admin/undiscoveredneighbors' => require_role admin => sub {
|
||||
my @results
|
||||
= schema('netdisco')->resultset('Virtual::UndiscoveredNeighbors')->hri->all;
|
||||
= schema(vars->{'tenant'})->resultset('Virtual::UndiscoveredNeighbors')->hri->all;
|
||||
return unless scalar @results;
|
||||
|
||||
if ( request->is_ajax ) {
|
||||
|
||||
@@ -18,7 +18,7 @@ ajax '/ajax/control/admin/userlog/data' => require_role admin => sub {
|
||||
send_error( 'Missing parameter', 400 )
|
||||
unless ( param('draw') && param('draw') =~ /\d+/ );
|
||||
|
||||
my $rs = schema('netdisco')->resultset('UserLog');
|
||||
my $rs = schema(vars->{'tenant'})->resultset('UserLog');
|
||||
|
||||
my $exp_params = expand_hash( scalar params );
|
||||
|
||||
@@ -41,18 +41,18 @@ ajax '/ajax/control/admin/userlog/data' => require_role admin => sub {
|
||||
ajax '/ajax/control/admin/userlog/del' => require_role admin => sub {
|
||||
send_error( 'Missing entry', 400 ) unless param('entry');
|
||||
|
||||
schema('netdisco')->txn_do(
|
||||
schema(vars->{'tenant'})->txn_do(
|
||||
sub {
|
||||
my $device = schema('netdisco')->resultset('UserLog')
|
||||
my $device = schema(vars->{'tenant'})->resultset('UserLog')
|
||||
->search( { entry => param('entry') } )->delete;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
ajax '/ajax/control/admin/userlog/delall' => require_role admin => sub {
|
||||
schema('netdisco')->txn_do(
|
||||
schema(vars->{'tenant'})->txn_do(
|
||||
sub {
|
||||
my $device = schema('netdisco')->resultset('UserLog')->delete;
|
||||
my $device = schema(vars->{'tenant'})->resultset('UserLog')->delete;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
@@ -34,8 +34,8 @@ sub _make_password {
|
||||
ajax '/ajax/control/admin/users/add' => require_role setting('defanged_admin') => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $user = schema('netdisco')->resultset('User')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $user = schema(vars->{'tenant'})->resultset('User')
|
||||
->create({
|
||||
username => param('username'),
|
||||
password => _make_password(param('password')),
|
||||
@@ -53,8 +53,8 @@ ajax '/ajax/control/admin/users/add' => require_role setting('defanged_admin') =
|
||||
ajax '/ajax/control/admin/users/del' => require_role setting('defanged_admin') => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
schema('netdisco')->resultset('User')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
schema(vars->{'tenant'})->resultset('User')
|
||||
->find({username => param('username')})->delete;
|
||||
});
|
||||
};
|
||||
@@ -62,8 +62,8 @@ ajax '/ajax/control/admin/users/del' => require_role setting('defanged_admin') =
|
||||
ajax '/ajax/control/admin/users/update' => require_role setting('defanged_admin') => sub {
|
||||
send_error('Bad Request', 400) unless _sanity_ok();
|
||||
|
||||
schema('netdisco')->txn_do(sub {
|
||||
my $user = schema('netdisco')->resultset('User')
|
||||
schema(vars->{'tenant'})->txn_do(sub {
|
||||
my $user = schema(vars->{'tenant'})->resultset('User')
|
||||
->find({username => param('username')});
|
||||
return unless $user;
|
||||
|
||||
@@ -83,7 +83,7 @@ ajax '/ajax/control/admin/users/update' => require_role setting('defanged_admin'
|
||||
};
|
||||
|
||||
get '/ajax/content/admin/users' => require_role admin => sub {
|
||||
my @results = schema('netdisco')->resultset('User')
|
||||
my @results = schema(vars->{'tenant'})->resultset('User')
|
||||
->search(undef, {
|
||||
'+columns' => {
|
||||
created => \"to_char(creation, 'YYYY-MM-DD HH24:MI')",
|
||||
|
||||
Reference in New Issue
Block a user