[Opensrf-commits] r1709 - in trunk: . bin (dbs)
svn at svn.open-ils.org
svn at svn.open-ils.org
Sun May 31 16:21:57 EDT 2009
Author: dbs
Date: 2009-05-31 16:21:53 -0400 (Sun, 31 May 2009)
New Revision: 1709
Added:
trunk/bin/opensrf-perl.pl.in
Removed:
trunk/bin/opensrf-perl.pl
Modified:
trunk/configure.ac
Log:
Use autotools to set the default values in opensrf-perl.pl to what was passed in to ./configure
Deleted: trunk/bin/opensrf-perl.pl
===================================================================
--- trunk/bin/opensrf-perl.pl 2009-05-31 19:49:00 UTC (rev 1708)
+++ trunk/bin/opensrf-perl.pl 2009-05-31 20:21:53 UTC (rev 1709)
@@ -1,250 +0,0 @@
-#!/usr/bin/perl
-# ---------------------------------------------------------------
-# Copyright (C) 2008 Georgia Public Library Service
-# Bill Erickson <erickson at esilibrary.com>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-# ---------------------------------------------------------------
-use strict; use warnings;
-use Getopt::Long;
-use Net::Domain qw/hostfqdn/;
-use POSIX qw/setsid :sys_wait_h/;
-use OpenSRF::Utils::Logger q/$logger/;
-use OpenSRF::System;
-use OpenSRF::Transport::PeerHandle;
-use OpenSRF::Utils::SettingsClient;
-use OpenSRF::Transport::Listener;
-use OpenSRF::Utils;
-use OpenSRF::Utils::Config;
-
-my $opt_action = undef;
-my $opt_service = undef;
-my $opt_config = undef;
-my $opt_pid_dir = '/tmp';
-my $opt_no_daemon = 0;
-my $opt_settings_pause = 0;
-my $opt_help = 0;
-my $verbose = 0;
-my $sclient;
-my $hostname = $ENV{OSRF_HOSTNAME} || hostfqdn();
-my @hosted_services;
-
-GetOptions(
- 'action=s' => \$opt_action,
- 'service=s' => \$opt_service,
- 'config=s' => \$opt_config,
- 'pid-dir=s' => \$opt_pid_dir,
- 'no-daemon' => \$opt_no_daemon,
- 'settings-startup-pause=i' => \$opt_settings_pause,
- 'help' => \$opt_help,
- 'verbose' => \$verbose,
-);
-
-
-sub haltme {
- kill('INT', -$$); #kill all in process group
- exit;
-};
-$SIG{INT} = \&haltme;
-$SIG{TERM} = \&haltme;
-
-sub get_pid_file {
- my $service = shift;
- return "$opt_pid_dir/$service.pid";
-}
-
-# stop a specific service
-sub do_stop {
- my $service = shift;
- my $pid_file = get_pid_file($service);
- if(-e $pid_file) {
- my $pid = `cat $pid_file`;
- chomp $pid;
- msg("stopping service pid=$pid $service", 1);
- kill('INT', $pid);
- waitpid($pid, 0);
- unlink $pid_file;
- } else {
- msg("$service not running");
- }
- return 1;
-}
-
-sub do_init {
- OpenSRF::System->bootstrap_client(config_file => $opt_config);
- die "Unable to bootstrap client for requests\n"
- unless OpenSRF::Transport::PeerHandle->retrieve;
-
- load_settings(); # load the settings config if we can
-
- my $sclient = OpenSRF::Utils::SettingsClient->new;
- my $apps = $sclient->config_value("activeapps", "appname");
-
- # disconnect the top-level network handle
- OpenSRF::Transport::PeerHandle->retrieve->disconnect;
-
- if($apps) {
- $apps = [$apps] unless ref $apps;
- for my $app (@$apps) {
- push(@hosted_services, $app)
- if $sclient->config_value('apps', $app, 'language') =~ /perl/i;
- }
- }
- return 1;
-}
-
-# start a specific service
-sub do_start {
- my $service = shift;
- if(-e get_pid_file($service)) {
- msg("$service is already running");
- return;
- }
-
- load_settings() if $service eq 'opensrf.settings';
-
- my $sclient = OpenSRF::Utils::SettingsClient->new;
- my $apps = $sclient->config_value("activeapps", "appname");
- OpenSRF::Transport::PeerHandle->retrieve->disconnect;
-
- if(grep { $_ eq $service } @hosted_services) {
- return unless do_daemon($service);
- launch_net_server($service);
- launch_listener($service);
- $0 = "OpenSRF controller [$service]";
- while(my $pid = waitpid(-1, 0)) {
- $logger->debug("Cleaning up Perl $service process $pid");
- }
- }
-
- msg("$service is not configured to run on $hostname");
- return 1;
-}
-
-sub do_start_all {
- msg("starting all services for $hostname", 1);
- if(grep {$_ eq 'opensrf.settings'} @hosted_services) {
- do_start('opensrf.settings');
- # in batch mode, give opensrf.settings plenty of time to start
- # before any non-Perl services try to connect
- sleep $opt_settings_pause if $opt_settings_pause;
- }
- for my $service (@hosted_services) {
- do_start($service) unless $service eq 'opensrf.settings';
- }
- return 1;
-}
-
-sub do_stop_all {
- msg("stopping all services for $hostname", 1);
- do_stop($_) for @hosted_services;
- return 1;
-}
-
-# daemonize us. return true if we're the child, false if parent
-sub do_daemon {
- return 1 if $opt_no_daemon;
- my $service = shift;
- my $pid_file = get_pid_file($service);
- #exit if OpenSRF::Utils::safe_fork();
- return 0 if OpenSRF::Utils::safe_fork();
- msg("starting service pid=$$ $service", 1);
- chdir('/');
- setsid();
- close STDIN;
- close STDOUT;
- close STDERR;
- `echo $$ > $pid_file`;
- return 1;
-}
-
-# parses the local settings file
-sub load_settings {
- my $conf = OpenSRF::Utils::Config->current;
- my $cfile = $conf->bootstrap->settings_config;
- return unless $cfile;
- my $parser = OpenSRF::Utils::SettingsParser->new();
- $parser->initialize( $cfile );
- $OpenSRF::Utils::SettingsClient::host_config =
- $parser->get_server_config($conf->env->hostname);
-}
-
-# starts up the unix::server master process
-sub launch_net_server {
- my $service = shift;
- push @OpenSRF::UnixServer::ISA, 'Net::Server::PreFork';
- unless(OpenSRF::Utils::safe_fork()) {
- $0 = "OpenSRF Drone [$service]";
- OpenSRF::UnixServer->new($service)->serve;
- exit;
- }
- return 1;
-}
-
-# starts up the inbound listener process
-sub launch_listener {
- my $service = shift;
- unless(OpenSRF::Utils::safe_fork()) {
- $0 = "OpenSRF listener [$service]";
- OpenSRF::Transport::Listener->new($service)->initialize->listen;
- exit;
- }
- return 1;
-}
-
-sub msg {
- my $m = shift;
- my $v = shift;
- print "* $m\n" unless $v and not $verbose;
-}
-
-sub do_help {
- print <<HELP;
-
- Usage: perl $0 --pid_dir /var/run/opensrf --config /etc/opensrf/opensrf_core.xml --service opensrf.settings --action start
-
- --action <action>
- Actions include start, stop, restart, and start_all, stop_all, and restart_all
-
- --service <service>
- Specifies which OpenSRF service to control
-
- --config <file>
- OpenSRF configuration file
-
- --pid-dir <dir>
- Directory where process-specific PID files are kept
-
- --no-daemon
- Do not detach and run as a daemon process. Useful for debugging.
-
- --settings-startup-pause
- How long to give the opensrf.settings server to start up when running
- in batch mode (start_all). The purpose is to give plenty of time for
- the settings server to be up and active before any non-Perl services
- attempt to connect.
-
- --help
- Print this help message
-HELP
-exit;
-}
-
-
-do_help() if $opt_help or not $opt_action;
-do_init() and do_start($opt_service) if $opt_action eq 'start';
-do_stop($opt_service) if $opt_action eq 'stop';
-do_init() and do_stop($opt_service) and do_start($opt_service) if $opt_action eq 'restart';
-do_init() and do_start_all() if $opt_action eq 'start_all';
-do_init() and do_stop_all() if $opt_action eq 'stop_all';
-do_init() and do_stop_all() and do_start_all() if $opt_action eq 'restart_all';
-
-
Copied: trunk/bin/opensrf-perl.pl.in (from rev 1707, trunk/bin/opensrf-perl.pl)
===================================================================
--- trunk/bin/opensrf-perl.pl.in (rev 0)
+++ trunk/bin/opensrf-perl.pl.in 2009-05-31 20:21:53 UTC (rev 1709)
@@ -0,0 +1,250 @@
+#!/usr/bin/perl
+# ---------------------------------------------------------------
+# Copyright (C) 2008 Georgia Public Library Service
+# Bill Erickson <erickson at esilibrary.com>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# ---------------------------------------------------------------
+use strict; use warnings;
+use Getopt::Long;
+use Net::Domain qw/hostfqdn/;
+use POSIX qw/setsid :sys_wait_h/;
+use OpenSRF::Utils::Logger q/$logger/;
+use OpenSRF::System;
+use OpenSRF::Transport::PeerHandle;
+use OpenSRF::Utils::SettingsClient;
+use OpenSRF::Transport::Listener;
+use OpenSRF::Utils;
+use OpenSRF::Utils::Config;
+
+my $opt_action = undef;
+my $opt_service = undef;
+my $opt_config = "@sysconfdir@/opensrf_core.xml";
+my $opt_pid_dir = "@TMP@";
+my $opt_no_daemon = 0;
+my $opt_settings_pause = 0;
+my $opt_help = 0;
+my $verbose = 0;
+my $sclient;
+my $hostname = $ENV{OSRF_HOSTNAME} || hostfqdn();
+my @hosted_services;
+
+GetOptions(
+ 'action=s' => \$opt_action,
+ 'service=s' => \$opt_service,
+ 'config=s' => \$opt_config,
+ 'pid-dir=s' => \$opt_pid_dir,
+ 'no-daemon' => \$opt_no_daemon,
+ 'settings-startup-pause=i' => \$opt_settings_pause,
+ 'help' => \$opt_help,
+ 'verbose' => \$verbose,
+);
+
+
+sub haltme {
+ kill('INT', -$$); #kill all in process group
+ exit;
+};
+$SIG{INT} = \&haltme;
+$SIG{TERM} = \&haltme;
+
+sub get_pid_file {
+ my $service = shift;
+ return "$opt_pid_dir/$service.pid";
+}
+
+# stop a specific service
+sub do_stop {
+ my $service = shift;
+ my $pid_file = get_pid_file($service);
+ if(-e $pid_file) {
+ my $pid = `cat $pid_file`;
+ chomp $pid;
+ msg("stopping service pid=$pid $service", 1);
+ kill('INT', $pid);
+ waitpid($pid, 0);
+ unlink $pid_file;
+ } else {
+ msg("$service not running");
+ }
+ return 1;
+}
+
+sub do_init {
+ OpenSRF::System->bootstrap_client(config_file => $opt_config);
+ die "Unable to bootstrap client for requests\n"
+ unless OpenSRF::Transport::PeerHandle->retrieve;
+
+ load_settings(); # load the settings config if we can
+
+ my $sclient = OpenSRF::Utils::SettingsClient->new;
+ my $apps = $sclient->config_value("activeapps", "appname");
+
+ # disconnect the top-level network handle
+ OpenSRF::Transport::PeerHandle->retrieve->disconnect;
+
+ if($apps) {
+ $apps = [$apps] unless ref $apps;
+ for my $app (@$apps) {
+ push(@hosted_services, $app)
+ if $sclient->config_value('apps', $app, 'language') =~ /perl/i;
+ }
+ }
+ return 1;
+}
+
+# start a specific service
+sub do_start {
+ my $service = shift;
+ if(-e get_pid_file($service)) {
+ msg("$service is already running");
+ return;
+ }
+
+ load_settings() if $service eq 'opensrf.settings';
+
+ my $sclient = OpenSRF::Utils::SettingsClient->new;
+ my $apps = $sclient->config_value("activeapps", "appname");
+ OpenSRF::Transport::PeerHandle->retrieve->disconnect;
+
+ if(grep { $_ eq $service } @hosted_services) {
+ return unless do_daemon($service);
+ launch_net_server($service);
+ launch_listener($service);
+ $0 = "OpenSRF controller [$service]";
+ while(my $pid = waitpid(-1, 0)) {
+ $logger->debug("Cleaning up Perl $service process $pid");
+ }
+ }
+
+ msg("$service is not configured to run on $hostname");
+ return 1;
+}
+
+sub do_start_all {
+ msg("starting all services for $hostname", 1);
+ if(grep {$_ eq 'opensrf.settings'} @hosted_services) {
+ do_start('opensrf.settings');
+ # in batch mode, give opensrf.settings plenty of time to start
+ # before any non-Perl services try to connect
+ sleep $opt_settings_pause if $opt_settings_pause;
+ }
+ for my $service (@hosted_services) {
+ do_start($service) unless $service eq 'opensrf.settings';
+ }
+ return 1;
+}
+
+sub do_stop_all {
+ msg("stopping all services for $hostname", 1);
+ do_stop($_) for @hosted_services;
+ return 1;
+}
+
+# daemonize us. return true if we're the child, false if parent
+sub do_daemon {
+ return 1 if $opt_no_daemon;
+ my $service = shift;
+ my $pid_file = get_pid_file($service);
+ #exit if OpenSRF::Utils::safe_fork();
+ return 0 if OpenSRF::Utils::safe_fork();
+ msg("starting service pid=$$ $service", 1);
+ chdir('/');
+ setsid();
+ close STDIN;
+ close STDOUT;
+ close STDERR;
+ `echo $$ > $pid_file`;
+ return 1;
+}
+
+# parses the local settings file
+sub load_settings {
+ my $conf = OpenSRF::Utils::Config->current;
+ my $cfile = $conf->bootstrap->settings_config;
+ return unless $cfile;
+ my $parser = OpenSRF::Utils::SettingsParser->new();
+ $parser->initialize( $cfile );
+ $OpenSRF::Utils::SettingsClient::host_config =
+ $parser->get_server_config($conf->env->hostname);
+}
+
+# starts up the unix::server master process
+sub launch_net_server {
+ my $service = shift;
+ push @OpenSRF::UnixServer::ISA, 'Net::Server::PreFork';
+ unless(OpenSRF::Utils::safe_fork()) {
+ $0 = "OpenSRF Drone [$service]";
+ OpenSRF::UnixServer->new($service)->serve;
+ exit;
+ }
+ return 1;
+}
+
+# starts up the inbound listener process
+sub launch_listener {
+ my $service = shift;
+ unless(OpenSRF::Utils::safe_fork()) {
+ $0 = "OpenSRF listener [$service]";
+ OpenSRF::Transport::Listener->new($service)->initialize->listen;
+ exit;
+ }
+ return 1;
+}
+
+sub msg {
+ my $m = shift;
+ my $v = shift;
+ print "* $m\n" unless $v and not $verbose;
+}
+
+sub do_help {
+ print <<HELP;
+
+ Usage: perl $0 --pid_dir @TMP@ --config @sysconfdir@/opensrf_core.xml --service opensrf.settings --action start
+
+ --action <action>
+ Actions include start, stop, restart, and start_all, stop_all, and restart_all
+
+ --service <service>
+ Specifies which OpenSRF service to control
+
+ --config <file>
+ OpenSRF configuration file
+
+ --pid-dir <dir>
+ Directory where process-specific PID files are kept
+
+ --no-daemon
+ Do not detach and run as a daemon process. Useful for debugging.
+
+ --settings-startup-pause
+ How long to give the opensrf.settings server to start up when running
+ in batch mode (start_all). The purpose is to give plenty of time for
+ the settings server to be up and active before any non-Perl services
+ attempt to connect.
+
+ --help
+ Print this help message
+HELP
+exit;
+}
+
+
+do_help() if $opt_help or not $opt_action;
+do_init() and do_start($opt_service) if $opt_action eq 'start';
+do_stop($opt_service) if $opt_action eq 'stop';
+do_init() and do_stop($opt_service) and do_start($opt_service) if $opt_action eq 'restart';
+do_init() and do_start_all() if $opt_action eq 'start_all';
+do_init() and do_stop_all() if $opt_action eq 'stop_all';
+do_init() and do_stop_all() and do_start_all() if $opt_action eq 'restart_all';
+
+
Property changes on: trunk/bin/opensrf-perl.pl.in
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mergeinfo
+
Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac 2009-05-31 19:49:00 UTC (rev 1708)
+++ trunk/configure.ac 2009-05-31 20:21:53 UTC (rev 1709)
@@ -263,6 +263,7 @@
src/python/Makefile
src/router/Makefile
src/srfsh/Makefile
+ bin/opensrf-perl.pl
bin/osrf_config
bin/osrf_ctl.sh])
More information about the opensrf-commits
mailing list