StoryBoard Deferred Processors
This patch adds a puppet module that will start up N worker threads to handle messages sent to the deferred processing queue. It does so by making use of the new storyboard-worker-daemon command created in the below patch. Both upstart and sysvinit scripts are provided, with sysvinit being the default. https://review.openstack.org/#/c/122890/ Change-Id: I5565cbf8062457d343d3e02dbfaae2852a359d91 Story: 96
This commit is contained in:
parent
8c4feb93f8
commit
59a1fb57da
13
README.md
13
README.md
@ -146,6 +146,19 @@ instance of rabbit.
|
||||
}
|
||||
}
|
||||
|
||||
## ::storyboard::workers
|
||||
This module installs StoryBoard's deferred processing threads.
|
||||
|
||||
In order to process deferred requests within StoryBoard, you may run a
|
||||
configurable number of threads that process tasks from the deferred
|
||||
worker queue configured in <code>storyboard::rabbit</code>.
|
||||
|
||||
node default {
|
||||
class { '::storyboard::workers':
|
||||
worker_count => 5
|
||||
}
|
||||
}
|
||||
|
||||
## ::storyboard::load_projects
|
||||
A module that seeds the database with a predefined list of projects.
|
||||
|
||||
|
@ -70,4 +70,8 @@ class storyboard (
|
||||
rabbitmq_user => $rabbitmq_user,
|
||||
rabbitmq_user_password => $rabbitmq_user_password
|
||||
}
|
||||
|
||||
class { '::storyboard::workers':
|
||||
worker_count => 5,
|
||||
}
|
||||
}
|
||||
|
67
manifests/workers.pp
Normal file
67
manifests/workers.pp
Normal file
@ -0,0 +1,67 @@
|
||||
# Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
# == Class: storyboard::workers
|
||||
#
|
||||
# This module installs the storyboard deferred processing workers.
|
||||
#
|
||||
class storyboard::workers (
|
||||
$worker_count = 5,
|
||||
$use_upstart = false,
|
||||
) {
|
||||
|
||||
include storyboard::params
|
||||
|
||||
$upstart_path = '/etc/init/storyboard-workers.conf'
|
||||
$sysvinit_path = '/etc/init.d/storyboard-workers'
|
||||
|
||||
if $use_upstart {
|
||||
file { $upstart_path:
|
||||
ensure => file,
|
||||
owner => root,
|
||||
group => root,
|
||||
mode => '0644',
|
||||
content => template('storyboard/storyboard-workers.conf.erb'),
|
||||
notify => Service['storyboard-workers'],
|
||||
before => Service['storyboard-workers'],
|
||||
}
|
||||
file { $sysvinit_path:
|
||||
ensure => absent
|
||||
}
|
||||
} else {
|
||||
file { $upstart_path:
|
||||
ensure => absent
|
||||
}
|
||||
file { $sysvinit_path:
|
||||
ensure => file,
|
||||
owner => root,
|
||||
group => root,
|
||||
mode => '0755',
|
||||
content => template('storyboard/storyboard-workers.sh.erb'),
|
||||
notify => Service['storyboard-workers'],
|
||||
before => Service['storyboard-workers'],
|
||||
}
|
||||
}
|
||||
|
||||
service { 'storyboard-workers':
|
||||
ensure => running,
|
||||
hasrestart => true,
|
||||
subscribe => [
|
||||
Class['::storyboard::application']
|
||||
],
|
||||
require => [
|
||||
Class['::storyboard::application']
|
||||
]
|
||||
}
|
||||
}
|
11
templates/storyboard-workers.conf.erb
Normal file
11
templates/storyboard-workers.conf.erb
Normal file
@ -0,0 +1,11 @@
|
||||
description "StoryBoard Deferred Workers"
|
||||
|
||||
start on started network-services
|
||||
stop on stopping network-services
|
||||
|
||||
setuid <%= scope.lookupvar("storyboard::params::user") %>
|
||||
setgid <%= scope.lookupvar("storyboard::params::group") %>
|
||||
|
||||
script
|
||||
storyboard-worker-daemon --worker-count <%= @worker_count %>
|
||||
end script
|
66
templates/storyboard-workers.sh.erb
Normal file
66
templates/storyboard-workers.sh.erb
Normal file
@ -0,0 +1,66 @@
|
||||
#!/bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# Provides: storyboard-workers
|
||||
# Required-Start: $network $local_fs
|
||||
# Required-Stop:
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: StoryBoard Deferred Processors
|
||||
#### END INIT INFO
|
||||
|
||||
NAME=storyboard-workers
|
||||
USER=<%= scope.lookupvar("storyboard::params::user") %>
|
||||
GROUP=<%= scope.lookupvar("storyboard::params::group") %>
|
||||
CMD="storyboard-worker-daemon"
|
||||
CMD_ARGS="--worker-count <%= @worker_count %>"
|
||||
|
||||
########## Common
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:$PATH
|
||||
SSD=start-stop-daemon
|
||||
PID=/var/run/${NAME}.pid
|
||||
|
||||
start () {
|
||||
echo -n "Start $NAME"
|
||||
$SSD --start --pidfile $PID --make-pidfile -u $USER -g $GROUP --background --exec $CMD -- $CMD_ARGS
|
||||
RETVAL=$?
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop () {
|
||||
echo -n "Stop $NAME"
|
||||
$SSD --stop --oknodo --pidfile $PID --signal INT
|
||||
RETVAL=$?
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
restart () {
|
||||
stop
|
||||
sleep 1
|
||||
start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
|
||||
status)
|
||||
echo "not supported"
|
||||
;;
|
||||
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
Loading…
Reference in New Issue
Block a user