From ab4ae3dcfdee8b768af1bca54eef07eb4c448570 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 7 Sep 2015 10:08:08 +0200 Subject: [PATCH] convert pvedaemon into a PVE::Service class --- PVE/Service/Makefile | 2 +- PVE/Service/pvedaemon.pm | 84 +++++++++++++++++++++++++++++++++++++++ bin/Makefile | 7 +--- bin/pvedaemon | 86 ++-------------------------------------- 4 files changed, 89 insertions(+), 90 deletions(-) create mode 100755 PVE/Service/pvedaemon.pm diff --git a/PVE/Service/Makefile b/PVE/Service/Makefile index e6a3bf9f..316369a6 100644 --- a/PVE/Service/Makefile +++ b/PVE/Service/Makefile @@ -1,6 +1,6 @@ include ../../defines.mk -SOURCES=pvestatd.pm pveproxy.pm +SOURCES=pvestatd.pm pveproxy.pm pvedaemon.pm .PHONY: install install: ${SOURCES} diff --git a/PVE/Service/pvedaemon.pm b/PVE/Service/pvedaemon.pm new file mode 100755 index 00000000..dc44c99d --- /dev/null +++ b/PVE/Service/pvedaemon.pm @@ -0,0 +1,84 @@ +package PVE::Service::pvedaemon; + +use strict; +use warnings; + +use PVE::SafeSyslog; +use PVE::Daemon; +use PVE::API2; +use PVE::API2::Formatter::Standard; +use PVE::API2::Formatter::HTML; +use PVE::HTTPServer; + +use base qw(PVE::Daemon); + +my $cmdline = [$0, @ARGV]; + +my %daemon_options = ( + max_workers => 3, + restart_on_error => 5, + stop_wait_time => 15, + leave_children_open_on_reload => 1, +); + +my $daemon = __PACKAGE__->new('pvedaemon', $cmdline, %daemon_options); + +sub init { + my ($self) = @_; + + my $accept_lock_fn = "/var/lock/pvedaemon.lck"; + + my $lockfh = IO::File->new(">>${accept_lock_fn}") || + die "unable to open lock file '${accept_lock_fn}' - $!\n"; + + my $socket = $self->create_reusable_socket(85, '127.0.0.1'); + + $self->{server_config} = { + base_handler_class => 'PVE::API2', + keep_alive => 100, + max_conn => 500, + max_requests => 1000, + lockfile => $accept_lock_fn, + socket => $socket, + lockfh => $lockfh, + debug => $self->{debug}, + trusted_env => 1, + }; +} + +sub run { + my ($self) = @_; + + my $server = PVE::HTTPServer->new(%{$self->{server_config}}); + $server->run(); +} + +$daemon->register_start_command(); +$daemon->register_restart_command(1); +$daemon->register_stop_command(); +$daemon->register_status_command(); + +our $cmddef = { + start => [ __PACKAGE__, 'start', []], + restart => [ __PACKAGE__, 'restart', []], + stop => [ __PACKAGE__, 'stop', []], + status => [ __PACKAGE__, 'status', [], undef, sub { print shift . "\n";} ], +}; + +1; + +__END__ + +=head1 NAME + +pvedaemon - the PVE configuration server + +=include synopsis + +=head1 DESCRIPTION + +All configuration is done using this Server. The Server only +listens to a local address 127.0.0.1 port 85 for security +reasons. + +=include pve_copyright diff --git a/bin/Makefile b/bin/Makefile index 3039bf70..015acc06 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -2,7 +2,7 @@ include ../defines.mk SUBDIRS = init.d ocf test -SERVICES = pvestatd pveproxy +SERVICES = pvestatd pveproxy pvedaemon CLITOOLS = vzdump pvesubscription SCRIPTS = \ @@ -12,7 +12,6 @@ SCRIPTS = \ pvesh \ pveam \ pvebanner \ - pvedaemon \ spiceproxy \ pveversion \ pvemailforward.pl \ @@ -25,7 +24,6 @@ SERVICE_MANS = $(addsuffix .8, ${SERVICES}) CLI_MANS = \ $(addsuffix .1, ${CLITOOLS}) \ pveceph.1 \ - pvedaemon.1 \ spiceproxy.1 \ pveversion.1 \ pveupgrade.1 \ @@ -71,9 +69,6 @@ pveperf.1.pod: pveperf perl -I.. -T -e "use PVE::CLI::$*; PVE::CLI::$*->generate_bash_completions();" >$@.tmp mv $@.tmp $@ -pvedaemon.1.pod: pvedaemon - perl -I.. -T ./pvedaemon printmanpod >$@ - spiceproxy.1.pod: spiceproxy perl -I.. -T ./spiceproxy printmanpod >$@ diff --git a/bin/pvedaemon b/bin/pvedaemon index 5440a0c4..f3cd1580 100755 --- a/bin/pvedaemon +++ b/bin/pvedaemon @@ -7,14 +7,7 @@ delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; use strict; use warnings; -use PVE::SafeSyslog; -use PVE::Daemon; -use PVE::API2; -use PVE::API2::Formatter::Standard; -use PVE::API2::Formatter::HTML; -use PVE::HTTPServer; - -use base qw(PVE::Daemon); +use PVE::Service::pvedaemon; $SIG{'__WARN__'} = sub { my $err = $@; @@ -25,82 +18,9 @@ $SIG{'__WARN__'} = sub { $@ = $err; }; -my $cmdline = [$0, @ARGV]; - -my %daemon_options = ( - max_workers => 3, - restart_on_error => 5, - stop_wait_time => 15, - leave_children_open_on_reload => 1, -); - -my $daemon = __PACKAGE__->new('pvedaemon', $cmdline, %daemon_options); - -sub prepare { +my $prepare = sub { # create dir for dtach sockets mkdir "/var/run/dtach"; -} - -sub init { - my ($self) = @_; - - my $accept_lock_fn = "/var/lock/pvedaemon.lck"; - - my $lockfh = IO::File->new(">>${accept_lock_fn}") || - die "unable to open lock file '${accept_lock_fn}' - $!\n"; - - my $socket = $self->create_reusable_socket(85, '127.0.0.1'); - - $self->{server_config} = { - base_handler_class => 'PVE::API2', - keep_alive => 100, - max_conn => 500, - max_requests => 1000, - lockfile => $accept_lock_fn, - socket => $socket, - lockfh => $lockfh, - debug => $self->{debug}, - trusted_env => 1, - }; -} - -sub run { - my ($self) = @_; - - my $server = PVE::HTTPServer->new(%{$self->{server_config}}); - $server->run(); -} - -$daemon->register_start_command(); -$daemon->register_restart_command(1); -$daemon->register_stop_command(); -$daemon->register_status_command(); - -my $cmddef = { - start => [ __PACKAGE__, 'start', []], - restart => [ __PACKAGE__, 'restart', []], - stop => [ __PACKAGE__, 'stop', []], - status => [ __PACKAGE__, 'status', [], undef, sub { print shift . "\n";} ], }; -my $cmd = shift; - -PVE::CLIHandler::handle_cmd($cmddef, $0, $cmd, \@ARGV, undef, $0, \&prepare); - -exit (0); - -__END__ - -=head1 NAME - -pvedaemon - the PVE configuration server - -=include synopsis - -=head1 DESCRIPTION - -All configuration is done using this Server. The Server only -listens to a local address 127.0.0.1 port 85 for security -reasons. - -=include pve_copyright +PVE::Service::pvedaemon->run_cli(undef, undef, $prepare);