Skip to content

Commit

Permalink
[backend] add bs_clouduploadworker and init scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
mlschroe committed Dec 18, 2017
1 parent b7799c7 commit d576032
Show file tree
Hide file tree
Showing 6 changed files with 396 additions and 12 deletions.
2 changes: 1 addition & 1 deletion dist/Makefile
@@ -1,6 +1,6 @@
include ../Makefile.include

INIT_SCRIPTS := obssrcserver obsrepserver obsscheduler obsworker obspublisher obsdispatcher obssigner obswarden obsapidelayed obsapisetup obsstoragesetup obsservice obsdodup obsservicedispatch
INIT_SCRIPTS := obssrcserver obsrepserver obsscheduler obsworker obspublisher obsdispatcher obssigner obswarden obsapidelayed obsapisetup obsstoragesetup obsservice obsdodup obsservicedispatch obsclouduploadserver obsclouduploadworker
LOGROTATE_CONFIGS := obs-api obs-server obs-source_service
OBS_BIN_SCRIPTS := obs_productconvert
OBS_SBIN_SCRIPTS := obs_admin obs_serverstatus
Expand Down
11 changes: 8 additions & 3 deletions dist/obs-server.spec
Expand Up @@ -409,7 +409,7 @@ getent passwd obsrun >/dev/null || \
exit 0

%preun
%stop_on_removal obssrcserver obsrepserver obsdispatcher obsscheduler obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice
%stop_on_removal obssrcserver obsrepserver obsdispatcher obsscheduler obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice obsclouduploadworker obsclouduploadserver

%service_del_preun obsdeltastore

Expand All @@ -418,9 +418,9 @@ exit 0

%post
%if 0%{?suse_version} >= 1315
%reload_on_update obssrcserver obsrepserver obsdispatcher obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice
%reload_on_update obssrcserver obsrepserver obsdispatcher obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice obsclouduploadworker obsclouduploadserver
%else
%restart_on_update obssrcserver obsrepserver obsdispatcher obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice
%restart_on_update obssrcserver obsrepserver obsdispatcher obspublisher obswarden obssigner obsdodup obsservicedispatch obsservice obsclouduploadworker obsclouduploadserver
%endif
# systemd kills the init script executing the reload first on reload....
%restart_on_update obsscheduler
Expand Down Expand Up @@ -506,6 +506,8 @@ chown %{apache_user}:%{apache_group} /srv/www/obs/api/log/production.log
%{_unitdir}/obsdeltastore.service
/etc/init.d/obsservicedispatch
/etc/init.d/obssigner
/etc/init.d/obsclouduploadworker
/etc/init.d/obsclouduploadserver
/usr/sbin/obs_admin
/usr/sbin/obs_serverstatus
/usr/sbin/rcobsdispatcher
Expand All @@ -518,6 +520,8 @@ chown %{apache_user}:%{apache_group} /srv/www/obs/api/log/production.log
/usr/sbin/rcobsdeltastore
/usr/sbin/rcobsservicedispatch
/usr/sbin/rcobssigner
/usr/sbin/rcobsclouduploadworker
/usr/sbin/rcobsclouduploadserver
/usr/lib/obs/server/plugins
/usr/lib/obs/server/BSDispatcher
/usr/lib/obs/server/BSRepServer
Expand Down Expand Up @@ -550,6 +554,7 @@ chown %{apache_user}:%{apache_group} /srv/www/obs/api/log/production.log
/usr/lib/obs/server/bs_signer
/usr/lib/obs/server/bs_warden
/usr/lib/obs/server/bs_clouduploadserver
/usr/lib/obs/server/bs_clouduploadworker
/usr/lib/obs/server/worker
/usr/lib/obs/server/worker-deltagen.spec
%config(noreplace) /usr/lib/obs/server/BSConfig.pm
Expand Down
94 changes: 94 additions & 0 deletions dist/obsclouduploadserver
@@ -0,0 +1,94 @@
#! /bin/sh
# Copyright (c) 2007, Novell Inc.
#
# Author: adrian@suse.de
#
# /etc/init.d/obsclouduploadserver
# and its symbolic link
# /usr/sbin/rcobsclouduploadserver
#
### BEGIN INIT INFO
# Provides: obsclouduploadserver
# Required-Start: $time $syslog
# Required-Stop: $null
# Should-Start: $none
# Should-Stop: $none
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Description: open build service cloup upload server
### END INIT INFO

. /etc/rc.status

. /etc/sysconfig/obs-server

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

if [ -z "$OBS_RUN_DIR" ]; then
OBS_RUN_DIR="/srv/obs/run"
fi

if [ -z "$OBS_LOG_DIR" ]; then
OBS_LOG_DIR="/srv/obs/log"
fi

if [ -n "$OBS_BACKENDCODE_DIR" ]; then
obsdir="$OBS_BACKENDCODE_DIR"
else
obsdir=/usr/lib/obs/server
fi
rundir="$OBS_RUN_DIR"
logdir="$OBS_LOG_DIR"

rundir_perm() {
# make sure rundir is group writable
test "$(stat -c "%A" "$rundir" | cut -c6)" = "-" && chmod 0775 "$rundir"
}

