=head1 NAME NACL::EventService - This lib contains helper functions for loading branch or leaf NACL event classes =head2 Loading NACL branch events class use NACL::EventService qw(load_branch_events); load_branch_events(events => [ qw( NACL::Events::C_STask::Volume NACL::Events::C_STask::VolumeEfficiency ] ); =head2 Loading NACL leaf events class use NACL::EventService qw(load_leaf_events); load_leaf_events(events => [ qw( NACL::Events::C_STask::Volume::create NACL::Events::C_STask::Volume::delete ] ); =cut package NACL::EventService; use Params::Validate qw(validate_with :types ); use Storable qw(nfreeze); use NATE::Log qw(log_global); my $Log = log_global(); my $may_enter = $Log->may_enter(); my $may_exit = $Log->may_exit(); BEGIN { use Exporter qw(import); our @EXPORT_OK = qw( load_branch_events load_leaf_events ); } sub load_branch_events { my %opts = validate_with( params => \@_, spec => {events => {type => ARRAYREF},} ); foreach my $pkg (@{$opts{events}}) { if (!$pkg->can('new')) { my $str = <<"HEREDOC"; package $pkg; use parent qw(NACL::Events::C_STask); 1; HEREDOC eval "$str"; } } } ## end sub load_branch_events sub load_leaf_events { my %opts = validate_with( params => \@_, spec => {events => {type => ARRAYREF},} ); foreach my $pkg (@{$opts{events}}) { if (!$pkg->can('new')) { my $str = <<"HEREDOC"; package $pkg; use parent qw(NACL::Events::Leaf); 1; HEREDOC eval "$str"; } } } ## end sub load_leaf_events 1;