Commit 49650a85 authored by Alain Takoudjou's avatar Alain Takoudjou

Update Release Candidate

parents 0d06f59a f047919f
...@@ -33,5 +33,5 @@ environment = ...@@ -33,5 +33,5 @@ environment =
[ghostscript-9] [ghostscript-9]
<= ghostscript-common <= ghostscript-common
url = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs920/ghostscript-9.20.tar.xz url = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs925/ghostscript-9.25.tar.xz
md5sum = 8f3d383d48da22345937b66b01ab2960 md5sum = d5ac3f3d76cf82a549bafdf86d58395b
...@@ -18,8 +18,8 @@ parts = ...@@ -18,8 +18,8 @@ parts =
[git] [git]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://www.kernel.org/pub/software/scm/git/git-2.11.0.tar.xz url = https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.17.1.tar.xz
md5sum = dd4e3360e28aec5bb902fb34dd7fce3b md5sum = 5179245515c637357b4a134e8d4e9a6f
configure-options = configure-options =
--with-curl=${curl:location} --with-curl=${curl:location}
--with-openssl=${openssl:location} --with-openssl=${openssl:location}
......
...@@ -35,8 +35,8 @@ make-targets= cd src && ./make.bash && cp -alf .. ${:location} ...@@ -35,8 +35,8 @@ make-targets= cd src && ./make.bash && cp -alf .. ${:location}
[golang19] [golang19]
<= golang-common <= golang-common
url = https://dl.google.com/go/go1.9.4.src.tar.gz url = https://dl.google.com/go/go1.9.7.src.tar.gz
md5sum = 6816441fd6680c63865cdd5cb8bc1960 md5sum = 3c2cf876ed6612a022574a565206c6ea
# go1.9 needs go1.4 to bootstrap # go1.9 needs go1.4 to bootstrap
environment-extra = environment-extra =
......
...@@ -10,3 +10,4 @@ md5sum = 085b6aa253e0f91cae70b3cdbe8c1ac2 ...@@ -10,3 +10,4 @@ md5sum = 085b6aa253e0f91cae70b3cdbe8c1ac2
configure-options = configure-options =
--disable-static --disable-static
--enable-unicode-properties --enable-unicode-properties
--enable-jit
Generally things to be done with ``caddy-frontend``: Generally things to be done with ``caddy-frontend``:
* tests: drop APACHE switches, as it is not taken care anymore
* tests: add assertion with results of promises in etc/promise for each partition * tests: add assertion with results of promises in etc/promise for each partition
* check the whole frontend slave snippet with ``caddy -validate`` during buildout run, and reject if does not pass validation * check the whole frontend slave snippet with ``caddy -validate`` during buildout run, and reject if does not pass validation
* ``apache-ca-certificate`` shall be merged with ``apache-certificate`` * ``apache-ca-certificate`` shall be merged with ``apache-certificate``
......
...@@ -26,7 +26,7 @@ md5sum = 750e2b1c922bf14511a3bc8a42468b1b ...@@ -26,7 +26,7 @@ md5sum = 750e2b1c922bf14511a3bc8a42468b1b
[template-apache-replicate] [template-apache-replicate]
filename = instance-apache-replicate.cfg.in filename = instance-apache-replicate.cfg.in
md5sum = e5e537052c533c6d6f1c2197428f77fd md5sum = 1576859772052bcb85ff2b5a7b786410
[template-slave-list] [template-slave-list]
filename = templates/apache-custom-slave-list.cfg.in filename = templates/apache-custom-slave-list.cfg.in
...@@ -38,7 +38,7 @@ md5sum = 54ae95597a126ae552c3a913ddf29e5e ...@@ -38,7 +38,7 @@ md5sum = 54ae95597a126ae552c3a913ddf29e5e
[template-replicate-publish-slave-information] [template-replicate-publish-slave-information]
filename = templates/replicate-publish-slave-information.cfg.in filename = templates/replicate-publish-slave-information.cfg.in
md5sum = 6a308c29b54d53cfd82ae23ba77a35dd md5sum = 01efde8febafcff6dde2ebb43e75a9e4
[template-caddy-frontend-configuration] [template-caddy-frontend-configuration]
filename = templates/Caddyfile.in filename = templates/Caddyfile.in
......
...@@ -66,24 +66,25 @@ context = ...@@ -66,24 +66,25 @@ context =
{% set authorized_slave_string = slapparameter_dict.pop('-frontend-authorized-slave-string', '') %} {% set authorized_slave_string = slapparameter_dict.pop('-frontend-authorized-slave-string', '') %}
{% set authorized_slave_list = [] %} {% set authorized_slave_list = [] %}
{% set rejected_slave_list = [] %} {% set rejected_slave_dict = {} %}
{% set used_host_list = [] %} {% set used_host_list = [] %}
{% set unauthorised_message = 'slave not authorised' %}
{% for slave in slave_instance_list %} {% for slave in slave_instance_list %}
{% set slave_dict = {'state': True} %} {% set slave_error_list = [] %}
{# BBB: apache_custom_https AND apache_custom_http #} {# BBB: apache_custom_https AND apache_custom_http #}
{% set custom_domain = slave.get('custom_domain') %} {% set custom_domain = slave.get('custom_domain') %}
{% if custom_domain and custom_domain in used_host_list %} {% if custom_domain and custom_domain in used_host_list %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('custom_domain %r clashes' % (custom_domain,)) %}
{% else %} {% else %}
{% do used_host_list.append(custom_domain) %} {% do used_host_list.append(custom_domain) %}
{% endif %} {% endif %}
{% if slave.get('server-alias') %} {% if slave.get('server-alias') %}
{% for slave_alias in slave['server-alias'].split() %} {% for slave_alias in slave['server-alias'].split() %}
{% if not validators.domain(slave_alias) %} {% if not validators.domain(slave_alias) %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('server-alias %r not valid' % (slave_alias,)) %}
{% else %} {% else %}
{% if slave_alias in used_host_list %} {% if slave_alias in used_host_list %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('server-alias %r clashes' % (slave_alias,)) %}
{% else %} {% else %}
{% do used_host_list.append(slave_alias) %} {% do used_host_list.append(slave_alias) %}
{% endif %} {% endif %}
...@@ -93,20 +94,22 @@ context = ...@@ -93,20 +94,22 @@ context =
{% for key in ['caddy_custom_http', 'caddy_custom_https', 'apache_custom_http', 'apache_custom_https'] %} {% for key in ['caddy_custom_http', 'caddy_custom_https', 'apache_custom_http', 'apache_custom_https'] %}
{% if slave.get(key) %} {% if slave.get(key) %}
{% if not slave.get('slave_reference') in authorized_slave_string %} {% if not slave.get('slave_reference') in authorized_slave_string %}
{% do slave_dict.__setitem__('state', False) %} {% if not unauthorised_message in slave_error_list %}
{% do slave_error_list.append(unauthorised_message) %}
{% endif %}
{% elif subprocess_module.call([caddy_custom_http_validator, slave[key]]) == 1 %} {% elif subprocess_module.call([caddy_custom_http_validator, slave[key]]) == 1 %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('slave %s configuration invalid' % (key,)) %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endfor %} {# for key in ['caddy_custom_http', 'caddy_custom_https', 'apache_custom_http', 'apache_custom_https'] #} {% endfor %} {# for key in ['caddy_custom_http', 'caddy_custom_https', 'apache_custom_http', 'apache_custom_https'] #}
{% if slave.get('url') %} {% if slave.get('url') %}
{% if subprocess_module.call([caddy_backend_url_validator, slave['url']]) == 1 %} {% if subprocess_module.call([caddy_backend_url_validator, slave['url']]) == 1 %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('slave url %r invalid' % (slave['url'],)) %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if slave.get('https-url') %} {% if slave.get('https-url') %}
{% if subprocess_module.call([caddy_backend_url_validator, slave['https-url']]) == 1 %} {% if subprocess_module.call([caddy_backend_url_validator, slave['https-url']]) == 1 %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('slave https-url %r invalid' % (slave['https-url'],)) %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if slave.get('ssl_key') and slave.get('ssl_crt') %} {% if slave.get('ssl_key') and slave.get('ssl_crt') %}
...@@ -115,18 +118,18 @@ context = ...@@ -115,18 +118,18 @@ context =
{% set key_modulus = key_popen.communicate(slave['ssl_key'])[0] | trim %} {% set key_modulus = key_popen.communicate(slave['ssl_key'])[0] | trim %}
{% set crt_modulus = crt_popen.communicate(slave['ssl_crt'])[0] | trim %} {% set crt_modulus = crt_popen.communicate(slave['ssl_crt'])[0] | trim %}
{% if not key_modulus or key_modulus != crt_modulus %} {% if not key_modulus or key_modulus != crt_modulus %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('slave ssl_key and ssl_crt does not match') %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if slave.get('custom_domain') %} {% if slave.get('custom_domain') %}
{% if not validators.domain(slave['custom_domain']) %} {% if not validators.domain(slave['custom_domain']) %}
{% do slave_dict.__setitem__('state', False) %} {% do slave_error_list.append('custom_domain %r invalid' % (slave['custom_domain'],)) %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if slave_dict['state'] %} {% if len(slave_error_list) == 0 %}
{% do authorized_slave_list.append(slave) %} {% do authorized_slave_list.append(slave) %}
{% else %} {% else %}
{% do rejected_slave_list.append(slave.get('slave_reference')) %} {% do rejected_slave_dict.__setitem__(slave.get('slave_reference'), slave_error_list) %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
...@@ -177,8 +180,8 @@ recipe = slapos.cookbook:publish ...@@ -177,8 +180,8 @@ recipe = slapos.cookbook:publish
domain = {{ slapparameter_dict.get('domain') }} domain = {{ slapparameter_dict.get('domain') }}
slave-amount = {{ slave_instance_list | length }} slave-amount = {{ slave_instance_list | length }}
accepted-slave-amount = {{ authorized_slave_list | length }} accepted-slave-amount = {{ authorized_slave_list | length }}
rejected-slave-amount = {{ rejected_slave_list | length }} rejected-slave-amount = {{ rejected_slave_dict | length }}
rejected-slave-list = {{ json_module.dumps(rejected_slave_list) }} rejected-slave-dict = {{ dumps(json_module.dumps(rejected_slave_dict)) }}
#---------------------------- #----------------------------
#-- #--
...@@ -191,6 +194,11 @@ replicate = ${dynamic-publish-slave-information:rendered} ...@@ -191,6 +194,11 @@ replicate = ${dynamic-publish-slave-information:rendered}
custom-personal = ${dynamic-publish-slave-information:rendered} custom-personal = ${dynamic-publish-slave-information:rendered}
custom-group = ${dynamic-publish-slave-information:rendered} custom-group = ${dynamic-publish-slave-information:rendered}
[rejected-slave-information]
{% for slave_id, rejected_list in rejected_slave_dict.iteritems() %}
{{ slave_id }} = {{ dumps(json_module.dumps(rejected_list)) }}
{% endfor %}
[slave-information] [slave-information]
{% for frontend_section in frontend_section_list %} {% for frontend_section in frontend_section_list %}
{{ frontend_section }} = {{ "${%s:connection-slave-instance-information-list}" % frontend_section }} {{ frontend_section }} = {{ "${%s:connection-slave-instance-information-list}" % frontend_section }}
...@@ -203,6 +211,7 @@ filename = dynamic-publish-slave-information.cfg ...@@ -203,6 +211,7 @@ filename = dynamic-publish-slave-information.cfg
extensions = jinja2.ext.do extensions = jinja2.ext.do
extra-context = extra-context =
section slave_information slave-information section slave_information slave-information
section rejected_slave_information rejected-slave-information
[monitor-conf-parameters] [monitor-conf-parameters]
monitor-url-list += monitor-url-list +=
......
...@@ -26,12 +26,12 @@ ...@@ -26,12 +26,12 @@
"description": "User to access the monitor", "description": "User to access the monitor",
"type": "string" "type": "string"
}, },
"reject-slave-amount": { "rejected-slave-amount": {
"description": "Rejected Amount of Slaves allocated to the Instance which are not deployed", "description": "Rejected Amount of Slaves allocated to the Instance which are not deployed",
"type": "integer" "type": "integer"
}, },
"rejected-slave-list": { "rejected-slave-dict": {
"description": "List of slave instances references which are rejected", "description": "Dict of slaves which were rejected. Keys are slave references, values are lists of errors on slaves.",
"type": "array" "type": "array"
}, },
"slave-amount": { "slave-amount": {
......
...@@ -29,6 +29,10 @@ ...@@ -29,6 +29,10 @@
"url": { "url": {
"description": "Default URL provided", "description": "Default URL provided",
"type": "string" "type": "string"
},
"request-error-list": {
"description": "In case if slave has been rejected by master or has error in the request, the list contains information about each problem",
"type": "string"
} }
}, },
"type": "object" "type": "object"
......
...@@ -27,6 +27,13 @@ ...@@ -27,6 +27,13 @@
{% endfor %} {% endfor %}
{% endfor %} {% endfor %}
{% for slave_reference, rejected_info_list in rejected_slave_information.iteritems() %}
{% if slave_reference not in slave_information_dict %}
{% do slave_information_dict.__setitem__(slave_reference, {}) %}
{% endif %}
{% do slave_information_dict[slave_reference].__setitem__('request-error-list', rejected_info_list) %}
{% endfor %}
# Publish information for each slave # Publish information for each slave
{% for slave_reference, slave_information in slave_information_dict.iteritems() %} {% for slave_reference, slave_information in slave_information_dict.iteritems() %}
{% set publish_section_title = 'publish-%s' % slave_reference %} {% set publish_section_title = 'publish-%s' % slave_reference %}
...@@ -34,9 +41,12 @@ ...@@ -34,9 +41,12 @@
[{{ publish_section_title }}] [{{ publish_section_title }}]
recipe = slapos.cookbook:publish recipe = slapos.cookbook:publish
-slave-reference = {{ slave_reference }} -slave-reference = {{ slave_reference }}
log-access-url = {{ json_module.dumps(slave_information.pop('log-access-urls', 1000)) }} {% set log_access_url = slave_information.pop('log-access-urls', None) %}
{% if log_access_url %}
log-access-url = {{ dumps(json_module.dumps(log_access_url)) }}
{% endif %}
{% for key, value in slave_information.iteritems() %} {% for key, value in slave_information.iteritems() %}
{{ key }} = {{ value }} {{ key }} = {{ dumps(value) }}
{% endfor %} {% endfor %}
{% endfor %} {% endfor %}
...@@ -45,4 +55,4 @@ extends = {{ common_profile }} ...@@ -45,4 +55,4 @@ extends = {{ common_profile }}
parts = parts =
{% for part in part_list %} {% for part in part_list %}
{{ ' %s' % part }} {{ ' %s' % part }}
{% endfor %} {% endfor %}
\ No newline at end of file
...@@ -36,11 +36,12 @@ ...@@ -36,11 +36,12 @@
import glob import glob
import os import os
import requests import requests
import httplib
from requests_toolbelt.adapters import source from requests_toolbelt.adapters import source
import json import json
import multiprocessing import multiprocessing
import subprocess import subprocess
from unittest import skipIf, skip from unittest import skip
import ssl import ssl
from BaseHTTPServer import HTTPServer from BaseHTTPServer import HTTPServer
from BaseHTTPServer import BaseHTTPRequestHandler from BaseHTTPServer import BaseHTTPRequestHandler
...@@ -63,116 +64,6 @@ MONITOR_F1_HTTPD_PORT = '13001' ...@@ -63,116 +64,6 @@ MONITOR_F1_HTTPD_PORT = '13001'
MONITOR_F2_HTTPD_PORT = '13002' MONITOR_F2_HTTPD_PORT = '13002'
if os.environ['TEST_SR'].endswith('caddy-frontend/software.cfg'):
IS_CADDY = True
else:
IS_CADDY = False
# response_code difference
if IS_CADDY:
no_backend_response_code = 404
else:
no_backend_response_code = 502
caddy_custom_https = '''# caddy_custom_https_filled_in_accepted
https://caddycustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
caddy_custom_http = '''# caddy_custom_http_filled_in_accepted
http://caddycustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
# apache_custom_http[s] difference
if IS_CADDY:
LOG_REGEXP = '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} SOME_REMOTE_USER ' \
'\[\d{2}\/.{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2} \+\d{4}\] ' \
'"GET \/test-path HTTP\/1.1" 404 \d+ "-" "python-requests.*" \d+'
apache_custom_https = '''# apache_custom_https_filled_in_accepted
https://apachecustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
apache_custom_http = '''# apache_custom_http_filled_in_accepted
http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
else:
LOG_REGEXP = '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} - - ' \
'\[\d{2}\/.{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2} \+\d{4}\] ' \
'"GET \/test-path HTTP\/1.1" 502 \d+ "-" "python-requests.*" \d+'
apache_custom_https = '''# apache_custom_https_filled_in_accepted
ServerName apachecustomhttpsaccepted.example.com
ServerAlias apachecustomhttpsaccepted.example.com
SSLEngine on
SSLProxyEngine on
ErrorLog %%(error_log)s
LogLevel notice
CustomLog %%(access_log)s combined
# Rewrite part
ProxyPreserveHost On
ProxyTimeout 600
RewriteEngine On
RewriteRule ^/(.*)$ %(url)s/$1 [L,P]
'''
apache_custom_http = '''# apache_custom_http_filled_in_accepted
ServerName apachecustomhttpsaccepted.example.com
ServerAlias apachecustomhttpsaccepted.example.com
ErrorLog %%(error_log)s
LogLevel notice
CustomLog %%(access_log)s combined
# Rewrite part
ProxyPreserveHost On
ProxyTimeout 600
RewriteEngine On
RewriteRule ^/(.*)$ %(url)s/$1 [L,P]
'''
# for development: debugging logs and install Ctrl+C handler # for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'): if os.environ.get('DEBUG'):
import logging import logging
...@@ -212,7 +103,7 @@ class TestDataMixin(object): ...@@ -212,7 +103,7 @@ class TestDataMixin(object):
in self.getSupervisorRPCServer().supervisor.getAllProcessInfo()])) in self.getSupervisorRPCServer().supervisor.getAllProcessInfo()]))
def assertTestData(self, runtime_data): def assertTestData(self, runtime_data):
filename = '%s-%s.txt' % (self.id(), self.frontend_type) filename = '%s-%s.txt' % (self.id(), 'CADDY')
test_data_file = os.path.join( test_data_file = os.path.join(
os.path.dirname(os.path.realpath(__file__)), 'test_data', filename) os.path.dirname(os.path.realpath(__file__)), 'test_data', filename)
...@@ -291,7 +182,6 @@ class TestDataMixin(object): ...@@ -291,7 +182,6 @@ class TestDataMixin(object):
'monitor/monitor-collect.pid', 'monitor/monitor-collect.pid',
]) ])
@skipIf(not IS_CADDY, 'Feature not needed for Apache')
def test_supervisor_state(self): def test_supervisor_state(self):
# give a chance for etc/run scripts to finish # give a chance for etc/run scripts to finish
time.sleep(1) time.sleep(1)
...@@ -300,8 +190,6 @@ class TestDataMixin(object): ...@@ -300,8 +190,6 @@ class TestDataMixin(object):
class HttpFrontendTestCase(SlapOSInstanceTestCase): class HttpFrontendTestCase(SlapOSInstanceTestCase):
frontend_type = 'CADDY' if IS_CADDY else 'APACHE'
@classmethod @classmethod
def getSoftwareURLList(cls): def getSoftwareURLList(cls):
return [os.path.realpath(os.environ['TEST_SR'])] return [os.path.realpath(os.environ['TEST_SR'])]
...@@ -374,7 +262,7 @@ class TestMasterRequest(HttpFrontendTestCase, TestDataMixin): ...@@ -374,7 +262,7 @@ class TestMasterRequest(HttpFrontendTestCase, TestDataMixin):
'accepted-slave-amount': '0', 'accepted-slave-amount': '0',
'rejected-slave-amount': '0', 'rejected-slave-amount': '0',
'slave-amount': '0', 'slave-amount': '0',
'rejected-slave-list': '[]'}, 'rejected-slave-dict': '{}'},
parameter_dict parameter_dict
) )
...@@ -408,7 +296,7 @@ class TestMasterRequestDomain(HttpFrontendTestCase, TestDataMixin): ...@@ -408,7 +296,7 @@ class TestMasterRequestDomain(HttpFrontendTestCase, TestDataMixin):
'accepted-slave-amount': '0', 'accepted-slave-amount': '0',
'rejected-slave-amount': '0', 'rejected-slave-amount': '0',
'slave-amount': '0', 'slave-amount': '0',
'rejected-slave-list': '[]' 'rejected-slave-dict': '{}'
}, },
parameter_dict parameter_dict
) )
...@@ -576,6 +464,66 @@ class SlaveHttpFrontendTestCase(HttpFrontendTestCase): ...@@ -576,6 +464,66 @@ class SlaveHttpFrontendTestCase(HttpFrontendTestCase):
class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
caddy_custom_https = '''# caddy_custom_https_filled_in_accepted
https://caddycustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
caddy_custom_http = '''# caddy_custom_http_filled_in_accepted
http://caddycustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
apache_custom_https = '''# apache_custom_https_filled_in_accepted
https://apachecustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
apache_custom_http = '''# apache_custom_http_filled_in_accepted
http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
@classmethod @classmethod
def getInstanceParameterDict(cls): def getInstanceParameterDict(cls):
return { return {
...@@ -720,8 +668,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -720,8 +668,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
}, },
'apache_custom_http_s-accepted': { 'apache_custom_http_s-accepted': {
'url': cls.backend_url, 'url': cls.backend_url,
'apache_custom_https': apache_custom_https % dict(url=cls.backend_url), 'apache_custom_https': cls.apache_custom_https % dict(
'apache_custom_http': apache_custom_http % dict(url=cls.backend_url), url=cls.backend_url),
'apache_custom_http': cls.apache_custom_http % dict(
url=cls.backend_url),
}, },
'caddy_custom_http_s-rejected': { 'caddy_custom_http_s-rejected': {
'url': cls.backend_url, 'url': cls.backend_url,
...@@ -730,8 +680,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -730,8 +680,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
}, },
'caddy_custom_http_s-accepted': { 'caddy_custom_http_s-accepted': {
'url': cls.backend_url, 'url': cls.backend_url,
'caddy_custom_https': caddy_custom_https % dict(url=cls.backend_url), 'caddy_custom_https': cls.caddy_custom_https % dict(
'caddy_custom_http': caddy_custom_http % dict(url=cls.backend_url), url=cls.backend_url),
'caddy_custom_http': cls.caddy_custom_http % dict(
url=cls.backend_url),
}, },
'prefer-gzip-encoding-to-backend': { 'prefer-gzip-encoding-to-backend': {
'url': cls.backend_url, 'url': cls.backend_url,
...@@ -769,24 +721,16 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -769,24 +721,16 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
parameter_dict = self.computer_partition.getConnectionParameterDict() parameter_dict = self.computer_partition.getConnectionParameterDict()
self.assertKeyWithPop('monitor-setup-url', parameter_dict) self.assertKeyWithPop('monitor-setup-url', parameter_dict)
if IS_CADDY: expected_parameter_dict = {
expected_parameter_dict = { 'monitor-base-url': None,
'monitor-base-url': None, 'domain': 'example.com',
'domain': 'example.com', 'accepted-slave-amount': '33',
'accepted-slave-amount': '33', 'rejected-slave-amount': '2',
'rejected-slave-amount': '2', 'slave-amount': '35',
'slave-amount': '35', 'rejected-slave-dict':
'rejected-slave-list': '{"_apache_custom_http_s-rejected": ["slave not authorised"], '
'["_caddy_custom_http_s-rejected", "_apache_custom_http_s-rejected"]'} '"_caddy_custom_http_s-rejected": ["slave not authorised"]}'
else: }
expected_parameter_dict = {
'monitor-base-url': None,
'domain': 'example.com',
'accepted-slave-amount': '34',
'rejected-slave-amount': '1',
'slave-amount': '35',
'rejected-slave-list':
'["_apache_custom_http_s-rejected"]'}
self.assertEqual( self.assertEqual(
expected_parameter_dict, expected_parameter_dict,
...@@ -837,7 +781,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -837,7 +781,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
set([0]) set([0])
) )
@skipIf(not IS_CADDY, 'Will NOT be covered on apache-frontend')
def test_slave_partition_state(self): def test_slave_partition_state(self):
partition_path = self.getSlavePartitionPath() partition_path = self.getSlavePartitionPath()
self.assertTrue( self.assertTrue(
...@@ -873,7 +816,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -873,7 +816,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
# check that log file contains verbose log # check that log file contains verbose log
log_file = glob.glob( log_file = glob.glob(
...@@ -881,17 +824,22 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -881,17 +824,22 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.instance_path, '*', 'var', 'log', 'httpd', '_empty_access_log' self.instance_path, '*', 'var', 'log', 'httpd', '_empty_access_log'
))[0] ))[0]
log_regexp = '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} SOME_REMOTE_USER ' \
'\[\d{2}\/.{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2} \+\d{4}\] ' \
'"GET \/test-path HTTP\/1.1" 404 \d+ "-" '\
'"python-requests.*" \d+'
self.assertRegexpMatches( self.assertRegexpMatches(
open(log_file, 'r').read(), open(log_file, 'r').read(),
LOG_REGEXP) log_regexp)
result_http = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path') parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code) self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# check that 404 is as configured # check that 404 is as configured
result_missing = self.fakeHTTPSResult( result_missing = self.fakeHTTPSResult(
'forsuredoesnotexists.example.com', parameter_dict['public-ipv4'], '') 'forsuredoesnotexists.example.com', parameter_dict['public-ipv4'], '')
self.assertEqual(404, result_missing.status_code) self.assertEqual(httplib.NOT_FOUND, result_missing.status_code)
self.assertEqual( self.assertEqual(
"""<html> """<html>
<head> <head>
...@@ -968,7 +916,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -968,7 +916,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
'secured=value;secure, nonsecured=value' 'secured=value;secure, nonsecured=value'
) )
@skipIf(IS_CADDY, 'Feature postponed') @skip('Feature postponed')
def test_url_ipv6_access(self): def test_url_ipv6_access(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'url'].copy() 'url'].copy()
...@@ -1339,7 +1287,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1339,7 +1287,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
# merge with apache-certificate # merge with apache-certificate
raise NotImplementedError raise NotImplementedError
@skipIf(IS_CADDY, 'Feature postponed') @skip('Feature postponed')
def test_type_eventsource(self): def test_type_eventsource(self):
# Caddy: For event source, if I understand # Caddy: For event source, if I understand
# https://github.com/mholt/caddy/issues/1355 correctly, we could use # https://github.com/mholt/caddy/issues/1355 correctly, we could use
...@@ -1440,57 +1388,18 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1440,57 +1388,18 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
if IS_CADDY: self.assertEqual(
self.assertEqual( result.status_code,
result.status_code, httplib.NOT_IMPLEMENTED
501 )
)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(
result_http.status_code,
501
)
else:
self.assertEqualResultJson(result, 'Path', '/test-path')
try:
j = result.json()
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (result.text,))
self.assertFalse('remote_user' in j['Incoming Headers'].keys())
self.assertEqual(
result.headers['Content-Encoding'],
'gzip'
)
self.assertEqual(
result.headers['Set-Cookie'],
'secured=value;secure, nonsecured=value'
)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqualResultJson(result_http, 'Path', '/test-path')
try:
j = result_http.json()
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (result.text,))
self.assertFalse('remote_user' in j['Incoming Headers'].keys())
self.assertEqual( result_http = self.fakeHTTPResult(
result_http.headers['Content-Encoding'], parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
'gzip'
)
self.assertEqual( self.assertEqual(
result_http.headers['Set-Cookie'], result_http.status_code,
'secured=value;secure, nonsecured=value' httplib.NOT_IMPLEMENTED
) )
def test_ssl_proxy_verify_unverified(self): def test_ssl_proxy_verify_unverified(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
...@@ -1549,64 +1458,18 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1549,64 +1458,18 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
if IS_CADDY: self.assertEqual(
self.assertEqual( result.status_code,
result.status_code, httplib.NOT_IMPLEMENTED
501 )
)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(
result_http.status_code,
501
)
else:
self.assertEqualResultJson(result, 'Path', '/test-path')
headers = result.headers.copy()
self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers)
# drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None)
headers.pop('Content-Length', None)
headers.pop('Connection', None)
headers.pop('Keep-Alive', None)
self.assertEqual(
headers,
{'Age': '0', 'Content-type': 'application/json',
'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip',
'Set-Cookie': 'secured=value;secure, nonsecured=value'}
)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqualResultJson(result_http, 'Path', '/test-path')
headers = result_http.headers.copy()
self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers)
# drop keys appearing randomly in headers result_http = self.fakeHTTPResult(
headers.pop('Transfer-Encoding', None) parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
headers.pop('Content-Length', None)
headers.pop('Connection', None)
headers.pop('Keep-Alive', None)
self.assertEqual( self.assertEqual(
headers, result_http.status_code,
{'Age': '0', 'Content-type': 'application/json', httplib.NOT_IMPLEMENTED
'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', )
'Set-Cookie': 'secured=value;secure, nonsecured=value'}
)
def test_enable_cache_ssl_proxy_verify_unverified(self): def test_enable_cache_ssl_proxy_verify_unverified(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
...@@ -1665,42 +1528,18 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1665,42 +1528,18 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
if IS_CADDY: self.assertEqual(
self.assertEqual( result.status_code,
result.status_code, httplib.NOT_IMPLEMENTED
501 )
)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(
result_http.status_code,
501
)
else:
try:
j = result.json()
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (result.text,))
self.assertFalse('remote_user' in j['Incoming Headers'].keys())
self.assertEqualResultJson(
result,
'Path',
'/VirtualHostBase/https//typezopesslproxyverifysslproxycacrt.example'
'.com:443//VirtualHostRoot/test-path'
)
result = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path') parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqualResultJson( self.assertEqual(
result, result_http.status_code,
'Path', httplib.NOT_IMPLEMENTED
'/VirtualHostBase/http//typezopesslproxyverifysslproxycacrt.example' )
'.com:80//VirtualHostRoot/test-path'
)
def test_type_zope_ssl_proxy_verify_unverified(self): def test_type_zope_ssl_proxy_verify_unverified(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
...@@ -1756,11 +1595,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1756,11 +1595,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path') parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code) self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost # rewrite SR/bin/is-icmp-packet-lost
open( open(
...@@ -1799,11 +1638,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1799,11 +1638,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path') parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code) self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost # rewrite SR/bin/is-icmp-packet-lost
open( open(
...@@ -1842,11 +1681,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1842,11 +1681,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path') parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code) self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost # rewrite SR/bin/is-icmp-packet-lost
open( open(
...@@ -1893,6 +1732,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1893,6 +1732,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('Via', headers) self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers) self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers) self.assertKeyWithPop('Date', headers)
self.assertKeyWithPop('Age', headers)
# drop keys appearing randomly in headers # drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None) headers.pop('Transfer-Encoding', None)
...@@ -1902,7 +1742,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1902,7 +1742,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual( self.assertEqual(
headers, headers,
{'Age': '0', 'Content-type': 'application/json', {'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value', 'Set-Cookie': 'secured=value;secure, nonsecured=value',
'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'} 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'}
) )
...@@ -1986,6 +1826,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1986,6 +1826,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('Via', headers) self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers) self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers) self.assertKeyWithPop('Date', headers)
self.assertKeyWithPop('Age', headers)
# drop keys appearing randomly in headers # drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None) headers.pop('Transfer-Encoding', None)
...@@ -1995,7 +1836,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -1995,7 +1836,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual( self.assertEqual(
headers, headers,
{'Age': '0', 'Content-type': 'application/json', {'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value', 'Set-Cookie': 'secured=value;secure, nonsecured=value',
'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'} 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'}
) )
...@@ -2037,6 +1878,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -2037,6 +1878,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('Server', headers) self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers) self.assertKeyWithPop('Date', headers)
self.assertKeyWithPop('Age', headers)
# drop keys appearing randomly in headers # drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None) headers.pop('Transfer-Encoding', None)
...@@ -2046,12 +1888,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -2046,12 +1888,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual( self.assertEqual(
headers, headers,
{'Age': '0', 'Content-type': 'application/json', {'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value', 'Set-Cookie': 'secured=value;secure, nonsecured=value',
'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'} 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'}
) )
@skipIf(not IS_CADDY, 'Will NOT be fixed for apache-frontend')
def test_enable_http2_false(self): def test_enable_http2_false(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'enable-http2-false'] 'enable-http2-false']
...@@ -2228,7 +2069,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -2228,7 +2069,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
def test_apache_custom_http_s_rejected(self): def test_apache_custom_http_s_rejected(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'apache_custom_http_s-rejected'] 'apache_custom_http_s-rejected']
self.assertEqual({}, parameter_dict) self.assertEqual(
{
'request-error-list': '["slave not authorised"]'
},
parameter_dict)
slave_configuration_file_list = glob.glob(os.path.join( slave_configuration_file_list = glob.glob(os.path.join(
self.instance_path, '*', 'etc', '*slave-conf.d', '*.conf')) self.instance_path, '*', 'etc', '*slave-conf.d', '*.conf'))
# no configuration file contains provided custom http # no configuration file contains provided custom http
...@@ -2273,23 +2118,13 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -2273,23 +2118,13 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
headers.pop('Connection', None) headers.pop('Connection', None)
headers.pop('Keep-Alive', None) headers.pop('Keep-Alive', None)
if IS_CADDY: self.assertEqual(
self.assertEqual( headers,
headers, {
{ 'Content-type': 'application/json',
'Content-type': 'application/json', 'Set-Cookie': 'secured=value;secure, nonsecured=value'
'Set-Cookie': 'secured=value;secure, nonsecured=value' }
} )
)
else:
self.assertEqual(
headers,
{
'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip',
'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value'
}
)
result_http = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
'apachecustomhttpsaccepted.example.com', 'apachecustomhttpsaccepted.example.com',
...@@ -2309,11 +2144,14 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -2309,11 +2144,14 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
if 'apache_custom_http_filled_in_accepted' in open(q).read()] if 'apache_custom_http_filled_in_accepted' in open(q).read()]
self.assertEqual(1, len(configuration_file_with_custom_http_list)) self.assertEqual(1, len(configuration_file_with_custom_http_list))
@skipIf(not IS_CADDY, 'Feature not applicable')
def test_caddy_custom_http_s_rejected(self): def test_caddy_custom_http_s_rejected(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'caddy_custom_http_s-rejected'] 'caddy_custom_http_s-rejected']
self.assertEqual({}, parameter_dict) self.assertEqual(
{
'request-error-list': '["slave not authorised"]'
},
parameter_dict)
slave_configuration_file_list = glob.glob(os.path.join( slave_configuration_file_list = glob.glob(os.path.join(
self.instance_path, '*', 'etc', '*slave-conf.d', '*.conf')) self.instance_path, '*', 'etc', '*slave-conf.d', '*.conf'))
# no configuration file contains provided custom http # no configuration file contains provided custom http
...@@ -2327,7 +2165,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -2327,7 +2165,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
if 'caddy_custom_http_filled_in_rejected' in open(q).read()] if 'caddy_custom_http_filled_in_rejected' in open(q).read()]
self.assertEqual([], configuration_file_with_custom_http_list) self.assertEqual([], configuration_file_with_custom_http_list)
@skipIf(not IS_CADDY, 'Feature not applicable')
def test_caddy_custom_http_s_accepted(self): def test_caddy_custom_http_s_accepted(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'caddy_custom_http_s-accepted'] 'caddy_custom_http_s-accepted']
...@@ -2486,7 +2323,6 @@ class TestReplicateSlave(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -2486,7 +2323,6 @@ class TestReplicateSlave(SlaveHttpFrontendTestCase, TestDataMixin):
2, len(slave_configuration_file_list), slave_configuration_file_list) 2, len(slave_configuration_file_list), slave_configuration_file_list)
@skipIf(not IS_CADDY, 'Will NOT be fixed for apache-frontend')
class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase, class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
TestDataMixin): TestDataMixin):
@classmethod @classmethod
...@@ -2580,7 +2416,6 @@ class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase, ...@@ -2580,7 +2416,6 @@ class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
isHTTP2(parameter_dict['domain'], parameter_dict['public-ipv4'])) isHTTP2(parameter_dict['domain'], parameter_dict['public-ipv4']))
@skipIf(not IS_CADDY, 'Will NOT be fixed for apache-frontend')
class TestEnableHttp2ByDefaultDefaultSlave(SlaveHttpFrontendTestCase, class TestEnableHttp2ByDefaultDefaultSlave(SlaveHttpFrontendTestCase,
TestDataMixin): TestDataMixin):
@classmethod @classmethod
...@@ -2813,7 +2648,11 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase, ...@@ -2813,7 +2648,11 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase,
'accepted-slave-amount': '1', 'accepted-slave-amount': '1',
'rejected-slave-amount': '2', 'rejected-slave-amount': '2',
'slave-amount': '3', 'slave-amount': '3',
'rejected-slave-list': '["_url", "_https-url"]'} 'rejected-slave-dict':
'{"_https-url": ["slave https-url \\"https://[fd46::c2ae]:!py!u\'123123'
'\'\\" invalid"], "_url": ["slave url \\"https://[fd46::c2ae]:!py!u\''
'123123\'\\" invalid"]}'
}
self.assertEqual( self.assertEqual(
expected_parameter_dict, expected_parameter_dict,
...@@ -2843,20 +2682,28 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase, ...@@ -2843,20 +2682,28 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase,
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
def test_url(self): def test_url(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'url'].copy() 'url'].copy()
self.assertEqual( self.assertEqual(
parameter_dict, {} parameter_dict,
{
'request-error-list': '["slave url \\"https://[fd46::c2ae]:!py!'
'u\'123123\'\\" invalid"]'
}
) )
def test_https_url(self): def test_https_url(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'https-url'].copy() 'https-url'].copy()
self.assertEqual( self.assertEqual(
parameter_dict, {} parameter_dict,
{
'request-error-list': '["slave https-url \\"https://[fd46::c2ae]:'
'!py!u\'123123\'\\" invalid"]'
}
) )
...@@ -3092,9 +2939,15 @@ https://www.google.com {}""", ...@@ -3092,9 +2939,15 @@ https://www.google.com {}""",
'accepted-slave-amount': '8', 'accepted-slave-amount': '8',
'rejected-slave-amount': '4', 'rejected-slave-amount': '4',
'slave-amount': '12', 'slave-amount': '12',
'rejected-slave-list': 'rejected-slave-dict':
'["_caddy_custom_http_s-reject", "_ssl_key-ssl_crt-unsafe", ' '{"_caddy_custom_http_s-reject": ["slave caddy_custom_http '
'"_custom_domain-unsafe", "_server-alias-unsafe"]'} 'configuration invalid", "slave caddy_custom_https configuration '
'invalid"], "_server-alias-unsafe": ["server-alias \'${section:option}\''
' not valid", "server-alias \'afterspace\' not valid"], '
'"_custom_domain-unsafe": ["custom_domain \'${section:option} '
'afterspace\\\\nafternewline\' invalid"], "_ssl_key-ssl_crt-unsafe": '
'["slave ssl_key and ssl_crt does not match"]}'
}
self.assertEqual( self.assertEqual(
expected_parameter_dict, expected_parameter_dict,
...@@ -3149,7 +3002,7 @@ https://www.google.com {}""", ...@@ -3149,7 +3002,7 @@ https://www.google.com {}""",
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost # rewrite SR/bin/is-icmp-packet-lost
open( open(
...@@ -3194,7 +3047,7 @@ https://www.google.com {}""", ...@@ -3194,7 +3047,7 @@ https://www.google.com {}""",
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
# assert that there is no nocomma file # assert that there is no nocomma file
monitor_file_list = glob.glob( monitor_file_list = glob.glob(
...@@ -3211,7 +3064,11 @@ https://www.google.com {}""", ...@@ -3211,7 +3064,11 @@ https://www.google.com {}""",
'custom_domain-unsafe'] 'custom_domain-unsafe']
self.assertEqual( self.assertEqual(
parameter_dict, parameter_dict,
{} {
'request-error-list':
'["custom_domain \'${section:option} afterspace\\\\nafternewline\' '
'invalid"]'
}
) )
def test_server_alias_unsafe(self): def test_server_alias_unsafe(self):
...@@ -3219,7 +3076,11 @@ https://www.google.com {}""", ...@@ -3219,7 +3076,11 @@ https://www.google.com {}""",
'server-alias-unsafe'] 'server-alias-unsafe']
self.assertEqual( self.assertEqual(
parameter_dict, parameter_dict,
{} {
'request-error-list':
'["server-alias \'${section:option}\' not valid", "server-alias '
'\'afterspace\' not valid"]'
}
) )
def test_virtualhostroot_http_port_unsafe(self): def test_virtualhostroot_http_port_unsafe(self):
...@@ -3334,11 +3195,11 @@ https://www.google.com {}""", ...@@ -3334,11 +3195,11 @@ https://www.google.com {}""",
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path') parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code) self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost # rewrite SR/bin/is-icmp-packet-lost
open( open(
...@@ -3377,11 +3238,11 @@ https://www.google.com {}""", ...@@ -3377,11 +3238,11 @@ https://www.google.com {}""",
der2pem(result.peercert), der2pem(result.peercert),
open('wildcard.example.com.crt').read()) open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code) self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult( result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path') parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code) self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost # rewrite SR/bin/is-icmp-packet-lost
open( open(
...@@ -3402,7 +3263,7 @@ https://www.google.com {}""", ...@@ -3402,7 +3263,7 @@ https://www.google.com {}""",
'ssl_key-ssl_crt-unsafe'] 'ssl_key-ssl_crt-unsafe']
self.assertEqual( self.assertEqual(
parameter_dict, parameter_dict,
{} {'request-error-list': '["slave ssl_key and ssl_crt does not match"]'}
) )
def test_caddy_custom_http_s_reject(self): def test_caddy_custom_http_s_reject(self):
...@@ -3410,7 +3271,11 @@ https://www.google.com {}""", ...@@ -3410,7 +3271,11 @@ https://www.google.com {}""",
'caddy_custom_http_s-reject'] 'caddy_custom_http_s-reject']
self.assertEqual( self.assertEqual(
parameter_dict, parameter_dict,
{} {
'request-error-list':
'["slave caddy_custom_http configuration invalid", '
'"slave caddy_custom_https configuration invalid"]'
}
) )
...@@ -3461,13 +3326,29 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -3461,13 +3326,29 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin):
'accepted-slave-amount': '1', 'accepted-slave-amount': '1',
'rejected-slave-amount': '3', 'rejected-slave-amount': '3',
'slave-amount': '4', 'slave-amount': '4',
'rejected-slave-list': '["_site_3", "_site_1", "_site_4"]'} 'rejected-slave-dict':
'{"_site_4": ["custom_domain \'duplicate.example.com\' clashes", '
'"server-alias \'duplicate.example.com\' clashes"], "_site_1": '
'["custom_domain \'duplicate.example.com\' clashes"], "_site_3": '
'["server-alias \'duplicate.example.com\' clashes"]}'
}
self.assertEqual( self.assertEqual(
expected_parameter_dict, expected_parameter_dict,
parameter_dict parameter_dict
) )
def test_site_1(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'site_1']
self.assertEqual(
parameter_dict,
{
'request-error-list':
'["custom_domain \'duplicate.example.com\' clashes"]'
}
)
def test_site_2(self): def test_site_2(self):
parameter_dict = self.slave_connection_parameter_dict_dict[ parameter_dict = self.slave_connection_parameter_dict_dict[
'site_2'] 'site_2']
...@@ -3483,3 +3364,26 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin): ...@@ -3483,3 +3364,26 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin):
'public-ipv4': LOCAL_IPV4, 'public-ipv4': LOCAL_IPV4,
} }
) )
def test_site_3(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'site_3']
self.assertEqual(
parameter_dict,
{
'request-error-list':
'["server-alias \'duplicate.example.com\' clashes"]'
}
)
def test_site_4(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'site_4']
self.assertEqual(
parameter_dict,
{
'request-error-list':
'["custom_domain \'duplicate.example.com\' clashes", "server-alias '
'\'duplicate.example.com\' clashes"]'
}
)
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/frontend-apache-access.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/frontend-apache-error.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-default_access_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-default_error_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-false_access_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-false_error_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-true_access_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-true_error_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/monitor-httpd-error.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/nginx-access.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/nginx-error.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/trafficserver/manager.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/apache_configuration.signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/httpd.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/napache_configuration.signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/nginx.pid
\ No newline at end of file
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
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/check-free-disk-space
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache-mpm-watchdog
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_cached
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv4_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_ssl_cached
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-free-disk-space
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/frontend-apache-configuration-promise
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx-configuration-promise
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv4_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/re6st-connectivity
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/trafficserver-cache-availability
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultDefaultSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:crond RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:crond-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:frontend-apache-safe-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:frontend-nginx-safe-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:frontend_apache-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:frontend_nginx-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:trafficserver-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-1/var/log/frontend-apache-access.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/frontend-apache-error.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-default_access_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-default_error_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-false_access_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-false_error_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-true_access_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-true_error_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/monitor-httpd-error.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/nginx-access.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/nginx-error.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/trafficserver/manager.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-0/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/apache_configuration.signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/httpd.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/napache_configuration.signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/nginx.pid
\ No newline at end of file
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
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/check-free-disk-space
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache-mpm-watchdog
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_cached
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv4_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv4_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv6_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv6_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_ssl_cached
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-free-disk-space
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/frontend-apache-configuration-promise
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx-configuration-promise
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv4_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv4_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv6_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv6_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/re6st-connectivity
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/trafficserver-cache-availability
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-0:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultFalseSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:crond RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultFalseSlave-1:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:crond-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:frontend-apache-safe-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-1:frontend-nginx-safe-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-1:frontend_apache-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:frontend_nginx-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-1:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:trafficserver-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestMasterRequest-1/var/log/frontend-apache-access.log
TestMasterRequest-1/var/log/frontend-apache-error.log
TestMasterRequest-1/var/log/monitor-httpd-error.log
TestMasterRequest-1/var/log/nginx-access.log
TestMasterRequest-1/var/log/nginx-error.log
TestMasterRequest-1/var/log/trafficserver/manager.log
TestMasterRequest-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestMasterRequest-0/var/run/monitor/monitor-bootstrap.pid
TestMasterRequest-1/var/run/apache_configuration.signature
TestMasterRequest-1/var/run/httpd.pid
TestMasterRequest-1/var/run/monitor-httpd.pid
TestMasterRequest-1/var/run/monitor/monitor-bootstrap.pid
TestMasterRequest-1/var/run/napache_configuration.signature
TestMasterRequest-1/var/run/nginx.pid
\ No newline at end of file
TestMasterRequest-0/etc/promise/check-free-disk-space
TestMasterRequest-0/etc/promise/monitor-http-frontend
TestMasterRequest-0/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequest-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequest-1/etc/promise/apache-frontend-is-running-actual-software-release
TestMasterRequest-1/etc/promise/apache-mpm-watchdog
TestMasterRequest-1/etc/promise/apache_cached
TestMasterRequest-1/etc/promise/apache_frontend_ipv4_http
TestMasterRequest-1/etc/promise/apache_frontend_ipv4_https
TestMasterRequest-1/etc/promise/apache_frontend_ipv6_http
TestMasterRequest-1/etc/promise/apache_frontend_ipv6_https
TestMasterRequest-1/etc/promise/apache_ssl_cached
TestMasterRequest-1/etc/promise/check-free-disk-space
TestMasterRequest-1/etc/promise/frontend-apache-configuration-promise
TestMasterRequest-1/etc/promise/monitor-http-frontend
TestMasterRequest-1/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequest-1/etc/promise/nginx-configuration-promise
TestMasterRequest-1/etc/promise/nginx_frontend_ipv4_http
TestMasterRequest-1/etc/promise/nginx_frontend_ipv4_https
TestMasterRequest-1/etc/promise/nginx_frontend_ipv6_http
TestMasterRequest-1/etc/promise/nginx_frontend_ipv6_https
TestMasterRequest-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequest-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestMasterRequest-1/etc/promise/re6st-connectivity
TestMasterRequest-1/etc/promise/trafficserver-cache-availability
TestMasterRequest-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestMasterRequest-0:bootstrap-monitor EXITED
TestMasterRequest-0:certificate_authority-on-watch RUNNING
TestMasterRequest-0:crond RUNNING
TestMasterRequest-0:monitor-httpd-graceful EXITED
TestMasterRequest-0:monitor-httpd-on-watch RUNNING
TestMasterRequest-1:bootstrap-monitor EXITED
TestMasterRequest-1:certificate_authority-on-watch RUNNING
TestMasterRequest-1:crond-on-watch RUNNING
TestMasterRequest-1:frontend-apache-safe-graceful EXITED
TestMasterRequest-1:frontend-nginx-safe-graceful EXITED
TestMasterRequest-1:frontend_apache-on-watch RUNNING
TestMasterRequest-1:frontend_nginx-on-watch RUNNING
TestMasterRequest-1:monitor-httpd-graceful EXITED
TestMasterRequest-1:monitor-httpd-on-watch RUNNING
TestMasterRequest-1:trafficserver-on-watch RUNNING
TestMasterRequest-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestMasterRequestDomain-1/var/log/frontend-apache-access.log
TestMasterRequestDomain-1/var/log/frontend-apache-error.log
TestMasterRequestDomain-1/var/log/monitor-httpd-error.log
TestMasterRequestDomain-1/var/log/nginx-access.log
TestMasterRequestDomain-1/var/log/nginx-error.log
TestMasterRequestDomain-1/var/log/trafficserver/manager.log
TestMasterRequestDomain-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestMasterRequestDomain-0/var/run/monitor/monitor-bootstrap.pid
TestMasterRequestDomain-1/var/run/apache_configuration.signature
TestMasterRequestDomain-1/var/run/httpd.pid
TestMasterRequestDomain-1/var/run/monitor-httpd.pid
TestMasterRequestDomain-1/var/run/monitor/monitor-bootstrap.pid
TestMasterRequestDomain-1/var/run/napache_configuration.signature
TestMasterRequestDomain-1/var/run/nginx.pid
\ No newline at end of file
TestMasterRequestDomain-0/etc/promise/check-free-disk-space
TestMasterRequestDomain-0/etc/promise/monitor-http-frontend
TestMasterRequestDomain-0/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequestDomain-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequestDomain-1/etc/promise/apache-frontend-is-running-actual-software-release
TestMasterRequestDomain-1/etc/promise/apache-mpm-watchdog
TestMasterRequestDomain-1/etc/promise/apache_cached
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv4_http
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv4_https
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv6_http
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv6_https
TestMasterRequestDomain-1/etc/promise/apache_ssl_cached
TestMasterRequestDomain-1/etc/promise/check-free-disk-space
TestMasterRequestDomain-1/etc/promise/frontend-apache-configuration-promise
TestMasterRequestDomain-1/etc/promise/monitor-http-frontend
TestMasterRequestDomain-1/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequestDomain-1/etc/promise/nginx-configuration-promise
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv4_http
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv4_https
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv6_http
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv6_https
TestMasterRequestDomain-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequestDomain-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestMasterRequestDomain-1/etc/promise/re6st-connectivity
TestMasterRequestDomain-1/etc/promise/trafficserver-cache-availability
TestMasterRequestDomain-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestMasterRequestDomain-0:bootstrap-monitor EXITED
TestMasterRequestDomain-0:certificate_authority-on-watch RUNNING
TestMasterRequestDomain-0:crond RUNNING
TestMasterRequestDomain-0:monitor-httpd-graceful EXITED
TestMasterRequestDomain-0:monitor-httpd-on-watch RUNNING
TestMasterRequestDomain-1:bootstrap-monitor EXITED
TestMasterRequestDomain-1:certificate_authority-on-watch RUNNING
TestMasterRequestDomain-1:crond-on-watch RUNNING
TestMasterRequestDomain-1:frontend-apache-safe-graceful EXITED
TestMasterRequestDomain-1:frontend-nginx-safe-graceful EXITED
TestMasterRequestDomain-1:frontend_apache-on-watch RUNNING
TestMasterRequestDomain-1:frontend_nginx-on-watch RUNNING
TestMasterRequestDomain-1:monitor-httpd-graceful EXITED
TestMasterRequestDomain-1:monitor-httpd-on-watch RUNNING
TestMasterRequestDomain-1:trafficserver-on-watch RUNNING
TestMasterRequestDomain-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-1/var/log/frontend-apache-access.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/frontend-apache-error.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/httpd/_default_access_log
TestRe6stVerificationUrlDefaultSlave-1/var/log/httpd/_default_error_log
TestRe6stVerificationUrlDefaultSlave-1/var/log/monitor-httpd-error.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/nginx-access.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/nginx-error.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/trafficserver/manager.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-0/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/apache_configuration.signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/httpd.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/monitor-httpd.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/napache_configuration.signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/nginx.pid
\ No newline at end of file
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
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/check-free-disk-space
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache-mpm-watchdog
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_cached
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv4_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv4_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv6_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv6_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_ssl_cached
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/check-free-disk-space
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/frontend-apache-configuration-promise
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx-configuration-promise
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv4_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv4_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv6_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv6_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/re6st-connectivity
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/trafficserver-cache-availability
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-0:bootstrap-monitor EXITED
TestRe6stVerificationUrlDefaultSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-0:crond RUNNING
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:bootstrap-monitor EXITED
TestRe6stVerificationUrlDefaultSlave-1:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:crond-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:frontend-apache-safe-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-1:frontend-nginx-safe-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-1:frontend_apache-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:frontend_nginx-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-1:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:trafficserver-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestRe6stVerificationUrlSlave-1/var/log/frontend-apache-access.log
TestRe6stVerificationUrlSlave-1/var/log/frontend-apache-error.log
TestRe6stVerificationUrlSlave-1/var/log/httpd/_default_access_log
TestRe6stVerificationUrlSlave-1/var/log/httpd/_default_error_log
TestRe6stVerificationUrlSlave-1/var/log/monitor-httpd-error.log
TestRe6stVerificationUrlSlave-1/var/log/nginx-access.log
TestRe6stVerificationUrlSlave-1/var/log/nginx-error.log
TestRe6stVerificationUrlSlave-1/var/log/trafficserver/manager.log
TestRe6stVerificationUrlSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestRe6stVerificationUrlSlave-0/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlSlave-1/var/run/apache_configuration.signature
TestRe6stVerificationUrlSlave-1/var/run/httpd.pid
TestRe6stVerificationUrlSlave-1/var/run/monitor-httpd.pid
TestRe6stVerificationUrlSlave-1/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlSlave-1/var/run/napache_configuration.signature
TestRe6stVerificationUrlSlave-1/var/run/nginx.pid
\ No newline at end of file
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
TestRe6stVerificationUrlSlave-0/etc/promise/check-free-disk-space
TestRe6stVerificationUrlSlave-0/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestRe6stVerificationUrlSlave-1/etc/promise/apache-mpm-watchdog
TestRe6stVerificationUrlSlave-1/etc/promise/apache_cached
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv4_http
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv4_https
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv6_http
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv6_https
TestRe6stVerificationUrlSlave-1/etc/promise/apache_ssl_cached
TestRe6stVerificationUrlSlave-1/etc/promise/check-free-disk-space
TestRe6stVerificationUrlSlave-1/etc/promise/frontend-apache-configuration-promise
TestRe6stVerificationUrlSlave-1/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlSlave-1/etc/promise/nginx-configuration-promise
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv4_http
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv4_https
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv6_http
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv6_https
TestRe6stVerificationUrlSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestRe6stVerificationUrlSlave-1/etc/promise/re6st-connectivity
TestRe6stVerificationUrlSlave-1/etc/promise/trafficserver-cache-availability
TestRe6stVerificationUrlSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestRe6stVerificationUrlSlave-0:bootstrap-monitor EXITED
TestRe6stVerificationUrlSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlSlave-0:crond RUNNING
TestRe6stVerificationUrlSlave-0:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlSlave-0:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:bootstrap-monitor EXITED
TestRe6stVerificationUrlSlave-1:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:crond-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:frontend-apache-safe-graceful EXITED
TestRe6stVerificationUrlSlave-1:frontend-nginx-safe-graceful EXITED
TestRe6stVerificationUrlSlave-1:frontend_apache-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:frontend_nginx-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlSlave-1:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:trafficserver-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestReplicateSlave-1/var/log/frontend-apache-access.log
TestReplicateSlave-1/var/log/frontend-apache-error.log
TestReplicateSlave-1/var/log/httpd/_replicate_access_log
TestReplicateSlave-1/var/log/httpd/_replicate_error_log
TestReplicateSlave-1/var/log/monitor-httpd-error.log
TestReplicateSlave-1/var/log/nginx-access.log
TestReplicateSlave-1/var/log/nginx-error.log
TestReplicateSlave-1/var/log/trafficserver/manager.log
TestReplicateSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestReplicateSlave-0/var/run/monitor/monitor-bootstrap.pid
TestReplicateSlave-1/var/run/apache_configuration.signature
TestReplicateSlave-1/var/run/httpd.pid
TestReplicateSlave-1/var/run/monitor-httpd.pid
TestReplicateSlave-1/var/run/monitor/monitor-bootstrap.pid
TestReplicateSlave-1/var/run/napache_configuration.signature
TestReplicateSlave-1/var/run/nginx.pid
\ No newline at end of file
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
TestReplicateSlave-0/etc/promise/check-free-disk-space
TestReplicateSlave-0/etc/promise/monitor-http-frontend
TestReplicateSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestReplicateSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestReplicateSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestReplicateSlave-1/etc/promise/apache-mpm-watchdog
TestReplicateSlave-1/etc/promise/apache_cached
TestReplicateSlave-1/etc/promise/apache_frontend_ipv4_http
TestReplicateSlave-1/etc/promise/apache_frontend_ipv4_https
TestReplicateSlave-1/etc/promise/apache_frontend_ipv6_http
TestReplicateSlave-1/etc/promise/apache_frontend_ipv6_https
TestReplicateSlave-1/etc/promise/apache_ssl_cached
TestReplicateSlave-1/etc/promise/check-free-disk-space
TestReplicateSlave-1/etc/promise/frontend-apache-configuration-promise
TestReplicateSlave-1/etc/promise/monitor-http-frontend
TestReplicateSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestReplicateSlave-1/etc/promise/nginx-configuration-promise
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv4_http
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv4_https
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv6_http
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv6_https
TestReplicateSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestReplicateSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestReplicateSlave-1/etc/promise/re6st-connectivity
TestReplicateSlave-1/etc/promise/trafficserver-cache-availability
TestReplicateSlave-1/etc/promise/trafficserver-port-listening
TestReplicateSlave-2/etc/promise/apache-frontend-is-running-actual-software-release
TestReplicateSlave-2/etc/promise/apache-mpm-watchdog
TestReplicateSlave-2/etc/promise/apache_cached
TestReplicateSlave-2/etc/promise/apache_frontend_ipv4_http
TestReplicateSlave-2/etc/promise/apache_frontend_ipv4_https
TestReplicateSlave-2/etc/promise/apache_frontend_ipv6_http
TestReplicateSlave-2/etc/promise/apache_frontend_ipv6_https
TestReplicateSlave-2/etc/promise/apache_ssl_cached
TestReplicateSlave-2/etc/promise/check-free-disk-space
TestReplicateSlave-2/etc/promise/frontend-apache-configuration-promise
TestReplicateSlave-2/etc/promise/monitor-http-frontend
TestReplicateSlave-2/etc/promise/monitor-httpd-listening-on-tcp
TestReplicateSlave-2/etc/promise/nginx-configuration-promise
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv4_http
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv4_https
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv6_http
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv6_https
TestReplicateSlave-2/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestReplicateSlave-2/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestReplicateSlave-2/etc/promise/re6st-connectivity
TestReplicateSlave-2/etc/promise/trafficserver-cache-availability
TestReplicateSlave-2/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestReplicateSlave-0:bootstrap-monitor EXITED
TestReplicateSlave-0:certificate_authority-on-watch RUNNING
TestReplicateSlave-0:crond RUNNING
TestReplicateSlave-0:monitor-httpd-graceful EXITED
TestReplicateSlave-0:monitor-httpd-on-watch RUNNING
TestReplicateSlave-1:bootstrap-monitor EXITED
TestReplicateSlave-1:certificate_authority-on-watch RUNNING
TestReplicateSlave-1:crond-on-watch RUNNING
TestReplicateSlave-1:frontend-apache-safe-graceful EXITED
TestReplicateSlave-1:frontend-nginx-safe-graceful EXITED
TestReplicateSlave-1:frontend_apache-on-watch RUNNING
TestReplicateSlave-1:frontend_nginx-on-watch RUNNING
TestReplicateSlave-1:monitor-httpd-graceful EXITED
TestReplicateSlave-1:monitor-httpd-on-watch RUNNING
TestReplicateSlave-1:trafficserver-on-watch RUNNING
TestReplicateSlave-1:trafficserver-reload EXITED
TestReplicateSlave-2:bootstrap-monitor STOPPED
TestReplicateSlave-2:certificate_authority-on-watch STOPPED
TestReplicateSlave-2:crond-on-watch STOPPED
TestReplicateSlave-2:frontend-apache-safe-graceful STOPPED
TestReplicateSlave-2:frontend-nginx-safe-graceful STOPPED
TestReplicateSlave-2:frontend_apache-on-watch STOPPED
TestReplicateSlave-2:frontend_nginx-on-watch STOPPED
TestReplicateSlave-2:monitor-httpd-graceful STOPPED
TestReplicateSlave-2:monitor-httpd-on-watch STOPPED
TestReplicateSlave-2:trafficserver-on-watch STOPPED
TestReplicateSlave-2:trafficserver-reload STOPPED
watchdog:watchdog RUNNING
\ No newline at end of file
TestSlave-1/var/log/frontend-apache-access.log
TestSlave-1/var/log/frontend-apache-error.log
TestSlave-1/var/log/httpd/_apache_custom_http_s-accepted_access_log
TestSlave-1/var/log/httpd/_apache_custom_http_s-accepted_error_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-accepted_access_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-accepted_error_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-rejected_access_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-rejected_error_log
TestSlave-1/var/log/httpd/_custom_domain_access_log
TestSlave-1/var/log/httpd/_custom_domain_error_log
TestSlave-1/var/log/httpd/_custom_domain_ssl_crt_ssl_key_access_log
TestSlave-1/var/log/httpd/_custom_domain_ssl_crt_ssl_key_error_log
TestSlave-1/var/log/httpd/_disabled-cookie-list_access_log
TestSlave-1/var/log/httpd/_disabled-cookie-list_error_log
TestSlave-1/var/log/httpd/_empty_access_log
TestSlave-1/var/log/httpd/_empty_error_log
TestSlave-1/var/log/httpd/_enable-http2-default_access_log
TestSlave-1/var/log/httpd/_enable-http2-default_error_log
TestSlave-1/var/log/httpd/_enable-http2-false_access_log
TestSlave-1/var/log/httpd/_enable-http2-false_error_log
TestSlave-1/var/log/httpd/_enable_cache-disable-no-cache-request_access_log
TestSlave-1/var/log/httpd/_enable_cache-disable-no-cache-request_error_log
TestSlave-1/var/log/httpd/_enable_cache-disable-via-header_access_log
TestSlave-1/var/log/httpd/_enable_cache-disable-via-header_error_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify-unverified_access_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify-unverified_error_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt_access_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt_error_log
TestSlave-1/var/log/httpd/_enable_cache_access_log
TestSlave-1/var/log/httpd/_enable_cache_error_log
TestSlave-1/var/log/httpd/_https-only_access_log
TestSlave-1/var/log/httpd/_https-only_error_log
TestSlave-1/var/log/httpd/_monitor-ipv4-test_access_log
TestSlave-1/var/log/httpd/_monitor-ipv4-test_error_log
TestSlave-1/var/log/httpd/_monitor-ipv6-test_access_log
TestSlave-1/var/log/httpd/_monitor-ipv6-test_error_log
TestSlave-1/var/log/httpd/_prefer-gzip-encoding-to-backend_access_log
TestSlave-1/var/log/httpd/_prefer-gzip-encoding-to-backend_error_log
TestSlave-1/var/log/httpd/_re6st-optimal-test_access_log
TestSlave-1/var/log/httpd/_re6st-optimal-test_error_log
TestSlave-1/var/log/httpd/_server-alias_access_log
TestSlave-1/var/log/httpd/_server-alias_error_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify-unverified_access_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify-unverified_error_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify_ssl_proxy_ca_crt_access_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify_ssl_proxy_ca_crt_error_log
TestSlave-1/var/log/httpd/_type-eventsource_access_log
TestSlave-1/var/log/httpd/_type-eventsource_error_log
TestSlave-1/var/log/httpd/_type-notebook_access_log
TestSlave-1/var/log/httpd/_type-notebook_error_log
TestSlave-1/var/log/httpd/_type-redirect_access_log
TestSlave-1/var/log/httpd/_type-redirect_error_log
TestSlave-1/var/log/httpd/_type-zope-default-path_access_log
TestSlave-1/var/log/httpd/_type-zope-default-path_error_log
TestSlave-1/var/log/httpd/_type-zope-path_access_log
TestSlave-1/var/log/httpd/_type-zope-path_error_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify-unverified_access_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify-unverified_error_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt_access_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt_error_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-http-port_access_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-http-port_error_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-https-port_access_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-https-port_error_log
TestSlave-1/var/log/httpd/_type-zope_access_log
TestSlave-1/var/log/httpd/_type-zope_error_log
TestSlave-1/var/log/httpd/_url_access_log
TestSlave-1/var/log/httpd/_url_error_log
TestSlave-1/var/log/httpd/_url_https-url_access_log
TestSlave-1/var/log/httpd/_url_https-url_error_log
TestSlave-1/var/log/monitor-httpd-error.log
TestSlave-1/var/log/nginx-access.log
TestSlave-1/var/log/nginx-error.log
TestSlave-1/var/log/trafficserver/manager.log
TestSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestSlave-0/var/run/monitor/monitor-bootstrap.pid
TestSlave-1/var/run/apache_configuration.signature
TestSlave-1/var/run/httpd.pid
TestSlave-1/var/run/monitor-httpd.pid
TestSlave-1/var/run/monitor/monitor-bootstrap.pid
TestSlave-1/var/run/napache_configuration.signature
TestSlave-1/var/run/nginx.pid
\ No newline at end of file
SetEnvIf Origin "^http(s)?://(.+\.)?(monitor\.app\.officejs\.com)$" ORIGIN_DOMAIN=$0
Header always set Access-Control-Allow-Origin "%{ORIGIN_DOMAIN}e" env=ORIGIN_DOMAIN
Header always set Access-Control-Allow-Credentials "true" env=ORIGIN_DOMAIN
Header always set Access-Control-Allow-Methods "PROPFIND, PROPPATCH, COPY, MOVE, DELETE, MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST" env=ORIGIN_DOMAIN
Header always set Access-Control-Allow-Headers "Overwrite, Destination, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Authorization" env=ORIGIN_DOMAIN
\ No newline at end of file
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-_caddy_custom_http_s-rejected-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_caddy_custom_http_s-rejected-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-_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-_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-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_server-alias-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-_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-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-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
TestSlave-0/etc/promise/check-free-disk-space
TestSlave-0/etc/promise/monitor-http-frontend
TestSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestSlave-1/etc/promise/apache-mpm-watchdog
TestSlave-1/etc/promise/apache_cached
TestSlave-1/etc/promise/apache_frontend_ipv4_http
TestSlave-1/etc/promise/apache_frontend_ipv4_https
TestSlave-1/etc/promise/apache_frontend_ipv6_http
TestSlave-1/etc/promise/apache_frontend_ipv6_https
TestSlave-1/etc/promise/apache_ssl_cached
TestSlave-1/etc/promise/check-free-disk-space
TestSlave-1/etc/promise/frontend-apache-configuration-promise
TestSlave-1/etc/promise/monitor-http-frontend
TestSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestSlave-1/etc/promise/nginx-configuration-promise
TestSlave-1/etc/promise/nginx_frontend_ipv4_http
TestSlave-1/etc/promise/nginx_frontend_ipv4_https
TestSlave-1/etc/promise/nginx_frontend_ipv6_http
TestSlave-1/etc/promise/nginx_frontend_ipv6_https
TestSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestSlave-1/etc/promise/re6st-connectivity
TestSlave-1/etc/promise/trafficserver-cache-availability
TestSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestSlave-0:bootstrap-monitor EXITED
TestSlave-0:certificate_authority-on-watch RUNNING
TestSlave-0:crond RUNNING
TestSlave-0:monitor-httpd-graceful EXITED
TestSlave-0:monitor-httpd-on-watch RUNNING
TestSlave-1:bootstrap-monitor EXITED
TestSlave-1:certificate_authority-on-watch RUNNING
TestSlave-1:crond-on-watch RUNNING
TestSlave-1:frontend-apache-safe-graceful EXITED
TestSlave-1:frontend-nginx-safe-graceful EXITED
TestSlave-1:frontend_apache-on-watch RUNNING
TestSlave-1:frontend_nginx-on-watch RUNNING
TestSlave-1:monitor-httpd-graceful EXITED
TestSlave-1:monitor-httpd-on-watch RUNNING
TestSlave-1:trafficserver-on-watch RUNNING
TestSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
...@@ -101,6 +101,7 @@ configuration.nginx_gzip_comp_level = 2 ...@@ -101,6 +101,7 @@ configuration.nginx_gzip_comp_level = 2
configuration.nginx_gzip_proxied = any configuration.nginx_gzip_proxied = any
configuration.nginx_gzip_types = text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json configuration.nginx_gzip_types = text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json
configuration.nginx_keepalive_timeout = 65 configuration.nginx_keepalive_timeout = 65
configuration.nginx_header_allow_origin = *
# configuring trusted proxies # configuring trusted proxies
# GitLab is behind a reverse proxy, so we don't want the IP address of the proxy # GitLab is behind a reverse proxy, so we don't want the IP address of the proxy
......
# Code generated by gowork-snapshot; DO NOT EDIT.
# list of go git repositories to fetch
[gowork.goinstall]
depends_gitfetch =
${go_github.com_pkg_errors:recipe}
${go_lab.nexedi.com_kirr_git-backup:recipe}
${go_lab.nexedi.com_kirr_go123:recipe}
${go_gitlab.com_gitlab-org_gitlab-workhorse:recipe}
[go_github.com_libgit2_git2go]
<= go-git-package
go.importpath = github.com/libgit2/git2go
repository = https://github.com/libgit2/git2go.git
# branch 'next' is required by git-backup
revision = next-g53594d7581617dbae7bb5960b4ac5f0ff513c184
[go_github.com_pkg_errors]
<= go-git-package
go.importpath = github.com/pkg/errors
repository = https://github.com/pkg/errors.git
revision = v0.8.0-12-g816c908556
[go_lab.nexedi.com_kirr_git-backup]
<= go-git-package
go.importpath = lab.nexedi.com/kirr/git-backup
repository = https://lab.nexedi.com/kirr/git-backup.git
revision = cc6ac54f451dfa6e343d6340dcfa25aa6eac9565
[go_lab.nexedi.com_kirr_go123]
<= go-git-package
go.importpath = lab.nexedi.com/kirr/go123
repository = https://lab.nexedi.com/kirr/go123.git
revision = d9250d6332
[go_gitlab.com_gitlab-org_gitlab-workhorse]
<= go-git-package
go.importpath = gitlab.com/gitlab-org/gitlab-workhorse
repository = https://lab.nexedi.com/nexedi/gitlab-workhorse.git
revision = v1.3.0-8-g5f44f59cbb
\ No newline at end of file
...@@ -279,6 +279,7 @@ recipe = slapos.cookbook:wrapper ...@@ -279,6 +279,7 @@ recipe = slapos.cookbook:wrapper
wrapper-path = ${directory:bin}/${:_buildout_section_name_} wrapper-path = ${directory:bin}/${:_buildout_section_name_}
# NOTE $HOME needed to pick gitconfig # NOTE $HOME needed to pick gitconfig
environment = environment =
PATH = {{ node_bin_location }}:{{ gopath_bin }}:$PATH
BUNDLE_GEMFILE = {{ gitlab_repository_location }}/Gemfile BUNDLE_GEMFILE = {{ gitlab_repository_location }}/Gemfile
HOME = ${directory:home} HOME = ${directory:home}
RAILS_ENV = production RAILS_ENV = production
...@@ -359,14 +360,15 @@ update-command = ...@@ -359,14 +360,15 @@ update-command =
<= work-base <= work-base
software = {{ gitlab_repository_location }} software = {{ gitlab_repository_location }}
tune-command = tune-command =
# secret* tmp/ log/ shared/ builds/ # secret* tmp/ log/ shared/ builds/ node_modules/
rm -f .secret && rm -f .secret &&
rm -rf log tmp shared builds && rm -rf log tmp shared builds node_modules &&
ln -sf ${secrets:secrets}/gitlab_rails_secret .secret && ln -sf ${secrets:secrets}/gitlab_rails_secret .secret &&
ln -sf ${gitlab:log} log && ln -sf ${gitlab:log} log &&
ln -sf ${gitlab:tmp} tmp && ln -sf ${gitlab:tmp} tmp &&
ln -sf ${gitlab:shared} shared && ln -sf ${gitlab:shared} shared &&
ln -sf ${gitlab:builds} builds && ln -sf ${gitlab:builds} builds &&
ln -sf {{ gitlab_repository_location }}/node_modules node_modules &&
# config/ # config/
cd config && cd config &&
ln -sf ${unicorn.rb:rendered} unicorn.rb && ln -sf ${unicorn.rb:rendered} unicorn.rb &&
...@@ -517,6 +519,7 @@ command-line = {{ gitlab_workhorse }} ...@@ -517,6 +519,7 @@ command-line = {{ gitlab_workhorse }}
-listenAddr ${gitlab-workhorse:socket} -listenAddr ${gitlab-workhorse:socket}
-authSocket ${unicorn:socket} -authSocket ${unicorn:socket}
-documentRoot ${gitlab-work:location}/public -documentRoot ${gitlab-work:location}/public
-secretPath ${gitlab-work:location}/.gitlab_workhorse_secret
# NOTE for profiling # NOTE for profiling
# -pprofListenAddr ... # -pprofListenAddr ...
...@@ -534,7 +537,9 @@ depend = ...@@ -534,7 +537,9 @@ depend =
[promise-gitlab-workhorse] [promise-gitlab-workhorse]
<= promise-byurl <= promise-byurl
url = --unix-socket ${gitlab-workhorse:socket} http://localhost/static.css # http://localhost/users/statics.css will not redirect to /users/sign_in anymore because of this commit:
# https://lab.nexedi.com/nexedi/gitlab-workhorse/commit/c81f109a62fecf2a847fb17ceed012b380dab49f#c1215002e6d745f05eaaf9ee1dad7752e85d866f_318_331
url = --unix-socket ${gitlab-workhorse:socket} http://localhost/users/sign_in
# gitlab-workhorse logs to stdout/stderr - logs are handled by slapos not us # gitlab-workhorse logs to stdout/stderr - logs are handled by slapos not us
...@@ -645,15 +650,7 @@ command-line = ...@@ -645,15 +650,7 @@ command-line =
-c ${instance-parameter:configuration.sidekiq_concurrency} -c ${instance-parameter:configuration.sidekiq_concurrency}
-L ${sidekiq:log}/sidekiq.log -L ${sidekiq:log}/sidekiq.log
-q post_receive -C ${gitlab-work:location}/config/sidekiq_queues.yml
-q mailers
-q archive_repo
-q system_hook
-q project_web_hook
-q gitlab_shell
-q incoming_email
-q common
-q default
depend = depend =
${promise-sidekiq:recipe} ${promise-sidekiq:recipe}
...@@ -731,7 +728,7 @@ depend = ...@@ -731,7 +728,7 @@ depend =
<= promise-byurl <= promise-byurl
# XXX this depends on gitlab-workhorse being up # XXX this depends on gitlab-workhorse being up
# (nginx is configured to proxy all requests to gitlab-workhorse) # (nginx is configured to proxy all requests to gitlab-workhorse)
url = ${backend-info:url}/static.css url = ${backend-info:url}/users/sign_in
[logrotate-entry-nginx] [logrotate-entry-nginx]
<= logrotate-entry <= logrotate-entry
...@@ -849,6 +846,6 @@ rake = ${gitlab-rake:wrapper-path} ...@@ -849,6 +846,6 @@ rake = ${gitlab-rake:wrapper-path}
update-command = ${:command} update-command = ${:command}
command = command =
${:rake} assets:clean && ${:rake} gitlab:assets:clean &&
${:rake} assets:precompile && ${:rake} gitlab:assets:compile &&
true true
...@@ -42,8 +42,8 @@ context = ...@@ -42,8 +42,8 @@ context =
raw git ${git:location}/bin/git raw git ${git:location}/bin/git
raw git_location ${git:location} raw git_location ${git:location}
raw gitlab_export ${gitlab-export:rendered} raw gitlab_export ${gitlab-export:rendered}
raw gitlab_workhorse ${gitlab-workhorse:location}/gitlab-workhorse raw gitlab_workhorse ${gowork:bin}/gitlab-workhorse
raw gopath_bin ${gopath:bin} raw gopath_bin ${gowork:bin}
raw gunzip_bin ${gzip:location}/bin/gunzip raw gunzip_bin ${gzip:location}/bin/gunzip
raw grep_location ${grep:location} raw grep_location ${grep:location}
raw gzip_bin ${gzip:location}/bin/gzip raw gzip_bin ${gzip:location}/bin/gzip
...@@ -51,6 +51,7 @@ context = ...@@ -51,6 +51,7 @@ context =
raw logrotate_bin ${logrotate:location}/usr/sbin/logrotate raw logrotate_bin ${logrotate:location}/usr/sbin/logrotate
raw nginx_bin ${nginx-output:nginx} raw nginx_bin ${nginx-output:nginx}
raw nginx_mime_types ${nginx-output:mime} raw nginx_mime_types ${nginx-output:mime}
raw node_bin_location ${nodejs-8.6.0:location}/bin/
raw openssl_bin ${openssl-output:openssl} raw openssl_bin ${openssl-output:openssl}
raw postgresql_location ${postgresql92:location} raw postgresql_location ${postgresql92:location}
raw redis_binprefix ${redis28:location}/bin raw redis_binprefix ${redis28:location}/bin
......
...@@ -13,6 +13,7 @@ extends = ...@@ -13,6 +13,7 @@ extends =
../../component/openssl/buildout.cfg ../../component/openssl/buildout.cfg
../../component/nginx/buildout.cfg ../../component/nginx/buildout.cfg
../../component/zlib/buildout.cfg ../../component/zlib/buildout.cfg
gowork.cfg
# for instance # for instance
../../component/coreutils/buildout.cfg ../../component/coreutils/buildout.cfg
...@@ -36,14 +37,13 @@ parts = ...@@ -36,14 +37,13 @@ parts =
pkgconfig pkgconfig
nginx-output nginx-output
gowork
python-4gitlab python-4gitlab
gitlab-shell/vendor gitlab-shell/vendor
gitlab/vendor/bundle gitlab/vendor/bundle
gitlab_npm
github-markup-patch github-markup-patch
gitlab-workhorse gitlab-backup
git-go123
git-errors
git-backup
# for instance # for instance
instance.cfg instance.cfg
...@@ -62,11 +62,6 @@ parts = ...@@ -62,11 +62,6 @@ parts =
[slapos.cookbook-repository] [slapos.cookbook-repository]
revision = 571d6514f7290e8faa9439c4b86aa2f6c87df261 revision = 571d6514f7290e8faa9439c4b86aa2f6c87df261
[git]
# TODO stop using custom git revision once git 2.11 is supported by Gitlab
url = https://www.kernel.org/pub/software/scm/git/git-2.10.2.tar.xz
md5sum = 3cd1dca37be60668f482545716923b72
############################ ############################
# Software compilation # # Software compilation #
############################ ############################
...@@ -112,7 +107,7 @@ bundle = ${buildout:bin-directory}/bundle ...@@ -112,7 +107,7 @@ bundle = ${buildout:bin-directory}/bundle
# gitlab (via github-markup) wants to convert rst -> html via running: python2 (with docutils egg) # gitlab (via github-markup) wants to convert rst -> html via running: python2 (with docutils egg)
# (python-4gitlab puts interpreter into ${buildout:bin-directory}) # (python-4gitlab puts interpreter into ${buildout:bin-directory})
environment = environment =
PATH = ${:ruby-location}/bin:${cmake:location}/bin:${pkgconfig:location}/bin:${nodejs:location}/bin:${postgresql92:location}/bin:${redis28:location}/bin:${git:location}/bin:${buildout:bin-directory}:%(PATH)s PATH = ${:ruby-location}/bin:${cmake:location}/bin:${pkgconfig:location}/bin:${nodejs-8.6.0:location}/bin:${postgresql92:location}/bin:${redis28:location}/bin:${git:location}/bin:${buildout:bin-directory}:%(PATH)s
# gitlab, gitlab-shell & gitlab-workhorse checked out as git repositories # gitlab, gitlab-shell & gitlab-workhorse checked out as git repositories
...@@ -125,36 +120,27 @@ git-executable = ${git:location}/bin/git ...@@ -125,36 +120,27 @@ git-executable = ${git:location}/bin/git
<= git-repository <= git-repository
#repository = https://gitlab.com/gitlab-org/gitlab-ce.git #repository = https://gitlab.com/gitlab-org/gitlab-ce.git
repository = https://lab.nexedi.com/nexedi/gitlab-ce.git repository = https://lab.nexedi.com/nexedi/gitlab-ce.git
# 8.8.X + NXD patches: # 8.17.X + NXD patches:
revision = v8.8.9-10-g967afbdc3a2d2bcc58ed31ca50d5293fa2a2e9ed revision = v8.17.8-12-g611cf13b90
location = ${buildout:parts-directory}/gitlab location = ${buildout:parts-directory}/gitlab
[gitlab-shell-repository] [gitlab-shell-repository]
<= git-repository <= git-repository
#repository = https://gitlab.com/gitlab-org/gitlab-shell.git #repository = https://gitlab.com/gitlab-org/gitlab-shell.git
repository = https://lab.nexedi.com/nexedi/gitlab-shell.git repository = https://lab.nexedi.com/nexedi/gitlab-shell.git
# gitlab 8.8 wants gitlab-shell 2.7.2 # gitlab 8.17 wants gitlab-shell 4.1.1
# 2.7.2 + NXD patches # 4.1.1 + NXD patches
revision = v2.6.10-50-gfbca95be784816349abc5930324659151eca50d1 revision = v4.1.1-1-g64603b4da2
location = ${buildout:parts-directory}/gitlab-shell location = ${buildout:parts-directory}/gitlab-shell
[gitlab-workhorse-repository]
<= git-repository
#repository = https://gitlab.com/gitlab-org/gitlab-workhorse.git
repository = https://lab.nexedi.com/nexedi/gitlab-workhorse.git
# gitlab 8.8 wants gitlab-workhorse 0.7.1
# 0.7.1 + NXD patches
revision = v0.7.1-5-gc368233516b78856484aff31f9141c880b800670
location = ${buildout:parts-directory}/gitlab-workhorse
# Patch github markup to not call "python2 -S /path/to/rest2html" but only "python2 /path/to/rest2html" # Patch github markup to not call "python2 -S /path/to/rest2html" but only "python2 /path/to/rest2html"
# NOTE github-markup invokes it as `python2`, that's why we are naming it this way # NOTE github-markup invokes it as `python2`, that's why we are naming it this way
# https://github.com/github/markup/blob/5393ae93/lib/github/markups.rb#L36 # https://github.com/github/markup/blob/5393ae93/lib/github/markups.rb#L36
[github-markup-patch] [github-markup-patch]
recipe = plone.recipe.command recipe = plone.recipe.command
command = command =
files=$(ls ${gitlab-repository:location}/vendor/bundle/ruby/*/gems/github-markup-*/lib/github/markups.rb) || true files=$(ls ${gitlab-repository:location}/vendor/bundle/ruby/*/gems/git*-markup-*/lib/github/markups.rb) || true
if [ ! -z $files ]; then if [ ! -z "$files" ]; then
for file in $files; do for file in $files; do
sed -i 's#python2 -S#python2#' $file sed -i 's#python2 -S#python2#' $file
done done
...@@ -176,53 +162,51 @@ make-binary = ...@@ -176,53 +162,51 @@ make-binary =
make-targets= cd ${:path} && make-targets= cd ${:path} &&
${:bundle} install --deployment --without development test mysql kerberos ${:bundle} install --deployment --without development test mysql kerberos
# directories and repositories required by gitlab-backup [gitlab_npm]
[gopath] recipe = slapos.recipe.cmmi
directory = ${buildout:directory}/go.work path = ${gitlab-repository:location}
src = ${:directory}/src
bin = ${:directory}/bin
[go-git-repository]
<= git-repository
repository = https://${:go.importpath}.git
location = ${gopath:src}/${:go.importpath}
[git2go-repository]
<= go-git-repository
go.importpath = github.com/libgit2/git2go
# branch 'next' is required by git-backup
revision = next-g53594d7581617dbae7bb5960b4ac5f0ff513c184
[git-go123]
<= go-git-repository
go.importpath = lab.nexedi.com/kirr/go123
[git-errors]
<= go-git-repository
go.importpath = github.com/pkg/errors
[git-backup-repository] configure-command = :
<= go-git-repository make-binary =
go.importpath = lab.nexedi.com/kirr/git-backup make-targets= cd ${:path} && npm install
revision = cc6ac54f451dfa6e343d6340dcfa25aa6eac9565
environment =
PATH=${nodejs-8.6.0:location}/bin/:%(PATH)s
[git-backup] #our go infrastructure not currently supporting submodules, IIRC
# install git2go, git-backup, gitlab-backup in <gopath>/bin # https://lab.nexedi.com/nexedi/slapos/merge_requests/337
[go_github.com_libgit2_git2go_prepare]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
path = ${git-backup-repository:location} path = ${go_github.com_libgit2_git2go:location}
configure-command = : configure-command = :
make-binary = make-binary =
make-targets= cd ${git2go-repository:location} make-targets= cd ${go_github.com_libgit2_git2go:location}
&& git submodule update --init && git submodule update --init
&& make install && make install
&& install -d ${gopath:bin}
&& go install ${git-backup-repository:go.importpath}
&& cp -a ${git-backup-repository:location}/contrib/gitlab-backup ${gopath:bin}
environment = environment =
PKG_CONFIG_PATH=${openssl:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig PKG_CONFIG_PATH=${openssl:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig
PATH=${cmake:location}/bin:${pkgconfig:location}/bin:${git:location}/bin:${golang19:location}/bin:${buildout:bin-directory}:%(PATH)s PATH=${cmake:location}/bin:${pkgconfig:location}/bin:${git:location}/bin:${golang19:location}/bin:${buildout:bin-directory}:%(PATH)s
GOPATH=${gopath:directory} GOPATH=${gowork:directory}
[gowork]
golang = ${golang19:location}
install =
lab.nexedi.com/kirr/git-backup \
gitlab.com/gitlab-org/gitlab-workhorse \
gitlab.com/gitlab-org/gitlab-workhorse/cmd/gitlab-zip-cat \
gitlab.com/gitlab-org/gitlab-workhorse/cmd/gitlab-zip-metadata
cpkgpath =
${openssl:location}/lib/pkgconfig
${zlib:location}/lib/pkgconfig
before-install =
${go_github.com_libgit2_git2go_prepare:recipe}
[gitlab-backup]
recipe = plone.recipe.command
command =
cp -a ${go_lab.nexedi.com_kirr_git-backup:location}/contrib/gitlab-backup ${gowork:bin}
update-command = ${:command}
[xnice-repository] [xnice-repository]
# to get kirr's misc repo containing xnice script for executing processes # to get kirr's misc repo containing xnice script for executing processes
...@@ -245,19 +229,6 @@ make-binary = ...@@ -245,19 +229,6 @@ make-binary =
make-targets= cd ${:path} && make-targets= cd ${:path} &&
${:bundle} install --deployment --without development test ${:bundle} install --deployment --without development test
# build gitlab-workhorse
[gitlab-workhorse]
recipe = slapos.recipe.cmmi
path = ${gitlab-workhorse-repository:location}
configure-command = :
make-targets= ${:_buildout_section_name_}
environment =
PATH=${golang19:location}/bin:%(PATH)s
############################### ###############################
# Trampoline for instance # # Trampoline for instance #
############################### ###############################
...@@ -275,7 +246,7 @@ eggs = ...@@ -275,7 +246,7 @@ eggs =
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg.in url = ${:_profile_base_location_}/instance.cfg.in
output = ${buildout:directory}/instance.cfg output = ${buildout:directory}/instance.cfg
md5sum = a01b42efe47811cadd70daf47850de93 md5sum = ddadc1eda2b474d6f2349409c05476eb
# macro: download a shell script and put it rendered into <software>/bin/ # macro: download a shell script and put it rendered into <software>/bin/
[binsh] [binsh]
...@@ -318,11 +289,11 @@ md5sum = 61d1d04b9347b3168a1ad7676e4681ef ...@@ -318,11 +289,11 @@ md5sum = 61d1d04b9347b3168a1ad7676e4681ef
[gitconfig.in] [gitconfig.in]
<= download-template <= download-template
md5sum = eb1230fee50067924ba89f4dc6e82fa9 md5sum = 7782f5c5d75663c2586e28d029c51e49
[gitlab-parameters.cfg] [gitlab-parameters.cfg]
<= download-file <= download-file
md5sum = 9ff67261781092ae4d1096d65927b9f2 md5sum = dec5d989e2d969369bd1eaffcbfb78d6
[gitlab-shell-config.yml.in] [gitlab-shell-config.yml.in]
<= download-template <= download-template
...@@ -334,11 +305,11 @@ md5sum = a9cb347f60aad3465932fd36cd4fe25d ...@@ -334,11 +305,11 @@ md5sum = a9cb347f60aad3465932fd36cd4fe25d
[gitlab.yml.in] [gitlab.yml.in]
<= download-template <= download-template
md5sum = fb52f20f04b3c0bacd6a767dac9d6483 md5sum = 0ddf4093dcf4427e5a160707e6017950
[instance-gitlab.cfg.in] [instance-gitlab.cfg.in]
<= download-file <= download-file
md5sum = fc67ab8bb6761fb3e2c56d46266a094c md5sum = bd8bccad43e7cf294af2fc9b60fb3b46
[instance-gitlab-export.cfg.in] [instance-gitlab-export.cfg.in]
<= download-file <= download-file
...@@ -354,7 +325,7 @@ md5sum = a56a44e96f65f5ed20211bb6a54279f4 ...@@ -354,7 +325,7 @@ md5sum = a56a44e96f65f5ed20211bb6a54279f4
[nginx-gitlab-http.conf.in] [nginx-gitlab-http.conf.in]
<= download-template <= download-template
md5sum = 37ea159762fe25db2af6b4ac3870d1e3 md5sum = 697140d980c75ddc1dd0a656b1c88447
[nginx.conf.in] [nginx.conf.in]
<= download-template <= download-template
...@@ -370,7 +341,7 @@ md5sum = 7c89a730889e3224548d9abe51a2d719 ...@@ -370,7 +341,7 @@ md5sum = 7c89a730889e3224548d9abe51a2d719
[smtp_settings.rb.in] [smtp_settings.rb.in]
<= download-template <= download-template
md5sum = c67ea492e17f774d0e18f1217338a55f md5sum = 4e1ced687a86e4cfff2dde91237e3942
[template-gitlab-resiliency-restore.sh.in] [template-gitlab-resiliency-restore.sh.in]
<= download-template <= download-template
......
...@@ -23,4 +23,4 @@ ...@@ -23,4 +23,4 @@
[core] [core]
autocrlf = input autocrlf = input
[gc] [gc]
auto = 0 auto = 0
\ No newline at end of file
...@@ -53,6 +53,7 @@ production: &base ...@@ -53,6 +53,7 @@ production: &base
email_from: {{ cfg('email_from') }} email_from: {{ cfg('email_from') }}
email_display_name: {{ cfg('email_display_name') }} email_display_name: {{ cfg('email_display_name') }}
email_reply_to: {{ cfg('email_reply_to') }} email_reply_to: {{ cfg('email_reply_to') }}
email_subject_suffix: ''
# Email server smtp settings are in [a separate file](initializers/smtp_settings.rb.sample). # Email server smtp settings are in [a separate file](initializers/smtp_settings.rb.sample).
...@@ -93,14 +94,15 @@ production: &base ...@@ -93,14 +94,15 @@ production: &base
{# default is just ok {# default is just ok
## Repository downloads directory ## Repository downloads directory
# When a user clicks e.g. 'Download zip' on a project, a temporary zip file is created in the following directory. # When a user clicks e.g. 'Download zip' on a project, a temporary zip file is created in the following directory.
# The default is 'tmp/repositories' relative to the root of the Rails app. # The default is 'shared/cache/archive/' relative to the root of the Rails app.
# repository_downloads_path: shared/cache/archive/
repository_downloads_path: <%= @gitlab_repository_downloads_path %> repository_downloads_path: <%= @gitlab_repository_downloads_path %>
#} #}
{# we do not support reply by email {# we do not support reply by email
## Reply by email ## Reply by email
# Allow users to comment on issues and merge requests by replying to notification emails. # Allow users to comment on issues and merge requests by replying to notification emails.
# For documentation on how to set this up, see http://doc.gitlab.com/ce/incoming_email/README.html # For documentation on how to set this up, see http://doc.gitlab.com/ce/administration/reply_by_email.html
incoming_email: incoming_email:
enabled: <%= @incoming_email_enabled %> enabled: <%= @incoming_email_enabled %>
...@@ -126,6 +128,8 @@ production: &base ...@@ -126,6 +128,8 @@ production: &base
# The mailbox where incoming mail will end up. Usually "inbox". # The mailbox where incoming mail will end up. Usually "inbox".
mailbox: <%= single_quote(@incoming_email_mailbox_name) %> mailbox: <%= single_quote(@incoming_email_mailbox_name) %>
# The IDLE command timeout.
idle_timeout: 60
#} #}
{# we do not support build artifacts {# we do not support build artifacts
...@@ -384,6 +388,15 @@ production: &base ...@@ -384,6 +388,15 @@ production: &base
path: /dev/null path: /dev/null
timeout: 0 timeout: 0
## Repositories settings
repositories:
# Paths where repositories can be stored. Give the canonicalized absolute pathname.
# IMPORTANT: None of the path components may be symlink, because
# gitlab-shell invokes Dir.pwd inside the repository path and that results
# real path not the symlink.
storages: # You must have at least a `default` storage path.
default: {{ gitlab.repositories }}
## Backup settings ## Backup settings
backup: backup:
path: "{{ gitlab.backup }}" # Relative paths are relative to Rails.root (default: tmp/backups/) path: "{{ gitlab.backup }}" # Relative paths are relative to Rails.root (default: tmp/backups/)
...@@ -404,7 +417,6 @@ production: &base ...@@ -404,7 +417,6 @@ production: &base
encryption: <%= @backup_encryption %> encryption: <%= @backup_encryption %>
#} #}
## GitLab Shell settings ## GitLab Shell settings
gitlab_shell: gitlab_shell:
path: {{ gitlab_shell_work.location }} path: {{ gitlab_shell_work.location }}
...@@ -494,6 +506,9 @@ test: ...@@ -494,6 +506,9 @@ test:
# user: YOUR_USERNAME # user: YOUR_USERNAME
satellites: satellites:
path: tmp/tests/gitlab-satellites/ path: tmp/tests/gitlab-satellites/
repositories:
storages:
default: tmp/tests/repositories/
gitlab_shell: gitlab_shell:
path: tmp/tests/gitlab-shell/ path: tmp/tests/gitlab-shell/
repos_path: tmp/tests/repositories/ repos_path: tmp/tests/repositories/
......
...@@ -118,6 +118,8 @@ server { ...@@ -118,6 +118,8 @@ server {
{# we do not support relative URL - path is always "/" #} {# we do not support relative URL - path is always "/" #}
{% set path = "/" %} {% set path = "/" %}
location {{ path }} { location {{ path }} {
# Set CORS header
add_header 'Access-Control-Allow-Origin' {{ cfg('nginx_header_allow_origin') }};
## If you use HTTPS make sure you disable gzip compression ## If you use HTTPS make sure you disable gzip compression
## to be safe against BREACH attack. ## to be safe against BREACH attack.
{{ 'gzip off;' if cfg_https else ''}} {{ 'gzip off;' if cfg_https else ''}}
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
if Rails.env.production? if Rails.env.production?
Gitlab::Application.config.action_mailer.delivery_method = :smtp Gitlab::Application.config.action_mailer.delivery_method = :smtp
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = { ActionMailer::Base.smtp_settings = {
address: "{{ cfg('smtp_address') }}", address: "{{ cfg('smtp_address') }}",
port: {{ cfg('smtp_port') }}, port: {{ cfg('smtp_port') }},
......
...@@ -15,7 +15,7 @@ parts = ...@@ -15,7 +15,7 @@ parts =
eggs eggs
instance-recipe-egg instance-recipe-egg
xserver xserver
firefox firefox-wrapper
geckodriver geckodriver
xwd xwd
......
...@@ -18,7 +18,7 @@ md5sum = 713db528880282d568278f09458d2aab ...@@ -18,7 +18,7 @@ md5sum = 713db528880282d568278f09458d2aab
[template-runner] [template-runner]
filename = instance-runner.cfg filename = instance-runner.cfg
md5sum = 04e31ac503753f89510dd412b4680c56 md5sum = cefbc8abef234c9a74f88688a0ac0030
[template-runner-import-script] [template-runner-import-script]
filename = template/runner-import.sh.jinja2 filename = template/runner-import.sh.jinja2
......
...@@ -354,7 +354,7 @@ context = ...@@ -354,7 +354,7 @@ context =
<= logrotate-entry-base <= logrotate-entry-base
name = nginx name = nginx
log = $${directory:log}/nginx.access.log $${directory:log}/nginx.error.log log = $${directory:log}/nginx.access.log $${directory:log}/nginx.error.log
post = kill -SIGUSR1 $(cat $${buildout:directory}/var/run/nginx.pid) post = kill -USR1 $(cat $${buildout:directory}/var/run/nginx.pid)
[httpd-parameters] [httpd-parameters]
path_pid = $${directory:run}/httpd.pid path_pid = $${directory:run}/httpd.pid
...@@ -797,7 +797,7 @@ wrapper-path = $${directory:services}/supervisord ...@@ -797,7 +797,7 @@ wrapper-path = $${directory:services}/supervisord
<= logrotate-entry-base <= logrotate-entry-base
name = supervisord name = supervisord
log = $${directory:log}/slapproxy.log $${directory:log}/supervisord.log $${directory:log}/supervisord-errors.log log = $${directory:log}/slapproxy.log $${directory:log}/supervisord.log $${directory:log}/supervisord-errors.log
post = kill -SIGUSR2 $(cat $${buildout:directory}/var/run/supervisord.pid) post = kill -USR2 $(cat $${buildout:directory}/var/run/supervisord.pid)
[logrotate-entry-slapgrid] [logrotate-entry-slapgrid]
<= logrotate-entry-base <= logrotate-entry-base
......
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