From c12034d2b0d213f38bc7c74b86f2ddf4bbe0175e Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sat, 17 May 2014 19:06:22 +0100 Subject: [PATCH] new DefaultSettings package, and mv queue to be key of workers --- Netdisco/lib/App/Netdisco.pm | 53 +----------------- Netdisco/lib/App/Netdisco/DefaultSettings.pm | 59 ++++++++++++++++++++ Netdisco/share/config.yml | 3 +- 3 files changed, 61 insertions(+), 54 deletions(-) create mode 100644 Netdisco/lib/App/Netdisco/DefaultSettings.pm diff --git a/Netdisco/lib/App/Netdisco.pm b/Netdisco/lib/App/Netdisco.pm index 5a3bf534..e93db31b 100644 --- a/Netdisco/lib/App/Netdisco.pm +++ b/Netdisco/lib/App/Netdisco.pm @@ -7,58 +7,7 @@ use 5.010_000; our $VERSION = '2.027003'; use App::Netdisco::Environment; -use Dancer ':script'; - -# set up database schema config from simple config vars -if (ref {} eq ref setting('database')) { - my $name = (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, - }, - schema_class => 'App::Netdisco::DB', - }; - -} - -# static configuration for the in-memory local job queue -setting('plugins')->{DBIC}->{daemon} = { - dsn => 'dbi:SQLite:dbname=:memory:', - options => { - AutoCommit => 1, - RaiseError => 1, - sqlite_use_immediate_transaction => 1, - }, - schema_class => 'App::Netdisco::Daemon::DB', -}; - -# force skipped DNS resolution, if unset -setting('dns')->{no} ||= ['fe80::/64','169.254.0.0/16']; -setting('dns')->{hosts_file} ||= '/etc/hosts'; - -# housekeeping expire used to be called expiry -setting('housekeeping')->{expire} ||= setting('housekeeping')->{expiry} - if setting('housekeeping') and exists setting('housekeeping')->{expiry}; - -# set max outstanding requests for AnyEvent::DNS -$ENV{'PERL_ANYEVENT_MAX_OUTSTANDING_DNS'} - = setting('dns')->{max_outstanding} || 10; -$ENV{'PERL_ANYEVENT_HOSTS'} - = setting('dns')->{hosts_file} || '/etc/hosts'; +use App::Netdisco::DefaultSettings; =head1 NAME diff --git a/Netdisco/lib/App/Netdisco/DefaultSettings.pm b/Netdisco/lib/App/Netdisco/DefaultSettings.pm new file mode 100644 index 00000000..9487f2ac --- /dev/null +++ b/Netdisco/lib/App/Netdisco/DefaultSettings.pm @@ -0,0 +1,59 @@ +package App::Netdisco::DefaultSettings; + +use Dancer qw/:moose :syntax :script/; + +# set up database schema config from simple config vars +if (ref {} eq ref setting('database')) { + my $name = (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, + }, + schema_class => 'App::Netdisco::DB', + }; + +} + +# static configuration for the in-memory local job queue +setting('plugins')->{DBIC}->{daemon} = { + dsn => 'dbi:SQLite:dbname=:memory:', + options => { + AutoCommit => 1, + RaiseError => 1, + sqlite_use_immediate_transaction => 1, + }, + schema_class => 'App::Netdisco::Daemon::DB', +}; + +# default queue model is Pg +setting('workers')->{queue} ||= 'PostgreSQL'; + +# force skipped DNS resolution, if unset +setting('dns')->{hosts_file} ||= '/etc/hosts'; +setting('dns')->{no} ||= ['fe80::/64','169.254.0.0/16']; + +# housekeeping expire used to be called expiry +setting('housekeeping')->{expire} ||= setting('housekeeping')->{expiry} + if setting('housekeeping') and exists setting('housekeeping')->{expiry}; + +# 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'; + +true; diff --git a/Netdisco/share/config.yml b/Netdisco/share/config.yml index ea9d51b3..81c6dd07 100644 --- a/Netdisco/share/config.yml +++ b/Netdisco/share/config.yml @@ -167,6 +167,7 @@ workers: interactives: 2 pollers: 10 sleep_time: 2 + queue: PostgreSQL dns: max_outstanding: 50 @@ -208,8 +209,6 @@ job_type_keys: Poller: pollers Interactive: interactives -job_queue: PostgreSQL - # --------------- # DANCER INTERNAL # ---------------