extract config into APKPM::Config role
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 14:09:43 +0000 (15:09 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 14:09:43 +0000 (15:09 +0100)
lib/APKPM/CRM.pm
lib/APKPM/Config.pm [new file with mode: 0644]
t/Config.t [new file with mode: 0755]

index 344399d..7396b5f 100644 (file)
@@ -6,7 +6,7 @@ use Time::HiRes;
 use JSON::XS;
 use Data::Dump qw(dump);
 
-has 'crmxml' => ( isa => 'Str', is => 'ro', default => 'http://192.168.5.22/nms/ws.php' );
+with 'APKPM::Config';
 
 require RPC::XML;
 require RPC::XML::Client;
@@ -29,7 +29,7 @@ sub begin {
 sub username : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
        my ( $self, $job, $workload ) = @_;
        warn "# username ",dump($workload);
-       my $cli = RPC::XML::Client->new($self->crmxml);
+       my $cli = RPC::XML::Client->new($self->config('crmxml'));
        my $resp = $cli->send_request('search',RPC::XML::array->new(
                USERNAME => '%' . $workload . '%'
        ));
diff --git a/lib/APKPM/Config.pm b/lib/APKPM/Config.pm
new file mode 100644 (file)
index 0000000..c1d8329
--- /dev/null
@@ -0,0 +1,23 @@
+package APKPM::Config;
+
+use Moose::Role;
+
+use File::Slurp;
+use Data::Dump qw(dump);
+
+our $config;
+
+sub config {
+       my ( $self, $name ) = @_;
+       if ( ! $config ) {
+               my $code = read_file '/opt/managment_tools/etc/config.pl';
+               $code =~ s/\$(\w+)/\$config->{$1}/gs;
+               $code =~ s/\@(\w+)/\@{\$config->{$1}}/gs;
+               eval $code;
+               die $@ if $@;
+       }
+       die "no $name in ",dump $config unless exists $config->{$name};
+       return $config->{$name};
+}
+
+1;
diff --git a/t/Config.t b/t/Config.t
new file mode 100755 (executable)
index 0000000..6e7bb91
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+use Data::Dump qw(dump);
+
+use lib 'lib';
+
+use_ok 'APKPM::Config';
+
+ok my $config = APKPM::Config->config('crmxml'), 'config';
+diag dump $config;
+