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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Eteri
slapos
Commits
bddd1eb6
Commit
bddd1eb6
authored
Oct 17, 2011
by
Łukasz Nowak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Switch zope instantiation to a profile based.
parent
8c3424cb
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
258 additions
and
119 deletions
+258
-119
slapos/recipe/erp5/__init__.py
slapos/recipe/erp5/__init__.py
+0
-97
slapos/recipe/erp5/template/zope-deadlockdebugger-snippet.conf.in
...ecipe/erp5/template/zope-deadlockdebugger-snippet.conf.in
+0
-7
slapos/recipe/erp5/template/zope-zodb-snippet.conf.in
slapos/recipe/erp5/template/zope-zodb-snippet.conf.in
+0
-7
slapos/recipe/erp5/template/zope.conf.timerservice.in
slapos/recipe/erp5/template/zope.conf.timerservice.in
+0
-6
slapos/recipe/generic_zope/__init__.py
slapos/recipe/generic_zope/__init__.py
+86
-0
slapos/recipe/generic_zope/killpidfromfile.py
slapos/recipe/generic_zope/killpidfromfile.py
+16
-0
slapos/recipe/generic_zope/template/site.zcml
slapos/recipe/generic_zope/template/site.zcml
+0
-0
slapos/recipe/generic_zope/template/zope.conf.in
slapos/recipe/generic_zope/template/zope.conf.in
+19
-1
software/erp5/instance-zope.cfg
software/erp5/instance-zope.cfg
+127
-0
software/erp5/instance.cfg
software/erp5/instance.cfg
+1
-0
software/erp5/software.cfg
software/erp5/software.cfg
+9
-1
No files found.
slapos/recipe/erp5/__init__.py
View file @
bddd1eb6
...
@@ -129,27 +129,6 @@ class Recipe(BaseSlapRecipe):
...
@@ -129,27 +129,6 @@ class Recipe(BaseSlapRecipe):
self
.
setConnectionDict
(
connection_dict
)
self
.
setConnectionDict
(
connection_dict
)
return
self
.
path_list
return
self
.
path_list
def
installZopeStandalone
(
self
):
""" Install a single Zope instance without ZEO Server.
"""
zodb_dir
=
os
.
path
.
join
(
self
.
data_root_directory
,
'zodb'
)
self
.
_createDirectory
(
zodb_dir
)
zodb_root_path
=
os
.
path
.
join
(
zodb_dir
,
'main.fs'
)
thread_amount_per_zope
=
int
(
self
.
options
.
get
(
'single_zope_thread_amount'
,
4
))
zodb_cache_size
=
int
(
self
.
options
.
get
(
'zodb_cache_size'
,
5000
))
return
self
.
installZope
(
ip
=
self
.
getLocalIPv4Address
(),
port
=
12000
+
1
,
name
=
'zope_%s'
%
1
,
zodb_configuration_string
=
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'zope-zodb-snippet.conf.in'
),
dict
(
zodb_root_path
=
zodb_root_path
,
zodb_cache_size
=
zodb_cache_size
)),
with_timerservice
=
True
,
thread_amount
=
thread_amount_per_zope
)
def
installKeyAuthorisationApache
(
self
,
ipv6
,
port
,
backend
,
key
,
certificate
,
def
installKeyAuthorisationApache
(
self
,
ipv6
,
port
,
backend
,
key
,
certificate
,
ca_conf
,
key_auth_path
=
'/'
):
ca_conf
,
key_auth_path
=
'/'
):
if
ipv6
:
if
ipv6
:
...
@@ -858,82 +837,6 @@ SSLCARevocationPath %(ca_crl)s"""
...
@@ -858,82 +837,6 @@ SSLCARevocationPath %(ca_crl)s"""
self
.
path_list
.
append
(
tidstorage_repozo_cron
)
self
.
path_list
.
append
(
tidstorage_repozo_cron
)
return
dict
(
host
=
ip
,
port
=
port
)
return
dict
(
host
=
ip
,
port
=
port
)
def
installZope
(
self
,
ip
,
port
,
name
,
zodb_configuration_string
,
with_timerservice
=
False
,
tidstorage_config
=
None
,
thread_amount
=
1
,
with_deadlockdebugger
=
True
,
zope_environment
=
None
):
default_zope_environment
=
dict
(
TMP
=
self
.
tmp_directory
,
TMPDIR
=
self
.
tmp_directory
,
HOME
=
self
.
tmp_directory
,
PATH
=
self
.
bin_directory
)
if
zope_environment
is
None
:
zope_environment
=
default_zope_environment
.
copy
()
else
:
for
envk
,
envv
in
default_zope_environment
.
iteritems
():
if
envk
not
in
zope_environment
:
zope_environment
[
envk
]
=
envv
# Create zope configuration file
zope_config
=
dict
(
products
=
self
.
options
[
'products'
],
thread_amount
=
thread_amount
)
# configure default Zope2 zcml
open
(
os
.
path
.
join
(
self
.
erp5_directory
,
'etc'
,
'site.zcml'
),
'w'
).
write
(
pkg_resources
.
resource_string
(
__name__
,
'template/site.zcml'
))
zope_config
[
'zodb_configuration_string'
]
=
zodb_configuration_string
zope_config
[
'instance'
]
=
self
.
erp5_directory
zope_config
[
'event_log'
]
=
os
.
path
.
join
(
self
.
log_directory
,
'%s-event.log'
%
name
)
zope_config
[
'z2_log'
]
=
os
.
path
.
join
(
self
.
log_directory
,
'%s-Z2.log'
%
name
)
zope_config
[
'pid-filename'
]
=
os
.
path
.
join
(
self
.
run_directory
,
'%s.pid'
%
name
)
zope_config
[
'lock-filename'
]
=
os
.
path
.
join
(
self
.
run_directory
,
'%s.lock'
%
name
)
self
.
registerLogRotation
(
name
,
[
zope_config
[
'event_log'
],
zope_config
[
'z2_log'
]],
self
.
killpidfromfile
+
' '
+
zope_config
[
'pid-filename'
]
+
' SIGUSR2'
)
prefixed_products
=
[]
for
product
in
reversed
(
zope_config
[
'products'
].
split
()):
product
=
product
.
strip
()
if
product
:
prefixed_products
.
append
(
'products %s'
%
product
)
prefixed_products
.
insert
(
0
,
'products %s'
%
os
.
path
.
join
(
self
.
erp5_directory
,
'Products'
))
zope_config
[
'products'
]
=
'
\
n
'
.
join
(
prefixed_products
)
zope_config
[
'address'
]
=
'%s:%s'
%
(
ip
,
port
)
zope_wrapper_template_location
=
self
.
getTemplateFilename
(
'zope.conf.in'
)
zope_conf_content
=
self
.
substituteTemplate
(
zope_wrapper_template_location
,
zope_config
)
if
with_timerservice
:
zope_conf_content
+=
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'zope.conf.timerservice.in'
),
zope_config
)
if
tidstorage_config
is
not
None
:
zope_conf_content
+=
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'zope-tidstorage-snippet.conf.in'
),
tidstorage_config
)
if
with_deadlockdebugger
:
zope_conf_content
+=
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'zope-deadlockdebugger-snippet.conf.in'
),
dict
(
dump_url
=
'/manage_debug_threads'
,
secret
=
self
.
generatePassword
()))
zope_conf_path
=
self
.
createConfigurationFile
(
"%s.conf"
%
name
,
zope_conf_content
)
self
.
path_list
.
append
(
zope_conf_path
)
# Create init script
wrapper
=
zc
.
buildout
.
easy_install
.
scripts
([(
name
,
'slapos.recipe.librecipe.execute'
,
'executee'
)],
self
.
ws
,
sys
.
executable
,
self
.
wrapper_directory
,
arguments
=
[
[
self
.
options
[
'runzope_binary'
].
strip
(),
'-C'
,
zope_conf_path
],
zope_environment
])[
0
]
self
.
path_list
.
append
(
wrapper
)
return
zope_config
[
'address'
]
def
_getApacheConfigurationDict
(
self
,
prefix
,
ip
,
port
):
def
_getApacheConfigurationDict
(
self
,
prefix
,
ip
,
port
):
apache_conf
=
dict
()
apache_conf
=
dict
()
apache_conf
[
'pid_file'
]
=
os
.
path
.
join
(
self
.
run_directory
,
apache_conf
[
'pid_file'
]
=
os
.
path
.
join
(
self
.
run_directory
,
...
...
slapos/recipe/erp5/template/zope-deadlockdebugger-snippet.conf.in
deleted
100644 → 0
View file @
8c3424cb
# DeadlockDebugger configuration
<product-config DeadlockDebugger>
dump_url %(dump_url)s
secret %(secret)s
</product-config>
slapos/recipe/erp5/template/zope-zodb-snippet.conf.in
deleted
100644 → 0
View file @
8c3424cb
<zodb_db root>
cache-size %(zodb_cache_size)d
<filestorage>
path %(zodb_root_path)s
</filestorage>
mount-point /
</zodb_db>
slapos/recipe/erp5/template/zope.conf.timerservice.in
deleted
100644 → 0
View file @
8c3424cb
# ERP5 Timer Service
%%import timerserver
<timer-server>
interval 5
</timer-server>
slapos/recipe/generic_zope/__init__.py
0 → 100644
View file @
bddd1eb6
##############################################################################
#
# Copyright (c) 2011 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
slapos.recipe.librecipe
import
GenericBaseRecipe
class
Recipe
(
GenericBaseRecipe
):
def
install
(
self
):
""" Install a single Zope instance without ZEO Server.
"""
path_list
=
[]
# Create zope configuration file
zope_config
=
dict
(
products
=
self
.
options
[
'products'
],
thread_amount
=
self
.
options
[
'thread-amount'
],
zodb_root_path
=
self
.
options
[
'zodb-path'
],
zodb_cache_size
=
self
.
options
[
'zodb-cache-size'
],
)
zope_environment
=
dict
(
TMP
=
self
.
options
[
'tmp-path'
],
TMPDIR
=
self
.
options
[
'tmp-path'
],
HOME
=
self
.
options
[
'tmp-path'
],
PATH
=
self
.
options
[
'bin-path'
]
)
# configure default Zope2 zcml
open
(
self
.
options
[
'site-zcml'
],
'w'
).
write
(
open
(
self
.
getTemplateFilename
(
'template/site.zcml'
)))
zope_config
[
'instance'
]
=
self
.
options
[
'instance-path'
]
zope_config
[
'event_log'
]
=
self
.
options
[
'event-log'
]
zope_config
[
'z2_log'
]
=
self
.
options
[
'z2-log'
]
zope_config
[
'pid-filename'
]
=
self
.
options
[
'pid-file'
]
zope_config
[
'lock-filename'
]
=
self
.
options
[
'lock-file'
]
# XXX: !!killpidfromfile shall be binary provided by software!!
killpidfromfile
=
self
.
createPythonScript
(
'killpidfromfile'
,
__name__
+
'.killpidfromfile'
)
path_list
.
append
(
killpidfromfile
)
post_rotate
=
self
.
createPythonScript
(
self
.
options
[
'logrotate-post'
],
__name__
+
'.killpidfromfile'
,
[
zope_config
[
'pid-filename'
],
'SIGUSR2'
]
)
path_list
.
append
(
post_rotate
)
prefixed_products
=
[]
for
product
in
reversed
(
zope_config
[
'products'
].
split
()):
product
=
product
.
strip
()
if
product
:
prefixed_products
.
append
(
'products %s'
%
product
)
prefixed_products
.
insert
(
0
,
'products %s'
%
self
.
options
[
'instance-Products'
])
zope_config
[
'products'
]
=
'
\
n
'
.
join
(
prefixed_products
)
zope_config
[
'address'
]
=
'%s:%s'
%
(
self
.
options
[
'ip'
],
self
.
options
[
'port'
])
zope_wrapper_template_location
=
self
.
getTemplateFilename
(
'zope.conf.in'
)
self
.
options
[
'deadlock-password'
]
=
self
.
generatePassword
()
zope_conf_content
=
self
.
substituteTemplate
(
zope_wrapper_template_location
,
zope_config
,
dump_url
=
self
.
options
[
'deadlock-path'
],
secret
=
self
.
options
[
'deadlock-password'
])
zope_conf_path
=
self
.
createFile
(
self
.
options
[
'configuration-file'
],
zope_conf_content
)
path_list
.
append
(
zope_conf_path
)
# Create init script
path_list
.
append
(
self
.
createPythonScript
(
self
.
options
[
'wrapper'
],
'slapos.recipe.librecipe.execute.executee'
,
[[
self
.
options
[
'runzope-binary'
].
strip
(),
'-C'
,
zope_conf_path
],
zope_environment
]))
return
path_list
slapos/recipe/generic_zope/killpidfromfile.py
0 → 100644
View file @
bddd1eb6
import
sys
import
os
import
signal
def
killpidfromfile
(
*
args
):
if
len
(
args
):
file
=
args
[
1
]
sig
=
getattr
(
signal
,
args
[
2
],
None
)
else
:
file
=
sys
.
argv
[
1
]
sig
=
getattr
(
signal
,
sys
.
argv
[
2
],
None
)
if
sig
is
None
:
raise
ValueError
(
'Unknwon signal name %s'
%
sig
)
if
os
.
path
.
exists
(
file
):
pid
=
int
(
open
(
file
).
read
())
print
'Killing pid %s with signal %s'
%
(
pid
,
sig
)
os
.
kill
(
pid
,
sig
)
slapos/recipe/
erp5
/template/site.zcml
→
slapos/recipe/
generic_zope
/template/site.zcml
View file @
bddd1eb6
File moved
slapos/recipe/
erp5
/template/zope.conf.in
→
slapos/recipe/
generic_zope
/template/zope.conf.in
View file @
bddd1eb6
...
@@ -49,7 +49,25 @@ lock-filename %(lock-filename)s
...
@@ -49,7 +49,25 @@ lock-filename %(lock-filename)s
</http-server>
</http-server>
# ZODB configuration
# ZODB configuration
%(zodb_configuration_string)s
<zodb_db root>
cache-size %(zodb_cache_size)d
<filestorage>
path %(zodb_root_path)s
</filestorage>
mount-point /
</zodb_db>
<zoperunner>
<zoperunner>
program $INSTANCE/bin/runzope
program $INSTANCE/bin/runzope
</zoperunner>
</zoperunner>
# DeadlockDebugger configuration
<product-config DeadlockDebugger>
dump_url %(dump_url)s
secret %(secret)s
</product-config>
# ERP5 Timer Service
%%import timerserver
<timer-server>
interval 5
</timer-server>
software/erp5/instance-zope.cfg
View file @
bddd1eb6
[buildout]
parts =
publish-zope-connection-string
zope
logrotate
logrotate-entry-zope
cron
cron-entry-logrotate
gzip-binary = ${gzip:location}/bin/gzip
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[publish-zope-connection-string]
recipe = slapos.cookbook:publishurl
url = http://$${zope:user}:$${zope:password}@$${zope:ip}:$${zope:port}
deadlock-url = $${:url}/$${zope:deadlock-path}?$${zope:deadlock-password}
[zope]
recipe = slapos.cookbook:generic.zope
# Options
user = zope
port = 12001
ip = $${slap-network-information:local-ipv4}
zodb-cache-size = 5000
thread-amount = 4
zodb-path = $${directory:zodb}/main.cfg
deadlock-path = /manage_debug_threads
# Paths
wrapper = $${basedirectory:services}/zope_development
instance-path = $${directory:instance}
instance-etc = $${directory:instance-etc}
instance-Products = $${directory:instance-Products}
tmp-path = $${rootdirectory:tmp}
bin-path = $${rootdirectory:bin}
site-zcml = $${:instance-etc}/site.zcml
logrotate-post = $${rootdirectory:bin}/zope-post-logrotate
pid-file = $${basedirectory:run}/zope.pid
lock = $${basedirectory:run}/zope.lock
event-log = $${basedirectory:log}/zope-event.log
z2-log = $${basedirectory:log}/zope-Z2.log
conf-file = $${rootdirectory:etc}/zope.conf
# Binary information
runzope-binary = ${buildout:bin-directory}/runzope
[logrotate]
recipe = slapos.cookbook:logrotate
# Binaries
logrotate-binary = ${logrotate:location}/usr/sbin/logrotate
gzip-binary = $${buildout:gzip-binary}
gunzip-binary = ${gzip:location}/bin/gunzip
# Directories
wrapper = $${rootdirectory:bin}/logrotate
conf = $${rootdirectory:etc}/logrotate.conf
logrotate-entries = $${directory:logrotate-entries}
backup = $${directory:logrotate-backup}
state-file = $${rootdirectory:srv}/logrotate.status
[logrotate-entry-zope]
<= logrotate
recipe = slapos.cookbook:logrotate.d
name = zope
log = $${zope:event-log} $${zope:z2-log}
frequency = daily
rotate-num = 30
post = $${zope:logrotate-post}
sharedscripts = true
notifempty = true
create = true
[cron]
recipe = slapos.cookbook:cron
dcrond-binary = ${dcron:location}/sbin/crond
cron-entries = $${directory:cron-entries}
crontabs = $${directory:crontabs}
cronstamps = $${directory:cronstamps}
catcher = $${cron-simplelogger:binary}
binary = $${basedirectory:services}/crond
[cron-simplelogger]
recipe = slapos.cookbook:simplelogger
binary = $${rootdirectory:bin}/cron_simplelogger
output = $${directory:cronoutput}
[cron-entry-logrotate]
<= cron
recipe = slapos.cookbook:cron.d
name = logrotate
frequency = 0 0 * * *
command = $${logrotate:wrapper}
[rootdirectory]
recipe = slapos.cookbook:mkdirectory
etc = $${buildout:directory}/etc/
var = $${buildout:directory}/var/
srv = $${buildout:directory}/srv/
bin = $${buildout:directory}/bin/
tmp = $${buildout:directory}/tmp/
[basedirectory]
recipe = slapos.cookbook:mkdirectory
log = $${rootdirectory:var}/log/
services = $${rootdirectory:etc}/run/
run = $${rootdirectory:var}/run/
backup = $${rootdirectory:srv}/backup/
[directory]
recipe = slapos.cookbook:mkdirectory
zodb = $${rootdirectory:srv}/zodb/
instance = $${rootdirectory:srv}/zope/
instance-etc = $${:instance}/etc
instance-Document = $${:instance}/Document
instance-PropertySheet = $${:instance}/PropertySheet
instance-Products = $${:instance}/Products
instance-Extensions = $${:instance}/Extensions
instance-Constraint = $${:instance}/Constraint
cron-entries = $${rootdirectory:etc}/cron.d/
crontabs = $${rootdirectory:etc}/crontabs/
cronstamps = $${rootdirectory:etc}/cronstamps/
cronoutput = $${basedirectory:log}/cron/
logrotate-backup = $${basedirectory:backup}/logrotate/
logrotate-entries = $${rootdirectory:etc}/logrotate.d/
software/erp5/instance.cfg
View file @
bddd1eb6
...
@@ -86,3 +86,4 @@ recipe = slapos.cookbook:softwaretype
...
@@ -86,3 +86,4 @@ recipe = slapos.cookbook:softwaretype
kumofs = ${template-kumofs:output}
kumofs = ${template-kumofs:output}
memcached = ${template-memcached:output}
memcached = ${template-memcached:output}
cloudooo = ${template-cloudooo:output}
cloudooo = ${template-cloudooo:output}
zope = ${template-zope:output}
software/erp5/software.cfg
View file @
bddd1eb6
...
@@ -10,6 +10,7 @@ parts +=
...
@@ -10,6 +10,7 @@ parts +=
template-memcached
template-memcached
template-kumofs
template-kumofs
template-cloudooo
template-cloudooo
template-zope
template
template
validator
validator
...
@@ -18,6 +19,13 @@ parts +=
...
@@ -18,6 +19,13 @@ parts +=
# development / fast switching environment for whole software
# development / fast switching environment for whole software
unzip = true
unzip = true
[template-zope]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-zope.cfg
md5sum = f142e088815f6ba8d96e762550ceec27
output = ${buildout:directory}/template-zope.cfg
mode = 0644
[template-cloudooo]
[template-cloudooo]
recipe = slapos.recipe.template
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-cloudooo.cfg
url = ${:_profile_base_location_}/instance-cloudooo.cfg
...
@@ -44,7 +52,7 @@ configurator_bt5_list = erp5_core_proxy_field_legacy erp5_full_text_myisam_catal
...
@@ -44,7 +52,7 @@ configurator_bt5_list = erp5_core_proxy_field_legacy erp5_full_text_myisam_catal
[template]
[template]
recipe = slapos.recipe.template
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg
url = ${:_profile_base_location_}/instance.cfg
md5sum =
4c79ef4529c6ea0e4b2263bde3615be1
md5sum =
0703352e0dfb3722d676f01f6b9fd62d
output = ${buildout:directory}/template.cfg
output = ${buildout:directory}/template.cfg
mode = 0644
mode = 0644
...
...
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