Commit 07ea8eca authored by Łukasz Nowak's avatar Łukasz Nowak

Update Release Candidate

parents ec1d1159 71abde5e
...@@ -57,7 +57,7 @@ environment = ...@@ -57,7 +57,7 @@ environment =
LDFLAGS=-Wl,-rpath=${gmp:location}/lib -Wl,-rpath=${isl:location}/lib -Wl,-rpath=${mpc:location}/lib -Wl,-rpath=${mpfr:location}/lib LDFLAGS=-Wl,-rpath=${gmp:location}/lib -Wl,-rpath=${isl:location}/lib -Wl,-rpath=${mpc:location}/lib -Wl,-rpath=${mpfr:location}/lib
PATH=${binutils:location}/bin:${gettext:location}/bin:${perl:location}/bin:${tar:location}/bin:%(PATH)s PATH=${binutils:location}/bin:${gettext:location}/bin:${perl:location}/bin:${tar:location}/bin:%(PATH)s
[gcc-common:os.path.isdir('/usr/lib/arm-linux-gnueabihf') and os.access('/proc/device-tree/model', os.R_OK) and 'OLinuXino-LIME2' in open('/proc/device-tree/model').read()] [gcc-common:os.path.isdir('/usr/lib/arm-linux-gnueabihf') and os.access('/proc/device-tree/model', os.R_OK) and 'OLinuXino' in open('/proc/device-tree/model').read()]
extra-configure-options = extra-configure-options =
--with-arch=armv7-a --with-arch=armv7-a
--with-fpu=vfp --with-fpu=vfp
......
...@@ -74,13 +74,25 @@ environment-extra = ...@@ -74,13 +74,25 @@ environment-extra =
[golang1.17] [golang1.17]
<= golang-common <= golang-common
url = https://golang.org/dl/go1.17.6.src.tar.gz url = https://golang.org/dl/go1.17.13.src.tar.gz
md5sum = dc57f93f323e9f8189e5ffc1f223e346 md5sum = 4476707f05cf6915ec1173038dc357a9
# go1.17 needs go1.4 to bootstrap # go1.17 needs go1.4 to bootstrap
environment-extra = environment-extra =
GOROOT_BOOTSTRAP=${golang14:location} GOROOT_BOOTSTRAP=${golang14:location}
[golang1.18]
<= golang-common
url = https://golang.org/dl/go1.18.9.src.tar.gz
md5sum = e2caa7c4de49aa77a14c694bfc9a5cd1
# go1.18 needs go1.4 or go1.17 to bootstrap.
# We use go1.4 to reduce the amount of components which
# need to be installed. See following note for rationale:
# https://lab.nexedi.com/nexedi/slapos/merge_requests/1305#note_174936
environment-extra =
GOROOT_BOOTSTRAP=${golang14:location}
# ---- infrastructure to build Go workspaces / projects ---- # ---- infrastructure to build Go workspaces / projects ----
# gowork is the top-level section that defines Go workspace. # gowork is the top-level section that defines Go workspace.
...@@ -140,7 +152,7 @@ bin = ${gowork.dir:bin} ...@@ -140,7 +152,7 @@ bin = ${gowork.dir:bin}
depends = ${gowork.goinstall:recipe} depends = ${gowork.goinstall:recipe}
# go version used for the workspace (possible to override in applications) # go version used for the workspace (possible to override in applications)
golang = ${golang1.17:location} golang = ${golang1.18:location}
# no special build flags by default # no special build flags by default
buildflags = buildflags =
......
...@@ -65,7 +65,6 @@ Pygments = 2.2.0 ...@@ -65,7 +65,6 @@ Pygments = 2.2.0
astor = 0.5 astor = 0.5
backports-abc = 0.5 backports-abc = 0.5
backports.shutil-get-terminal-size = 1.0.0 backports.shutil-get-terminal-size = 1.0.0
cycler = 0.10.0
ipykernel = 4.5.2 ipykernel = 4.5.2
ipython = 5.3.0 ipython = 5.3.0
ipython-genutils = 0.1.0 ipython-genutils = 0.1.0
...@@ -78,7 +77,6 @@ matplotlib = 2.1.2 ...@@ -78,7 +77,6 @@ matplotlib = 2.1.2
mistune = 0.7.3 mistune = 0.7.3
nbformat = 4.3.0 nbformat = 4.3.0
notebook = 4.4.1 notebook = 4.4.1
pandas = 0.19.2
prompt-toolkit = 1.0.13 prompt-toolkit = 1.0.13
ptyprocess = 0.5.1 ptyprocess = 0.5.1
pyzmq = 16.0.2 pyzmq = 16.0.2
...@@ -89,8 +87,6 @@ statsmodels = 0.8.0 ...@@ -89,8 +87,6 @@ statsmodels = 0.8.0
terminado = 0.6 terminado = 0.6
tornado = 4.4.2 tornado = 4.4.2
widgetsnbextension = 2.0.0 widgetsnbextension = 2.0.0
# numpy >= 1.13.1 is required for numpy.core.multiarray
numpy = 1.13.1
# nbconvert 4.2.0 depends on entrypoints egg that is not available as tar/zip source. # nbconvert 4.2.0 depends on entrypoints egg that is not available as tar/zip source.
nbconvert = 4.1.0 nbconvert = 4.1.0
...@@ -99,7 +95,6 @@ patsy = 0.4.1 ...@@ -99,7 +95,6 @@ patsy = 0.4.1
pexpect = 4.2.1 pexpect = 4.2.1
pickleshare = 0.7.4 pickleshare = 0.7.4
scandir = 1.5 scandir = 1.5
scipy = 0.19.0
singledispatch = 3.4.0.3 singledispatch = 3.4.0.3
wcwidth = 0.1.7 wcwidth = 0.1.7
jupyter = 1.0.0 jupyter = 1.0.0
......
[buildout] [buildout]
extends = extends =
../cmake/buildout.cfg ../cmake/buildout.cfg
../openssl/buildout.cfg
../libxslt/buildout.cfg
[mosquitto] [mosquitto]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
...@@ -9,5 +11,11 @@ md5sum = 22b7a8b05caa692cb22496b791529193 ...@@ -9,5 +11,11 @@ md5sum = 22b7a8b05caa692cb22496b791529193
configure-command = configure-command =
${cmake:location}/bin/cmake ${cmake:location}/bin/cmake
configure-options = configure-options =
-DDOCUMENTATION=OFF
-DWITH_CJSON=no -DWITH_CJSON=no
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@ -DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DOPENSSL_ROOT_DIR=${openssl:location}
-DOPENSSL_INCLUDE_DIR=${openssl:location}/include
environment =
PATH=${openssl:location}/bin:${libxslt:location}/bin:%(PATH)s
LDFLAGS=-L${openssl:location}/lib -Wl,-rpath=${openssl:location}/lib -Wl,-rpath=@@LOCATION@@/lib
...@@ -27,4 +27,4 @@ numpy = 1.22.0 ...@@ -27,4 +27,4 @@ numpy = 1.22.0
depends = depends =
[versions:sys.version_info < (3,8)] [versions:sys.version_info < (3,8)]
numpy = 1.16.4 numpy = 1.16.5
...@@ -15,13 +15,14 @@ egg = pandas ...@@ -15,13 +15,14 @@ egg = pandas
environment = pandas-env environment = pandas-env
setup-eggs = setup-eggs =
${numpy:egg} ${numpy:egg}
[pandas:sys.version_info >= (3,8)]
setup-eggs +=
${cython:egg} ${cython:egg}
[versions] [versions]
pandas = 0.25.3
[versions:sys.version_info >= (3,8)]
pandas = 1.4.0 pandas = 1.4.0
[pandas:sys.version_info < (3,8)]
setup-eggs =
${numpy:egg}
[versions:sys.version_info < (3,8)]
pandas = 0.24.2
[buildout] [buildout]
extends = extends =
../java-jdk/buildout.cfg
../libsecret/buildout.cfg ../libsecret/buildout.cfg
../pkgconfig/buildout.cfg ../pkgconfig/buildout.cfg
../patchelf/buildout.cfg ../patchelf/buildout.cfg
...@@ -144,8 +143,7 @@ content = ...@@ -144,8 +143,7 @@ content =
"editor.tabSize": 2, "editor.tabSize": 2,
"plantuml.server": "https://plantuml.host.vifib.net/svg/", "plantuml.server": "https://plantuml.host.vifib.net/svg/",
"plantuml.render": "PlantUMLServer", "plantuml.render": "PlantUMLServer",
"gitlens.remotes": [{ "domain": "lab.nexedi.com", "type": "GitLab" }], "gitlens.remotes": [{ "domain": "lab.nexedi.com", "type": "GitLab" }]
"java.home": "${java-jdk:location}"
}, },
"warnOnPotentiallyInsecureHostPattern": false "warnOnPotentiallyInsecureHostPattern": false
} }
......
...@@ -19,7 +19,7 @@ md5sum = 8157c22134200bd862a07c6521ebf799 ...@@ -19,7 +19,7 @@ md5sum = 8157c22134200bd862a07c6521ebf799
[yarn.lock] [yarn.lock]
_update_hash_filename_ = yarn.lock _update_hash_filename_ = yarn.lock
md5sum = d3fae8f0a2c911611d96a5dd870674c6 md5sum = ff5b37cac09580b885e6d269f62cdbad
[ms-python-disable-jedi-buildout.patch] [ms-python-disable-jedi-buildout.patch]
_update_hash_filename_ = ms-python-disable-jedi-buildout.patch _update_hash_filename_ = ms-python-disable-jedi-buildout.patch
......
This diff is collapsed.
import configparser import configparser
import logging
import requests import requests
import hashlib import hashlib
urls = [] urls = []
session = requests.Session()
timeout = 30
logger = logging.getLogger()
logging.basicConfig(level=logging.DEBUG)
for plugin_and_version in '''\ for plugin_and_version in '''\
vscode/bat/latest vscode/bat/latest
...@@ -83,9 +88,6 @@ for plugin_and_version in '''\ ...@@ -83,9 +88,6 @@ for plugin_and_version in '''\
ms-vscode/references-view/latest ms-vscode/references-view/latest
# golang.Go removed because it overwrites the PATH in theia shell # golang.Go removed because it overwrites the PATH in theia shell
# golang/Go/0.16.2 # golang/Go/0.16.2
vscjava/vscode-java-debug/0.29.0
redhat/java/0.61.0
vscjava/vscode-java-test/0.26.0
ms-python/python/2020.10.332292344 ms-python/python/2020.10.332292344
perrinjerome/vscode-zc-buildout/latest perrinjerome/vscode-zc-buildout/latest
jebbs/plantuml/2.14.0 jebbs/plantuml/2.14.0
...@@ -99,8 +101,9 @@ for plugin_and_version in '''\ ...@@ -99,8 +101,9 @@ for plugin_and_version in '''\
publisher, extension_name, version = plugin_and_version.split('/') publisher, extension_name, version = plugin_and_version.split('/')
api_url = f'https://open-vsx.org/api/{publisher}/{extension_name}/{version}' api_url = f'https://open-vsx.org/api/{publisher}/{extension_name}/{version}'
download_url = requests.get(api_url).json()['files']['download'] logger.info(plugin_and_version)
md5sum = hashlib.md5(requests.get(download_url).content).hexdigest() download_url = session.get(api_url, timeout=timeout).json()['files']['download']
md5sum = hashlib.md5(session.get(download_url, timeout=timeout).content).hexdigest()
urls.append(f'{publisher}-{extension_name} {download_url} {md5sum}') urls.append(f'{publisher}-{extension_name} {download_url} {md5sum}')
cfg = configparser.ConfigParser() cfg = configparser.ConfigParser()
......
This source diff could not be displayed because it is too large. You can view the blob instead.
[buildout]
parts =
kerberos
extends =
../../component/bison/buildout.cfg
[kerberos-package]
recipe = hexagonit.recipe.download
ignore-existing = true
url = http://web.mit.edu/kerberos/dist/krb5/1.11/krb5-1.11.1-signed.tar
md5sum = 76c6bed945c5771674357cfd4a08e3f5
[kerberos]
recipe = hexagonit.recipe.cmmi
url = ${kerberos-package:location}/krb5-1.11.1.tar.gz
configure-command = src/configure
configure-options =
--prefix=${buildout:parts-directory}/${:_buildout_section_name_}
make-options = -j1
environment =
PATH=${bison:location}/bin:%(PATH)s
...@@ -50,7 +50,7 @@ CGO_LDFLAGS += -Wl,-rpath=${zlib:location}/lib ...@@ -50,7 +50,7 @@ CGO_LDFLAGS += -Wl,-rpath=${zlib:location}/lib
recipe = slapos.recipe.build:gitclone recipe = slapos.recipe.build:gitclone
repository = https://lab.nexedi.com/nexedi/wendelin.core.git repository = https://lab.nexedi.com/nexedi/wendelin.core.git
branch = master branch = master
revision = wendelin.core-2.0.alpha2-2-g3d0f134c revision = wendelin.core-2.0.alpha3-0-g6315384
# dir is pretty name as top-level recipe # dir is pretty name as top-level recipe
location = ${buildout:parts-directory}/wendelin.core location = ${buildout:parts-directory}/wendelin.core
git-executable = ${git:location}/bin/git git-executable = ${git:location}/bin/git
...@@ -176,7 +176,6 @@ output = ${buildout:directory}/nginx_conf.in ...@@ -176,7 +176,6 @@ output = ${buildout:directory}/nginx_conf.in
Pillow = 6.2.2 Pillow = 6.2.2
matplotlib = 2.2.5 matplotlib = 2.2.5
kiwisolver = 1.1.0 kiwisolver = 1.1.0
cycler = 0.10.0
Pyro = 3.16 Pyro = 3.16
zeroconf2 = 0.19.2 zeroconf2 = 0.19.2
cython = 0.29.24 cython = 0.29.24
......
...@@ -122,11 +122,10 @@ autobahn = 19.11.2 ...@@ -122,11 +122,10 @@ autobahn = 19.11.2
txaio = 18.8.1 txaio = 18.8.1
idna = 2.10 idna = 2.10
numpy = 1.16.5
cycler = 0.10.0
click = 7.1.2 click = 7.1.2
lxml = 4.5.0 lxml = 4.5.0
opcua = 0.98.13 opcua = 0.98.13
trollius = 2.2.1 trollius = 2.2.1
futures = 3.3.0 futures = 3.3.0
numpy = 1.16.6
cycler = 0.10.0
...@@ -22,19 +22,19 @@ md5sum = 5784bea3bd608913769ff9a8afcccb68 ...@@ -22,19 +22,19 @@ md5sum = 5784bea3bd608913769ff9a8afcccb68
[profile-frontend] [profile-frontend]
filename = instance-frontend.cfg.in filename = instance-frontend.cfg.in
md5sum = 1ec349747487b45dd6b30bb2aa45acbe md5sum = 7c966ea975cea4dcea09281466df8082
[profile-master] [profile-master]
filename = instance-master.cfg.in filename = instance-master.cfg.in
md5sum = 50dbd9bd25fbc608b576ac83f4e13b0f md5sum = cfd5212f27696311f12c92dfce32cc59
[profile-slave-list] [profile-slave-list]
filename = instance-slave-list.cfg.in filename = instance-slave-list.cfg.in
md5sum = 5be5a32d5cf22e10967e59570dda2d36 md5sum = aba91817a1b58377597500f676603d23
[profile-master-publish-slave-information] [profile-master-publish-slave-information]
filename = instance-master-publish-slave-information.cfg.in filename = instance-master-publish-slave-information.cfg.in
md5sum = b3422f3624054f57b78d0e50a0de399a md5sum = cba4d995962f7fbeae3f61c9372c4181
[template-caddy-frontend-configuration] [template-caddy-frontend-configuration]
_update_hash_filename_ = templates/Caddyfile.in _update_hash_filename_ = templates/Caddyfile.in
......
...@@ -180,7 +180,6 @@ caddy-https-port = ${configuration:port} ...@@ -180,7 +180,6 @@ caddy-https-port = ${configuration:port}
slave-introspection-configuration = ${directory:etc}/slave-introspection-httpd-nginx.conf slave-introspection-configuration = ${directory:etc}/slave-introspection-httpd-nginx.conf
slave-introspection-https-port = ${configuration:slave-introspection-https-port} slave-introspection-https-port = ${configuration:slave-introspection-https-port}
slave-introspection-secure_access = ${slave-introspection-frontend:connection-secure_access} slave-introspection-secure_access = ${slave-introspection-frontend:connection-secure_access}
slave-introspection-domain = ${slave-introspection-frontend:connection-domain}
[self-signed-ip-access] [self-signed-ip-access]
# Self Signed certificate for HTTPS IP accesses to the frontend # Self Signed certificate for HTTPS IP accesses to the frontend
...@@ -979,7 +978,7 @@ software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/a ...@@ -979,7 +978,7 @@ software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/a
shared = true shared = true
config-url = https://[${slap-configuration:ipv6-random}]:{{ instance_parameter_dict['configuration.slave-introspection-https-port'] }}/ config-url = https://[${slap-configuration:ipv6-random}]:{{ instance_parameter_dict['configuration.slave-introspection-https-port'] }}/
config-https-only = true config-https-only = true
return = domain secure_access return = secure_access
[backend-haproxy-statistic-frontend] [backend-haproxy-statistic-frontend]
<= slap-connection <= slap-connection
......
...@@ -52,6 +52,11 @@ ...@@ -52,6 +52,11 @@
{% endif %} {% endif %}
{% endfor %} {% endfor %}
[common-frontend-information]
{% for frontend_key, frontend_value in frontend_information.items() %}
{{ frontend_key }} = {{ frontend_value }}
{% endfor %}
# Publish information for each slave # Publish information for each slave
{% set active_slave_instance_list = json_module.loads(active_slave_instance_dict['active-slave-instance-list']) %} {% set active_slave_instance_list = json_module.loads(active_slave_instance_dict['active-slave-instance-list']) %}
{% for slave_reference, slave_information in slave_information_dict.items() %} {% for slave_reference, slave_information in slave_information_dict.items() %}
...@@ -61,7 +66,9 @@ ...@@ -61,7 +66,9 @@
{% set publish_section_title = 'publish-%s' % slave_reference %} {% set publish_section_title = 'publish-%s' % slave_reference %}
{% do part_list.append(publish_section_title) %} {% do part_list.append(publish_section_title) %}
[{{ publish_section_title }}] [{{ publish_section_title }}]
recipe = slapos.cookbook:publish <= common-frontend-information
recipe = slapos.cookbook:publish_failsafe
-error-status-file = {{ publish_failsafe_error }}/{{ slave_reference }}-error.status
-slave-reference = {{ slave_reference }} -slave-reference = {{ slave_reference }}
{% set log_access_url = slave_information.pop('log-access-urls', None) %} {% set log_access_url = slave_information.pop('log-access-urls', None) %}
{% if log_access_url %} {% if log_access_url %}
...@@ -72,9 +79,6 @@ log-access-url = {{ dumps(json_module.dumps(log_access_url, sort_keys=True)) }} ...@@ -72,9 +79,6 @@ log-access-url = {{ dumps(json_module.dumps(log_access_url, sort_keys=True)) }}
{{ key }} = {{ dumps(value) }} {{ key }} = {{ dumps(value) }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% for frontend_key, frontend_value in frontend_information.items() %}
{{ frontend_key }} = {{ frontend_value }}
{% endfor %}
{% endfor %} {% endfor %}
[buildout] [buildout]
......
...@@ -414,6 +414,7 @@ backend-client-caucase-url = {{ caucase_url }} ...@@ -414,6 +414,7 @@ backend-client-caucase-url = {{ caucase_url }}
{# sort_keys are important in order to avoid shuffling parameters on each run #} {# sort_keys are important in order to avoid shuffling parameters on each run #}
rejected-slave-dict = {{ dumps(json_module.dumps(rejected_slave_dict, sort_keys=True)) }} rejected-slave-dict = {{ dumps(json_module.dumps(rejected_slave_dict, sort_keys=True)) }}
rejected-slave-promise-url = ${rejected-slave-promise:config-url} rejected-slave-promise-url = ${rejected-slave-promise:config-url}
publish-failsafe-error-promise-url = ${publish-failsafe-error-promise:config-url}
master-key-upload-url = ${request-kedifa:connection-master-key-upload-url} master-key-upload-url = ${request-kedifa:connection-master-key-upload-url}
master-key-generate-auth-url = ${request-kedifa:connection-master-key-generate-auth-url} master-key-generate-auth-url = ${request-kedifa:connection-master-key-generate-auth-url}
kedifa-caucase-url = ${request-kedifa:connection-caucase-url} kedifa-caucase-url = ${request-kedifa:connection-caucase-url}
...@@ -546,6 +547,7 @@ extra-context = ...@@ -546,6 +547,7 @@ extra-context =
section active_slave_instance_dict active-slave-instance section active_slave_instance_dict active-slave-instance
section warning_slave_information warning-slave-information section warning_slave_information warning-slave-information
key slave_kedifa_information request-kedifa:connection-slave-kedifa-information key slave_kedifa_information request-kedifa:connection-slave-kedifa-information
key publish_failsafe_error directory:publish-failsafe-error-var
[monitor-base-url-dict] [monitor-base-url-dict]
kedifa = ${request-kedifa:connection-monitor-base-url} kedifa = ${request-kedifa:connection-monitor-base-url}
...@@ -563,7 +565,10 @@ backup = ${:srv}/backup ...@@ -563,7 +565,10 @@ backup = ${:srv}/backup
caucased = ${:srv}/caucased caucased = ${:srv}/caucased
backup-caucased = ${:backup}/caucased backup-caucased = ${:backup}/caucased
# NGINX # NGINX
rejected-var = ${:var}/rejected-nginx master-introspection-var = ${:var}/master-introspection-nginx
# slaves
publish-failsafe-error-var = ${:var}/publish-failsafe-error
publish-failsafe-check-var = ${:var}/publish-failsafe-check
{% if aikc_enabled %} {% if aikc_enabled %}
[directory] [directory]
...@@ -829,27 +834,53 @@ context = ...@@ -829,27 +834,53 @@ context =
service = ${:etc}/service service = ${:etc}/service
promise-output = ${:srv}/promise-output promise-output = ${:srv}/promise-output
[rejected-slave-publish-configuration] [master-introspection-server-configuration]
ip = {{ instance_parameter_dict['ipv6-random'] }} ip = {{ instance_parameter_dict['ipv6-random'] }}
port = 14455 port = 14455
[rejected-slave-publish] [master-introspection-server]
directory = ${rejected-slave-json:directory} ip = ${master-introspection-server-configuration:ip}
url = https://${rejected-slave-password:user}:${rejected-slave-password:passwd}@[${rejected-slave-publish-configuration:ip}]:${rejected-slave-publish-configuration:port}/${rejected-slave-json:filename} port = ${master-introspection-server-configuration:port}
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
command-line = {{ software_parameter_dict['nginx'] }} command-line = {{ software_parameter_dict['nginx'] }}
-c ${rejected-slave-template:output} -c ${master-introspection-template:output}
wrapper-path = ${directory:service}/rejected-slave-publish wrapper-path = ${directory:service}/master-introspection-server
hash-existing-files = hash-existing-files =
${buildout:directory}/software_release/buildout.cfg ${buildout:directory}/software_release/buildout.cfg
hash-files = hash-files =
${rejected-slave-template:output} ${master-introspection-template:output}
${rejected-slave-certificate:certificate} ${master-introspection-certificate:certificate}
[master-introspection-frontend]
<= slap-connection
recipe = slapos.cookbook:requestoptional
name = Master Introspection Frontend
software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
shared = true
config-url = https://[${master-introspection-server:ip}]:${master-introspection-server:port}/
config-https-only = true
return = secure_access
[master-introspection-frontend-url]
recipe = slapos.recipe.build
url = ${master-introspection-frontend:connection-secure_access}
user = ${master-introspection-password:user}
password = ${master-introspection-password:passwd}
init =
import furl
url = furl.furl(options['url'])
url.set(username = options['user'].lower())
url.set(password = options['password'])
url.set(path = '')
options['frontend-url'] = url.tostr()
[rejected-slave-certificate] [rejected-slave-publish]
url = ${master-introspection-frontend-url:frontend-url}/${master-introspection-template:rejected-slave-path}/${rejected-slave-json:filename}
[master-introspection-certificate]
recipe = plone.recipe.command recipe = plone.recipe.command
certificate = ${directory:etc}/rejected-slave.pem certificate = ${directory:etc}/master-introspection.pem
key = ${:certificate} key = ${:certificate}
{#- Can be stopped on error, as does not rely on self provided service #} {#- Can be stopped on error, as does not rely on self provided service #}
...@@ -859,29 +890,31 @@ command = ...@@ -859,29 +890,31 @@ command =
[ -f ${:certificate} ] && {{ software_parameter_dict['findutils'] }}/bin/find ${:certificate} -type f -mtime +3 -delete [ -f ${:certificate} ] && {{ software_parameter_dict['findutils'] }}/bin/find ${:certificate} -type f -mtime +3 -delete
if ! [ -f ${:certificate} ] ; then if ! [ -f ${:certificate} ] ; then
openssl req -new -newkey rsa:2048 -sha256 -subj \ openssl req -new -newkey rsa:2048 -sha256 -subj \
"/CN=${rejected-slave-publish-configuration:ip}" \ "/CN=${master-introspection-server-configuration:ip}" \
-days 5 -nodes -x509 -keyout ${:certificate} -out ${:certificate} -days 5 -nodes -x509 -keyout ${:certificate} -out ${:certificate}
fi fi
[rejected-slave-password] [master-introspection-password]
recipe = slapos.cookbook:generate.password recipe = slapos.cookbook:generate.password
storage-path = ${directory:etc}/.rejected-slave.passwd storage-path = ${directory:etc}/.master-introspection.passwd
bytes = 8 bytes = 8
user = admin user = admin
[rejected-slave-htpasswd] [master-introspection-htpasswd]
recipe = plone.recipe.command recipe = plone.recipe.command
{#- Can be stopped on error, as does not rely on self provided service #} {#- Can be stopped on error, as does not rely on self provided service #}
stop-on-error = True stop-on-error = True
file = ${directory:var}/nginx-rejected.htpasswd file = ${directory:var}/master-introspection.htpasswd
{#- update-command is not needed, as if the ${:password} would change, the whole part will be recalculated #} {#- update-command is not needed, as if the ${:password} would change, the whole part will be recalculated #}
password = ${rejected-slave-password:passwd} password = ${master-introspection-password:passwd}
command = {{ software_parameter_dict['htpasswd'] }} -cb ${:file} ${rejected-slave-password:user} ${:password} command = {{ software_parameter_dict['htpasswd'] }} -cb ${:file} ${master-introspection-password:user} ${:password}
[rejected-slave-template] [master-introspection-template]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
var = ${directory:rejected-var} var = ${directory:master-introspection-var}
pid = ${directory:var}/nginx-rejected.pid pid = ${directory:var}/nginx-master-introspection-server.pid
rejected-slave-path = rejected-slave
publish-failsafe-error-path = publish-failsafe-error
inline = inline =
daemon off; daemon off;
pid ${:pid}; pid ${:pid};
...@@ -895,35 +928,40 @@ inline = ...@@ -895,35 +928,40 @@ inline =
port_in_redirect off; port_in_redirect off;
error_log stderr; error_log stderr;
access_log /dev/null; access_log /dev/null;
listen [${rejected-slave-publish-configuration:ip}]:${rejected-slave-publish-configuration:port} ssl; listen [${master-introspection-server-configuration:ip}]:${master-introspection-server-configuration:port} ssl;
ssl_certificate ${rejected-slave-certificate:certificate}; ssl_certificate ${master-introspection-certificate:certificate};
ssl_certificate_key ${rejected-slave-certificate:certificate}; ssl_certificate_key ${master-introspection-certificate:certificate};
default_type application/octet-stream; default_type application/octet-stream;
client_body_temp_path ${:var} 1 2; client_body_temp_path ${:var} 1 2;
proxy_temp_path ${:var} 1 2; proxy_temp_path ${:var} 1 2;
fastcgi_temp_path ${:var} 1 2; fastcgi_temp_path ${:var} 1 2;
uwsgi_temp_path ${:var} 1 2; uwsgi_temp_path ${:var} 1 2;
scgi_temp_path ${:var} 1 2; scgi_temp_path ${:var} 1 2;
auth_basic "Master Introspection";
location / { auth_basic_user_file ${master-introspection-htpasswd:file};
location /${:rejected-slave-path} {
alias ${rejected-slave-json:directory}/; alias ${rejected-slave-json:directory}/;
autoindex off; autoindex off;
sendfile on; sendfile on;
sendfile_max_chunk 1m; sendfile_max_chunk 1m;
auth_basic "Rejected slave template"; }
auth_basic_user_file ${rejected-slave-htpasswd:file}; location /${:publish-failsafe-error-path} {
alias ${check-publish-failsafe-error:directory}/;
autoindex off;
sendfile on;
sendfile_max_chunk 1m;
} }
} }
} }
output = ${directory:etc}/nginx-rejected-slave.conf output = ${directory:etc}/nginx-master-introspection.conf
[promise-rejected-slave-publish-ip-port] [master-introspection-server-ip-port]
<= monitor-promise-base <= monitor-promise-base
promise = check_socket_listening promise = check_socket_listening
name = rejected-slave-publish-ip-port-listening.py name = master-introspection-server-ip-port-listening.py
config-host = ${rejected-slave-publish-configuration:ip} config-host = ${master-introspection-server-configuration:ip}
config-port = ${rejected-slave-publish-configuration:port} config-port = ${master-introspection-server-configuration:port}
[rejected-slave-promise] [rejected-slave-promise]
<= monitor-promise-base <= monitor-promise-base
...@@ -986,6 +1024,25 @@ hash-existing-files = ${buildout:directory}/software_release/buildout.cfg ...@@ -986,6 +1024,25 @@ hash-existing-files = ${buildout:directory}/software_release/buildout.cfg
key_len=2048 key_len=2048
)}} )}}
[check-publish-failsafe-error]
recipe = plone.recipe.command
directory = ${directory:publish-failsafe-check-var}
filename = publish-failsafe-error.txt
file = ${:directory}/${:filename}
command = {{ software_parameter_dict['findutils'] }}/bin/find ${directory:publish-failsafe-error-var} -type f -printf "%f\n" > ${:file}
update-command = ${:command}
[check-publish-failsafe-error-publish]
url = ${master-introspection-frontend-url:frontend-url}/${master-introspection-template:publish-failsafe-error-path}/${check-publish-failsafe-error:filename}
[publish-failsafe-error-promise]
<= monitor-promise-base
promise = check_file_state
name = publish-failsafe-error.py
config-filename = ${check-publish-failsafe-error:file}
config-state = empty
config-url = ${check-publish-failsafe-error-publish:url}
[buildout] [buildout]
extends = extends =
{{ software_parameter_dict['profile_common'] }} {{ software_parameter_dict['profile_common'] }}
...@@ -993,15 +1050,18 @@ extends = ...@@ -993,15 +1050,18 @@ extends =
parts = parts =
monitor-base monitor-base
publish-slave-information publish-slave-information
check-publish-failsafe-error
publish-failsafe-error-promise
publish-information publish-information
request-kedifa request-kedifa
rejected-slave-promise rejected-slave-promise
promise-rejected-slave-publish-ip-port master-introspection-server-ip-port
caucased-backend-client caucased-backend-client
caucased-backend-client-promise caucased-backend-client-promise
master-key-upload-url-ready-promise master-key-upload-url-ready-promise
master-key-generate-auth-url-ready-promise master-key-generate-auth-url-ready-promise
master-key-download-url-ready-promise master-key-download-url-ready-promise
master-introspection-frontend
{% for part in part_list %} {% for part in part_list %}
{{ ' %s' % part }} {{ ' %s' % part }}
{% endfor %} {% endfor %}
...@@ -376,18 +376,8 @@ config-frequency = 720 ...@@ -376,18 +376,8 @@ config-frequency = 720
{%- endif %} {%- endif %}
{#- ############################### #} {#- ############################### #}
{#- Publish Slave Information #} {#- Prepare Slave Information #}
{%- if not configuration['extra_slave_instance_list'] %}
{%- set publish_section_title = 'publish-%s-connection-information' % slave_instance.get('slave_reference') %}
{%- do part_list.append(publish_section_title) %}
[{{ publish_section_title }}]
recipe = slapos.cookbook:publish
{%- for key, value in slave_publish_dict.items() %}
{{ key }} = {{ value }}
{%- endfor %}
{%- else %}
{%- do slave_instance_information_list.append(slave_publish_dict) %} {%- do slave_instance_information_list.append(slave_publish_dict) %}
{%- endif %}
{%- do frontend_slave_list.append(slave_instance) %} {%- do frontend_slave_list.append(slave_instance) %}
{%- if slave_type != 'redirect' %} {%- if slave_type != 'redirect' %}
{%- do backend_slave_list.append(slave_instance) %} {%- do backend_slave_list.append(slave_instance) %}
......
...@@ -442,12 +442,12 @@ class TestDataMixin(object): ...@@ -442,12 +442,12 @@ class TestDataMixin(object):
generateHashFromFiles([ generateHashFromFiles([
backend_haproxy_wrapper_path] + hash_file_list) backend_haproxy_wrapper_path] + hash_file_list)
for rejected_slave_publish_path in glob.glob(os.path.join( for rejected_slave_publish_path in glob.glob(os.path.join(
self.instance_path, '*', 'etc', 'nginx-rejected-slave.conf')): self.instance_path, '*', 'etc', 'nginx-master-introspection.conf')):
partition_id = rejected_slave_publish_path.split('/')[-3] partition_id = rejected_slave_publish_path.split('/')[-3]
rejected_slave_pem_path = os.path.join( rejected_slave_pem_path = os.path.join(
self.instance_path, partition_id, 'etc', 'rejected-slave.pem') self.instance_path, partition_id, 'etc', 'master-introspection.pem')
data_replacement_dict[ data_replacement_dict[
'{hash-rejected-slave-publish}' '{hash-master-introspection}'
] = generateHashFromFiles( ] = generateHashFromFiles(
[rejected_slave_publish_path, rejected_slave_pem_path] + hash_file_list [rejected_slave_publish_path, rejected_slave_pem_path] + hash_file_list
) )
...@@ -955,6 +955,18 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase): ...@@ -955,6 +955,18 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
with cls.slap.instance_supervisor_rpc as instance_supervisor: with cls.slap.instance_supervisor_rpc as instance_supervisor:
return getattr(instance_supervisor, method)(*args, **kwargs) return getattr(instance_supervisor, method)(*args, **kwargs)
def assertPublishFailsafeErrorPromiseEmptyWithPop(self, parameter_dict):
promise_url = parameter_dict.pop(
'publish-failsafe-error-promise-url')
try:
result = requests.get(promise_url, verify=False)
self.assertEqual("", result.text)
except AssertionError:
raise
except Exception as e:
self.fail(e)
def assertRejectedSlavePromiseEmptyWithPop(self, parameter_dict): def assertRejectedSlavePromiseEmptyWithPop(self, parameter_dict):
rejected_slave_promise_url = parameter_dict.pop( rejected_slave_promise_url = parameter_dict.pop(
'rejected-slave-promise-url') 'rejected-slave-promise-url')
...@@ -1185,11 +1197,10 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase): ...@@ -1185,11 +1197,10 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
return parsed_parameter_dict return parsed_parameter_dict
def getMasterPartitionPath(self): def getMasterPartitionPath(self):
# partition with etc/nginx-rejected-slave.conf
return [ return [
q for q in glob.glob(os.path.join(self.instance_path, '*',)) q for q in glob.glob(os.path.join(self.instance_path, '*',))
if os.path.exists( if os.path.exists(
os.path.join(q, 'etc', 'nginx-rejected-slave.conf'))][0] os.path.join(q, 'etc', 'nginx-master-introspection.conf'))][0]
def parseConnectionParameterDict(self): def parseConnectionParameterDict(self):
return self.parseParameterDict( return self.parseParameterDict(
...@@ -1461,6 +1472,7 @@ class TestMasterRequestDomain(HttpFrontendTestCase, TestDataMixin): ...@@ -1461,6 +1472,7 @@ class TestMasterRequestDomain(HttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('monitor-setup-url', parameter_dict) self.assertKeyWithPop('monitor-setup-url', parameter_dict)
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict) self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict)
self.assertNodeInformationWithPop(parameter_dict) self.assertNodeInformationWithPop(parameter_dict)
...@@ -1493,6 +1505,7 @@ class TestMasterRequest(HttpFrontendTestCase, TestDataMixin): ...@@ -1493,6 +1505,7 @@ class TestMasterRequest(HttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('monitor-setup-url', parameter_dict) self.assertKeyWithPop('monitor-setup-url', parameter_dict)
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict) self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict)
self.assertNodeInformationWithPop(parameter_dict) self.assertNodeInformationWithPop(parameter_dict)
self.assertEqual( self.assertEqual(
...@@ -1601,6 +1614,7 @@ class TestMasterAIKCDisabledAIBCCDisabledRequest( ...@@ -1601,6 +1614,7 @@ class TestMasterAIKCDisabledAIBCCDisabledRequest(
self.assertKeyWithPop('monitor-setup-url', parameter_dict) self.assertKeyWithPop('monitor-setup-url', parameter_dict)
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict) self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict)
self.assertKeyWithPop('kedifa-csr-certificate', parameter_dict) self.assertKeyWithPop('kedifa-csr-certificate', parameter_dict)
self.assertKeyWithPop('kedifa-csr-url', parameter_dict) self.assertKeyWithPop('kedifa-csr-url', parameter_dict)
...@@ -2073,6 +2087,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin, AtsMixin): ...@@ -2073,6 +2087,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin, AtsMixin):
self.assertKeyWithPop('monitor-setup-url', parameter_dict) self.assertKeyWithPop('monitor-setup-url', parameter_dict)
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict) self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict)
self.assertNodeInformationWithPop(parameter_dict) self.assertNodeInformationWithPop(parameter_dict)
...@@ -5169,6 +5184,7 @@ class TestSlaveSlapOSMasterCertificateCompatibility( ...@@ -5169,6 +5184,7 @@ class TestSlaveSlapOSMasterCertificateCompatibility(
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertNodeInformationWithPop(parameter_dict) self.assertNodeInformationWithPop(parameter_dict)
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict) self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict)
expected_parameter_dict = { expected_parameter_dict = {
...@@ -5676,6 +5692,7 @@ class TestSlaveSlapOSMasterCertificateCompatibilityUpdate( ...@@ -5676,6 +5692,7 @@ class TestSlaveSlapOSMasterCertificateCompatibilityUpdate(
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertNodeInformationWithPop(parameter_dict) self.assertNodeInformationWithPop(parameter_dict)
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict) self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict)
expected_parameter_dict = { expected_parameter_dict = {
...@@ -5768,6 +5785,7 @@ class TestSlaveCiphers(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -5768,6 +5785,7 @@ class TestSlaveCiphers(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertNodeInformationWithPop(parameter_dict) self.assertNodeInformationWithPop(parameter_dict)
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict) self.assertRejectedSlavePromiseEmptyWithPop(parameter_dict)
expected_parameter_dict = { expected_parameter_dict = {
...@@ -6035,6 +6053,7 @@ class TestSlaveRejectReportUnsafeDamaged(SlaveHttpFrontendTestCase): ...@@ -6035,6 +6053,7 @@ class TestSlaveRejectReportUnsafeDamaged(SlaveHttpFrontendTestCase):
self.assertBackendHaproxyStatisticUrl(parameter_dict) self.assertBackendHaproxyStatisticUrl(parameter_dict)
self.assertKedifaKeysWithPop(parameter_dict, 'master-') self.assertKedifaKeysWithPop(parameter_dict, 'master-')
self.assertNodeInformationWithPop(parameter_dict) self.assertNodeInformationWithPop(parameter_dict)
self.assertPublishFailsafeErrorPromiseEmptyWithPop(parameter_dict)
self.assertRejectedSlavePromiseWithPop(parameter_dict) self.assertRejectedSlavePromiseWithPop(parameter_dict)
expected_parameter_dict = { expected_parameter_dict = {
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -2,9 +2,9 @@ T-0:bootstrap-monitor EXITED ...@@ -2,9 +2,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -3,13 +3,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -3,13 +3,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -8,13 +8,14 @@ T-0/etc/plugin/caucased-backend-client.py ...@@ -8,13 +8,14 @@ T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-2.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-2.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED ...@@ -4,9 +4,9 @@ T-0:bootstrap-monitor EXITED
T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING T-0:caucased-backend-client-{hash-generic}-on-watch RUNNING
T-0:certificate_authority-{hash-generic}-on-watch RUNNING T-0:certificate_authority-{hash-generic}-on-watch RUNNING
T-0:crond-{hash-generic}-on-watch RUNNING T-0:crond-{hash-generic}-on-watch RUNNING
T-0:master-introspection-server-{hash-master-introspection}-on-watch RUNNING
T-0:monitor-httpd-{hash-generic}-on-watch RUNNING T-0:monitor-httpd-{hash-generic}-on-watch RUNNING
T-0:monitor-httpd-graceful EXITED T-0:monitor-httpd-graceful EXITED
T-0:rejected-slave-publish-{hash-rejected-slave-publish}-on-watch RUNNING
T-1:bootstrap-monitor EXITED T-1:bootstrap-monitor EXITED
T-1:caucase-updater-on-watch RUNNING T-1:caucase-updater-on-watch RUNNING
T-1:caucased-{hash-generic}-on-watch RUNNING T-1:caucased-{hash-generic}-on-watch RUNNING
......
...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py ...@@ -7,13 +7,14 @@ T-0/etc/plugin/buildout-T-0-status.py
T-0/etc/plugin/caucased-backend-client.py T-0/etc/plugin/caucased-backend-client.py
T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py T-0/etc/plugin/check-backend-haproxy-statistic-url-frontend-node-1.py
T-0/etc/plugin/check-free-disk-space.py T-0/etc/plugin/check-free-disk-space.py
T-0/etc/plugin/master-introspection-server-ip-port-listening.py
T-0/etc/plugin/master-key-download-url-ready-promise.py T-0/etc/plugin/master-key-download-url-ready-promise.py
T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py T-0/etc/plugin/master-key-generate-auth-url-ready-promise.py
T-0/etc/plugin/master-key-upload-url-ready-promise.py T-0/etc/plugin/master-key-upload-url-ready-promise.py
T-0/etc/plugin/monitor-bootstrap-status.py T-0/etc/plugin/monitor-bootstrap-status.py
T-0/etc/plugin/monitor-http-frontend.py T-0/etc/plugin/monitor-http-frontend.py
T-0/etc/plugin/monitor-httpd-listening-on-tcp.py T-0/etc/plugin/monitor-httpd-listening-on-tcp.py
T-0/etc/plugin/rejected-slave-publish-ip-port-listening.py T-0/etc/plugin/publish-failsafe-error.py
T-0/etc/plugin/rejected-slave.py T-0/etc/plugin/rejected-slave.py
T-1/etc/plugin/__init__.py T-1/etc/plugin/__init__.py
T-1/etc/plugin/buildout-T-1-status.py T-1/etc/plugin/buildout-T-1-status.py
......
...@@ -49,7 +49,6 @@ rpy2 = 2.4.0 ...@@ -49,7 +49,6 @@ rpy2 = 2.4.0
pydot = 1.0.28 pydot = 1.0.28
xlrd = 0.9.3 xlrd = 0.9.3
xlwt = 0.7.5 xlwt = 0.7.5
scipy = 0.13.3
simpy = 3.0.5 simpy = 3.0.5
zope.dottedname = 4.1.0 zope.dottedname = 4.1.0
tablib = 0.10.0 tablib = 0.10.0
......
...@@ -46,7 +46,7 @@ from slapos.testing.testcase import ( ...@@ -46,7 +46,7 @@ from slapos.testing.testcase import (
makeModuleSetUpAndTestCaseClass, makeModuleSetUpAndTestCaseClass,
) )
old_software_release_url = 'https://lab.nexedi.com/nexedi/slapos/raw/1.0.167.6/software/erp5/software.cfg' old_software_release_url = 'https://lab.nexedi.com/nexedi/slapos/raw/1.0.167.7/software/erp5/software.cfg'
new_software_release_url = os.path.abspath( new_software_release_url = os.path.abspath(
os.path.join(os.path.dirname(__file__), '..', 'software.cfg')) os.path.join(os.path.dirname(__file__), '..', 'software.cfg'))
......
...@@ -50,6 +50,8 @@ revision = v1.17.3-0-g24a552b90b ...@@ -50,6 +50,8 @@ revision = v1.17.3-0-g24a552b90b
[gowork] [gowork]
# Fails with current default golang1.18
golang = ${golang1.17:location}
install = install =
${go_github.com_grafana_loki:location}:./cmd/loki ${go_github.com_grafana_loki:location}:./cmd/loki
${go_github.com_grafana_loki:location}:./cmd/promtail ${go_github.com_grafana_loki:location}:./cmd/promtail
......
...@@ -51,7 +51,6 @@ async-generator = 1.10 ...@@ -51,7 +51,6 @@ async-generator = 1.10
backports-abc = 0.5 backports-abc = 0.5
backports.shutil-get-terminal-size = 1.0.0 backports.shutil-get-terminal-size = 1.0.0
bleach = 3.2.1 bleach = 3.2.1
cycler = 0.10.0
defusedxml = 0.6.0 defusedxml = 0.6.0
entrypoints = 0.3 entrypoints = 0.3
ipykernel = 5.3.4:whl ipykernel = 5.3.4:whl
...@@ -69,8 +68,6 @@ nest-asyncio = 1.4.3 ...@@ -69,8 +68,6 @@ nest-asyncio = 1.4.3
nbclient = 0.5.1 nbclient = 0.5.1
nbformat = 5.0.8 nbformat = 5.0.8
notebook = 6.1.5 notebook = 6.1.5
numpy = 1.14.6
pandas = 0.25.3
pandocfilters = 1.4.3 pandocfilters = 1.4.3
prompt-toolkit = 1.0.13 prompt-toolkit = 1.0.13
ptyprocess = 0.5.1 ptyprocess = 0.5.1
...@@ -95,7 +92,6 @@ pickleshare = 0.7.4 ...@@ -95,7 +92,6 @@ pickleshare = 0.7.4
prometheus-client = 0.9.0 prometheus-client = 0.9.0
scandir = 1.5 scandir = 1.5
pytz = 2020.4 pytz = 2020.4
scipy = 1.0.1
singledispatch = 3.4.0.3 singledispatch = 3.4.0.3
wcwidth = 0.1.7 wcwidth = 0.1.7
jupyter = 1.0.0 jupyter = 1.0.0
......
Tests for Mosquitto software release
from setuptools import setup, find_packages
version = "0.0.1.dev0"
name = "slapos.test.mosquitto"
with open("README.md") as f:
long_description = f.read()
setup(
name=name,
version=version,
description="Test for SlapOS Mosquitto",
long_description=long_description,
long_description_content_type="text/markdown",
maintainer="Nexedi",
maintainer_email="info@nexedi.com",
url="https://lab.nexedi.com/nexedi/slapos",
packages=find_packages(),
install_requires=[
"slapos.core",
"slapos.libnetworkcache",
"erp5.util",
"requests",
"paho-mqtt",
],
zip_safe=True,
test_suite="test",
)
import os
import time
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
from slapos.testing.testcase import makeModuleSetUpAndTestCaseClass
setUpModule, SlapOSInstanceTestCase = makeModuleSetUpAndTestCaseClass(
os.path.abspath(
os.path.join(os.path.dirname(__file__), '..', 'software.cfg')))
class TestMosquitto(SlapOSInstanceTestCase):
"""
Test if mosquitto service can publish and subscribe
to specific topics with custom authentication ...
"""
def on_connect(self, client, userdata, flags, rc):
client.subscribe("test")
self.code = rc
def on_message(self, client, userdata, msg):
self.topic = msg.topic
self.payload = str(msg.payload.decode())
def test_topic_ipv4(self):
host = self.computer_partition.getConnectionParameterDict()["ipv4"]
username = self.computer_partition.getConnectionParameterDict()["username"]
password = self.computer_partition.getConnectionParameterDict()["password"]
topic = "test"
payload = "Hello, World!"
client = mqtt.Client()
client.on_connect = self.on_connect
client.on_message = self.on_message
client.username_pw_set(username=f"{username}", password=f"{password}")
client.connect(f"{host}", 1883, 10)
client.loop_start()
publish.single(
topic=topic,
payload=payload,
hostname=f"{host}",
auth={ "username": f"{username}", "password": f"{password}" }
)
time.sleep(10)
client.loop_stop()
self.assertEqual(self.code, 0)
self.assertEqual(self.topic, topic)
def test_payload_ipv4(self):
host = self.computer_partition.getConnectionParameterDict()["ipv4"]
username = self.computer_partition.getConnectionParameterDict()["username"]
password = self.computer_partition.getConnectionParameterDict()["password"]
topic = "test"
payload = "Hello, World!"
client = mqtt.Client()
client.on_connect = self.on_connect
client.on_message = self.on_message
client.username_pw_set(username=f"{username}", password=f"{password}")
client.connect(f"{host}", 1883, 10)
client.loop_start()
publish.single(
topic=topic,
payload=payload,
hostname=f"{host}",
auth={ "username": f"{username}", "password": f"{password}" }
)
time.sleep(10)
client.loop_stop()
self.assertEqual(self.code, 0)
self.assertEqual(self.payload, payload)
def test_topic_ipv6(self):
host = self.computer_partition.getConnectionParameterDict()["ipv6"]
username = self.computer_partition.getConnectionParameterDict()["username"]
password = self.computer_partition.getConnectionParameterDict()["password"]
topic = "test"
payload = "Hello, World!"
client = mqtt.Client()
client.on_connect = self.on_connect
client.on_message = self.on_message
client.username_pw_set(username=f"{username}", password=f"{password}")
client.connect(f"{host}", 1883, 10)
client.loop_start()
publish.single(
topic=topic,
payload=payload,
hostname=f"{host}",
auth={ "username": f"{username}", "password": f"{password}" }
)
time.sleep(10)
client.loop_stop()
self.assertEqual(self.code, 0)
self.assertEqual(self.topic, topic)
def test_payload_ipv6(self):
host = self.computer_partition.getConnectionParameterDict()["ipv6"]
username = self.computer_partition.getConnectionParameterDict()["username"]
password = self.computer_partition.getConnectionParameterDict()["password"]
topic = "test"
payload = "Hello, World!"
client = mqtt.Client()
client.on_connect = self.on_connect
client.on_message = self.on_message
client.username_pw_set(username=f"{username}", password=f"{password}")
client.connect(f"{host}", 1883, 10)
client.loop_start()
publish.single(
topic=topic,
payload=payload,
hostname=f"{host}",
auth={ "username": f"{username}", "password": f"{password}" }
)
time.sleep(10)
client.loop_stop()
self.assertEqual(self.code, 0)
self.assertEqual(self.payload, payload)
...@@ -24,23 +24,23 @@ md5sum = 6e0a052bd0ca08cc0c7b4880d3deffcc ...@@ -24,23 +24,23 @@ md5sum = 6e0a052bd0ca08cc0c7b4880d3deffcc
[template-lte-enb-epc] [template-lte-enb-epc]
_update_hash_filename_ = instance-enb-epc.jinja2.cfg _update_hash_filename_ = instance-enb-epc.jinja2.cfg
md5sum = da99546afedb6f443bfd767ab054763d md5sum = 833667743c693b8d5f78a2527b275a9e
[template-lte-enb] [template-lte-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg _update_hash_filename_ = instance-enb.jinja2.cfg
md5sum = 689a1ace1f197663ff7c27c31862b275 md5sum = ec127e2da004e52a516a7f499d7c7652
[template-lte-gnb-epc] [template-lte-gnb-epc]
_update_hash_filename_ = instance-gnb-epc.jinja2.cfg _update_hash_filename_ = instance-gnb-epc.jinja2.cfg
md5sum = 5455d0685f3bad94dbbdeaa772a7647f md5sum = 1f0b18cb6d70466d002b378bb931e7da
[template-lte-epc] [template-lte-epc]
_update_hash_filename_ = instance-epc.jinja2.cfg _update_hash_filename_ = instance-epc.jinja2.cfg
md5sum = 7863ada6fe3062b7f62e61cb973fa0fc md5sum = 99c05a34678adb5a70aa64ecf2ee4e35
[template-lte-gnb] [template-lte-gnb]
_update_hash_filename_ = instance-gnb.jinja2.cfg _update_hash_filename_ = instance-gnb.jinja2.cfg
md5sum = 82674b93d0d7edb09fd85a8062a387bb md5sum = 58ee1663f86db0bbc4ccaf27831d2f0c
[template-lte-mme] [template-lte-mme]
_update_hash_filename_ = instance-mme.jinja2.cfg _update_hash_filename_ = instance-mme.jinja2.cfg
...@@ -48,11 +48,11 @@ md5sum = 728f4d3ae248710c23e4b73eea4d628e ...@@ -48,11 +48,11 @@ md5sum = 728f4d3ae248710c23e4b73eea4d628e
[template-lte-ue-lte] [template-lte-ue-lte]
_update_hash_filename_ = instance-ue-lte.jinja2.cfg _update_hash_filename_ = instance-ue-lte.jinja2.cfg
md5sum = 8f2f6ff6f242546b2fef3bd559ba887d md5sum = 8888be35fa6e6f3e69d9373002a0e06e
[template-lte-ue-nr] [template-lte-ue-nr]
_update_hash_filename_ = instance-ue-nr.jinja2.cfg _update_hash_filename_ = instance-ue-nr.jinja2.cfg
md5sum = a8388fe893ad251bba929ef9047935a6 md5sum = 94ca609dc564d7ed95db09e1fa029208
[ue_db.jinja2.cfg] [ue_db.jinja2.cfg]
filename = config/ue_db.jinja2.cfg filename = config/ue_db.jinja2.cfg
...@@ -108,7 +108,7 @@ md5sum = 5bf57a9074ea5b054d999789cbbe2c87 ...@@ -108,7 +108,7 @@ md5sum = 5bf57a9074ea5b054d999789cbbe2c87
[cpu-temperature-promise] [cpu-temperature-promise]
_update_hash_filename_ = promise/check_cpu_temperature.py _update_hash_filename_ = promise/check_cpu_temperature.py
md5sum = 979a5a3a1eb9d0b081fa014baeef706f md5sum = 6812310b65c2d95815afc2b034a5f90f
[interface-up-promise] [interface-up-promise]
_update_hash_filename_ = promise/check_interface_up.py _update_hash_filename_ = promise/check_interface_up.py
......
...@@ -89,7 +89,9 @@ lte-enb-request = ${lte-enb-request:connection-monitor-base-url} ...@@ -89,7 +89,9 @@ lte-enb-request = ${lte-enb-request:connection-monitor-base-url}
[cpu-temperature-promise] [cpu-temperature-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs =
slapos.core
python-dateutil
file = {{ cpu_temperature_promise }} file = {{ cpu_temperature_promise }}
output = ${directory:plugins}/check-cpu-temperature.py output = ${directory:plugins}/check-cpu-temperature.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
......
...@@ -204,7 +204,9 @@ config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} ...@@ -204,7 +204,9 @@ config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }}
[cpu-temperature-promise] [cpu-temperature-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs =
slapos.core
python-dateutil
file = {{ cpu_temperature_promise }} file = {{ cpu_temperature_promise }}
output = ${directory:plugins}/check-cpu-temperature.py output = ${directory:plugins}/check-cpu-temperature.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
......
...@@ -78,7 +78,9 @@ lte-mme-request = ${lte-mme-request:connection-monitor-base-url} ...@@ -78,7 +78,9 @@ lte-mme-request = ${lte-mme-request:connection-monitor-base-url}
[cpu-temperature-promise] [cpu-temperature-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs =
slapos.core
python-dateutil
file = {{ cpu_temperature_promise }} file = {{ cpu_temperature_promise }}
output = ${directory:plugins}/check-cpu-temperature.py output = ${directory:plugins}/check-cpu-temperature.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
......
...@@ -89,7 +89,9 @@ lte-gnb-request = ${lte-gnb-request:connection-monitor-base-url} ...@@ -89,7 +89,9 @@ lte-gnb-request = ${lte-gnb-request:connection-monitor-base-url}
[cpu-temperature-promise] [cpu-temperature-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs =
slapos.core
python-dateutil
file = {{ cpu_temperature_promise }} file = {{ cpu_temperature_promise }}
output = ${directory:plugins}/check-cpu-temperature.py output = ${directory:plugins}/check-cpu-temperature.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
......
...@@ -204,7 +204,9 @@ config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} ...@@ -204,7 +204,9 @@ config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }}
[cpu-temperature-promise] [cpu-temperature-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs =
slapos.core
python-dateutil
file = {{ cpu_temperature_promise }} file = {{ cpu_temperature_promise }}
output = ${directory:plugins}/check-cpu-temperature.py output = ${directory:plugins}/check-cpu-temperature.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
......
...@@ -132,7 +132,9 @@ config-sdr = {{ sdr }} ...@@ -132,7 +132,9 @@ config-sdr = {{ sdr }}
[cpu-temperature-promise] [cpu-temperature-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs =
slapos.core
python-dateutil
file = {{ cpu_temperature_promise }} file = {{ cpu_temperature_promise }}
output = ${directory:plugins}/check-cpu-temperature.py output = ${directory:plugins}/check-cpu-temperature.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
......
...@@ -135,7 +135,9 @@ config-sdr = {{ sdr }} ...@@ -135,7 +135,9 @@ config-sdr = {{ sdr }}
[cpu-temperature-promise] [cpu-temperature-promise]
recipe = slapos.cookbook:promise.plugin recipe = slapos.cookbook:promise.plugin
eggs = slapos.core eggs =
slapos.core
python-dateutil
file = {{ cpu_temperature_promise }} file = {{ cpu_temperature_promise }}
output = ${directory:plugins}/check-cpu-temperature.py output = ${directory:plugins}/check-cpu-temperature.py
config-testing = {{ slapparameter_dict.get("testing", False) }} config-testing = {{ slapparameter_dict.get("testing", False) }}
......
...@@ -79,7 +79,7 @@ class RunPromise(GenericPromise): ...@@ -79,7 +79,7 @@ class RunPromise(GenericPromise):
data = psutil.sensors_temperatures() data = psutil.sensors_temperatures()
cpu_temp = data['coretemp'][0][1] cpu_temp = data['coretemp'][0][1]
l = get_data_interval(self.__log_file, max_avg_temp_duration) l = get_data_interval(self.__log_file, max_avg_temp_duration) or [{'cpu_temperature': cpu_temp}]
avg_temp = sum(map(lambda x: x['cpu_temperature'], l)) / len(l) avg_temp = sum(map(lambda x: x['cpu_temperature'], l)) / len(l)
data = json.dumps({'cpu_temperature': cpu_temp, 'avg_cpu_temperature': avg_temp}) data = json.dumps({'cpu_temperature': cpu_temp, 'avg_cpu_temperature': avg_temp})
......
...@@ -117,7 +117,6 @@ filename = ue-nr.jinja2.cfg ...@@ -117,7 +117,6 @@ filename = ue-nr.jinja2.cfg
recipe = zc.recipe.egg recipe = zc.recipe.egg
eggs = eggs =
websocket-client websocket-client
python-dateutil
interpreter = pythonwitheggs interpreter = pythonwitheggs
[versions] [versions]
......
...@@ -192,7 +192,7 @@ class TestBan(ProFTPdTestCase): ...@@ -192,7 +192,7 @@ class TestBan(ProFTPdTestCase):
self._getConnection(password='wrong') self._getConnection(password='wrong')
# after that, even with a valid password we cannot connect # after that, even with a valid password we cannot connect
with self.assertRaisesRegex(SSHException, 'Connection reset by peer'): with self.assertRaises(Exception):
self._getConnection() self._getConnection()
# ban event is logged # ban event is logged
......
...@@ -161,7 +161,6 @@ setup = ${slapos-repository:location}/software/hugo/test/ ...@@ -161,7 +161,6 @@ setup = ${slapos-repository:location}/software/hugo/test/
egg = slapos.test.matomo egg = slapos.test.matomo
setup = ${slapos-repository:location}/software/matomo/test/ setup = ${slapos-repository:location}/software/matomo/test/
[slapos.test.jupyter-setup] [slapos.test.jupyter-setup]
<= setup-develop-egg <= setup-develop-egg
egg = slapos.test.jupyter egg = slapos.test.jupyter
...@@ -242,6 +241,11 @@ setup = ${slapos-repository:location}/software/erp5testnode/test/ ...@@ -242,6 +241,11 @@ setup = ${slapos-repository:location}/software/erp5testnode/test/
egg = slapos.test.beremiz_ide egg = slapos.test.beremiz_ide
setup = ${slapos-repository:location}/software/beremiz-ide/test/ setup = ${slapos-repository:location}/software/beremiz-ide/test/
[slapos.test.mosquitto-setup]
<= setup-develop-egg
egg = slapos.test.mosquitto
setup = ${slapos-repository:location}/software/mosquitto/test/
[slapos.test.peertube-setup] [slapos.test.peertube-setup]
<= setup-develop-egg <= setup-develop-egg
egg = slapos.test.peertube egg = slapos.test.peertube
...@@ -318,6 +322,7 @@ eggs += ...@@ -318,6 +322,7 @@ eggs +=
${slapos.test.matomo-setup:egg} ${slapos.test.matomo-setup:egg}
${slapos.test.metabase-setup:egg} ${slapos.test.metabase-setup:egg}
${slapos.test.monitor-setup:egg} ${slapos.test.monitor-setup:egg}
${slapos.test.mosquitto-setup:egg}
${slapos.test.nextcloud-setup:egg} ${slapos.test.nextcloud-setup:egg}
${slapos.test.nginx-push-stream-setup:egg} ${slapos.test.nginx-push-stream-setup:egg}
${slapos.test.ors-amarisoft-setup:egg} ${slapos.test.ors-amarisoft-setup:egg}
...@@ -382,7 +387,6 @@ context = ...@@ -382,7 +387,6 @@ context =
tests = tests =
json-schemas ${slapos.cookbook-setup:setup} json-schemas ${slapos.cookbook-setup:setup}
backupserver ${slapos.test.backupserver-setup:setup} backupserver ${slapos.test.backupserver-setup:setup}
beremiz-ide ${slapos.test.beremiz-ide-setup:setup} beremiz-ide ${slapos.test.beremiz-ide-setup:setup}
caddy-frontend ${slapos.test.caddy-frontend-setup:setup} caddy-frontend ${slapos.test.caddy-frontend-setup:setup}
...@@ -409,6 +413,7 @@ tests = ...@@ -409,6 +413,7 @@ tests =
matomo ${slapos.test.matomo-setup:setup} matomo ${slapos.test.matomo-setup:setup}
metabase ${slapos.test.metabase-setup:setup} metabase ${slapos.test.metabase-setup:setup}
monitor ${slapos.test.monitor-setup:setup} monitor ${slapos.test.monitor-setup:setup}
mosquitto ${slapos.test.mosquitto-setup:setup}
nextcloud ${slapos.test.nextcloud-setup:setup} nextcloud ${slapos.test.nextcloud-setup:setup}
nginx-push-stream ${slapos.test.nginx-push-stream-setup:setup} nginx-push-stream ${slapos.test.nginx-push-stream-setup:setup}
ors-amarisoft ${slapos.test.ors-amarisoft-setup:setup} ors-amarisoft ${slapos.test.ors-amarisoft-setup:setup}
...@@ -444,6 +449,7 @@ mysqlclient = 2.1.1 ...@@ -444,6 +449,7 @@ mysqlclient = 2.1.1
pexpect = 4.8.0 pexpect = 4.8.0
ptyprocess = 0.6.0 ptyprocess = 0.6.0
psycopg2 = 2.8.6 psycopg2 = 2.8.6
paho-mqtt = 1.5.0
# Patched eggs # Patched eggs
PyPDF2 = 1.26.0+SlapOSPatched001 PyPDF2 = 1.26.0+SlapOSPatched001
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
[instance-theia] [instance-theia]
_update_hash_filename_ = instance-theia.cfg.jinja.in _update_hash_filename_ = instance-theia.cfg.jinja.in
md5sum = 3d00572afdd311ba8b4fc8b6ad0ac4b6 md5sum = bd79a9e6306b321414b9f83524308e5f
[instance] [instance]
_update_hash_filename_ = instance.cfg.in _update_hash_filename_ = instance.cfg.in
......
...@@ -360,7 +360,7 @@ output = $${directory:bin}/$${:_buildout_section_name_} ...@@ -360,7 +360,7 @@ output = $${directory:bin}/$${:_buildout_section_name_}
inline = inline =
#!/bin/sh #!/bin/sh
export HOME=$${directory:home} export HOME=$${directory:home}
export PATH=${java-jdk:location}/bin:${cli-utilities:PATH}:$HOME/.cargo/bin:$PATH export PATH=${cli-utilities:PATH}:$HOME/.cargo/bin:$PATH
export IPV6_SLAPRUNNER={{ ipv6_random }} export IPV6_SLAPRUNNER={{ ipv6_random }}
# Theia Backend # Theia Backend
......
...@@ -865,3 +865,7 @@ strict-rfc3339 = 0.7 ...@@ -865,3 +865,7 @@ strict-rfc3339 = 0.7
webcolors = 1.10 webcolors = 1.10
rfc3987 = 1.3.8 rfc3987 = 1.3.8
jsonpointer = 2.2 jsonpointer = 2.2
pandas = 0.19.2
numpy = 1.13.1
scipy = 0.19.0
ZConfig = 2.9.3
...@@ -70,7 +70,7 @@ md5sum = b95084ae9eed95a68eada45e28ef0c04 ...@@ -70,7 +70,7 @@ md5sum = b95084ae9eed95a68eada45e28ef0c04
[template] [template]
filename = instance.cfg.in filename = instance.cfg.in
md5sum = a75e8cf8fd664de164a88a680ddd2c9e md5sum = 74979d6743cdc7ce3d2f17680115458d
[template-erp5] [template-erp5]
filename = instance-erp5.cfg.in filename = instance-erp5.cfg.in
...@@ -102,4 +102,4 @@ md5sum = 5cf0316fdd17a940031e4083bbededd8 ...@@ -102,4 +102,4 @@ md5sum = 5cf0316fdd17a940031e4083bbededd8
[instance-wcfs.cfg.in] [instance-wcfs.cfg.in]
filename = instance-wcfs.cfg.in filename = instance-wcfs.cfg.in
md5sum = eb4be2669a9a56187cc4366272e11d18 md5sum = 0f921643a68e3a8de5529d653710ddca
{# instance that runs WCFS service associated with ZODB storage #} {# instance that runs WCFS service associated with ZODB storage #}
{% from "instance_zodb_base" import zodb_dict with context %} {% from "instance_zodb_base" import zodb_dict with context %}
{# q(text) returns urllib.quote_plus(text) #}
{% macro q(text) %}{{ urllib_parse.quote_plus(text) }}{% endmacro %}
{# build zurl to connect to configured ZODB #} {# build zurl to connect to configured ZODB #}
{% if len(zodb_dict) != 1 -%} {% if len(zodb_dict) != 1 -%}
...@@ -12,15 +14,18 @@ ...@@ -12,15 +14,18 @@
{% if zodb['type'] == 'zeo' -%} {% if zodb['type'] == 'zeo' -%}
{% set zurl = ('zeo://%s?storage=%s' % (z['server'], z['storage'])) -%} {% set zurl = ('zeo://%s?storage=%s' % (z['server'], z['storage'])) -%}
{% elif zodb['type'] == 'neo' -%} {% elif zodb['type'] == 'neo' -%}
{% set zurl = ('neo://%s@%s' % (z.pop('name'), z.pop('master_nodes'))) -%} {# neo(s)://[credentials@]master1,master2,...,masterN/name?options #}
{% set argv = [] -%} {# (see https://lab.nexedi.com/kirr/neo/blob/3e13fa06/go/neo/client.go#L417) #}
{% set i = 0 -%} {# If 'ca' in storage-dict, ssl is true. #}
{% for k,v in z|dictsort -%} {# (see https://lab.nexedi.com/nexedi/slapos/blob/397726e1/stack/erp5/instance-zodb-base.cfg.in#L17-21) #}
{% do argv.append('%s=%s' % (k,v)) -%} {% if "ca" in z -%}
{% endfor -%} {# ca=ca.crt;cert=my.crt;key=my.key (see https://lab.nexedi.com/kirr/neo/blob/3e13fa06/go/neo/client.go#L428) #}
{% if len(argv) > 0 -%} {% set zurl = 'neos://ca=%s;cert=%s;key=%s@' % (q(z.pop("ca")), q(z.pop("cert")), q(z.pop("key"))) -%}
{% set zurl = zurl + '&' + '?'.join(argv) -%} {% else -%}
{% set zurl = 'neo://' -%}
{% endif -%} {% endif -%}
{% set zurl = ('%s%s/%s' % (zurl, z.pop('master_nodes'), z.pop('name'))) -%}
{% set zurl = zurl + '?' + (z | dictsort | urlencode) -%}
{% else -%} {% else -%}
{% do assert(False, ("unsupported ZODB type", zodb)) -%} {% do assert(False, ("unsupported ZODB type", zodb)) -%}
{% endif -%} {% endif -%}
......
...@@ -206,6 +206,7 @@ url = {{ instance_wcfs_cfg_in }} ...@@ -206,6 +206,7 @@ url = {{ instance_wcfs_cfg_in }}
filename = instance_wcfs.cfg filename = instance_wcfs.cfg
extra-context = extra-context =
section parameter_dict dynamic-template-zope-parameters section parameter_dict dynamic-template-zope-parameters
import urllib_parse six.moves.urllib.parse
import-list = import-list =
file instance_zodb_base context:template-zodb-base file instance_zodb_base context:template-zodb-base
......
...@@ -227,7 +227,7 @@ scandir = 1.10.0 ...@@ -227,7 +227,7 @@ scandir = 1.10.0
setproctitle = 1.1.10 setproctitle = 1.1.10
setuptools-dso = 1.7 setuptools-dso = 1.7
six = 1.16.0 six = 1.16.0
slapos.cookbook = 1.0.291 slapos.cookbook = 1.0.297
slapos.core = 1.8.5 slapos.core = 1.8.5
slapos.extension.shared = 1.0 slapos.extension.shared = 1.0
slapos.libnetworkcache = 0.25 slapos.libnetworkcache = 0.25
...@@ -250,7 +250,7 @@ Werkzeug = 2.0.2 ...@@ -250,7 +250,7 @@ Werkzeug = 2.0.2
wheel = 0.35.1:whl wheel = 0.35.1:whl
xml-marshaller = 1.0.2 xml-marshaller = 1.0.2
zc.lockfile = 1.4 zc.lockfile = 1.4
ZConfig = 2.9.3 ZConfig = 3.6.1
zdaemon = 4.2.0 zdaemon = 4.2.0
zipp = 1.2.0:whl zipp = 1.2.0:whl
zodburi = 2.5.0 zodburi = 2.5.0
......
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