diff --git a/Netdisco/MANIFEST b/Netdisco/MANIFEST index 1b16ecbf..cc9f2479 100644 --- a/Netdisco/MANIFEST +++ b/Netdisco/MANIFEST @@ -108,6 +108,7 @@ lib/App/Netdisco/Manual/ReleaseNotes.pod lib/App/Netdisco/Manual/WritingPlugins.pod lib/App/Netdisco/Util/Device.pm lib/App/Netdisco/Util/DNS.pm +lib/App/Netdisco/Util/Noop.pm lib/App/Netdisco/Util/Port.pm lib/App/Netdisco/Util/PortMAC.pm lib/App/Netdisco/Util/SanityCheck.pm diff --git a/Netdisco/META.yml b/Netdisco/META.yml index 8e66c3a6..304f3b73 100644 --- a/Netdisco/META.yml +++ b/Netdisco/META.yml @@ -60,4 +60,4 @@ resources: homepage: http://netdisco.org/ license: http://opensource.org/licenses/bsd-license.php repository: git://git.code.sf.net/p/netdisco/netdisco-ng -version: 2.007000_006 +version: 2.007000_007 diff --git a/Netdisco/bin/netdisco-daemon b/Netdisco/bin/netdisco-daemon index ed4e1b2b..53b7c3e8 100755 --- a/Netdisco/bin/netdisco-daemon +++ b/Netdisco/bin/netdisco-daemon @@ -3,14 +3,12 @@ use strict; use warnings FATAL => 'all'; -use FindBin; -FindBin::again(); our $home; BEGIN { # try really hard to find a localenv if one isn't already in place. $home = ($ENV{NETDISCO_HOME} || $ENV{HOME}); - eval "use Daemon::Control"; + eval "require App::Netdisco::Util::Noop"; if ($@) { use File::Spec; @@ -22,7 +20,10 @@ BEGIN { } } +use FindBin; +FindBin::again(); use Path::Class; +use Daemon::Control; my $netdisco = file($FindBin::RealBin, 'netdisco-daemon-fg'); my @args = (scalar @ARGV > 1 ? @ARGV[1 .. $#ARGV] : ()); diff --git a/Netdisco/bin/netdisco-deploy b/Netdisco/bin/netdisco-deploy index 570eda0e..395d7cc2 100755 --- a/Netdisco/bin/netdisco-deploy +++ b/Netdisco/bin/netdisco-deploy @@ -1,13 +1,11 @@ #!/usr/bin/env perl -use FindBin; -FindBin::again(); our $home; BEGIN { # try really hard to find a localenv if one isn't already in place. $home = ($ENV{NETDISCO_HOME} || $ENV{HOME}); - eval "use Daemon::Control"; + eval "require App::Netdisco::Util::Noop"; if ($@) { use File::Spec; @@ -19,11 +17,14 @@ BEGIN { } } +use FindBin; +FindBin::again(); +use Path::Class; + BEGIN { # stuff useful locations into @INC and $PATH my $location = $FindBin::RealBin; - use Path::Class; unshift @INC, dir($location)->parent->subdir('lib')->stringify, dir($location, 'lib')->stringify; @@ -35,6 +36,7 @@ BEGIN { use App::Netdisco; use Dancer ':script'; use Dancer::Plugin::DBIC 'schema'; + info "App::Netdisco version $App::Netdisco::VERSION loaded."; use 5.010_000; diff --git a/Netdisco/bin/netdisco-do b/Netdisco/bin/netdisco-do index 165c84a0..d8b1019d 100755 --- a/Netdisco/bin/netdisco-do +++ b/Netdisco/bin/netdisco-do @@ -1,5 +1,22 @@ #!/usr/bin/env perl +our $home; + +BEGIN { + # try really hard to find a localenv if one isn't already in place. + $home = ($ENV{NETDISCO_HOME} || $ENV{HOME}); + eval "require App::Netdisco::Util::Noop"; + + if ($@) { + use File::Spec; + my $localenv = File::Spec->catfile($FindBin::RealBin, 'localenv'); + exec($localenv, $0, @ARGV) if -f $localenv; + $localenv = File::Spec->catfile($home, 'perl5', 'bin', 'localenv'); + exec($localenv, $0, @ARGV) if -f $localenv; + die "Sorry, can't find libs required for App::Netdisco.\n"; + } +} + use FindBin; FindBin::again(); use Path::Class 'dir'; @@ -16,71 +33,6 @@ use App::Netdisco; use Dancer qw/:moose :script/; use Dancer::Plugin::DBIC 'schema'; -=head1 NAME - -netdisco-do - Run any Netdisco poller job from the command-line. - -=head1 USAGE - - ~/bin/netdisco-do [-D] [-d [-p ] [-e ]] - -Regardless of Netdisco configuration, debug level logging is enabled if the -C<-D> flag is given. - -=head1 DESCRIPTION - -This program allows you to run any Netdisco poller job from the command-line. - -Note that some jobs (C, C, C) simply add -entries to the Netdisco job queue for other jobs, so won't seem to do much -when you trigger them. - -=head1 ACTIONS - -=head2 discover - -Run a discover on the device (specified with C<-d>). - -=head2 macsuck - -Run a macsuck on the device (specified with C<-d>). - -=head2 arpnip - -Run an arpnip on the device (specified with C<-d>). - -=head2 set_location - -Set the SNMP location field on the device (specified with C<-d>). Pass the -location string in the C<-e> extra parameter. - -=head2 set_contact - -Set the SNMP contact field on the device (specified with C<-d>). Pass the -contact name in the C<-e> extra parameter. - -=head2 set_portname - -Set the description on a device port. Requires the C<-d> parameter (device), -C<-p> parameter (port), and C<-e> parameter (description). - -=head2 set_portcontrol - -Set the up/down status on a device port. Requires the C<-d> parameter -(device), C<-p> parameter (port), and C<-e> parameter ("up" or "down"). - -=head2 set_vlan - -Set the native VLAN on a device port. Requires the C<-d> parameter (device), -C<-p> parameter (port), and C<-e> parameter (VLAN number). - -=head2 set_power - -Set the PoE on/off status on a device port. Requires the C<-d> parameter -(device), C<-p> parameter (port), and C<-e> parameter ("true" or "false"). - -=cut - info "App::Netdisco version $App::Netdisco::VERSION loaded."; use Try::Tiny; @@ -164,3 +116,68 @@ info sprintf '%s: finished at %s', $action, scalar localtime; info sprintf '%s: status %s: %s', $action, $status, $log; exit ($status eq 'done' ? 0 : 1); + +=head1 NAME + +netdisco-do - Run any Netdisco poller job from the command-line. + +=head1 USAGE + + ~/bin/netdisco-do [-D] [-d [-p ] [-e ]] + +Regardless of Netdisco configuration, debug level logging is enabled if the +C<-D> flag is given. + +=head1 DESCRIPTION + +This program allows you to run any Netdisco poller job from the command-line. + +Note that some jobs (C, C, C) simply add +entries to the Netdisco job queue for other jobs, so won't seem to do much +when you trigger them. + +=head1 ACTIONS + +=head2 discover + +Run a discover on the device (specified with C<-d>). + +=head2 macsuck + +Run a macsuck on the device (specified with C<-d>). + +=head2 arpnip + +Run an arpnip on the device (specified with C<-d>). + +=head2 set_location + +Set the SNMP location field on the device (specified with C<-d>). Pass the +location string in the C<-e> extra parameter. + +=head2 set_contact + +Set the SNMP contact field on the device (specified with C<-d>). Pass the +contact name in the C<-e> extra parameter. + +=head2 set_portname + +Set the description on a device port. Requires the C<-d> parameter (device), +C<-p> parameter (port), and C<-e> parameter (description). + +=head2 set_portcontrol + +Set the up/down status on a device port. Requires the C<-d> parameter +(device), C<-p> parameter (port), and C<-e> parameter ("up" or "down"). + +=head2 set_vlan + +Set the native VLAN on a device port. Requires the C<-d> parameter (device), +C<-p> parameter (port), and C<-e> parameter (VLAN number). + +=head2 set_power + +Set the PoE on/off status on a device port. Requires the C<-d> parameter +(device), C<-p> parameter (port), and C<-e> parameter ("true" or "false"). + +=cut diff --git a/Netdisco/bin/netdisco-web b/Netdisco/bin/netdisco-web index ef1b9107..9c86eb78 100755 --- a/Netdisco/bin/netdisco-web +++ b/Netdisco/bin/netdisco-web @@ -3,14 +3,12 @@ use strict; use warnings FATAL => 'all'; -use FindBin; -FindBin::again(); our $home; BEGIN { # try really hard to find a localenv if one isn't already in place. $home = ($ENV{NETDISCO_HOME} || $ENV{HOME}); - eval "use Daemon::Control"; + eval "require App::Netdisco::Util::Noop"; if ($@) { use File::Spec; @@ -22,7 +20,10 @@ BEGIN { } } +use FindBin; +FindBin::again(); use Path::Class; +use Daemon::Control; my $netdisco = file($FindBin::RealBin, 'netdisco-web-fg'); my @args = (scalar @ARGV > 1 ? @ARGV[1 .. $#ARGV] : ()); diff --git a/Netdisco/lib/App/Netdisco.pm b/Netdisco/lib/App/Netdisco.pm index 919e7ca5..5f32c941 100644 --- a/Netdisco/lib/App/Netdisco.pm +++ b/Netdisco/lib/App/Netdisco.pm @@ -7,7 +7,7 @@ use 5.010_000; use File::ShareDir 'dist_dir'; use Path::Class; -our $VERSION = '2.007000_006'; +our $VERSION = '2.007000_007'; BEGIN { if (not length ($ENV{DANCER_APPDIR} || '') diff --git a/Netdisco/lib/App/Netdisco/Util/Noop.pm b/Netdisco/lib/App/Netdisco/Util/Noop.pm new file mode 100644 index 00000000..85b6ad1c --- /dev/null +++ b/Netdisco/lib/App/Netdisco/Util/Noop.pm @@ -0,0 +1,5 @@ +package App::Netdisco::Util::Noop; + +# used for testing library access. + +1;