rc_reset
case "$1" in
start)
echo -n "Initializing obsclouduploadserver"
mkdir -p "$rundir" "$logdir"
rundir_perm
chown obsrun:obsrun "$logdir" "$rundir"
startproc -f -l "$logdir"/clouduploadserver.log "$obsdir"/bs_clouduploadserver
rc_status -v
;;
stop)
echo -n "Shutting down obsservice"
"$obsdir"/bs_clouduploadserver --stop
rc_status -v
;;
restart)
## If first returns OK call the second, if first or
## second command fails, set echo return value.
rundir_perm
"$obsdir"/bs_clouduploadserver --restart
rc_status
;;
try-restart|reload)
$0 status
if test $? = 0; then
rundir_perm
"$obsdir"/bs_clouduploadserver --restart
else
rc_reset # Not running is not a failure.
fi
# Remember status and be quiet
rc_status
;;
status)
echo -n "Checking for obsclouduploadserver and running processes: "
"$obsdir"/bs_serverstatus "$OBS_RUN_DIR"/bs_clouduploadserver.status
checkproc "$obsdir"/bs_clouduploadserver
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|reload}"
exit 1
;;
esac
rc_exit
93 changes: 93 additions & 0 deletions dist/obsclouduploadworker
@@ -0,0 +1,93 @@
#! /bin/sh
# Copyright (c) 2007, Novell Inc.
#
# Author: adrian@suse.de
#
# /etc/init.d/obsclouduploadworker
# and its symbolic link
# /usr/sbin/rcobsclouduploadworker
#
### BEGIN INIT INFO
# Provides: obsclouduploadworker
# Required-Start: $time $syslog
# Required-Stop: $null
# Should-Start: $none
# Should-Stop: $none
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Description: open build service cloup upload worker
### END INIT INFO

. /etc/rc.status

. /etc/sysconfig/obs-server

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

if [ -z "$OBS_RUN_DIR" ]; then
OBS_RUN_DIR="/srv/obs/run"
fi

if [ -z "$OBS_LOG_DIR" ]; then
OBS_LOG_DIR="/srv/obs/log"
fi

if [ -n "$OBS_BACKENDCODE_DIR" ]; then
obsdir="$OBS_BACKENDCODE_DIR"
else
obsdir=/usr/lib/obs/server
fi
rundir="$OBS_RUN_DIR"
logdir="$OBS_LOG_DIR"

rundir_perm() {
# make sure rundir is group writable
test "$(stat -c "%A" "$rundir" | cut -c6)" = "-" && chmod 0775 "$rundir"
}

rc_reset
case "$1" in
start)
echo -n "Initializing obsclouduploadworker"
mkdir -p "$rundir" "$logdir"
rundir_perm
chown obsrun:obsrun "$logdir" "$rundir"
startproc -f -l "$logdir"/clouduploadworker.log "$obsdir"/bs_clouduploadworker
rc_status -v
;;
stop)
echo -n "Shutting down obsclouduploadworker"
"$obsdir"/bs_clouduploadworker --stop
rc_status -v
;;
restart)
## If first returns OK call the second, if first or
## second command fails, set echo return value.
rundir_perm
"$obsdir"/bs_clouduploadworker --restart
rc_status
;;
try-restart|reload)
$0 status
if test $? = 0; then
rundir_perm
"$obsdir"/bs_clouduploadworker --restart
else
rc_reset # Not running is not a failure.
fi
# Remember status and be quiet
rc_status
;;
status)
echo -n "Checking for obsclouduploadworker and running processes: "
checkproc "$obsdir"/bs_clouduploadworker
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|reload}"
exit 1
;;
esac
rc_exit
20 changes: 12 additions & 8 deletions src/backend/bs_clouduploadserver
Expand Up @@ -41,12 +41,6 @@ use BSHTTP;

use strict;

$BSConfig::bsuser = $BSConfig::bsserviceuser;
$BSConfig::bsgroup = $BSConfig::bsservicegroup;

BSUtil::set_fdatasync_before_rename() unless $BSConfig::disable_data_sync || $BSConfig::disable_data_sync;


my $port = 5452;
$port = $1 if $BSConfig::clouduploadserver =~ /:(\d+)$/;

Expand Down Expand Up @@ -157,11 +151,19 @@ sub cloudupload_upload {
}
rename("$jobdir/.$jobid.file$$", "$jobdir/$jobid.file") || die("rename $jobdir/.$jobid.file$$ $jobdir/$jobid.file: $!\n");
$job->{'state'} = 'scheduled';
delete $job->{'details'};
writexml("$jobdir/.$jobid$$", "$jobdir/$jobid", $job, $BSXML::clouduploadjob);
close F;
return $BSStdServer::return_ok;
}

sub cloudupload_status {
my ($cgi, $jobid) = @_;
my ($job) = readxml("$jobdir/$jobid", $BSXML::clouduploadjob, 1) || readxml("$jobdir/done/$jobid", $BSXML::clouduploadjob, 1);
die("404 no such job\n") unless $job;
return ($job, $BSXML::clouduploadjob);
}

sub workerstatus {
my ($cgi) = @_;
my @daemonarchs = qw{clouduploadserver clouduploadworker};
Expand Down Expand Up @@ -212,10 +214,12 @@ my $dispatches = [
'!- GET:' => undef,
'!- HEAD:' => undef,

'/serverstatus' => \&BSStdServer::serverstatus,
'/workerstatus arch*' => \&workerstatus,
'!- POST:/cloudupload' => \&cloudupload_create,
'!- PUT:/cloudupload/$job' => \&cloudupload_upload,
'/cloudupload/$job' => \&cloudupload_status,

'/serverstatus' => \&BSStdServer::serverstatus,
'/workerstatus arch*' => \&workerstatus,
];

my $conf = {
Expand Down

0 comments on commit d576032

Please sign in to comment.