Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Eric Zheng
slapos
Commits
cbefe5a4
Commit
cbefe5a4
authored
Dec 29, 2019
by
Bryton Lacquement
🚪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ERP5: add support for Python 3
parent
678151d9
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
93 additions
and
85 deletions
+93
-85
software/erp5/test/test/test_balancer.py
software/erp5/test/test/test_balancer.py
+12
-9
software/erp5/test/test/test_erp5.py
software/erp5/test/test/test_erp5.py
+11
-9
software/erp5/test/test/test_mariadb.py
software/erp5/test/test/test_mariadb.py
+5
-5
software/neoppod/buildout.hash.cfg
software/neoppod/buildout.hash.cfg
+2
-2
software/neoppod/instance.cfg.in
software/neoppod/instance.cfg.in
+1
-1
software/neoppod/root-common.cfg.in
software/neoppod/root-common.cfg.in
+3
-3
stack/erp5/buildout.hash.cfg
stack/erp5/buildout.hash.cfg
+9
-9
stack/erp5/haproxy.cfg.in
stack/erp5/haproxy.cfg.in
+1
-1
stack/erp5/instance-balancer.cfg.in
stack/erp5/instance-balancer.cfg.in
+9
-9
stack/erp5/instance-erp5.cfg.in
stack/erp5/instance-erp5.cfg.in
+8
-8
stack/erp5/instance-mariadb.cfg.in
stack/erp5/instance-mariadb.cfg.in
+5
-4
stack/erp5/instance-zeo.cfg.in
stack/erp5/instance-zeo.cfg.in
+6
-6
stack/erp5/instance-zope.cfg.in
stack/erp5/instance-zope.cfg.in
+13
-13
stack/erp5/instance.cfg.in
stack/erp5/instance.cfg.in
+4
-2
stack/erp5/run-zelenium-test.py.in
stack/erp5/run-zelenium-test.py.in
+1
-1
stack/erp5/zope.conf.in
stack/erp5/zope.conf.in
+3
-3
No files found.
software/erp5/test/test/test_balancer.py
View file @
cbefe5a4
from
__future__
import
print_function
from
.
import
ERP5InstanceTestCase
from
.
import
setUpModule
from
slapos.testing.utils
import
findFreeTCPPort
from
slapos.util
import
str2bytes
from
BaseHTTPServer
import
HTTPServer
from
BaseHTTPServer
import
BaseHTTPRequestHandler
from
six.moves.BaseHTTPServer
import
BaseHTTPRequestHandler
,
HTTPServer
import
OpenSSL.SSL
from
cryptography.hazmat.backends
import
default_backend
from
cryptography.hazmat.primitives
import
serialization
,
hashes
...
...
@@ -16,9 +17,11 @@ import multiprocessing
import
os
import
requests
import
shutil
import
six
import
subprocess
import
tempfile
import
time
from
six.moves
import
range
setUpModule
# pyflakes
...
...
@@ -28,11 +31,11 @@ class TestHandler(BaseHTTPRequestHandler):
self
.
send_header
(
"Content-Type"
,
"application/json"
)
response
=
{
'Path'
:
self
.
path
,
'Incoming Headers'
:
self
.
headers
.
dict
'Incoming Headers'
:
dict
(
self
.
headers
.
items
())
if
six
.
PY3
else
self
.
headers
.
dict
}
response
=
json
.
dumps
(
response
,
indent
=
2
)
self
.
end_headers
()
self
.
wfile
.
write
(
response
)
self
.
wfile
.
write
(
str2bytes
(
response
)
)
class
TestFrontendXForwardedFor
(
ERP5InstanceTestCase
):
__partition_reference__
=
'xff'
...
...
@@ -93,7 +96,7 @@ class TestFrontendXForwardedFor(ERP5InstanceTestCase):
cls
.
software_release_root_path
=
os
.
path
.
join
(
cls
.
slap
.
_software_root
,
hashlib
.
md5
(
cls
.
getSoftwareURL
(
)).
hexdigest
(),
hashlib
.
md5
(
str2bytes
(
cls
.
getSoftwareURL
()
)).
hexdigest
(),
)
caucased_path
=
os
.
path
.
join
(
cls
.
software_release_root_path
,
'bin'
,
'caucased'
)
caucase_path
=
os
.
path
.
join
(
cls
.
software_release_root_path
,
'bin'
,
'caucase'
)
...
...
@@ -116,7 +119,7 @@ class TestFrontendXForwardedFor(ERP5InstanceTestCase):
pass
time
.
sleep
(
1
)
else
:
raise
RuntimeError
,
'caucased failed to start.'
raise
RuntimeError
(
'caucased failed to start.'
)
cau_args
=
[
caucase_path
,
...
...
@@ -145,7 +148,7 @@ class TestFrontendXForwardedFor(ERP5InstanceTestCase):
stderr
=
subprocess
.
STDOUT
,
)
result
=
caucase_process
.
communicate
()
print
result
print
(
result
)
csr_id
=
result
[
0
].
split
()[
0
]
subprocess
.
check_call
(
...
...
@@ -196,7 +199,7 @@ class TestFrontendXForwardedFor(ERP5InstanceTestCase):
else
:
time
.
sleep
(
1
)
else
:
raise
RuntimeError
,
'getting service certificate failed.'
raise
RuntimeError
(
'getting service certificate failed.'
)
# start a caucased and server certificate.
cls
.
backend_caucase_dir
=
tempfile
.
mkdtemp
()
...
...
@@ -223,7 +226,7 @@ class TestFrontendXForwardedFor(ERP5InstanceTestCase):
pass
time
.
sleep
(
1
)
else
:
raise
RuntimeError
,
'caucased failed to start.'
raise
RuntimeError
(
'caucased failed to start.'
)
super
(
TestFrontendXForwardedFor
,
cls
).
setUpClass
()
...
...
software/erp5/test/test/test_erp5.py
View file @
cbefe5a4
...
...
@@ -28,12 +28,14 @@
import
os
import
json
import
glob
import
urlparse
from
six.moves.urllib.parse
import
urljoin
,
urlparse
import
socket
import
time
import
psutil
import
requests
import
six
from
six.moves
import
map
,
range
from
.
import
ERP5InstanceTestCase
from
.
import
setUpModule
...
...
@@ -70,14 +72,14 @@ class TestPublishedURLIsReachableMixin(object):
"""
param_dict
=
self
.
getRootPartitionConnectionParameterDict
()
self
.
_checkERP5IsReachable
(
url
parse
.
url
join
(
param_dict
[
'family-default-v6'
],
param_dict
[
'site-id'
]))
urljoin
(
param_dict
[
'family-default-v6'
],
param_dict
[
'site-id'
]))
def
test_published_family_default_v4_is_reachable
(
self
):
"""Tests the IPv4 URL published by the root partition is reachable.
"""
param_dict
=
self
.
getRootPartitionConnectionParameterDict
()
self
.
_checkERP5IsReachable
(
url
parse
.
url
join
(
param_dict
[
'family-default'
],
param_dict
[
'site-id'
]))
urljoin
(
param_dict
[
'family-default'
],
param_dict
[
'site-id'
]))
class
TestDefaultParameters
(
ERP5InstanceTestCase
,
TestPublishedURLIsReachableMixin
):
...
...
@@ -122,7 +124,7 @@ class TestApacheBalancerPorts(ERP5InstanceTestCase):
}
def
checkValidHTTPSURL
(
self
,
url
):
parsed
=
urlparse
.
urlparse
(
url
)
parsed
=
urlparse
(
url
)
self
.
assertEqual
(
parsed
.
scheme
,
'https'
)
self
.
assertTrue
(
parsed
.
hostname
)
self
.
assertTrue
(
parsed
.
port
)
...
...
@@ -275,7 +277,7 @@ class TestZopeNodeParameterOverride(ERP5InstanceTestCase, TestPublishedURLIsReac
storage
[
"storage"
]
=
"root"
storage
[
"server"
]
=
zeo_addr
with
open
(
'%s/etc/zope-%s.conf'
%
(
partition
,
zope
))
as
f
:
conf
=
map
(
str
.
strip
,
f
.
readlines
(
))
conf
=
list
(
map
(
str
.
strip
,
f
.
readlines
()
))
i
=
conf
.
index
(
"<zodb_db root>"
)
+
1
conf
=
iter
(
conf
[
i
:
conf
.
index
(
"</zodb_db>"
,
i
)])
for
line
in
conf
:
...
...
@@ -284,23 +286,23 @@ class TestZopeNodeParameterOverride(ERP5InstanceTestCase, TestPublishedURLIsReac
if
line
==
'</zeoclient>'
:
break
checkParameter
(
line
,
storage
)
for
k
,
v
in
s
torage
.
iteritems
(
):
for
k
,
v
in
s
ix
.
iteritems
(
storage
):
self
.
assertIsNone
(
v
,
k
)
del
storage
else
:
checkParameter
(
line
,
zodb
)
for
k
,
v
in
zodb
.
iteritems
(
):
for
k
,
v
in
six
.
iteritems
(
zodb
):
self
.
assertIsNone
(
v
,
k
)
partition
=
self
.
getComputerPartitionPath
(
'zope-a'
)
for
zope
in
x
range
(
3
):
for
zope
in
range
(
3
):
checkConf
({
"cache-size-bytes"
:
"20MB"
,
},
{
"cache-size"
:
"50MB"
,
})
partition
=
self
.
getComputerPartitionPath
(
'zope-bb'
)
for
zope
in
x
range
(
5
):
for
zope
in
range
(
5
):
checkConf
({
"cache-size-bytes"
:
"500MB"
if
zope
else
1
<<
20
,
},
{
...
...
software/erp5/test/test/test_mariadb.py
View file @
cbefe5a4
...
...
@@ -29,7 +29,7 @@
import
os
import
json
import
glob
import
urlparse
from
six.moves.urllib.parse
import
urlparse
import
socket
import
time
import
contextlib
...
...
@@ -72,7 +72,7 @@ class MariaDBTestCase(ERP5InstanceTestCase):
def
getDatabaseConnection
(
self
):
connection_parameter_dict
=
json
.
loads
(
self
.
computer_partition
.
getConnectionParameterDict
()[
'_'
])
db_url
=
urlparse
.
urlparse
(
connection_parameter_dict
[
'database-list'
][
0
])
db_url
=
urlparse
(
connection_parameter_dict
[
'database-list'
][
0
])
self
.
assertEqual
(
'mysql'
,
db_url
.
scheme
)
self
.
assertTrue
(
db_url
.
path
.
startswith
(
'/'
))
...
...
@@ -129,7 +129,7 @@ class TestMroonga(MariaDBTestCase):
"""
SELECT mroonga_normalize("ABCDあぃうぇ㍑")
"""
)
self
.
assertEqual
(((
'abcdあぃうぇリットル'
,),),
self
.
assertEqual
(((
u'abcdあぃうぇリットル'
.
encode
(
'utf-8'
)
,),),
cnx
.
store_result
().
fetch_row
(
maxrows
=
2
))
if
0
:
...
...
@@ -142,7 +142,7 @@ class TestMroonga(MariaDBTestCase):
"""
SELECT mroonga_normalize("aBcDあぃウェ㍑", "NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark")
"""
)
self
.
assertEqual
(((
'ABCDあぃうぇ㍑'
,),),
self
.
assertEqual
(((
u'ABCDあぃうぇ㍑'
.
encode
(
'utf-8'
)
,),),
cnx
.
store_result
().
fetch_row
(
maxrows
=
2
))
def
test_mroonga_full_text_normalizer
(
self
):
...
...
@@ -230,7 +230,7 @@ class TestMroonga(MariaDBTestCase):
cnx
=
self
.
getDatabaseConnection
()
with
contextlib
.
closing
(
cnx
):
cnx
.
query
(
"SELECT mroonga_command('register token_filters/stem')"
)
self
.
assertEqual
(((
'true'
,),),
cnx
.
store_result
().
fetch_row
(
maxrows
=
2
))
self
.
assertEqual
(((
b
'true'
,),),
cnx
.
store_result
().
fetch_row
(
maxrows
=
2
))
cnx
.
query
(
"""
CREATE TABLE memos (
...
...
software/neoppod/buildout.hash.cfg
View file @
cbefe5a4
...
...
@@ -18,7 +18,7 @@ md5sum = 6da513940e5bf7d06b3fb0aeb39c8ad5
[root-common]
filename = root-common.cfg.in
md5sum =
8e28f599247ad604ec6e32df410412a8
md5sum =
9bbbcaca8adb6d034a35cd098e42ead7
[instance-neo-admin]
filename = instance-neo-admin.cfg.in
...
...
@@ -38,7 +38,7 @@ md5sum = 9f6f8f2b5f4cb0d97d50ffc1d3837e2f
[template-neo]
filename = instance.cfg.in
md5sum =
9e63e16eda75e73ad4ffb50afde0505d
md5sum =
3c7770c03c51ee12d5a94f0924e98990
[cluster]
filename = cluster.cfg.in
...
...
software/neoppod/instance.cfg.in
View file @
cbefe5a4
...
...
@@ -9,7 +9,7 @@ rendered = ${buildout:parts-directory}/${:_buildout_section_name_}.cfg
template = {{ cluster }}
extra-context =
import re re
import url
parse url
parse
import url
lib_parse six.moves.urllib.
parse
import-list =
rawfile root_common {{ root_common }}
...
...
software/neoppod/root-common.cfg.in
View file @
cbefe5a4
...
...
@@ -2,13 +2,13 @@
{% set part_list = [] -%}
{% set sla_dict = {} -%}
{% for sla, ref_list in s
lapparameter_dict.get('sla-dict', {}).iteritems(
) -%}
{% for sla, ref_list in s
ix.iteritems(slapparameter_dict.get('sla-dict', {})
) -%}
{% do sla_dict.update(dict.fromkeys(ref_list, sla)) -%}
{% endfor -%}
{% macro sla(name, required=False) -%}
{% if required or name in sla_dict -%}
{% for k, (v,) in
urlparse.parse_qs(sla_dict.pop(name), strict_parsing=1).iteritems(
) -%}
{% for k, (v,) in
six.iteritems(urllib_parse.parse_qs(sla_dict.pop(name), strict_parsing=1)
) -%}
sla-{{ k }} = {{ v }}
{% endfor -%}
{% else -%}
...
...
@@ -132,7 +132,7 @@ config-monitor-port = {{ dumps(port) }}
{%- endif %}
config-monitor = {{ dumps(parameter_dict.get('monitor', {})) }}
{%- endif %}
{%- for k, v in
node.iteritems(
) %}
{%- for k, v in
six.iteritems(node
) %}
config-{{ k }} = {{ dumps(v) }}
{%- endfor %}
{{ sla(section_id) }}
...
...
stack/erp5/buildout.hash.cfg
View file @
cbefe5a4
...
...
@@ -26,7 +26,7 @@ md5sum = d10b8e35b02b5391cf46bf0c7dbb1196
[template-mariadb]
filename = instance-mariadb.cfg.in
md5sum =
bfed6ac56c3ba0e96be4c9474dac6f20
md5sum =
7fdf1a42b252f9dfdf3a05ebabf608f2
[template-kumofs]
filename = instance-kumofs.cfg.in
...
...
@@ -34,7 +34,7 @@ md5sum = e91c0fbd0df441884f7422fa7976053c
[template-zope-conf]
filename = zope.conf.in
md5sum =
c43da8f7b4db22e40a4864e6cfcaef44
md5sum =
dedc3c3f09a09e4b3332869cab33e8db
[site-zcml]
filename = site.zcml
...
...
@@ -66,11 +66,11 @@ md5sum = 0969fbb25b05c02ef3c2d437b2f4e1a0
[template-run-zelenium]
filename = run-zelenium-test.py.in
md5sum =
cc19560b9400cecbd23064d55c501eec
md5sum =
6afc237458fcc0538dd7971c2e90aa96
[template]
filename = instance.cfg.in
md5sum =
328ea2bb5f2bff18f8be8c541c01f26
0
md5sum =
87ac816fc7b5d0232e21e2cae2ac284
0
[monitor-template-dummy]
filename = dummy.cfg
...
...
@@ -78,20 +78,20 @@ md5sum = 68b329da9893e34099c7d8ad5cb9c940
[template-erp5]
filename = instance-erp5.cfg.in
md5sum =
82dc695e212be124d60ceb1143e56b0d
md5sum =
0856d99bd78c1c35ae63459e991f7010
[template-zeo]
filename = instance-zeo.cfg.in
md5sum =
0648e38bd5d3a15bb9f93264932740b9
md5sum =
862d3b5309aa4d80bfa48703fcffbed0
[template-zope]
filename = instance-zope.cfg.in
md5sum =
2f3ddd328ac1c375e483ecb2ef5ffb57
md5sum =
bb835a43675c6b7177895479864ba783
[template-balancer]
filename = instance-balancer.cfg.in
md5sum =
0097e49b5bd7ad4978c722c1cdd27d6c
md5sum =
15663c41e0a7b74ebf3573e9e0835289
[template-haproxy-cfg]
filename = haproxy.cfg.in
md5sum =
fec6a312e4ef84b02837742992aaf495
md5sum =
3848f3b78811d72b7633973fad9c54e9
stack/erp5/haproxy.cfg.in
View file @
cbefe5a4
...
...
@@ -32,7 +32,7 @@ defaults
# to render a page
option httpclose
{% for name, (port, backend_list) in sorted(
parameter_dict['backend-dict'].iteritems(
)) -%}
{% for name, (port, backend_list) in sorted(
six.iteritems(parameter_dict['backend-dict']
)) -%}
listen {{ name }}
bind {{ parameter_dict['ip'] }}:{{ port }}
http-request set-header X-Balancer-Current-Cookie SERVERID
...
...
stack/erp5/instance-balancer.cfg.in
View file @
cbefe5a4
...
...
@@ -41,7 +41,7 @@ mode = 644
{% set frontend_caucase_url_hash_list = [] -%}
{% for frontend_caucase_url in frontend_caucase_url_list -%}
{% set hash = hashlib.md5(
frontend_caucase_url
).hexdigest() -%}
{% set hash = hashlib.md5(
six.ensure_binary(frontend_caucase_url)
).hexdigest() -%}
{% do frontend_caucase_url_hash_list.append(hash) -%}
{% set data_dir = '${directory:srv}/client-cert-ca/%s' % hash -%}
{{ caucase.updater(
...
...
@@ -101,9 +101,9 @@ update-command = ${:command}
{% set apache_dict = {} -%}
{% set zope_virtualhost_monster_backend_dict = {} %}
{% set test_runner_url_dict = {} %} {# family_name => list of apache URLs #}
{% set
next_port = itertools.count(slapparameter_dict['tcpv4-port']).next
-%}
{% set
ports = itertools.count(slapparameter_dict['tcpv4-port'])
-%}
{% for family_name, parameter_id_list in sorted(
s
lapparameter_dict['zope-family-dict'].iteritems(
)) -%}
s
ix.iteritems(slapparameter_dict['zope-family-dict']
)) -%}
{% set zope_family_address_list = [] -%}
{% set ssl_authentication = slapparameter_dict['ssl-authentication-dict'].get(family_name, False) -%}
{% set has_webdav = [] -%}
...
...
@@ -122,7 +122,7 @@ update-command = ${:command}
{% if test_runner_address_list -%}
{% set test_runner_backend_mapping = {} %}
{% set test_runner_apache_url_list = [] %}
{% set test_runner_external_port = next
_port(
) %}
{% set test_runner_external_port = next
(ports
) %}
{% for i, (test_runner_internal_ip, test_runner_internal_port) in enumerate(test_runner_address_list) %}
{% do test_runner_backend_mapping.__setitem__(
'unit_test_' ~ i,
...
...
@@ -144,7 +144,7 @@ update-command = ${:command}
# do a no-op getitem.
-#}
{% do zope_family_address_list[0][0] -%}
{% set haproxy_port = next
_port(
) -%}
{% set haproxy_port = next
(ports
) -%}
{% set backend_path = slapparameter_dict['backend-path-dict'][family_name] -%}
{% do haproxy_dict.__setitem__(family_name, (haproxy_port, zope_family_address_list)) -%}
{% if has_webdav -%}
...
...
@@ -154,7 +154,7 @@ update-command = ${:command}
{% set internal_scheme = 'http' -%}
{% set external_scheme = 'https' -%}
{% endif -%}
{% do apache_dict.__setitem__(family_name, (next
_port(
), external_scheme, internal_scheme ~ '://' ~ ipv4 ~ ':' ~ haproxy_port ~ backend_path, slapparameter_dict['ssl-authentication-dict'].get(family_name, False))) -%}
{% do apache_dict.__setitem__(family_name, (next
(ports
), external_scheme, internal_scheme ~ '://' ~ ipv4 ~ ':' ~ haproxy_port ~ backend_path, slapparameter_dict['ssl-authentication-dict'].get(family_name, False))) -%}
{% endfor -%}
[haproxy-cfg-parameter-dict]
...
...
@@ -218,7 +218,7 @@ cert = ${apache-conf-ssl:cert}
{%- endif %}
[apache-conf-parameter-dict]
backend-list = {{ dumps(
apache_dict.values(
)) }}
backend-list = {{ dumps(
list(apache_dict.values()
)) }}
zope-virtualhost-monster-backend-dict = {{ dumps(zope_virtualhost_monster_backend_dict) }}
ip-list = {{ dumps(apache_ip_list) }}
pid-file = ${directory:run}/apache.pid
...
...
@@ -266,7 +266,7 @@ input = inline:
module = check_port_listening
name = apache.py
config-hostname = {{ ipv4 }}
config-port = {{
apache_dict.values(
)[0][0] }}
config-port = {{
list(apache_dict.values()
)[0][0] }}
[{{ section('publish') }}]
recipe = slapos.cookbook:publish.serialised
...
...
@@ -345,7 +345,7 @@ config-command = "{{ parameter_dict["check-computer-memory-binary"] }}" -db ${mo
[monitor-instance-parameter]
monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }}
monitor-httpd-port = {{ next
_port(
) }}
monitor-httpd-port = {{ next
(ports
) }}
monitor-title = {{ slapparameter_dict['name'] }}
password = {{ slapparameter_dict['monitor-passwd'] }}
...
...
stack/erp5/instance-erp5.cfg.in
View file @
cbefe5a4
...
...
@@ -24,7 +24,7 @@
{% set use_ipv6 = slapparameter_dict.get('use-ipv6', False) -%}
{% set partition_thread_count_list = [] -%}
{% set zope_partition_dict = slapparameter_dict.get('zope-partition-dict', {'1': {}}) -%}
{% for zope_parameter_dict in
zope_partition_dict.values(
) -%}
{% for zope_parameter_dict in
list(zope_partition_dict.values()
) -%}
{# Apply some zope_parameter_dict default values, to avoid duplication. -#}
{% do zope_parameter_dict.setdefault('thread-amount', 4) -%}
{% do zope_parameter_dict.setdefault('instance-count', 1) -%}
...
...
@@ -44,7 +44,7 @@ config-computer-memory-percent-threshold = {{ dumps(monitor_dict.get('computer-m
name = {{ name }}
software-type = {{ software_type }}
return = {{ ' '.join(ret) }}
{% for ret, publish in
ret.iteritems(
) -%}
{% for ret, publish in
six.iteritems(ret
) -%}
{% if publish -%}
{% do publish_dict.__setitem__(name ~ '-' ~ ret, '${' ~ section ~ ':connection-' ~ ret ~ '}') %}
{% endif -%}
...
...
@@ -53,10 +53,10 @@ return = {{ ' '.join(ret) }}
{% endif -%}
{% endfor -%}
{{ root_common.sla(name) }}
{% for k, v in
config.iteritems(
) -%}
{% for k, v in
six.iteritems(config
) -%}
config-{{ k }} = {{ dumps(v) }}
{% endfor -%}
{% for k, v in
key_config.iteritems(
) -%}
{% for k, v in
six.iteritems(key_config
) -%}
config-{{ k }} = {{ '${' ~ v ~ '}' }}
{% endfor -%}
config-name = {{ name }}
...
...
@@ -146,7 +146,7 @@ connection-url = smtp://127.0.0.2:0/
{% endfor -%}
{% do assert(len(mountpoints) == len(zodb_dict)) -%}
{% set neo = [] -%}
{% for server_type, server_dict in s
torage_dict.iteritems(
) -%}
{% for server_type, server_dict in s
ix.iteritems(storage_dict
) -%}
{% if server_type == 'neo' -%}
{% set ((name, server_dict),) = server_dict.items() -%}
{% do neo.append(server_dict.get('cluster')) -%}
...
...
@@ -208,10 +208,10 @@ config-wsgi = {{ dumps(slapparameter_dict.get('wsgi', True)) }}
config-zodb-dict = {{ dumps(zodb_dict) }}
config-test-runner-enabled = {{ dumps(test_runner_enabled) }}
config-test-runner-node-count = {{ dumps(test_runner_node_count) }}
{% for server_type, server_dict in s
torage_dict.iteritems(
) -%}
{% for server_type, server_dict in s
ix.iteritems(storage_dict
) -%}
{% if server_type == 'neo' -%}
config-neo-cluster = ${publish-early:neo-cluster}
config-neo-name = {{
server_dict.keys(
)[0] }}
config-neo-name = {{
list(server_dict
)[0] }}
config-neo-masters = ${publish-early:neo-masters}
{% else -%}
config-zodb-zeo = ${request-zodb:connection-storage-dict}
...
...
@@ -372,7 +372,7 @@ recipe = slapos.cookbook:publish.serialised
Pick any published hosts-dict, they are expected to be identical - and there is
no way to check here.
-#}
hosts-dict = {{ '${' ~
zope_address_list_id_dict.keys(
)[0] ~ ':connection-hosts-dict}' }}
hosts-dict = {{ '${' ~
list(zope_address_list_id_dict
)[0] ~ ':connection-hosts-dict}' }}
{% endif -%}
{% for name, value in publish_dict.items() -%}
{{ name }} = {{ value }}
...
...
stack/erp5/instance-mariadb.cfg.in
View file @
cbefe5a4
...
...
@@ -195,16 +195,17 @@ environ =
{{ variable }}
{%- endfor %}
[odbc-ini-text]
text = {{ dumps(slapparameter_dict.get('odbc-ini', '').encode('base64')) }}
[{{ section('odbc-ini') }}]
< = jinja2-template-base
rendered = ${directory:etc}/odbc.ini
template = inline:{% raw -%}
{{
parameter_dict['text'].decode('base64
') }}
{{
base64.b64decode(text).decode('utf-8
') }}
{%- endraw %}
context = section parameter_dict odbc-ini-text
text = {{ dumps(base64.b64encode(slapparameter_dict.get('odbc-ini', '').encode('utf-8'))) }}
context =
key text :text
import base64 base64
[{{ section('logrotate-entry-mariadb') }}]
< = logrotate-entry-base
...
...
stack/erp5/instance-zeo.cfg.in
View file @
cbefe5a4
{% set
next_port = itertools.count(slapparameter_dict['tcpv4-port']).next
-%}
{% set
ports = itertools.count(slapparameter_dict['tcpv4-port'])
-%}
{% set ipv4 = (ipv4_set | list)[0] -%}
{% set backup_periodicity = slapparameter_dict.get('backup-periodicity', 'daily') -%}
{% set part_list = [] -%}
...
...
@@ -19,13 +19,13 @@ ip = {{ ipv4 }}
{% set known_tid_storage_identifier_dict = {} -%}
{% set zodb_dict = {} -%}
{% for name, zodb in s
lapparameter_dict['zodb-dict'].iteritems(
) -%}
{% for name, zodb in s
ix.iteritems(slapparameter_dict['zodb-dict']
) -%}
{% do zodb_dict.setdefault(zodb.get('family', 'default').lower(), []).append((name, zodb)) -%}
{% endfor -%}
{% set tidstorage_port = slapparameter_dict['tcpv4-port'] + len(zodb_dict) -%}
{% for family, zodb in
zodb_dict.iteritems(
) -%}
{% for family, zodb in
six.iteritems(zodb_dict
) -%}
{% set storage_list = [] -%}
{% set current_port = next
_port(
) -%}
{% set current_port = next
(ports
) -%}
{% set known_tid_storage_identifier_host = (ipv4, current_port), -%}
{% for name, zodb in zodb -%}
{% do storage_dict.__setitem__(name, {'server': ipv4 ~ ':' ~ current_port, 'storage': name}) %}
...
...
@@ -140,7 +140,7 @@ input = inline: #!/bin/sh
zodb_backup_directory="{{ default_backup_path }}"
repozo="${tidstorage:repozo-binary}"
EXIT_CODE=0
{% for family, zodb in
zodb_dict.iteritems(
) -%}
{% for family, zodb in
six.iteritems(zodb_dict
) -%}
{% for name, zodb in zodb -%}
{% set zeo_section_name = 'zeo-' ~ family %}
storage_name="{{ name }}"
...
...
@@ -209,7 +209,7 @@ tidstorage = {{ tidstorage_repozo_path }}
[monitor-instance-parameter]
monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }}
monitor-httpd-port = {{ next
_port(
) }}
monitor-httpd-port = {{ next
(ports
) }}
monitor-title = {{ slapparameter_dict['name'] }}
password = {{ slapparameter_dict['monitor-passwd'] }}
...
...
stack/erp5/instance-zope.cfg.in
View file @
cbefe5a4
{% set wsgi = slapparameter_dict['wsgi'] -%}
{% set webdav = slapparameter_dict['webdav'] -%}
{% set use_ipv6 = slapparameter_dict.get('use-ipv6', False) -%}
{% set
next_port = itertools.count(slapparameter_dict['port-base']).next
-%}
{% set
ports = itertools.count(slapparameter_dict['port-base'])
-%}
{% set site_id = slapparameter_dict['site-id'] -%}
{% set zodb_dict = slapparameter_dict['zodb-dict'] -%}
{% set instance_index_list = range(slapparameter_dict['instance-count']) -%}
...
...
@@ -30,14 +30,14 @@ partition. No more (undefined result), no less (IndexError).
('erp5-cloudooo', slapparameter_dict['cloudooo-url']),
('erp5-smtp', slapparameter_dict['smtp-url']),
) -%}
{% set parsed_url = urlparse.urlparse(url) -%}
{% set parsed_url = url
lib_
parse.urlparse(url) -%}
{% do port_dict.__setitem__(alias, parsed_url.port) -%}
{% do hosts_dict.__setitem__(alias, parsed_url.hostname) -%}
{%- endfor %}
{% for i, url in enumerate(slapparameter_dict['mysql-url-list']) -%}
{% do hosts_dict.__setitem__(
'erp5-catalog-' ~ i,
urlparse.urlparse(url).hostname,
url
lib_
parse.urlparse(url).hostname,
) -%}
{%- endfor %}
{% do hosts_dict.update(slapparameter_dict['hosts-dict']) -%}
...
...
@@ -180,7 +180,7 @@ environment =
command-line = '{{ parameter_dict['userhosts'] }}' ${:wrapped-command-line}
{# Hack to deploy SSL certs via instance parameters -#}
{% for zodb in
zodb_dict.itervalues(
) -%}
{% for zodb in
six.itervalues(zodb_dict
) -%}
{% set storage_dict = zodb.setdefault('storage-dict', {}) -%}
{% if zodb['type'] == 'neo' and storage_dict.get('ssl', 1) -%}
{% for k, v in (('_ca', 'ca.crt'),
...
...
@@ -221,7 +221,7 @@ file-list = {{ parameter_dict['site-zcml'] }}
[{{ section('zope-inituser') }}]
< = jinja2-template-base
rendered = ${directory:instance}/inituser
template = inline:{{ slapparameter_dict['inituser-login'] }}:{SHA}{{
hashlib.sha1(slapparameter_dict['inituser-password']).digest().encode('base64').rstrip(
) }}
template = inline:{{ slapparameter_dict['inituser-login'] }}:{SHA}{{
base64.b64encode(hashlib.sha1(slapparameter_dict['inituser-password'].encode('utf-8')).digest()
) }}
mode = 600
once = ${:rendered}_done
...
...
@@ -231,7 +231,7 @@ site-id = {{ site_id }}
{% if site_id -%}
mysql-url = {{ slapparameter_dict['mysql-url-list'][0] }}
inituser = {{ slapparameter_dict['inituser-login'] }}
{% set mysql = urlparse.urlsplit(slapparameter_dict['mysql-url-list'][0]) -%}
{% set mysql = url
lib_
parse.urlsplit(slapparameter_dict['mysql-url-list'][0]) -%}
{% set mysql_db = mysql.path.split('/')[1] -%}
sql-connection-string = {{ '%s@erp5-catalog-0:%s %s %s' % (
mysql_db, mysql.port, mysql.username, mysql.password) }}
...
...
@@ -242,13 +242,13 @@ home = ${buildout:directory}
# We only want to change the hostname to 'erp5-cloudooo' if we use the internal
# cloudooo. We plan to remove the ability to have an internal one, so this
# heuristic is enough.
{% set cloudooo = urlparse.urlsplit(slapparameter_dict['cloudooo-url']) -%}
{% set cloudooo = url
lib_
parse.urlsplit(slapparameter_dict['cloudooo-url']) -%}
cloudooo-url = {{ (cloudooo if cloudooo.port == None else
cloudooo._replace(netloc='erp5-cloudooo:%s' % cloudooo.port)).geturl() }}
{% endif -%}
{% set zeo_dict = slapparameter_dict.get('zodb-zeo', {}) -%}
{% for name, zodb in
zodb_dict.iteritems(
) -%}
{% for name, zodb in
six.iteritems(zodb_dict
) -%}
{% set storage_dict = zodb.setdefault('storage-dict', {}) -%}
{% if zodb['type'] == 'zeo' -%}
{% do storage_dict.update(zeo_dict.get(name, ())) -%}
...
...
@@ -316,7 +316,7 @@ z2-log = ${directory:log}/{{ name }}-Z2.log
node-id = {{ dumps(node_id_base ~ (node_id_index_format % index)) }}
{% set log_list = [] -%}
{% set import_set = set() -%}
{% for db_name, zodb in
zodb_dict.iteritems(
) -%}
{% for db_name, zodb in
six.iteritems(zodb_dict
) -%}
{% do zodb.setdefault('pool-size', thread_amount) -%}
{% if zodb['type'] == 'neo' -%}
{% do import_set.add('neo.client') -%}
...
...
@@ -410,7 +410,7 @@ post = test ! -s {{ '${' ~ conf_parameter_name ~ ':pid-file}' }} || {{ bin_direc
{% for i in instance_index_list -%}
{{ zope(
i,
next
_port(
),
next
(ports
),
slapparameter_dict['longrequest-logger-timeout'],
slapparameter_dict['longrequest-logger-interval'],
) }}
...
...
@@ -428,7 +428,7 @@ wrapper-path = ${buildout:bin-directory}/${:_buildout_section_name_}
{% if test_runner_enabled and test_runner_node_count -%}
{% for _ in range(test_runner_node_count) %}
{% do test_runner_address_list.append((ipv4, next
_port(
))) %}
{% do test_runner_address_list.append((ipv4, next
(ports
))) %}
{% endfor %}
{% if selenium_server_configuration_dict -%}
...
...
@@ -462,7 +462,7 @@ wrapper-path = ${buildout:bin-directory}/runTestSuite
{% set connection_string_list = [] -%}
{% for url in slapparameter_dict['mysql-test-url-list'] -%}
{% set parsed_url = urlparse.urlparse(url) -%}
{% set parsed_url = url
lib_
parse.urlparse(url) -%}
{% do connection_string_list.append(
'%s@%s:%s %s %s' % (
parsed_url.path.lstrip('/'),
...
...
@@ -560,7 +560,7 @@ test-runner-address-list = {{ dumps(test_runner_address_list) }}
[monitor-instance-parameter]
monitor-httpd-ipv6 = {{ (ipv6_set | list)[0] }}
monitor-httpd-port = {{ next
_port(
) }}
monitor-httpd-port = {{ next
(ports
) }}
monitor-title = {{ slapparameter_dict['name'] }}
password = {{ slapparameter_dict['monitor-passwd'] }}
...
...
stack/erp5/instance.cfg.in
View file @
cbefe5a4
...
...
@@ -47,7 +47,7 @@ extra-context =
key local_bt5_repository dynamic-template-erp5-parameters:local-bt5-repository
key openssl_location :openssl-location
import re re
import url
parse url
parse
import url
lib_parse six.moves.urllib.
parse
import-list =
file root_common context:root-common
file caucase context:caucase-jinja2-library
...
...
@@ -118,7 +118,8 @@ extra-context =
key buildout_directory buildout:directory
key root_common context:root-common
section parameter_dict dynamic-template-zope-parameters
import urlparse urlparse
import base64 base64
import urllib_parse six.moves.urllib.parse
import hashlib hashlib
import itertools itertools
...
...
@@ -165,6 +166,7 @@ template = {{ template_mariadb }}
filename = instance-mariadb.cfg
extra-context =
section parameter_dict dynamic-template-mariadb-parameters
import base64 base64
# Keep a section for backward compatibility for removed types
# Once the section is removed, ghost instances will keep failing until
...
...
stack/erp5/run-zelenium-test.py.in
View file @
cbefe5a4
...
...
@@ -181,7 +181,7 @@ def main():
try:
test_result = tool.createTestResult(revision = revision,
test_name_list =
test_line_dict.keys(
),
test_name_list =
list(test_line_dict
),
node_title = args.test_node_title,
test_title = test_suite_title,
project_title = args.project_title)
...
...
stack/erp5/zope.conf.in
View file @
cbefe5a4
...
...
@@ -151,17 +151,17 @@ large-file-threshold {{ parameter_dict['large-file-threshold'] }}
%import {{ m }}
{% endfor -%}
{% set type_dict = {'neo': 'NEOStorage', 'zeo': 'zeoclient'} %}
{% for name, zodb_dict in
parameter_dict['zodb-dict'].iteritems(
) %}
{% for name, zodb_dict in
six.iteritems(parameter_dict['zodb-dict']
) %}
<zodb_db {{ name }}>
{%- set storage_type = type_dict[zodb_dict.pop('type')] %}
{%- set storage_dict = zodb_dict.pop('storage-dict') %}
{%- do root_common.apply_overrides(zodb_dict, node_id) %}
{%- for key, value in
zodb_dict.iteritems(
) %}
{%- for key, value in
six.iteritems(zodb_dict
) %}
{{ key }} {{ value }}
{%- endfor %}
<{{ storage_type }}>
{%- do root_common.apply_overrides(storage_dict, node_id) %}
{%- for key, value in s
torage_dict.iteritems(
) %}
{%- for key, value in s
ix.iteritems(storage_dict
) %}
{{ key }} {{ value }}
{%- endfor %}
</{{ storage_type }}>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment