Migrate Linux CI roles to test targets. (#17997)

This commit is contained in:
Matt Clay 2016-10-13 09:09:25 -07:00 committed by GitHub
commit 75e4645ee7
263 changed files with 53 additions and 53 deletions

View file

@ -0,0 +1,10 @@
description "ansible test daemon"
start on runlevel [345]
stop on runlevel [!345]
expect daemon
exec ansible_test_service
manual

View file

@ -0,0 +1,10 @@
[Unit]
Description=Ansible Test Service
[Service]
ExecStart=/usr/sbin/ansible_test_service "Test\nthat newlines in scripts\nwork"
ExecReload=/bin/true
Type=forking
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,134 @@
#!/bin/sh
#
# LSB header
### BEGIN INIT INFO
# Provides: ansible-test
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: test daemon for ansible
# Description: This is a test daemon used by ansible for testing only
### END INIT INFO
# chkconfig header
# chkconfig: 345 99 99
# description: This is a test daemon used by ansible for testing only
#
# processname: /usr/sbin/ansible_test_service
# Sanity checks.
[ -x /usr/sbin/ansible_test_service ] || exit 0
DEBIAN_VERSION=/etc/debian_version
SUSE_RELEASE=/etc/SuSE-release
# Source function library.
if [ -f $DEBIAN_VERSION ]; then
. /lib/lsb/init-functions
elif [ -f $SUSE_RELEASE -a -r /etc/rc.status ]; then
. /etc/rc.status
else
. /etc/rc.d/init.d/functions
fi
SERVICE=ansible_test_service
PROCESS=ansible_test_service
CONFIG_ARGS=" "
if [ -f $DEBIAN_VERSION ]; then
LOCKFILE=/var/lock/$SERVICE
else
LOCKFILE=/var/lock/subsys/$SERVICE
fi
RETVAL=0
start() {
echo -n "Starting ansible test daemon: "
if [ -f $SUSE_RELEASE ]; then
startproc -p /var/run/${SERVICE}.pid -f /usr/sbin/ansible_test_service
rc_status -v
elif [ -e $DEBIAN_VERSION ]; then
if [ -f $LOCKFILE ]; then
echo -n "already started, lock file found"
RETVAL=1
elif /bin/python /usr/sbin/ansible_test_service; then
echo -n "OK"
RETVAL=0
fi
else
daemon --check $SERVICE $PROCESS --daemonize $CONFIG_ARGS
fi
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $LOCKFILE
return $RETVAL
}
stop() {
echo -n "Stopping ansible test daemon: "
if [ -f $SUSE_RELEASE ]; then
killproc -TERM /usr/sbin/ansible_test_service
rc_status -v
elif [ -f $DEBIAN_VERSION ]; then
# Added this since Debian's start-stop-daemon doesn't support spawned processes
if ps -ef | grep "/bin/python /usr/sbin/ansible_test_service" | grep -v grep | awk '{print $2}' | xargs kill &> /dev/null; then
echo -n "OK"
RETVAL=0
else
echo -n "Daemon is not started"
RETVAL=1
fi
else
killproc -p /var/run/${SERVICE}.pid
fi
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
rm -f $LOCKFILE
rm -f /var/run/$SERVICE.pid
fi
}
restart() {
stop
start
}
# See how we were called.
case "$1" in
start|stop|restart)
$1
;;
status)
if [ -f $SUSE_RELEASE ]; then
echo -n "Checking for ansible test service "
checkproc /usr/sbin/ansible_test_service
rc_status -v
elif [ -f $DEBIAN_VERSION ]; then
if [ -f $LOCKFILE ]; then
RETVAL=0
echo "ansible test is running."
else
RETVAL=1
echo "ansible test is stopped."
fi
else
status $PROCESS
RETVAL=$?
fi
;;
condrestart)
[ -f $LOCKFILE ] && restart || :
;;
reload)
echo "ok"
RETVAL=0
;;
*)
echo "Usage: $0 {start|stop|status|restart|condrestart|reload}"
exit 1
;;
esac
exit $RETVAL

View file

@ -0,0 +1,9 @@
description "ansible test daemon"
start on runlevel [345]
stop on runlevel [!345]
expect daemon
exec ansible_test_service

View file

@ -0,0 +1,67 @@
#!/usr/bin/env python
# this is mostly based off of the code found here:
# http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
import os
import resource
import sys
import time
UMASK = 0
WORKDIR = "/"
MAXFD = 1024
if (hasattr(os, "devnull")):
REDIRECT_TO = os.devnull
else:
REDIRECT_TO = "/dev/null"
def createDaemon():
try:
pid = os.fork()
except OSError as e:
raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0):
os.setsid()
try:
pid = os.fork()
except OSError as e:
raise Exception, "%s [%d]" % (e.strerror, e.errno)
if (pid == 0):
os.chdir(WORKDIR)
os.umask(UMASK)
else:
f = open('/var/run/ansible_test_service.pid', 'w')
f.write("%d\n" % pid)
f.close()
os._exit(0)
else:
os._exit(0)
maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
if (maxfd == resource.RLIM_INFINITY):
maxfd = MAXFD
for fd in range(0, maxfd):
try:
os.close(fd)
except OSError: # ERROR, fd wasn't open to begin with (ignored)
pass
os.open(REDIRECT_TO, os.O_RDWR)
os.dup2(0, 1)
os.dup2(0, 2)
return(0)
if __name__ == "__main__":
retCode = createDaemon()
while True:
time.sleep(1000)