relocate repo files so ND2 is the only code
This commit is contained in:
96
lib/App/Netdisco/Configuration.pm
Normal file
96
lib/App/Netdisco/Configuration.pm
Normal file
@@ -0,0 +1,96 @@
|
||||
package App::Netdisco::Configuration;
|
||||
|
||||
use App::Netdisco::Environment;
|
||||
use Dancer ':script';
|
||||
|
||||
BEGIN {
|
||||
# stuff useful locations into @INC
|
||||
unshift @INC, @{ (setting('include_paths') || []) };
|
||||
}
|
||||
|
||||
# set up database schema config from simple config vars
|
||||
if (ref {} eq ref setting('database')) {
|
||||
my $name = ($ENV{NETDISCO_DBNAME} || setting('database')->{name} || 'netdisco');
|
||||
my $host = setting('database')->{host};
|
||||
my $user = setting('database')->{user};
|
||||
my $pass = setting('database')->{pass};
|
||||
|
||||
my $dsn = "dbi:Pg:dbname=${name}";
|
||||
$dsn .= ";host=${host}" if $host;
|
||||
|
||||
# set up the netdisco schema now we have access to the config
|
||||
# but only if it doesn't exist from an earlier config style
|
||||
setting('plugins')->{DBIC}->{netdisco} ||= {
|
||||
dsn => $dsn,
|
||||
user => $user,
|
||||
password => $pass,
|
||||
options => {
|
||||
AutoCommit => 1,
|
||||
RaiseError => 1,
|
||||
auto_savepoint => 1,
|
||||
pg_enable_utf8 => 1,
|
||||
},
|
||||
schema_class => 'App::Netdisco::DB',
|
||||
};
|
||||
|
||||
foreach my $c (@{setting('external_databases')}) {
|
||||
my $schema = delete $c->{tag} or next;
|
||||
next if $schema eq 'netdisco';
|
||||
setting('plugins')->{DBIC}->{$schema} = $c;
|
||||
setting('plugins')->{DBIC}->{$schema}->{schema_class}
|
||||
||= 'App::Netdisco::GenericDB';
|
||||
}
|
||||
}
|
||||
|
||||
# defaults for workers
|
||||
setting('workers')->{queue} ||= 'PostgreSQL';
|
||||
if (exists setting('workers')->{interactives}
|
||||
or exists setting('workers')->{pollers}) {
|
||||
|
||||
setting('workers')->{tasks} =
|
||||
(setting('workers')->{pollers} || 0)
|
||||
+ (setting('workers')->{interactives} || 0);
|
||||
|
||||
delete setting('workers')->{pollers};
|
||||
delete setting('workers')->{interactives};
|
||||
}
|
||||
|
||||
# force skipped DNS resolution, if unset
|
||||
setting('dns')->{hosts_file} ||= '/etc/hosts';
|
||||
setting('dns')->{no} ||= ['fe80::/64','169.254.0.0/16'];
|
||||
|
||||
# legacy config item names
|
||||
|
||||
config->{'devport_vlan_limit'} =
|
||||
config->{'deviceport_vlan_membership_threshold'}
|
||||
if setting('deviceport_vlan_membership_threshold')
|
||||
and not setting('devport_vlan_limit');
|
||||
delete config->{'deviceport_vlan_membership_threshold'};
|
||||
|
||||
config->{'schedule'} = config->{'housekeeping'}
|
||||
if setting('housekeeping') and not setting('schedule');
|
||||
delete config->{'housekeeping'};
|
||||
|
||||
# schedule expire used to be called expiry
|
||||
setting('schedule')->{expire} ||= setting('schedule')->{expiry}
|
||||
if setting('schedule') and exists setting('schedule')->{expiry};
|
||||
delete config->{'schedule'}->{'expiry'} if setting('schedule');
|
||||
|
||||
# upgrade reports config from hash to list
|
||||
if (setting('reports') and ref {} eq ref setting('reports')) {
|
||||
config->{'reports'} = [ map {{
|
||||
tag => $_,
|
||||
%{ setting('reports')->{$_} }
|
||||
}} keys %{ setting('reports') } ];
|
||||
}
|
||||
|
||||
# set max outstanding requests for AnyEvent::DNS
|
||||
$ENV{'PERL_ANYEVENT_MAX_OUTSTANDING_DNS'}
|
||||
= setting('dns')->{max_outstanding} || 50;
|
||||
$ENV{'PERL_ANYEVENT_HOSTS'}
|
||||
= setting('dns')->{hosts_file} || '/etc/hosts';
|
||||
|
||||
# always set this
|
||||
$ENV{DBIC_TRACE_PROFILE} = 'console';
|
||||
|
||||
true;
|
||||
Reference in New Issue
Block a user