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
Kwabena Antwi-Boasiako
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):
self
.
setConnectionDict
(
connection_dict
)
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
,
ca_conf
,
key_auth_path
=
'/'
):
if
ipv6
:
...
...
@@ -858,82 +837,6 @@ SSLCARevocationPath %(ca_crl)s"""
self
.
path_list
.
append
(
tidstorage_repozo_cron
)
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
):
apache_conf
=
dict
()
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
</http-server>
# 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>
program $INSTANCE/bin/runzope
</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
kumofs = ${template-kumofs:output}
memcached = ${template-memcached:output}
cloudooo = ${template-cloudooo:output}
zope = ${template-zope:output}
software/erp5/software.cfg
View file @
bddd1eb6
...
...
@@ -10,6 +10,7 @@ parts +=
template-memcached
template-kumofs
template-cloudooo
template-zope
template
validator
...
...
@@ -18,6 +19,13 @@ parts +=
# development / fast switching environment for whole software
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]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-cloudooo.cfg
...
...
@@ -44,7 +52,7 @@ configurator_bt5_list = erp5_core_proxy_field_legacy erp5_full_text_myisam_catal
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg
md5sum =
4c79ef4529c6ea0e4b2263bde3615be1
md5sum =
0703352e0dfb3722d676f01f6b9fd62d
output = ${buildout:directory}/template.cfg
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