Commit 74018d53 authored by Alain Takoudjou's avatar Alain Takoudjou

Update Release Candidate

parents e156a5b3 297a0dd9
......@@ -184,6 +184,7 @@ Listen {{ ip }}:{{ port }}
Listen {{ ip }}:{{ port }}
<VirtualHost {{ ip }}:{{ port }}>
SSLEngine on
Timeout 3600
{% if enable_authentication and parameter_dict['ca-cert'] and parameter_dict['crl'] -%}
SSLVerifyClient require
SSLCACertificateFile {{ parameter_dict['ca-cert'] }}
......
......@@ -14,5 +14,5 @@
# not need these here).
[template-apache-backend-conf]
filename = apache-backend.conf.in
md5sum = 3b430ca726a2707e1b6a2ae41a6c8e21
md5sum = c969256e5a9e85a295baf3a695a7c21d
[buildout]
parts =
opensp
extends =
../perl/buildout.cfg
[opensp]
recipe = slapos.recipe.cmmi
shared = true
url = http://prdownloads.sourceforge.net/openjade/OpenSP-1.5.2.tar.gz
md5sum = 670b223c5d12cee40c9137be86b6c39b
configure-options =
--disable-static
--disable-doc-build
environment =
PATH=${perl:location}/bin:%(PATH)s
[buildout]
extends =
../perl/buildout.cfg
parts =
perl-CGI
[perl-CGI]
<= perl-CPAN-package
module = CGI/CGI
version = 4.38
md5sum = 0aeb8563d533e7f83724ed068b5bfc37
[buildout]
extends =
../perl/buildout.cfg
parts =
perl-Class-Accessor
[perl-Class-Accessor]
<= perl-CPAN-package
module = Class/Class-Accessor
version = 0.34
md5sum = 0d9640d237a13276145f7e44b4855b89
[buildout]
extends =
../perl/buildout.cfg
parts =
perl-Config-General
[perl-Config-General]
<= perl-CPAN-package
module = Config/Config-General
version = 2.56
md5sum = 8cf9dd044d016f27b4dc26077606736d
--- Encode-HanExtra-0.23/Makefile.PL.orig 2017-04-14 13:22:30.511213646 +0200
+++ Encode-HanExtra-0.23/Makefile.PL 2017-04-14 13:22:41.935282773 +0200
@@ -179,7 +179,7 @@
my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : '';
my $ucopts = '-"Q"';
$str .=
- qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
+ qq{\n\t$enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
open(FILELIST, ">$table.fnm")
|| die "Could not open $table.fnm: $!";
foreach my $file (@{ $tables{$table} }) {
[buildout]
extends =
../patch/buildout.cfg
../perl/buildout.cfg
parts =
perl-Encode-HanExtra
[perl-Encode-HanExtra]
<= perl-CPAN-package
module = Encode/Encode-HanExtra
version = 0.23
md5sum = e1d3bc32c1c8ee304235a06fbcd5d5a4
install-inc = .
patch-options = -p1
patches =
${:_profile_base_location_}/Encode-HanExtra-0.23_use_shebang.patch#4ac804013a68a3e6b7c3bc4115d25a5e
environment =
PATH=${patch:location}/bin:%(PATH)s
[buildout]
extends =
../perl/buildout.cfg
../perl-HTTP-Message/buildout.cfg
parts =
perl-HTML-Encoding
[perl-HTML-Encoding]
<= perl-CPAN-package
module = HTML/HTML-Encoding
version = 0.61
md5sum = bce9f00f04ad055feaa4d6511b30e421
inc = ${perl-HTTP-Message:location}
[buildout]
extends =
../perl/buildout.cfg
parts =
perl-HTML-Template
[perl-HTML-Template]
<= perl-CPAN-package
module = HTML/HTML-Template
version = 2.95
md5sum = 6f08e9631af52e6a5f6e4648b89265fe
[buildout]
extends =
../perl/buildout.cfg
parts =
perl-JSON
[perl-JSON]
<= perl-CPAN-package
module = JSON/JSON
version = 2.90
md5sum = e1512169a623e790a3f69b599cc1d3b9
[buildout]
extends =
../perl/buildout.cfg
parts =
perl-Net-IP
[perl-Net-IP]
<= perl-CPAN-package
module = Net/Net-IP
version = 1.26
md5sum = 3a98e3ac45d69ea38a63a7e678bd716d
[buildout]
extends =
../opensp/buildout.cfg
../perl/buildout.cfg
../perl-Class-Accessor/buildout.cfg
parts =
perl-SGML-Parser-OpenSP
[perl-SGML-Parser-OpenSP]
<= perl-CPAN-package
module = SGML/SGML-Parser-OpenSP
version = 0.994
md5sum = b1ee0244e9daa4d37f28cf32c4753691
inc = ${perl-Class-Accessor:site_perl}
extra-configure-args = \
INC=-I${opensp:location}/include \
LIBS="-lstdc++ -L${opensp:location}/lib -losp"
make-options =
OTHERLDFLAGS="-Wl,-rpath=${opensp:location}/lib"
[buildout]
parts = pure-ftpd
[pure-ftpd]
recipe = slapos.recipe.cmmi
url = https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.46.tar.bz2
md5sum = efce5529c1f0a39dafdd532c619503f1
# See https://download.pureftpd.org/pub/pure-ftpd/doc/README for more configurations
configure-options =
--with-uploadscript
#environment =
# Probably it is missing dependencies to be set here.
[buildout]
extends =
../perl/buildout.cfg
../perl-CGI/buildout.cfg
../perl-Config-General/buildout.cfg
../perl-Encode-HanExtra/buildout.cfg
../perl-HTML-Encoding/buildout.cfg
../perl-HTML-Parser/buildout.cfg
../perl-HTML-Template/buildout.cfg
../perl-JSON/buildout.cfg
../perl-Net-IP/buildout.cfg
../perl-SGML-Parser-OpenSP/buildout.cfg
../perl-URI/buildout.cfg
../perl-XML-LibXML/buildout.cfg
../perl-libwww-perl/buildout.cfg
parts = w3-validator
versions = versions
[versions]
erp5.recipe.w3validator = 1.0.2
[w3-validator-perl]
<= perl-wrapper
inc =
${perl-CGI:site_perl}:\
${perl-Config-General:site_perl}:\
${perl-Encode-HanExtra:site_perl}:\
${perl-HTML-Encoding:site_perl}:\
${perl-HTML-Parser:site_perl}:\
${perl-HTML-Template:site_perl}:\
${perl-JSON:site_perl}:\
${perl-Net-IP:site_perl}:\
${perl-SGML-Parser-OpenSP:site_perl}:\
${perl-URI:site_perl}:\
${perl-XML-LibXML:site_perl}:\
${perl-libwww-perl:site_perl}
[w3-validator]
recipe = erp5.recipe.w3validator
perl-path = ${w3-validator-perl:perl-bin}
# validator-1_3-release in https://dvcs.w3.org/hg/markup-validator/tags
validator-url = https://dvcs.w3.org/hg/markup-validator/archive/6c6c7c1f69c5.tar.bz2
dtd-url =
......@@ -89,18 +89,8 @@ class Recipe(object):
One of the IPv4 addresses.
ipv6-random
One of the IPv6 addresses.
tap
Set of TAP interfaces.
tap-network-information-dict
Dict of set of all TAP network information
tap-ipv4
ipv4 allowed for this TAP
tap-gateway
ipv4 of gateway interface of this TAP
tap-netmask
ipv4 netmask address of this TAP
tap-network
ipv4 network address of this TAP
global_ipv4_network
The global IPv4 network
configuration
Dict of all parameters.
storage-dict
......@@ -112,6 +102,8 @@ class Recipe(object):
anyway, and are available through "configuration" output key.
instance-state
The instance state.
Also note that all information from resource file will be appended
"""
# XXX: used to detect if a configuration key is a valid section key. This
......@@ -215,20 +207,6 @@ class Recipe(object):
options['ipv4-random'] = list(ipv4_set)[0].encode('UTF-8')
if ipv6_set:
options['ipv6-random'] = list(ipv6_set)[0].encode('UTF-8')
if route_ipv4_set:
options['tap-ipv4'] = list(route_ipv4_set)[0].encode('UTF-8')
options['tap-network-information-dict'] = dict(ipv4=route_ipv4_set,
netmask=route_mask_set,
gateway=route_gw_set,
network=route_network_set)
else:
options['tap-network-information-dict'] = {}
if route_gw_set:
options['tap-gateway'] = list(route_gw_set)[0].encode('UTF-8')
if route_mask_set:
options['tap-netmask'] = list(route_mask_set)[0].encode('UTF-8')
if route_network_set:
options['tap-network'] = list(route_network_set)[0].encode('UTF-8')
storage_home = options.get('storage-home')
storage_dict = {}
......@@ -245,8 +223,6 @@ class Recipe(object):
storage_dict[filename] = storage_link
options['storage-dict'] = storage_dict
options['tap'] = tap_set
# The external information transfered from Slap Master has been processed
# so we extend with information gathered from partition resource file
if hasattr(slapformat.Partition, "resource_file"):
......
......@@ -18,7 +18,7 @@ md5sum = f686f765e55d1dce2e55a400f0714b3e
[template-apache-frontend]
filename = instance-apache-frontend.cfg
md5sum = 274788ae9701ee1aabe26d1237f174e7
md5sum = d6398d727eb1e1bc3df1768a9b9a7e0c
[template-apache-replicate]
filename = instance-apache-replicate.cfg.in
......
......@@ -198,8 +198,8 @@ extra-context =
section apache_configuration apache-configuration
section nginx_configuration nginx-configuration
key monitor_base_url monitor-instance-parameter:monitor-base-url
key promise_directory monitor-directory:promises
key report_directory monitor-directory:reports
key promise_directory directory:promises
key report_directory directory:bin
raw bin_directory ${buildout:bin-directory}
[dynamic-virtualhost-template-slave]
......@@ -632,7 +632,7 @@ private-path-list +=
[monitor-traffic-summary-last-stats-wrapper]
< = jinja2-template-base
template = ${template-wrapper:output}
rendered = $${monitor-directory:reports}/traffic-summary-last-stats_every_1_hour
rendered = $${directory:bin}/traffic-summary-last-stats_every_1_hour
mode = 0700
command = export TS_ROOT=$${buildout:directory} && echo "<pre>$(${trafficserver:location}/bin/traffic_logstats -f $${trafficserver-directory:log}/squid.blog)</pre>"
extra-context =
......@@ -642,7 +642,7 @@ extra-context =
[monitor-ats-cache-stats-wrapper]
< = jinja2-template-base
template = ${template-wrapper:output}
rendered = $${monitor-directory:reports}/ats-cache-stats_every_1_hour
rendered = $${directory:bin}/ats-cache-stats_every_1_hour
mode = 0700
command = export TS_ROOT=$${buildout:directory} && echo "<pre>$(${trafficserver:location}/bin/traffic_shell $${monitor-ats-cache-stats-config:rendered})</pre>"
extra-context =
......@@ -651,7 +651,7 @@ extra-context =
[monitor-apache-server-status-wrapper]
< = jinja2-template-base
template = ${template-wrapper:output}
rendered = $${monitor-directory:reports}/monitor-apache-server-status-wrapper
rendered = $${directory:bin}/monitor-apache-server-status-wrapper
mode = 0700
command = ${curl:location}/bin/curl -s http://$${instance-parameter:ipv4-random}:$${instance-parameter:configuration.plain_http_port}/server-status -u $${monitor-instance-parameter:username}:$${monitor-htpasswd:passwd} 2>&1
extra-context =
......
[buildout]
extends = software.cfg
[versions]
setuptools = 36.6.0
......@@ -22,7 +22,7 @@ md5sum = c801b7f9f11f0965677c22e6bbe9281b
[template-apache-frontend]
filename = instance-apache-frontend.cfg.in
md5sum = db61a7c0aadba180b7aec6056d2c0019
md5sum = 47150a0f4c9ff6f71753b93e03db05e7
[template-apache-replicate]
filename = instance-apache-replicate.cfg.in
......@@ -58,7 +58,7 @@ md5sum = f20d6c3d2d94fb685f8d26dfca1e822b
[template-default-slave-virtualhost]
filename = templates/default-virtualhost.conf.in
md5sum = e21bf673c35f049e7457ec78de9a1964
md5sum = 3b9d7c04206da76edb40740a51e4063c
[template-cached-slave-virtualhost]
filename = templates/cached-virtualhost.conf.in
......
......@@ -194,8 +194,8 @@ extra-context =
section caddy_configuration caddy-configuration
section nginx_configuration nginx-configuration
key monitor_base_url monitor-instance-parameter:monitor-base-url
key promise_directory monitor-directory:promises
key report_directory monitor-directory:reports
key promise_directory directory:promises
key report_directory directory:bin
key bin_directory :bin_directory
key login_certificate ca-frontend:cert-file
key login_key ca-frontend:key-file
......@@ -666,7 +666,7 @@ private-path-list +=
[monitor-traffic-summary-last-stats-wrapper]
< = jinja2-template-base
template = {{ parameter_dict['template_wrapper'] }}
rendered = ${monitor-directory:reports}/traffic-summary-last-stats_every_1_hour
rendered = ${directory:bin}/traffic-summary-last-stats_every_1_hour
mode = 0700
command = export TS_ROOT=${buildout:directory} && echo "<pre>$({{ parameter_dict['trafficserver'] }}/bin/traffic_logstats -f ${trafficserver-directory:log}/squid.blog)</pre>"
extra-context =
......@@ -676,7 +676,7 @@ extra-context =
[monitor-ats-cache-stats-wrapper]
< = jinja2-template-base
template = {{ parameter_dict['template_wrapper'] }}
rendered = ${monitor-directory:reports}/ats-cache-stats_every_1_hour
rendered = ${directory:bin}/ats-cache-stats_every_1_hour
mode = 0700
command = export TS_ROOT=${buildout:directory} && echo "<pre>$({{ parameter_dict['trafficserver'] }}/bin/traffic_shell ${monitor-ats-cache-stats-config:rendered})</pre>"
extra-context =
......@@ -685,7 +685,7 @@ extra-context =
[monitor-caddy-server-status-wrapper]
< = jinja2-template-base
template = {{ parameter_dict['template_wrapper'] }}
rendered = ${monitor-directory:reports}/monitor-caddy-server-status-wrapper
rendered = ${directory:bin}/monitor-caddy-server-status-wrapper
mode = 0700
command = {{ parameter_dict['curl'] }}/bin/curl -s http://{{ instance_parameter['ipv4-random'] }}:${configuration:plain_http_port}/server-status -u ${monitor-instance-parameter:username}:${monitor-htpasswd:passwd} 2>&1
extra-context =
......
......@@ -16,14 +16,14 @@
{%- if slave_parameter.get('custom_domain') not in host_list %}
{%- do host_list.append(slave_parameter.get('custom_domain')) %}
{%- endif %}
{%- set backend_url = slave_parameter.get('https-url', slave_parameter.get('url', '')) %}
{%- set backend_url = slave_parameter.get('https-url', slave_parameter.get('url', '')).rstrip('/') %}
{%- set http_host_list = [] %}
{%- set https_host_list = [] %}
{%- for host in host_list %}
{%- do http_host_list.append('http://%s:%s' % (host, slave_parameter['http_port'] )) %}
{%- do https_host_list.append('https://%s:%s' % (host, slave_parameter['https_port'] )) %}
{%- endfor %} {#- for host in host_list #}
{%- set default_path = slave_parameter.get('default-path', '') | urlencode %}
{%- set default_path = slave_parameter.get('default-path', '').strip('/') | urlencode %}
# SSL enabled hosts
{{ https_host_list|join(', ') }} {
......@@ -42,12 +42,25 @@
log / {{ slave_parameter.get('access_log') }} "{remote} {>REMOTE_USER} [{when}] \"{method} {uri} {proto}\" {status} {size} \"{>Referer}\" \"{>User-Agent}\" {latency_ms}"
errors {{ slave_parameter.get('error_log') }}
{%- if prefer_gzip and not (slave_type == 'zope' and backend_url) %}
{%- if not (slave_type == 'zope' and backend_url) %}
{% if prefer_gzip %}
rewrite {
regexp (.*)
if {>Accept-Encoding} match "(^gzip,.*|.*, gzip,.*|.*, gzip$|^gzip$)"
to /prefer-gzip{uri}
to /prefer-gzip{1}
}
{%- endif %} {#- if prefer_gzip and not (slave_type == 'zope' and backend_url) #}
rewrite {
regexp (.*)
if {>Accept-Encoding} not_match "(^gzip,.*|.*, gzip,.*|.*, gzip$|^gzip$)"
to {1}
}
{% else %}
rewrite {
regexp (.*)
to {1}
}
{% endif %}
{%- endif %} {#- if not (slave_type == 'zope' and backend_url) #}
{%- if slave_type == 'zope' and backend_url %}
# Zope configuration
......@@ -94,18 +107,18 @@
rewrite {
regexp (.*)
if {>Accept-Encoding} match "(^gzip,.*|.*, gzip,.*|.*, gzip$|^gzip$)"
to /prefer-gzip/VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-https-port', '443') | int }}%2F{{ slave_parameter.get('path', '') }}%2FVirtualHostRoot/{1}
to /prefer-gzip/VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-https-port', '443') | int }}%2F{{ slave_parameter.get('path', '').strip('/') }}%2FVirtualHostRoot/{1}
}
{%- else %}
rewrite {
regexp (.*)
to /VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-https-port', '443') | int }}%2F{{ slave_parameter.get('path', '') }}%2FVirtualHostRoot/{1}
to /VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-https-port', '443') | int }}%2F{{ slave_parameter.get('path', '').strip('/') }}%2FVirtualHostRoot/{1}
} {# rewrite #}
{%- endif %} {#- if prefer_gzip #}
{%- elif slave_type == 'redirect' and backend_url %} {#- if slave_type == 'zope' and backend_url #}
# Redirect configuration
redir 302 {
/ {{ backend_url }}{uri}
/ {{ backend_url }}{rewrite_uri}
} {# redir #}
{%- else %} {#- if slave_type == 'zope' and backend_url #}
# Default configuration
......@@ -163,20 +176,35 @@
log / {{ slave_parameter.get('access_log') }} "{remote} {>REMOTE_USER} [{when}] \"{method} {uri} {proto}\" {status} {size} \"{>Referer}\" \"{>User-Agent}\" {latency_ms}"
errors {{ slave_parameter.get('error_log') }}
{%- if prefer_gzip and not (slave_type == 'zope' and backend_url) %}
{%- if not (slave_type == 'zope' and backend_url) %}
{%- if prefer_gzip %}
rewrite {
regexp (.*)
if {>Accept-Encoding} match "(^gzip,.*|.*, gzip,.*|.*, gzip$|^gzip$)"
to /prefer-gzip{uri}
to /prefer-gzip{1}
}
{%- endif %} {#- if prefer_gzip and not (slave_type == 'zope' and backend_url) #}
rewrite {
regexp (.*)
if {>Accept-Encoding} not_match "(^gzip,.*|.*, gzip,.*|.*, gzip$|^gzip$)"
to {1}
}
{% else %}
rewrite {
regexp (.*)
to {1}
}
{% endif %}
{%- endif %} {#- if not (slave_type == 'zope' and backend_url) #}
{%- if https_only %}
# Enforced redirection to SSL-enabled host
redir / https://{host}{uri}
redir 302 {
/ https://{host}{rewrite_uri}
}
{%- elif slave_type == 'redirect' and slave_parameter.get('url', '') %} {#- if https_only #}
# Redirect configuration
redir 302 {
/ {{ slave_parameter.get('url', '') }}{uri}
/ {{ slave_parameter.get('url', '') }}{rewrite_uri}
} {# redir #}
{%- elif slave_type == 'zope' and backend_url %} {#- if https_only #}
# Zope configuration
......@@ -223,12 +251,12 @@
rewrite {
regexp (.*)
if {>Accept-Encoding} match "(^gzip,.*|.*, gzip,.*|.*, gzip$|^gzip$)"
to /prefer-gzip/VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-http-port', '80') | int }}%2F{{ slave_parameter.get('path', '') }}%2FVirtualHostRoot/{1}
to /prefer-gzip/VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-http-port', '80') | int }}%2F{{ slave_parameter.get('path', '').strip('/') }}%2FVirtualHostRoot/{1}
}
{%- else %}
rewrite {
regexp (.*)
to /VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-http-port', '80') | int }}%2F{{ slave_parameter.get('path', '') }}%2FVirtualHostRoot/{1}
to /VirtualHostBase/{scheme}%2F%2F{hostonly}:{{ slave_parameter.get('virtualhostroot-http-port', '80') | int }}%2F{{ slave_parameter.get('path', '').strip('/') }}%2FVirtualHostRoot/{1}
} {# rewrite #}
{% endif %} {#- if prefer_gzip #}
{%- else %} {#- if https_only #}
......
This diff is collapsed.
TestDefaultMonitorHttpdPort-1/etc/monitor-promise/check-_test-error-log-last-day
TestDefaultMonitorHttpdPort-1/etc/monitor-promise/check-_test-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,8 @@ TestDefaultMonitorHttpdPort-1/etc/promise/caddy_frontend_ipv4_https
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_frontend_ipv6_http
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_frontend_ipv6_https
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_ssl_cached
TestDefaultMonitorHttpdPort-1/etc/promise/check-_test-error-log-last-day
TestDefaultMonitorHttpdPort-1/etc/promise/check-_test-error-log-last-hour
TestDefaultMonitorHttpdPort-1/etc/promise/frontend-caddy-configuration-promise
TestDefaultMonitorHttpdPort-1/etc/promise/monitor-http-frontend
TestDefaultMonitorHttpdPort-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestDefaultMonitorHttpdPort-0:bootstrap-monitor EXITED
TestDefaultMonitorHttpdPort-0:certificate_authority-on-watch RUNNING
TestDefaultMonitorHttpdPort-0:certificate_authority-{hash}-on-watch RUNNING
TestDefaultMonitorHttpdPort-0:crond-{hash} RUNNING
TestDefaultMonitorHttpdPort-0:monitor-httpd-{hash}-on-watch EXITED
TestDefaultMonitorHttpdPort-0:monitor-httpd-graceful EXITED
......
TestDuplicateSiteKeyProtection-1/etc/monitor-promise/check-_site_2-error-log-last-day
TestDuplicateSiteKeyProtection-1/etc/monitor-promise/check-_site_2-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,8 @@ TestDuplicateSiteKeyProtection-1/etc/promise/caddy_frontend_ipv4_https
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_frontend_ipv6_http
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_frontend_ipv6_https
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_ssl_cached
TestDuplicateSiteKeyProtection-1/etc/promise/check-_site_2-error-log-last-day
TestDuplicateSiteKeyProtection-1/etc/promise/check-_site_2-error-log-last-hour
TestDuplicateSiteKeyProtection-1/etc/promise/frontend-caddy-configuration-promise
TestDuplicateSiteKeyProtection-1/etc/promise/monitor-http-frontend
TestDuplicateSiteKeyProtection-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestDuplicateSiteKeyProtection-0:bootstrap-monitor EXITED
TestDuplicateSiteKeyProtection-0:certificate_authority-on-watch RUNNING
TestDuplicateSiteKeyProtection-0:certificate_authority-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-0:crond-{hash} RUNNING
TestDuplicateSiteKeyProtection-0:monitor-httpd-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-0:monitor-httpd-graceful EXITED
......
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,12 @@ TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_ssl_cached
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-true-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/frontend-caddy-configuration-promise
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestEnableHttp2ByDefaultDefaultSlave-0:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultDefaultSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:certificate_authority-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:crond-{hash} RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-graceful EXITED
......
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,12 @@ TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/caddy_frontend_ipv4_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/caddy_frontend_ipv6_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/caddy_frontend_ipv6_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/caddy_ssl_cached
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-_enable-http2-true-error-log-last-hour
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/frontend-caddy-configuration-promise
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestEnableHttp2ByDefaultFalseSlave-0:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultFalseSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:certificate_authority-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:crond-{hash} RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-graceful EXITED
......
TestMalformedBackenUrlSlave-1/etc/monitor-promise/check-_empty-error-log-last-day
TestMalformedBackenUrlSlave-1/etc/monitor-promise/check-_empty-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,8 @@ TestMalformedBackenUrlSlave-1/etc/promise/caddy_frontend_ipv4_https
TestMalformedBackenUrlSlave-1/etc/promise/caddy_frontend_ipv6_http
TestMalformedBackenUrlSlave-1/etc/promise/caddy_frontend_ipv6_https
TestMalformedBackenUrlSlave-1/etc/promise/caddy_ssl_cached
TestMalformedBackenUrlSlave-1/etc/promise/check-_empty-error-log-last-day
TestMalformedBackenUrlSlave-1/etc/promise/check-_empty-error-log-last-hour
TestMalformedBackenUrlSlave-1/etc/promise/frontend-caddy-configuration-promise
TestMalformedBackenUrlSlave-1/etc/promise/monitor-http-frontend
TestMalformedBackenUrlSlave-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestMalformedBackenUrlSlave-0:bootstrap-monitor EXITED
TestMalformedBackenUrlSlave-0:certificate_authority-on-watch RUNNING
TestMalformedBackenUrlSlave-0:certificate_authority-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-0:crond-{hash} RUNNING
TestMalformedBackenUrlSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-0:monitor-httpd-graceful EXITED
......
TestMasterRequest-0:bootstrap-monitor EXITED
TestMasterRequest-0:certificate_authority-on-watch RUNNING
TestMasterRequest-0:certificate_authority-{hash}-on-watch RUNNING
TestMasterRequest-0:crond-{hash} RUNNING
TestMasterRequest-0:monitor-httpd-{hash}-on-watch RUNNING
TestMasterRequest-0:monitor-httpd-graceful EXITED
......
TestMasterRequestDomain-0:bootstrap-monitor EXITED
TestMasterRequestDomain-0:certificate_authority-on-watch RUNNING
TestMasterRequestDomain-0:certificate_authority-{hash}-on-watch RUNNING
TestMasterRequestDomain-0:crond-{hash} RUNNING
TestMasterRequestDomain-0:monitor-httpd-{hash}-on-watch RUNNING
TestMasterRequestDomain-0:monitor-httpd-graceful EXITED
......
TestQuicEnabled-1/etc/monitor-promise/check-_url-error-log-last-day
TestQuicEnabled-1/etc/monitor-promise/check-_url-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,8 @@ TestQuicEnabled-1/etc/promise/caddy_frontend_ipv4_https
TestQuicEnabled-1/etc/promise/caddy_frontend_ipv6_http
TestQuicEnabled-1/etc/promise/caddy_frontend_ipv6_https
TestQuicEnabled-1/etc/promise/caddy_ssl_cached
TestQuicEnabled-1/etc/promise/check-_url-error-log-last-day
TestQuicEnabled-1/etc/promise/check-_url-error-log-last-hour
TestQuicEnabled-1/etc/promise/frontend-caddy-configuration-promise
TestQuicEnabled-1/etc/promise/monitor-http-frontend
TestQuicEnabled-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestQuicEnabled-0:bootstrap-monitor EXITED
TestQuicEnabled-0:certificate_authority-on-watch RUNNING
TestQuicEnabled-0:certificate_authority-{hash}-on-watch RUNNING
TestQuicEnabled-0:crond-{hash} RUNNING
TestQuicEnabled-0:monitor-httpd-{hash}-on-watch RUNNING
TestQuicEnabled-0:monitor-httpd-graceful EXITED
......
TestRe6stVerificationUrlDefaultSlave-1/etc/monitor-promise/check-_default-error-log-last-day
TestRe6stVerificationUrlDefaultSlave-1/etc/monitor-promise/check-_default-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,8 @@ TestRe6stVerificationUrlDefaultSlave-1/etc/promise/caddy_frontend_ipv4_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/caddy_frontend_ipv6_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/caddy_frontend_ipv6_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/caddy_ssl_cached
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/check-_default-error-log-last-day
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/check-_default-error-log-last-hour
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/frontend-caddy-configuration-promise
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestRe6stVerificationUrlDefaultSlave-0:bootstrap-monitor EXITED
TestRe6stVerificationUrlDefaultSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-0:certificate_authority-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-0:crond-{hash} RUNNING
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-graceful EXITED
......
TestRe6stVerificationUrlSlave-1/etc/monitor-promise/check-_default-error-log-last-day
TestRe6stVerificationUrlSlave-1/etc/monitor-promise/check-_default-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,8 @@ TestRe6stVerificationUrlSlave-1/etc/promise/caddy_frontend_ipv4_https
TestRe6stVerificationUrlSlave-1/etc/promise/caddy_frontend_ipv6_http
TestRe6stVerificationUrlSlave-1/etc/promise/caddy_frontend_ipv6_https
TestRe6stVerificationUrlSlave-1/etc/promise/caddy_ssl_cached
TestRe6stVerificationUrlSlave-1/etc/promise/check-_default-error-log-last-day
TestRe6stVerificationUrlSlave-1/etc/promise/check-_default-error-log-last-hour
TestRe6stVerificationUrlSlave-1/etc/promise/frontend-caddy-configuration-promise
TestRe6stVerificationUrlSlave-1/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlSlave-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestRe6stVerificationUrlSlave-0:bootstrap-monitor EXITED
TestRe6stVerificationUrlSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlSlave-0:certificate_authority-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-0:crond-{hash} RUNNING
TestRe6stVerificationUrlSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-0:monitor-httpd-graceful EXITED
......
TestReplicateSlave-1/etc/monitor-promise/check-_replicate-error-log-last-day
TestReplicateSlave-1/etc/monitor-promise/check-_replicate-error-log-last-hour
TestReplicateSlave-2/etc/monitor-promise/check-_replicate-error-log-last-day
TestReplicateSlave-2/etc/monitor-promise/check-_replicate-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,8 @@ TestReplicateSlave-1/etc/promise/caddy_frontend_ipv4_https
TestReplicateSlave-1/etc/promise/caddy_frontend_ipv6_http
TestReplicateSlave-1/etc/promise/caddy_frontend_ipv6_https
TestReplicateSlave-1/etc/promise/caddy_ssl_cached
TestReplicateSlave-1/etc/promise/check-_replicate-error-log-last-day
TestReplicateSlave-1/etc/promise/check-_replicate-error-log-last-hour
TestReplicateSlave-1/etc/promise/frontend-caddy-configuration-promise
TestReplicateSlave-1/etc/promise/monitor-http-frontend
TestReplicateSlave-1/etc/promise/monitor-httpd-listening-on-tcp
......@@ -28,6 +30,8 @@ TestReplicateSlave-2/etc/promise/caddy_frontend_ipv4_https
TestReplicateSlave-2/etc/promise/caddy_frontend_ipv6_http
TestReplicateSlave-2/etc/promise/caddy_frontend_ipv6_https
TestReplicateSlave-2/etc/promise/caddy_ssl_cached
TestReplicateSlave-2/etc/promise/check-_replicate-error-log-last-day
TestReplicateSlave-2/etc/promise/check-_replicate-error-log-last-hour
TestReplicateSlave-2/etc/promise/frontend-caddy-configuration-promise
TestReplicateSlave-2/etc/promise/monitor-http-frontend
TestReplicateSlave-2/etc/promise/monitor-httpd-listening-on-tcp
......
TestReplicateSlave-0:bootstrap-monitor EXITED
TestReplicateSlave-0:certificate_authority-on-watch RUNNING
TestReplicateSlave-0:certificate_authority-{hash}-on-watch RUNNING
TestReplicateSlave-0:crond-{hash} RUNNING
TestReplicateSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestReplicateSlave-0:monitor-httpd-graceful EXITED
......
TestSlave-1/etc/monitor-promise/check-_apache_custom_http_s-accepted-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_apache_custom_http_s-accepted-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_caddy_custom_http_s-accepted-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_caddy_custom_http_s-accepted-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_custom_domain-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_custom_domain-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_custom_domain_ssl_crt_ssl_key-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_custom_domain_ssl_crt_ssl_key-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_custom_domain_ssl_crt_ssl_key_ssl_ca_crt-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_custom_domain_ssl_crt_ssl_key_ssl_ca_crt-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_custom_domain_wildcard-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_custom_domain_wildcard-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_disabled-cookie-list-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_disabled-cookie-list-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_empty-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_empty-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-no-cache-request-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-no-cache-request-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-via-header-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-via-header-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_https-only-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_https-only-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_monitor-ipv4-test-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_monitor-ipv4-test-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_monitor-ipv4-test-ipv4-packet-list-test
TestSlave-1/etc/monitor-promise/check-_monitor-ipv6-test-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_monitor-ipv6-test-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_monitor-ipv6-test-ipv6-packet-list-test
TestSlave-1/etc/monitor-promise/check-_prefer-gzip-encoding-to-backend-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_prefer-gzip-encoding-to-backend-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_re6st-optimal-test-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_re6st-optimal-test-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_re6st-optimal-test-re6st-optimal-test
TestSlave-1/etc/monitor-promise/check-_server-alias-duplicated-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_server-alias-duplicated-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_server-alias-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_server-alias-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_server-alias-wildcard-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_server-alias-wildcard-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_server-alias_custom_domain-duplicated-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_server-alias_custom_domain-duplicated-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_ssl_ca_crt_does_not_match-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_ssl_ca_crt_does_not_match-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_ssl_ca_crt_garbage-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_ssl_ca_crt_garbage-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-eventsource-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-eventsource-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-notebook-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-notebook-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-redirect-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-redirect-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-default-path-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-default-path-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-path-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-path-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-prefer-gzip-encoding-to-backend-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-prefer-gzip-encoding-to-backend-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-http-port-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-http-port-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-https-port-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-https-port-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_url-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_url-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_url_https-url-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_url_https-url-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,97 @@ TestSlave-1/etc/promise/caddy_frontend_ipv4_https
TestSlave-1/etc/promise/caddy_frontend_ipv6_http
TestSlave-1/etc/promise/caddy_frontend_ipv6_https
TestSlave-1/etc/promise/caddy_ssl_cached
TestSlave-1/etc/promise/check-_apache_custom_http_s-accepted-error-log-last-day
TestSlave-1/etc/promise/check-_apache_custom_http_s-accepted-error-log-last-hour
TestSlave-1/etc/promise/check-_caddy_custom_http_s-accepted-error-log-last-day
TestSlave-1/etc/promise/check-_caddy_custom_http_s-accepted-error-log-last-hour
TestSlave-1/etc/promise/check-_custom_domain-error-log-last-day
TestSlave-1/etc/promise/check-_custom_domain-error-log-last-hour
TestSlave-1/etc/promise/check-_custom_domain_ssl_crt_ssl_key-error-log-last-day
TestSlave-1/etc/promise/check-_custom_domain_ssl_crt_ssl_key-error-log-last-hour
TestSlave-1/etc/promise/check-_custom_domain_ssl_crt_ssl_key_ssl_ca_crt-error-log-last-day
TestSlave-1/etc/promise/check-_custom_domain_ssl_crt_ssl_key_ssl_ca_crt-error-log-last-hour
TestSlave-1/etc/promise/check-_custom_domain_wildcard-error-log-last-day
TestSlave-1/etc/promise/check-_custom_domain_wildcard-error-log-last-hour
TestSlave-1/etc/promise/check-_disabled-cookie-list-error-log-last-day
TestSlave-1/etc/promise/check-_disabled-cookie-list-error-log-last-hour
TestSlave-1/etc/promise/check-_empty-error-log-last-day
TestSlave-1/etc/promise/check-_empty-error-log-last-hour
TestSlave-1/etc/promise/check-_enable-http2-default-error-log-last-day
TestSlave-1/etc/promise/check-_enable-http2-default-error-log-last-hour
TestSlave-1/etc/promise/check-_enable-http2-false-error-log-last-day
TestSlave-1/etc/promise/check-_enable-http2-false-error-log-last-hour
TestSlave-1/etc/promise/check-_enable_cache-disable-no-cache-request-error-log-last-day
TestSlave-1/etc/promise/check-_enable_cache-disable-no-cache-request-error-log-last-hour
TestSlave-1/etc/promise/check-_enable_cache-disable-via-header-error-log-last-day
TestSlave-1/etc/promise/check-_enable_cache-disable-via-header-error-log-last-hour
TestSlave-1/etc/promise/check-_enable_cache-error-log-last-day
TestSlave-1/etc/promise/check-_enable_cache-error-log-last-hour
TestSlave-1/etc/promise/check-_enable_cache-ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/promise/check-_enable_cache-ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-day
TestSlave-1/etc/promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-hour
TestSlave-1/etc/promise/check-_https-only-error-log-last-day
TestSlave-1/etc/promise/check-_https-only-error-log-last-hour
TestSlave-1/etc/promise/check-_monitor-ipv4-test-error-log-last-day
TestSlave-1/etc/promise/check-_monitor-ipv4-test-error-log-last-hour
TestSlave-1/etc/promise/check-_monitor-ipv4-test-ipv4-packet-list-test
TestSlave-1/etc/promise/check-_monitor-ipv6-test-error-log-last-day
TestSlave-1/etc/promise/check-_monitor-ipv6-test-error-log-last-hour
TestSlave-1/etc/promise/check-_monitor-ipv6-test-ipv6-packet-list-test
TestSlave-1/etc/promise/check-_prefer-gzip-encoding-to-backend-error-log-last-day
TestSlave-1/etc/promise/check-_prefer-gzip-encoding-to-backend-error-log-last-hour
TestSlave-1/etc/promise/check-_re6st-optimal-test-error-log-last-day
TestSlave-1/etc/promise/check-_re6st-optimal-test-error-log-last-hour
TestSlave-1/etc/promise/check-_re6st-optimal-test-re6st-optimal-test
TestSlave-1/etc/promise/check-_server-alias-duplicated-error-log-last-day
TestSlave-1/etc/promise/check-_server-alias-duplicated-error-log-last-hour
TestSlave-1/etc/promise/check-_server-alias-error-log-last-day
TestSlave-1/etc/promise/check-_server-alias-error-log-last-hour
TestSlave-1/etc/promise/check-_server-alias-wildcard-error-log-last-day
TestSlave-1/etc/promise/check-_server-alias-wildcard-error-log-last-hour
TestSlave-1/etc/promise/check-_server-alias_custom_domain-duplicated-error-log-last-day
TestSlave-1/etc/promise/check-_server-alias_custom_domain-duplicated-error-log-last-hour
TestSlave-1/etc/promise/check-_ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/promise/check-_ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-day
TestSlave-1/etc/promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-hour
TestSlave-1/etc/promise/check-_ssl_ca_crt_does_not_match-error-log-last-day
TestSlave-1/etc/promise/check-_ssl_ca_crt_does_not_match-error-log-last-hour
TestSlave-1/etc/promise/check-_ssl_ca_crt_garbage-error-log-last-day
TestSlave-1/etc/promise/check-_ssl_ca_crt_garbage-error-log-last-hour
TestSlave-1/etc/promise/check-_type-eventsource-error-log-last-day
TestSlave-1/etc/promise/check-_type-eventsource-error-log-last-hour
TestSlave-1/etc/promise/check-_type-notebook-error-log-last-day
TestSlave-1/etc/promise/check-_type-notebook-error-log-last-hour
TestSlave-1/etc/promise/check-_type-redirect-error-log-last-day
TestSlave-1/etc/promise/check-_type-redirect-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-default-path-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-default-path-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-path-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-path-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-prefer-gzip-encoding-to-backend-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-prefer-gzip-encoding-to-backend-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-unverified-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-virtualhostroot-http-port-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-virtualhostroot-http-port-error-log-last-hour
TestSlave-1/etc/promise/check-_type-zope-virtualhostroot-https-port-error-log-last-day
TestSlave-1/etc/promise/check-_type-zope-virtualhostroot-https-port-error-log-last-hour
TestSlave-1/etc/promise/check-_url-error-log-last-day
TestSlave-1/etc/promise/check-_url-error-log-last-hour
TestSlave-1/etc/promise/check-_url_https-url-error-log-last-day
TestSlave-1/etc/promise/check-_url_https-url-error-log-last-hour
TestSlave-1/etc/promise/frontend-caddy-configuration-promise
TestSlave-1/etc/promise/monitor-http-frontend
TestSlave-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestSlave-0:bootstrap-monitor EXITED
TestSlave-0:certificate_authority-on-watch RUNNING
TestSlave-0:certificate_authority-{hash}-on-watch RUNNING
TestSlave-0:crond-{hash} RUNNING
TestSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestSlave-0:monitor-httpd-graceful EXITED
......
TestSlaveBadParameters-1/etc/monitor-promise/check-_default-path-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_default-path-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/monitor-promise/check-_monitor-ipv4-test-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_monitor-ipv4-test-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/monitor-promise/check-_monitor-ipv4-test-unsafe-ipv4-packet-list-test
TestSlaveBadParameters-1/etc/monitor-promise/check-_monitor-ipv6-test-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_monitor-ipv6-test-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/monitor-promise/check-_monitor-ipv6-test-unsafe-ipv6-packet-list-test
TestSlaveBadParameters-1/etc/monitor-promise/check-_re6st-optimal-test-nocomma-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_re6st-optimal-test-nocomma-error-log-last-hour
TestSlaveBadParameters-1/etc/monitor-promise/check-_re6st-optimal-test-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_re6st-optimal-test-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/monitor-promise/check-_re6st-optimal-test-unsafe-re6st-optimal-test
TestSlaveBadParameters-1/etc/monitor-promise/check-_server-alias-same-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_server-alias-same-error-log-last-hour
TestSlaveBadParameters-1/etc/monitor-promise/check-_virtualhostroot-http-port-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_virtualhostroot-http-port-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/monitor-promise/check-_virtualhostroot-https-port-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/monitor-promise/check-_virtualhostroot-https-port-unsafe-error-log-last-hour
\ No newline at end of file
......@@ -8,6 +8,25 @@ TestSlaveBadParameters-1/etc/promise/caddy_frontend_ipv4_https
TestSlaveBadParameters-1/etc/promise/caddy_frontend_ipv6_http
TestSlaveBadParameters-1/etc/promise/caddy_frontend_ipv6_https
TestSlaveBadParameters-1/etc/promise/caddy_ssl_cached
TestSlaveBadParameters-1/etc/promise/check-_default-path-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_default-path-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/check-_monitor-ipv4-test-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_monitor-ipv4-test-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/check-_monitor-ipv4-test-unsafe-ipv4-packet-list-test
TestSlaveBadParameters-1/etc/promise/check-_monitor-ipv6-test-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_monitor-ipv6-test-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/check-_monitor-ipv6-test-unsafe-ipv6-packet-list-test
TestSlaveBadParameters-1/etc/promise/check-_re6st-optimal-test-nocomma-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_re6st-optimal-test-nocomma-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/check-_re6st-optimal-test-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_re6st-optimal-test-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/check-_re6st-optimal-test-unsafe-re6st-optimal-test
TestSlaveBadParameters-1/etc/promise/check-_server-alias-same-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_server-alias-same-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/check-_virtualhostroot-http-port-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_virtualhostroot-http-port-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/check-_virtualhostroot-https-port-unsafe-error-log-last-day
TestSlaveBadParameters-1/etc/promise/check-_virtualhostroot-https-port-unsafe-error-log-last-hour
TestSlaveBadParameters-1/etc/promise/frontend-caddy-configuration-promise
TestSlaveBadParameters-1/etc/promise/monitor-http-frontend
TestSlaveBadParameters-1/etc/promise/monitor-httpd-listening-on-tcp
......
TestSlaveBadParameters-0:bootstrap-monitor EXITED
TestSlaveBadParameters-0:certificate_authority-on-watch RUNNING
TestSlaveBadParameters-0:certificate_authority-{hash}-on-watch RUNNING
TestSlaveBadParameters-0:crond-{hash} RUNNING
TestSlaveBadParameters-0:monitor-httpd-{hash}-on-watch RUNNING
TestSlaveBadParameters-0:monitor-httpd-graceful EXITED
......
......@@ -242,8 +242,8 @@
"minimum": 1
},
"disk-format": {
"title": "Type of external disk drive to create by QEMU.",
"description": "Type of QEMU disk drive, to create.",
"title": "Disk format.",
"description": "Format of QEMU disk drive, to create.",
"type": "string",
"default": "qcow2",
"enum": [
......
......@@ -74,7 +74,7 @@ config-cpu-max-count = {{ dumps(kvm_parameter_dict.get('cpu-max-count', 24)) }}
config-auto-ballooning = {{ dumps(kvm_parameter_dict.get('auto-ballooning', True)) }}
{{ setconfig('disk-cache', kvm_parameter_dict.get('disk-cache', '')) }}
{{ setconfig('disk-aio', kvm_parameter_dict.get('disk-aio', '')) }}
{{ setconfig('cpu-model', kvm_parameter_dict.get('cpu-model', '')) }}
{{ setconfig('cpu-model', kvm_parameter_dict.get('cpu-model', 'host')) }}
{{ setconfig('disk-cache', kvm_parameter_dict.get('disk-cache', '')) }}
{{ setconfig('disk-device-path', kvm_parameter_dict.get('disk-device-path', '')) }}
......@@ -135,8 +135,12 @@ return =
{{ ' ' }}monitor-base-url
{% if str(kvm_parameter_dict.get('use-tap', 'True')).lower() == 'true' -%}
{{ ' ' }}tap-ipv4
{{ ' ' }}tap-ipv6
{{ ' ' }}ipv6-network-info
{% do publish_dict.__setitem__(instance_name ~ '-lan', '${' ~ section ~ ':connection-tap-ipv4}') -%}
{% do publish_dict.__setitem__(instance_name ~ '-ipv4', '${' ~ section ~ ':connection-tap-ipv4}') -%}
{% do publish_dict.__setitem__(instance_name ~ '-ipv6', '${' ~ section ~ ':connection-tap-ipv6}') -%}
{% do publish_dict.__setitem__(instance_name ~ '-ipv6-info', '${' ~ section ~ ':connection-ipv6-network-info}') -%}
{% do kvm_hostname_list.append(instance_name ~ ' ' ~ '${' ~ section ~ ':connection-tap-ipv4}') -%}
{% endif -%}
{% do monitor_base_url_dict.__setitem__(instance_name, '${' ~ section ~ ':connection-monitor-base-url}') -%}
......
......@@ -126,7 +126,8 @@
"cpu-model": {
"title": "CPU model.",
"description": "Select the emulated CPU model. Ex: SandyBridge,+erms,+smep,+smx,+vmx",
"type": "string"
"type": "string",
"default": "host"
},
"keyboard-layout-language": {
"title": "Use keyboard layout language",
......@@ -166,7 +167,8 @@
"sv",
"th",
"tr"
]
],
"default": "fr"
},
"nbd-host": {
"title": "NBD hostname",
......
......@@ -45,6 +45,7 @@ recipe = slapos.cookbook:publish-early
# XXX Monitoring Main Instane
[monitor-instance-parameter]
monitor-httpd-port = 8160
password = ${publish-early:monitor-password}
cors-domains = {{ monitor_parameter.get('monitor-cors-domains', '') }}
{% do monitor_parameter.__setitem__('monitor-username', slapparameter_dict.get('monitor-username', 'admin'))%}
......
......@@ -70,6 +70,7 @@ socket-path = ${directory:var}/qmp_socket
pid-file = ${directory:run}/pid_file
kvm-status-path = ${directory:var}/qemu-vm-is-ready
cpu-count = ${slap-parameter:cpu-count}
cpu-model = ${slap-parameter:cpu-model}
ram-hotplug-slot-size = ${slap-parameter:ram-hotplug-slot-size}
ram-size = ${slap-parameter:ram-size}
enable-device-hotplug = ${slap-parameter:enable-device-hotplug}
......@@ -87,7 +88,7 @@ nbd-port = ${slap-parameter:nbd-port}
nbd2-host = ${slap-parameter:nbd2-host}
nbd2-port = ${slap-parameter:nbd2-port}
tap-interface = ${slap-network-information:network-interface}
tap-interface = {{ slap_configuration.get('tap-name', '') }}
disk-size = ${slap-parameter:disk-size}
disk-type = ${slap-parameter:disk-type}
......@@ -132,7 +133,7 @@ external-disk-number = ${slap-parameter:external-disk-number}
external-disk-size = ${slap-parameter:external-disk-size}
external-disk-format = ${slap-parameter:external-disk-format}
{% if enable_http == 'true' or ( use_tap == 'true' and tap_network_dict.has_key('ipv4') ) -%}
{% if enable_http == 'true' or ( use_tap == 'true' and slap_configuration.get('tap-ipv4-addr', '') != "") -%}
httpd-port = ${slap-parameter:httpd-port}
{% else -%}
httpd-port = 0
......@@ -154,7 +155,7 @@ disk-cache = ${slap-parameter:disk-cache}
disk-aio = ${slap-parameter:disk-aio}
auto-ballooning = ${slap-parameter:auto-ballooning}
machine-options = ${slap-parameter:machine-options}
cpu-hotplug-slot-size = ${slap-parameter:cpu-model}
cpu-model = ${slap-parameter:cpu-model}
log-file = ${directory:log}/qemu.log
......@@ -282,6 +283,9 @@ recipe = slapos.cookbook:wrapper
command-line = ${websockify-sighandler:wrapper-path}
wrapper-path = ${directory:services}/websockify
hash-files = ${buildout:directory}/software_release/buildout.cfg
wait-for-files =
${ca-novnc:key-file}
${ca-novnc:cert-file}
[certificate-authority]
recipe = slapos.cookbook:certificate_authority
......@@ -410,6 +414,10 @@ password = {{ slapparameter_dict['monitor-password'] }}
{% endif -%}
interface-url = {{ slapparameter_dict.get('monitor-interface-url', 'https://monitor.app.officejs.com') }}
# this helper just gives a blank line to insert in multiline values
[helper]
blank-line =
[publish-connection-information]
<= monitor-publish
recipe = slapos.cookbook:publish
......@@ -418,9 +426,9 @@ backend-url = https://[${novnc-instance:ip}]:${novnc-instance:port}/vnc.html?hos
url = ${request-slave-frontend:connection-url}/vnc.html?host=${request-slave-frontend:connection-domainname}&port=${request-slave-frontend:connection-port}&encrypt=1&path=${request-slave-frontend:connection-resource}&password=${kvm-controller-parameter-dict:vnc-passwd}
{% set disk_number = len(storage_dict) -%}
maximum-extra-disk-amount = {{ disk_number }}
{% set iface = 'eth0' -%}
{% set iface = 'ens3' -%}
{% if use_nat == 'true' -%}
{% set iface = 'eth1' -%}
{% set iface = 'ens4' -%}
{% if nat_rule_list -%}
# Publish NAT port mapping status
{% for port in nat_rule_list.split(' ') -%}
......@@ -438,7 +446,8 @@ nat-rule-url-{{port}} = [${slap-network-information:global-ipv6}]:${6tunnel-{{ex
{% endif -%}
{% endif -%}
{% if use_tap == 'true' -%}
tap-ipv4 = ${slap-network-information:tap-ipv4}
tap-ipv4 = {{ slap_configuration.get('tap-ipv4-addr', '') }}
tap-ipv6 = {{ slap_configuration.get('tap-ipv6-addr', '') }}
{% endif -%}
{% set kvm_http = 'http://${slap-network-information:local-ipv4}:' ~ slapparameter_dict.get('httpd-port', 8081) -%}
......@@ -447,42 +456,80 @@ tap-ipv4 = ${slap-network-information:tap-ipv4}
{% set kvm_http = 'http://10.0.2.100' -%}
{% endif %}
{% if slapparameter_dict.get('authorized-key', '') and slapparameter_dict.get('type', '') == 'cluster' -%}
7_info = Get the publick key file in your VM with the command: wget {{ kvm_http }}/authorized_keys
key_info = Get the publick key file in your VM with the command: wget {{ kvm_http }}/authorized_keys
{% endif %}
{% endif %}
{% if use_tap == 'true' and slap_configuration.get('tap-ipv4-addr', '') != "" -%}
ipv4-network-info =
Use these configurations below to configure IPv4 on interface {{ iface }} in your VM.
IFACE={{ iface }}
${network-config-ipv4:ifconfig}
${network-config-ipv4:route-iface}
${network-config-ipv4:route-network}
${network-config-ipv4:route-default}
{% if enable_http == 'true' %}
${helper:blank-line}
Or run in your VM the command: wget -O- {{ kvm_http }}/netconfig.sh | /bin/sh -
{% endif %}
{% endif %}
{% if use_tap == 'true' and tap_network_dict.has_key('ipv4') -%}
1_info = Use these configurations below to configure interface {{ iface }} in your VM.
2_info = ${network-config:ifconfig}
3_info = ${network-config:route-iface}
4_info = ${network-config:route-network}
5_info = ${network-config:route-default}
ipv6-network-info =
{% if use_tap == 'true' and slap_configuration.get('tap-ipv6-addr', '') != "" -%}
Use these configurations below to configure IPv6 on interface {{ iface }} in your VM.
IFACE={{ iface }}
${network-config-ipv6:ipv6-add-address}
${network-config-ipv6:ipv6-add-default-route}
{% if enable_http == 'true' %}
6_info = Or run in your VM the command: wget -O- {{ kvm_http }}/netconfig.sh | /bin/sh -
${helper:blank-line}
Or run in your VM the command: wget -O- {{ kvm_http }}/ipv6_config.sh | /bin/sh -
{% endif %}
{% endif %}
[network-config]
{% if use_tap == 'true' and slap_configuration.get('tap-ipv4-addr', '') != "" -%}
[network-config-ipv4]
recipe = plone.recipe.command
path = ${directory:public}/netconfig.sh
ifconfig = ifconfig {{ iface }} ${slap-network-information:tap-ipv4} netmask ${slap-network-information:tap-netmask}
route-iface = route add ${slap-network-information:tap-gateway} dev {{ iface }}
route-network = route add -net ${slap-network-information:tap-network} netmask ${slap-network-information:tap-netmask} gw ${slap-network-information:tap-gateway}
{% if iface == 'eth0' -%}
route-default = route add default gw ${slap-network-information:tap-gateway}
{% elif nat_restrict == 'true' -%}
route-default = route add default gw ${slap-network-information:tap-gateway} dev {{ iface }}
ifconfig = ifconfig \$IFACE {{ slap_configuration.get('tap-ipv4-addr') }} netmask {{ slap_configuration.get('tap-ipv4-netmask') }}
route-iface = route add {{ slap_configuration.get('tap-ipv4-gateway') }} dev \$IFACE
route-network = route add -net {{ slap_configuration.get('tap-ipv4-network') }} netmask {{ slap_configuration.get('tap-ipv4-netmask') }} gw {{ slap_configuration.get('tap-ipv4-gateway') }}
{% if nat_restrict == 'true' -%}
route-default = route add default gw {{ slap_configuration.get('tap-ipv4-gateway') }} dev \$IFACE
{% elif global_ipv4_prefix -%}
route-default = ip route add {{ global_ipv4_prefix }} via ${slap-network-information:tap-gateway} dev {{ iface }} src ${slap-network-information:tap-ipv4}
route-default = ip route add {{ global_ipv4_prefix }} via {{ slap_configuration.get('tap-ipv4-gateway') }} dev \$IFACE src {{ slap_configuration.get('tap-ipv4-addr') }}
{% else -%}
route-default =
{% endif -%}
command =
echo "#!/bin/sh" > ${:path}
echo "" >> ${:path}
echo "${:ifconfig}" >> ${:path}
echo "${:route-iface}" >> ${:path}
echo "${:route-network}" >> ${:path}
echo "${:route-default}" >> ${:path}
cat > ${:path} << EOF
#!/bin/sh
IFACE={{ iface }}
#try to be compatible with OS with old names
ip a | grep eth0: && [ \$IFACE = ens3 ] && IFACE=eth0
ip a | grep eth1: && [ \$IFACE = ens4 ] && IFACE=eth1
${:ifconfig}
${:route-iface}
${:route-network}
${:route-default}
EOF
update-command = ${:command}
{% endif -%}
{% if use_tap == 'true' and slap_configuration.get('tap-ipv6-addr', '') != "" -%}
[network-config-ipv6]
recipe = plone.recipe.command
path = ${directory:public}/ipv6_config.sh
ipv6-add-address = ip -6 address add {{ slap_configuration.get('tap-ipv6-network') }} dev \$IFACE
ipv6-add-default-route =
ip -6 route del default ; ip -6 route add default dev \$IFACE via {{ slap_configuration.get('tap-ipv6-gateway') }}
command =
cat > ${:path} << EOF
#!/bin/sh
IFACE={{ iface }}
${:ipv6-add-address}
${:ipv6-add-default-route}
EOF
update-command = ${:command}
{% endif -%}
......@@ -513,11 +560,11 @@ mode = {{ mode }}
[publish-host-config]
recipe = plone.recipe.command
name = {{ slapparameter_dict.get('name', 'localhost') }}
{% if use_tap == 'true' and tap_network_dict.has_key('ipv4') -%}
local-ipv4 = ${slap-network-information:tap-ipv4}
gateway = ${slap-network-information:tap-gateway}
netmask = ${slap-network-information:tap-network}
network = ${slap-network-information:tap-netmask}
{% if use_tap == 'true' and slap_configuration.get('tap-ipv4-addr', '') != "" -%}
local-ipv4 = {{ slap_configuration['tap-ipv4-addr'] }}
gateway = {{ slap_configuration.get('tap-ipv4-gateway') }}
netmask = {{ slap_configuration.get('tap-ipv4-network') }}
network = {{ slap_configuration.get('tap-ipv4-netmask') }}
{% else -%}
local-ipv4 = 127.0.0.1
gateway =
......@@ -576,7 +623,6 @@ template = {{ ansible_promise_tpl }}
rendered = ${directory:promises}/ansible_{{ name }}
extensions = jinja2.ext.do
context =
key host slap-network-information:tap-ipv4
raw logs ${directory:public}/ansible
raw name {{ name }}
......@@ -618,7 +664,7 @@ disk-cache = writeback
disk-aio = native
auto-ballooning = True
machine-options =
cpu-model =
cpu-model = host
nat-rules = 22 80 443
use-nat = True
......
......@@ -50,7 +50,6 @@ context =
key ipv4 slap-configuration:ipv4
key ipv6 slap-configuration:ipv6
key global_ipv4_prefix network-information:global-ipv4-network
key tap_network_dict slap-configuration:tap-network-information-dict
key storage_dict slap-configuration:storage-dict
key slapparameter_dict slap-configuration:configuration
key computer_id slap-configuration:computer
......@@ -71,17 +70,11 @@ extra-context =
raw template_monitor ${monitor2-template:rendered}
[dynamic-template-kvm]
recipe = slapos.recipe.template:jinja2
<= jinja2-template-base
template = ${template-kvm:location}/instance-kvm.cfg.jinja2
rendered = $${buildout:directory}/template-kvm.cfg
extensions = jinja2.ext.do
context =
key develop_eggs_directory buildout:develop-eggs-directory
key eggs_directory buildout:eggs-directory
key global_ipv4_prefix network-information:global-ipv4-network
key slapparameter_dict slap-configuration:configuration
key storage_dict slap-configuration:storage-dict
key tap_network_dict slap-configuration:tap-network-information-dict
filename = template-kvm.cfg
extra-context =
section slap_configuration slap-configuration
raw ansible_promise_tpl ${template-ansible-promise:location}/${template-ansible-promise:filename}
raw curl_executable_location ${curl:location}/bin/curl
raw dash_executable_location ${dash:location}/bin/dash
......@@ -91,7 +84,6 @@ context =
raw logrotate_cfg ${template-logrotate-base:rendered}
raw novnc_location ${noVNC:location}
raw netcat_bin ${netcat:location}/bin/netcat
raw openssl_executable_location ${openssl:location}/bin/openssl
raw python_executable ${buildout:executable}
raw python_eggs_executable ${buildout:bin-directory}/${eggs:interpreter}
raw qemu_executable_location ${kvm:location}/bin/qemu-system-x86_64
......@@ -109,7 +101,6 @@ template-parts-destination = ${template-parts:target}
template-replicated-destination = ${template-replicated:target}
import-list = file parts :template-parts-destination
file replicated :template-replicated-destination
mode = 0644
[dynamic-template-kvm-resilient]
recipe = slapos.recipe.template:jinja2
......
......@@ -90,7 +90,7 @@ command =
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg.in
md5sum = 5a17fc127190bbc19361c5ffb10711b3
md5sum = 028b6a6456d744c11b1bb2c51ecd51b2
output = ${buildout:directory}/template.cfg
mode = 0644
......@@ -99,7 +99,7 @@ recipe = hexagonit.recipe.download
ignore-existing = true
url = ${:_profile_base_location_}/instance-kvm.cfg.jinja2
mode = 644
md5sum = 0668791e78430bafdec5300b4ea8d90a
md5sum = b4a95f8398dac8de58254899b4545439
download-only = true
on-update = true
......@@ -108,7 +108,7 @@ recipe = hexagonit.recipe.download
ignore-existing = true
url = ${:_profile_base_location_}/instance-kvm-cluster.cfg.jinja2.in
mode = 644
md5sum = 1282296397d445ccae59e6de7915840c
md5sum = 63fa784d8946d0b6e3fbd6381e1ea9f4
download-only = true
on-update = true
......@@ -117,7 +117,7 @@ recipe = hexagonit.recipe.download
ignore-existing = true
url = ${:_profile_base_location_}/instance-kvm-resilient.cfg.jinja2
mode = 644
md5sum = a5fd0cbe6be757d57c8b6903bb7a1d8b
md5sum = c189bce8b196a3b5bcb01526a3f9b2aa
download-only = true
on-update = true
......@@ -186,7 +186,7 @@ ignore-existing = true
url = ${:_profile_base_location_}/template/template-kvm-run.in
mode = 644
filename = template-kvm-run.in
md5sum = 8d681430f03ae4d35fc64b1625653a22
md5sum = 9e40246b4bc4f968f0631016c939b014
download-only = true
on-update = true
......@@ -196,7 +196,7 @@ ignore-existing = true
url = ${:_profile_base_location_}/template/kvm-controller-run.in
mode = 644
filename = kvm-controller-run.in
md5sum = c86cd67bbdd26b7b14b7449a1bbd959b
md5sum = b96cba47c97f277c857176d69e086a12
download-only = true
on-update = true
......
......@@ -15,7 +15,7 @@ pid_file = '{{ parameter_dict.get("pid-file") }}'
vnc_password = '{{ parameter_dict.get("vnc-passwd") }}'
status_path = '{{ parameter_dict.get("kvm-status-path") }}'
cpu_amount = {{ parameter_dict.get("cpu-count") }}
cpu_model = '{{ parameter_dict.get("cpu-model", "qemu64-x86_64-cpu") }}'
cpu_model = '{{ parameter_dict.get("cpu-model", "qemu64") }}'
slot_hotplug_size = {{ parameter_dict.get("ram-hotplug-slot-size", 512) }}
ram_size = {{ parameter_dict.get("ram-size") }}
enable_device_hotplug = '{{ parameter_dict.get("enable-device-hotplug") }}'.lower()
......@@ -48,7 +48,7 @@ def update():
qemu_wrapper.updateDevice({
'device': 'cpu',
'amount': cpu_amount,
'model': cpu_model
'model': "%s-x86_64-cpu" % cpu_model
})
qemu_wrapper.updateDevice({
'device': 'memory',
......
......@@ -88,7 +88,7 @@ if disk_device_path.startswith("/dev/"):
smp_count = {{ parameter_dict.get("smp-count") }}
smp_max_count = {{ parameter_dict.get("smp-max-count") }}
machine_options = '{{ parameter_dict.get("machine-options", "") }}'.strip()
cpu_model = '{{ parameter_dict.get("cpu-model", "host") }}'.strip()
cpu_model = '{{ parameter_dict.get("cpu-model") }}'.strip()
enable_device_hotplug = '{{ parameter_dict.get("enable-device-hotplug") }}'.lower()
......
......@@ -87,7 +87,7 @@ update-command = ${:command}
recipe = slapos.cookbook:wrapper
command-line =
${monitor-directory:bin}/python {{ monitor_collect_csv_dump }} --output_folder ${monitor-directory:consumption}
wrapper-path = ${monitor-directory:reports}/monitor-collect-csv-dump
wrapper-path = ${monitor-directory:bin}/monitor-collect-csv-dump
[monitor-check-memory-usage]
recipe = slapos.cookbook:wrapper
......
......@@ -28,7 +28,7 @@ mode = 0644
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-monitor.cfg.jinja2
destination = ${buildout:directory}/template-base-monitor.cfg
md5sum = ef3297619e1fc2a5a8d1b0546c1a0db2
md5sum = 2d9436dd6b116ee2e7cc7b30a6305475
mode = 0644
[template-monitor-distributor]
......
......@@ -18,11 +18,11 @@ md5sum = f0cab61c7b8478afb8b676fc725d50d5
[template-runner]
filename = instance-runner.cfg
md5sum = d9096d49eda70f3aa02c44615077f6c9
md5sum = a897ae4e90696516c4a6f831999f2c34
[template-runner-import-script]
filename = template/runner-import.sh.jinja2
md5sum = ed2e08c07a6727b2012f15da67c0705d
md5sum = ed6dc50713c14e2527b9958d98674eed
[instance-runner-import]
filename = instance-runner-import.cfg.in
......@@ -30,7 +30,7 @@ md5sum = 1ed9526a6e5ac9a80e5b3add2d0a88fe
[instance-runner-export]
filename = instance-runner-export.cfg.in
md5sum = 8132130c89896c2d30a08f3b3a7000ff
md5sum = 7f87e6d220934eb13ab2b5d67dca8922
[template-resilient]
filename = instance-resilient.cfg.jinja2
......
......@@ -123,7 +123,7 @@ configuration-file-path = ${buildout:directory}/knowledge0.cfg
[monitor-check-resilient-feed-file]
recipe = slapos.recipe.template:jinja2
template = {{ monitor_check_resilient_feed_template_path }}
rendered = ${monitor-directory:reports}/check-create-resilient-feed-files
rendered = ${monitor-directory:bin}/check-create-resilient-feed-files
mode = 700
context =
key input_feed_directory directory:notifier-feeds
......
......@@ -884,7 +884,7 @@ configuration-file-path = $${buildout:directory}/knowledge0.cfg
[monitor-check-webrunner-internal-instance]
recipe = slapos.recipe.template:jinja2
template = ${monitor-check-webrunner-internal-instance:location}/${monitor-check-webrunner-internal-instance:filename}
rendered = $${monitor-directory:reports}/$${:filename}
rendered = $${monitor-directory:bin}/$${:filename}
filename = monitor-check-webrunner-internal-instance
mode = 0744
......
......@@ -150,10 +150,18 @@ if [ ! -s "$DATABASE" ]; then
echo 0 > $RESTORE_EXIT_CODE_FILE
exit 0
fi
# Slap proxy table contain version number, find the table name dynamically.
# This is known to work with version 11 or 12 of tables, but it will probably
# work with earlier versions as well.
DB_PARTITION_TABLE=$(db_query ".table partition__")
DB_PARTITION_NETWORK_TABLE=$(db_query ".table partition\_network__")
DB_SOFTWARE_TABLE=$(db_query ".table software__")
# Change slapproxy database to point instances to new software release
# XXX hardcoded
PARTITION=$(basename $HOME)
OLD_SOFTWARE_RELEASE=$(db_query "select software_release from partition11 where reference='slappart0';")
OLD_SOFTWARE_RELEASE=$(db_query "select software_release from $DB_PARTITION_TABLE where reference='slappart0';")
SOFTWARE_RELEASE=$({{ sys.executable }} - $OLD_SOFTWARE_RELEASE $PARTITION <<EOF
if 1:
import os, re, sys
......@@ -167,15 +175,15 @@ if 1:
EOF
)
db_query "update partition11 set software_release='$SOFTWARE_RELEASE' where software_release NOT NULL;"
db_query "update software11 set url='$SOFTWARE_RELEASE' where url='$OLD_SOFTWARE_RELEASE';" || db_query "delete from software11 where url='$OLD_SOFTWARE_RELEASE';"
db_query "update $DB_PARTITION_TABLE set software_release='$SOFTWARE_RELEASE' where software_release NOT NULL;"
db_query "update $DB_SOFTWARE_TABLE set url='$SOFTWARE_RELEASE' where url='$OLD_SOFTWARE_RELEASE';" || db_query "delete from $DB_SOFTWARE_TABLE where url='$OLD_SOFTWARE_RELEASE';"
# Change slapproxy database to have all instances stopped
db_query "update partition11 set requested_state='stopped';"
db_query "update $DB_PARTITION_TABLE set requested_state='stopped';"
# Change slapproxy database to get correct IPs
IPV4='{{ ipv4 }}'
IPV6='{{ ipv6 }}'
db_query "update partition_network11 set address='$IPV4' where netmask='255.255.255.255';"
db_query "update partition_network11 set address='$IPV6' where netmask='ffff:ffff:ffff::';"
db_query "update $DB_PARTITION_NETWORK_TABLE set address='$IPV4' where netmask='255.255.255.255';"
db_query "update $DB_PARTITION_NETWORK_TABLE set address='$IPV6' where netmask='ffff:ffff:ffff::';"
MASTERURL='http://{{ ipv4 }}:{{ proxy_port }}'
......@@ -189,7 +197,7 @@ SLAPGRIDCPLOG='{{ supervisord["slapgrid-cp-log"] }}'
contain_software_release=0
SOFTWARE_RELEASES_COUNT=$("$SQLITE3" "$DATABASE" 'SELECT count(1) FROM software11 WHERE url != "";')
SOFTWARE_RELEASES_COUNT=$(db_query "SELECT count(1) FROM $DB_SOFTWARE_TABLE WHERE url != '';")
if [ $SOFTWARE_RELEASES_COUNT -gt 0 ]; then
contain_software_release=1
fi
......@@ -243,7 +251,7 @@ done
# Change back slapproxy database to have all instances started
log_message "Set instances as to start after takeover..."
db_query "update partition11 set requested_state='started';"
db_query "update $DB_PARTITION_TABLE set requested_state='started';"
# Write exit code to an arbitrary file that will be checked by promise/monitor
log_message "Writing status file... End"
......
......@@ -44,7 +44,6 @@ extends =
../../component/stunnel/buildout.cfg
../../component/subversion/buildout.cfg
../../component/tesseract/buildout.cfg
../../component/w3-validator/buildout.cfg
../../component/w3m/buildout.cfg
../../component/xorg/buildout.cfg
../../component/poppler/buildout.cfg
......@@ -92,7 +91,6 @@ parts +=
libdmtx
dmtx-utils
kumo
w3-validator
tesseract
tesseract-eng-traineddata
tesseract-osd-traineddata
......@@ -420,7 +418,6 @@ initialization =
glob.glob(os.path.join(x, 'Products', '*', 'tests'))
for x in os.getenv('INSERT_PRODUCTS_PATH', '').split(os.pathsep)), [])
os.environ['PATH'] = '${jsl:location}/bin:%s' % os.environ['PATH']
os.environ['CGI_PATH'] = '${w3-validator:location}/httpd/cgi-bin'
[test_suite_runner]
# XXX: Workaround for fact ERP5Type is not an distribution and does not
......@@ -746,6 +743,9 @@ cloudpickle = 0.5.3
dask = 0.18.1
toolz = 0.9.0
# Re-add for as it is required to be there for uninstallation
erp5.recipe.w3validator = 1.0.2
# Required by:
# Products.CMFCore==2.2.10
Products.ZSQLMethods = 2.13.5
......
......@@ -74,7 +74,7 @@ md5sum = d41d8cd98f00b204e9800998ecf8427e
[template-erp5]
filename = instance-erp5.cfg.in
md5sum = eefce8adf37430b63559299699732b31
md5sum = acd108217ff7a1b02b338c01c9c4aa27
[template-zeo]
filename = instance-zeo.cfg.in
......@@ -82,7 +82,7 @@ md5sum = d400c3d449ce437a0ded77ee3d5c5df2
[template-zope]
filename = instance-zope.cfg.in
md5sum = 36f72fcff7b2ebed8343f4ec3f3568f8
md5sum = 1a06ffa9f54e59604d4fedac0f6a99e7
[template-balancer]
filename = instance-balancer.cfg.in
......
......@@ -132,6 +132,8 @@ config-saucelabs-dict = {{ dumps(slapparameter_dict.get('saucelabs-dict', {})) }
config-hosts-dict = {{ dumps(slapparameter_dict.get('hosts-dict', {})) }}
config-hostalias-dict = {{ dumps(slapparameter_dict.get('hostalias-dict', {})) }}
config-id-store-interval = {{ dumps(slapparameter_dict.get('id-store-interval')) }}
config-zope-longrequest-logger-error-threshold = {{ dumps(monitor_dict.get('zope-longrequest-logger-error-threshold', 20)) }}
config-zope-longrequest-logger-maximum-delay = {{ dumps(monitor_dict.get('zope-longrequest-logger-maximum-delay', 0)) }}
config-inituser-login = {{ dumps(inituser_login) }}
config-inituser-password = ${publish-early:inituser-password}
config-kumofs-url = ${request-memcached-persistent:connection-url}
......
......@@ -387,6 +387,20 @@ path = ${directory:promises}/{{ zope_tunnel_base_name }}
{% do publish_list.append((ipv4 ~ ":" ~ port, thread_amount, webdav)) -%}
{% endif -%}
{% if longrequest_logger_interval > 0 -%}
[{{ section('promise-check-' ~name ~ '-longrequest-error-log') }}]
recipe = slapos.cookbook:promise.plugin
eggs =
slapos.toolbox
output = ${directory:plugins}/{{'check-' ~ name ~ '-longrequest-error-log.py'}}
content =
from slapos.promise.plugin.check_error_on_zope_longrequest_log import RunPromise
config-log-file = {{ '${' ~ conf_parameter_name ~ ':longrequest-logger-file}' }}
config-error-threshold = {{ slapparameter_dict["zope-longrequest-logger-error-threshold"] }}
config-maximum-delay = {{ slapparameter_dict["zope-longrequest-logger-maximum-delay"] }}
mode = 600
{% endif -%}
[{{ section('logrotate-entry-' ~ name) }}]
< = logrotate-entry-base
name = {{ name }}
......
......@@ -14,4 +14,4 @@
# not need these here).
[monitor2-template]
filename = instance-monitor.cfg.jinja2.in
md5sum = a8ae4a8685fd6d7263bf6f6db02fbdc5
md5sum = 74bc641e97aa07a0cb1fb442c5ede183
......@@ -28,8 +28,6 @@ monitor = ${:srv}/monitor
recipe = slapos.cookbook:mkdirectory
bin = ${directory:bin}
etc = ${directory:etc}
promises = ${directory:etc}/monitor-promise
reports = ${directory:etc}/monitor-report
pids = ${directory:run}/monitor
webdav = ${directory:monitor}/webdav
public = ${directory:monitor}/public
......@@ -53,12 +51,18 @@ recipe = slapos.cookbook:certificate_authority
openssl-binary = {{ openssl_executable_location }}
ca-dir = ${ca-directory:root}
requests-directory = ${ca-directory:requests}
wrapper = ${directory:services}/certificate_authority
wrapper = ${directory:bin}/certificate_authority
ca-private = ${ca-directory:private}
ca-certs = ${ca-directory:certs}
ca-newcerts = ${ca-directory:newcerts}
ca-crl = ${ca-directory:crl}
[certificate-authority-service]
recipe = slapos.cookbook:wrapper
command-line = ${certificate-authority:wrapper}
wrapper-path = ${directory:services}/certificate_authority
hash-files = ${buildout:directory}/software_release/buildout.cfg
[ca-monitor-httpd]
<= certificate-authority
recipe = slapos.cookbook:certificate_authority.request
......@@ -406,7 +410,7 @@ depends =
${monitor-collect-cron-entry:name}
${cron-entry-logrotate:name}
${logrotate-entry-cron:name}
${certificate-authority:wrapper}
${certificate-authority-service:wrapper-path}
${monitor-conf:rendered}
${start-monitor:wrapper-path}
${ca-monitor-httpd-service:wrapper-path}
......
......@@ -26,7 +26,7 @@ md5sum = c6c11db5372150019debb1ce519b907d
[template-pull-backup]
filename = instance-pull-backup.cfg.in
md5sum = 98d7e7c60e090dd3a460ca0410a194ec
md5sum = 4cff5dc82428256929ecbf21cd918c00
[template-replicated]
filename = template-replicated.cfg.in
......
......@@ -330,7 +330,7 @@ private-path-list +=
[monitor-check-resilient-feed-file]
recipe = slapos.recipe.template:jinja2
template = ${template-monitor-check-resilient-feed:location}/${template-monitor-check-resilient-feed:filename}
rendered = $${monitor-directory:reports}/check-create-resilient-feed-files
rendered = $${monitor-directory:bin}/check-create-resilient-feed-files
mode = 700
context =
key input_feed_directory directory:notifier-feeds
......
......@@ -142,7 +142,7 @@ slapos.libnetworkcache = 0.16
slapos.rebootstrap = 4.1
slapos.recipe.build = 0.40
slapos.recipe.cmmi = 0.10
slapos.toolbox = 0.84
slapos.toolbox = 0.85
stevedore = 1.21.0
subprocess32 = 3.5.3
unicodecsv = 0.14.1
......
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