Commit feee614d authored by Alain Takoudjou's avatar Alain Takoudjou

Merge branch 'master' into 1.0

Conflicts:
	stack/slapos.cfg
parents cac1bba1 8bc27e68
Changes Changes
======= =======
1.0.45 (2017-01-09)
-------------------
* recipe: set default timeout of check url promise to 20 seconds
1.0.44 (2016-12-30) 1.0.44 (2016-12-30)
------------------- -------------------
......
...@@ -28,7 +28,7 @@ from setuptools import setup, find_packages ...@@ -28,7 +28,7 @@ from setuptools import setup, find_packages
import glob import glob
import os import os
version = '1.0.44' version = '1.0.45'
name = 'slapos.cookbook' name = 'slapos.cookbook'
long_description = open("README.rst").read() + "\n" + \ long_description = open("README.rst").read() + "\n" + \
open("CHANGES.rst").read() + "\n" open("CHANGES.rst").read() + "\n"
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
############################################################################## ##############################################################################
from slapos.recipe.librecipe import GenericBaseRecipe from slapos.recipe.librecipe import GenericBaseRecipe
import sys import sys
import os
class Recipe(GenericBaseRecipe): class Recipe(GenericBaseRecipe):
""" """
...@@ -33,12 +34,14 @@ class Recipe(GenericBaseRecipe): ...@@ -33,12 +34,14 @@ class Recipe(GenericBaseRecipe):
""" """
def install(self): def install(self):
timeout_file = os.path.join(os.getcwd(), 'etc/promise_timeout')
config = { config = {
'url': self.options['url'], 'url': self.options['url'],
'shell_path': self.options['dash_path'], 'shell_path': self.options['dash_path'],
'curl_path': self.options['curl_path'], 'curl_path': self.options['curl_path'],
'check_secure': self.options.get('check-secure', 0), 'check_secure': self.options.get('check-secure', 0),
'http_code': self.options.get('http_code', '200'), 'http_code': self.options.get('http_code', '200'),
'time_out': self.options.get('timeout-file-path', timeout_file),
} }
# XXX-Cedric in this script, curl won't check certificate # XXX-Cedric in this script, curl won't check certificate
......
...@@ -3,13 +3,24 @@ ...@@ -3,13 +3,24 @@
# BEWARE: It will be overwritten automatically # BEWARE: It will be overwritten automatically
URL="%(url)s" URL="%(url)s"
F_TIMEOUT="%(time_out)s"
TIMEOUT=20
if [ -z "$URL" ]; then if [ -z "$URL" ]; then
echo "No URL specified." >&2 echo "No URL specified." >&2
exit 3 exit 3
fi fi
CODE=$(%(curl_path)s -g -k -sL $URL -w %%{http_code} --max-time 10 -o /dev/null) if [ -s "$F_TIMEOUT" ]; then
TIMEOUT=$(cat $F_TIMEOUT)
result=$(echo $TIMEOUT | grep -E ^[0-9]+$)
if [ -z $result ]; then
# Not an integer
TIMEOUT=20
fi
fi
CODE=$(%(curl_path)s -g -k -sL $URL -w %%{http_code} --max-time $TIMEOUT -o /dev/null)
if [ $? -eq 3 ]; then if [ $? -eq 3 ]; then
echo "URL malformed: $URL." >&2 echo "URL malformed: $URL." >&2
......
...@@ -51,29 +51,29 @@ pycrypto = 2.6.1 ...@@ -51,29 +51,29 @@ pycrypto = 2.6.1
pycurl = 7.43.0 pycurl = 7.43.0
slapos.recipe.download = 1.0 slapos.recipe.download = 1.0
slapos.recipe.template = 2.8 slapos.recipe.template = 2.8
slapos.toolbox = 0.62 slapos.toolbox = 0.63
smmap = 0.9.0 smmap = 0.9.0
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
GitPython = 2.0.8 GitPython = 2.0.8
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
atomize = 0.2.0 atomize = 0.2.0
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
feedparser = 5.2.1 feedparser = 5.2.1
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
lockfile = 0.12.2 lockfile = 0.12.2
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
paramiko = 2.0.1 paramiko = 2.0.1
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
rpdb = 0.1.5 rpdb = 0.1.5
...@@ -15,7 +15,7 @@ plone.recipe.command = 1.1 ...@@ -15,7 +15,7 @@ plone.recipe.command = 1.1
pycrypto = 2.6.1 pycrypto = 2.6.1
rdiff-backup = 1.0.5 rdiff-backup = 1.0.5
slapos.recipe.template = 2.8 slapos.recipe.template = 2.8
slapos.toolbox = 0.62 slapos.toolbox = 0.63
smmap = 0.9.0 smmap = 0.9.0
numpy = 1.11.2 numpy = 1.11.2
...@@ -34,29 +34,29 @@ erp5.util = 0.4.46 ...@@ -34,29 +34,29 @@ erp5.util = 0.4.46
passlib = 1.6.5 passlib = 1.6.5
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
GitPython = 2.0.8 GitPython = 2.0.8
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
atomize = 0.2.0 atomize = 0.2.0
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
feedparser = 5.2.1 feedparser = 5.2.1
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
lockfile = 0.12.2 lockfile = 0.12.2
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
paramiko = 2.0.1 paramiko = 2.0.1
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
pycurl = 7.43.0 pycurl = 7.43.0
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
rpdb = 0.1.5 rpdb = 0.1.5
...@@ -62,6 +62,10 @@ parts = ...@@ -62,6 +62,10 @@ parts =
[slapos.cookbook-repository] [slapos.cookbook-repository]
revision = 571d6514f7290e8faa9439c4b86aa2f6c87df261 revision = 571d6514f7290e8faa9439c4b86aa2f6c87df261
[git]
# TODO stop using custom git revision once git 2.11 is supported by Gitlab
url = https://www.kernel.org/pub/software/scm/git/git-2.10.2.tar.xz
md5sum = 3cd1dca37be60668f482545716923b72
############################ ############################
# Software compilation # # Software compilation #
......
...@@ -5,7 +5,7 @@ extends = common.cfg ...@@ -5,7 +5,7 @@ extends = common.cfg
# XXX - use websockify = 0.5.1 for compatibility with kvm frontend # XXX - use websockify = 0.5.1 for compatibility with kvm frontend
websockify = 0.5.1 websockify = 0.5.1
slapos.toolbox = 0.62 slapos.toolbox = 0.63
erp5.util = 0.4.46 erp5.util = 0.4.46
apache-libcloud = 1.1.0 apache-libcloud = 1.1.0
collective.recipe.environment = 0.2.0 collective.recipe.environment = 0.2.0
......
...@@ -10,7 +10,6 @@ parts = ...@@ -10,7 +10,6 @@ parts =
monitor-collect-csv-wrapper monitor-collect-csv-wrapper
fluentd-wrapper fluentd-wrapper
monitor-base monitor-base
promise-check-slapgrid
publish-connection-information publish-connection-information
...@@ -106,17 +105,6 @@ recipe = slapos.cookbook:publish ...@@ -106,17 +105,6 @@ recipe = slapos.cookbook:publish
monitor-setup-url = https://monitor.app.officejs.com/#page=settings_configurator&url=${publish:monitor-url}&username=${publish:monitor-user}&password=${publish:monitor-password} monitor-setup-url = https://monitor.app.officejs.com/#page=settings_configurator&url=${publish:monitor-url}&username=${publish:monitor-user}&password=${publish:monitor-password}
server_log_url = ${publish:monitor-base-url}/${slap-configuration:private-hash}/ server_log_url = ${publish:monitor-base-url}/${slap-configuration:private-hash}/
[promise-check-slapgrid]
recipe = collective.recipe.template
error-log-file = ${buildout:directory}/.slapgrid-${slap-connection:partition-id}-error.log
input = inline:#!/bin/sh
if [ -f "${:error-log-file}" ]; then
>&2 cat ${:error-log-file}
exit 1
fi
output = ${monitor-directory:promises}/slapgrid-${slap-connection:partition-id}-status
mode = 700
[slap-configuration] [slap-configuration]
recipe = slapos.cookbook:slapconfiguration.serialised recipe = slapos.cookbook:slapconfiguration.serialised
computer = ${slap-connection:computer-id} computer = ${slap-connection:computer-id}
......
...@@ -32,7 +32,7 @@ mode = 0644 ...@@ -32,7 +32,7 @@ mode = 0644
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-monitor.cfg.jinja2 url = ${:_profile_base_location_}/instance-monitor.cfg.jinja2
destination = ${buildout:directory}/template-base-monitor.cfg destination = ${buildout:directory}/template-base-monitor.cfg
md5sum = ec16fdaa0e6e13dcc7d3007908182c20 md5sum = 20738a1b16de234e8bb7e88c822552b9
mode = 0644 mode = 0644
[template-monitor-distributor] [template-monitor-distributor]
...@@ -90,6 +90,12 @@ eggs += ...@@ -90,6 +90,12 @@ eggs +=
scripts = scripts =
networkbench networkbench
onetimedownload onetimedownload
monitor.bootstrap
monitor.collect
monitor.runpromise
monitor.genstatus
monitor.genrss
monitor.configwrite
[fluentd] [fluentd]
gems += gems +=
......
...@@ -113,8 +113,8 @@ transaction = 1.7.0 ...@@ -113,8 +113,8 @@ transaction = 1.7.0
zdaemon = 4.1.0 zdaemon = 4.1.0
zodbpickle = 0.6.0 zodbpickle = 0.6.0
zodbtools = 0.0.0.dev3 zodbtools = 0.0.0.dev3
# Required by slapos.toolbox = 0.62 # Required by slapos.toolbox = 0.63
slapos.toolbox = 0.62 slapos.toolbox = 0.63
PyRSS2Gen = 1.1 PyRSS2Gen = 1.1
apache-libcloud = 1.2.1 apache-libcloud = 1.2.1
atomize = 0.2.0 atomize = 0.2.0
......
...@@ -115,15 +115,15 @@ plone.recipe.command = 1.1 ...@@ -115,15 +115,15 @@ plone.recipe.command = 1.1
pycrypto = 2.6.1 pycrypto = 2.6.1
pycurl = 7.43.0 pycurl = 7.43.0
slapos.recipe.template = 2.7 slapos.recipe.template = 2.7
slapos.toolbox = 0.62 slapos.toolbox = 0.63
smmap = 0.9.0 smmap = 0.9.0
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
GitPython = 2.0.8 GitPython = 2.0.8
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
atomize = 0.2.0 atomize = 0.2.0
# Required by: # Required by:
...@@ -131,11 +131,11 @@ atomize = 0.2.0 ...@@ -131,11 +131,11 @@ atomize = 0.2.0
backports.ssl-match-hostname = 3.4.0.2 backports.ssl-match-hostname = 3.4.0.2
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
feedparser = 5.1.3 feedparser = 5.1.3
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
lockfile = 0.12.2 lockfile = 0.12.2
# Required by: # Required by:
...@@ -143,10 +143,10 @@ lockfile = 0.12.2 ...@@ -143,10 +143,10 @@ lockfile = 0.12.2
miniupnpc = 1.9 miniupnpc = 1.9
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
paramiko = 2.0.1 paramiko = 2.0.1
# Required by: # Required by:
# slapos.toolbox = 0.62 # slapos.toolbox = 0.63
rpdb = 0.1.5 rpdb = 0.1.5
...@@ -84,7 +84,7 @@ recipe = hexagonit.recipe.download ...@@ -84,7 +84,7 @@ recipe = hexagonit.recipe.download
ignore-existing = true ignore-existing = true
url = ${:_profile_base_location_}/template/runner-export.sh.jinja2 url = ${:_profile_base_location_}/template/runner-export.sh.jinja2
download-only = true download-only = true
md5sum = e2d472ade09c11c70dbea080932e80bd md5sum = 2e96b9daa5cd20fc77e9573a9ce3fe52
filename = runner-export.sh.jinja2 filename = runner-export.sh.jinja2
mode = 0644 mode = 0644
......
...@@ -17,7 +17,7 @@ gunicorn = 19.4.5 ...@@ -17,7 +17,7 @@ gunicorn = 19.4.5
prettytable = 0.7.2 prettytable = 0.7.2
pycurl = 7.43.0 pycurl = 7.43.0
slapos.recipe.template = 2.9 slapos.recipe.template = 2.9
slapos.toolbox = 0.62 slapos.toolbox = 0.63
smmap = 0.9.0 smmap = 0.9.0
# Required by: # Required by:
......
...@@ -72,8 +72,9 @@ remove_tmp_files () { ...@@ -72,8 +72,9 @@ remove_tmp_files () {
} }
trap remove_tmp_files EXIT trap remove_tmp_files EXIT
cd $srv_directory # Getting files from runner backup directory, as instance backup files may be
# explicitely excluded from the backup, using the srv/exporter.exclude
cd {{ directory['backup'] }}
backup_directory_path=$(find . -path "./runner/instance/slappart*/srv/backup/*" -type f) backup_directory_path=$(find . -path "./runner/instance/slappart*/srv/backup/*" -type f)
# If no backup found, it's over # If no backup found, it's over
......
...@@ -96,7 +96,7 @@ recipe = slapos.recipe.template:jinja2 ...@@ -96,7 +96,7 @@ recipe = slapos.recipe.template:jinja2
filename = template-monitor.cfg filename = template-monitor.cfg
template = ${:_profile_base_location_}/instance-monitor.cfg.jinja2.in template = ${:_profile_base_location_}/instance-monitor.cfg.jinja2.in
rendered = ${buildout:directory}/template-monitor.cfg rendered = ${buildout:directory}/template-monitor.cfg
md5sum = 5b6b7a96bfa1e0ca83310caa48ed7b20 md5sum = 04b4555615c48fb615dd452294c185e0
context = context =
key apache_location apache:location key apache_location apache:location
key gzip_location gzip:location key gzip_location gzip:location
...@@ -125,5 +125,5 @@ depends = ...@@ -125,5 +125,5 @@ depends =
PyRSS2Gen = 1.1 PyRSS2Gen = 1.1
cns.recipe.symlink = 0.2.3 cns.recipe.symlink = 0.2.3
pycurl = 7.43.0 pycurl = 7.43.0
slapos.toolbox = 0.62 slapos.toolbox = 0.63
...@@ -138,6 +138,7 @@ logrotate-folder = ${logrotate:logrotate-entries} ...@@ -138,6 +138,7 @@ logrotate-folder = ${logrotate:logrotate-entries}
promise-runner = {{ monitor_runpromise }} promise-runner = {{ monitor_runpromise }}
promise-folder = ${directory:promises} promise-folder = ${directory:promises}
monitor-promise-folder = ${monitor-directory:promises} monitor-promise-folder = ${monitor-directory:promises}
promises-timeout-file = ${monitor-promise-timeout-file:file}
pid-file = ${monitor-directory:pids}/monitor-bootstrap.pid pid-file = ${monitor-directory:pids}/monitor-bootstrap.pid
public-path-list = public-path-list =
...@@ -152,6 +153,7 @@ parameter-file-path = ${monitor-instance-parameter:configuration-file-path} ...@@ -152,6 +153,7 @@ parameter-file-path = ${monitor-instance-parameter:configuration-file-path}
parameter-list = parameter-list =
raw monitor-user ${monitor-instance-parameter:username} raw monitor-user ${monitor-instance-parameter:username}
htpasswd monitor-password ${monitor-htpassword-file:password-file} ${monitor-instance-parameter:username} ${httpd-monitor-htpasswd:htpasswd-path} htpasswd monitor-password ${monitor-htpassword-file:password-file} ${monitor-instance-parameter:username} ${httpd-monitor-htpasswd:htpasswd-path}
file promise-timeout ${monitor-promise-timeout-file:file}
${monitor-instance-parameter:instance-configuration} ${monitor-instance-parameter:instance-configuration}
# htpasswd entry: htpasswd key password-file username htpasswd-file # htpasswd entry: htpasswd key password-file username htpasswd-file
...@@ -161,6 +163,14 @@ python = {{ python_with_eggs }} ...@@ -161,6 +163,14 @@ python = {{ python_with_eggs }}
promise-output-file = ${directory:monitor}/monitor-bootstrap-status promise-output-file = ${directory:monitor}/monitor-bootstrap-status
[monitor-promise-timeout-file]
recipe = plone.recipe.command
file = ${directory:etc}/promise_timeout
command =
if [ ! -s "${:file}" ]; then
echo "20" > ${:file}
fi
[monitor-conf] [monitor-conf]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
template = {{ monitor_conf_template }} template = {{ monitor_conf_template }}
...@@ -335,7 +345,7 @@ monitor-base-url = ${monitor-frontend-promise:url} ...@@ -335,7 +345,7 @@ monitor-base-url = ${monitor-frontend-promise:url}
#monitor-base-url = ${monitor-httpd-conf-parameter:url} #monitor-base-url = ${monitor-httpd-conf-parameter:url}
root-instance-title = ${slap-configuration:root-instance-title} root-instance-title = ${slap-configuration:root-instance-title}
monitor-url-list = monitor-url-list =
cors-domains = monitor.app.officejs.com cors-domains = monitor.app.officejs.com
# XXX Hard coded parameter # XXX Hard coded parameter
collector-db = /srv/slapgrid/var/data-log/collector.db collector-db = /srv/slapgrid/var/data-log/collector.db
# Credentials # Credentials
...@@ -390,6 +400,17 @@ input = inline:#!{{ dash_executable_location }} ...@@ -390,6 +400,17 @@ input = inline:#!{{ dash_executable_location }}
output = ${directory:promises}/monitor-bootstrap-status output = ${directory:promises}/monitor-bootstrap-status
mode = 700 mode = 700
[promise-check-slapgrid]
recipe = collective.recipe.template
error-log-file = ${buildout:directory}/.slapgrid-${slap-connection:partition-id}-error.log
input = inline:#!/bin/sh
if [ -f "${:error-log-file}" ]; then
>&2 cat ${:error-log-file}
exit 1
fi
output = ${monitor-directory:promises}/buildout-${slap-connection:partition-id}-status
mode = 700
[monitor-base] [monitor-base]
# create dependencies between required monitor parts # create dependencies between required monitor parts
recipe = plone.recipe.command recipe = plone.recipe.command
...@@ -407,6 +428,7 @@ depends = ...@@ -407,6 +428,7 @@ depends =
${monitor-httpd-promise:filename} ${monitor-httpd-promise:filename}
${monitor-status2rss-cron-entry:name} ${monitor-status2rss-cron-entry:name}
${monitor-bootstrap-promise:file} ${monitor-bootstrap-promise:file}
${promise-check-slapgrid:output}
[monitor-publish] [monitor-publish]
monitor-base-url = ${publish:monitor-base-url} monitor-base-url = ${publish:monitor-base-url}
......
...@@ -133,7 +133,7 @@ pytz = 2016.7 ...@@ -133,7 +133,7 @@ pytz = 2016.7
requests = 2.11.1 requests = 2.11.1
setuptools = 19.6.2 setuptools = 19.6.2
six = 1.10.0 six = 1.10.0
slapos.cookbook = 1.0.44 slapos.cookbook = 1.0.45
slapos.core = 1.3.18 slapos.core = 1.3.18
slapos.extension.strip = 0.1 slapos.extension.strip = 0.1
slapos.libnetworkcache = 0.14.5 slapos.libnetworkcache = 0.14.5
...@@ -164,11 +164,11 @@ functools32 = 3.2.3.post2 ...@@ -164,11 +164,11 @@ functools32 = 3.2.3.post2
ipaddress = 1.0.17 ipaddress = 1.0.17
# Required by: # Required by:
# slapos.cookbook==1.0.44 # slapos.cookbook==1.0.45
jsonschema = 2.5.1 jsonschema = 2.5.1
# Required by: # Required by:
# slapos.cookbook==1.0.44 # slapos.cookbook==1.0.45
lock-file = 2.0 lock-file = 2.0
# Required by: # Required by:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment