Commit 60406dfa authored by Łukasz Nowak's avatar Łukasz Nowak

Merge slapos.recipe.xwiki as slapos.recipebox:xwiki

parent 4ddeda21
......@@ -63,5 +63,6 @@ setup(name=name,
'template = slapos.recipe.template:Recipe',
'testnode = slapos.recipe.testnode:Recipe',
'vifib = slapos.recipe.vifib:Recipe',
'xwiki = slapos.recipe.xwiki:Recipe',
]},
)
K 25
svn:wc:ra_dav:version-url
V 68
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki
END
CHANGES.txt
K 25
svn:wc:ra_dav:version-url
V 80
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/CHANGES.txt
END
setup.py
K 25
svn:wc:ra_dav:version-url
V 77
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/setup.py
END
MANIFEST.in
K 25
svn:wc:ra_dav:version-url
V 80
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/MANIFEST.in
END
README.txt
K 25
svn:wc:ra_dav:version-url
V 79
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/README.txt
END
setup.cfg
K 25
svn:wc:ra_dav:version-url
V 78
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/setup.cfg
END
10
dir
45492
https://svn.erp5.org/repos/public/slapos/trunk/recipe/slapos.recipe.xwiki
https://svn.erp5.org/repos/public
2011-04-08T10:52:53.516084Z
45235
luke
20353a03-c40f-0410-a6d1-a30d3c3de9de
CHANGES.txt
file
2011-04-15T12:07:28.111799Z
3b08119e86e1b1b69184da3df0eca1f0
2011-04-08T10:52:53.516084Z
45235
luke
56
src
dir
setup.py
file
2011-04-15T12:07:28.112799Z
27530d4d456d6cb7400b8b0087047512
2011-04-08T10:52:53.516084Z
45235
luke
919
MANIFEST.in
file
2011-04-15T12:07:28.112799Z
98e78b503eff1e97f33c34e08afab677
2011-04-08T10:52:53.516084Z
45235
luke
66
README.txt
file
2011-04-15T12:07:28.112799Z
086b81245a351f702a7ce4eed8500d83
2011-04-08T10:52:53.516084Z
45235
luke
66
setup.cfg
file
2011-04-15T12:07:28.112799Z
a1b4f7f3a0e844ee99d0ab77330826d1
2011-04-08T10:52:53.516084Z
45235
luke
49
Changelog
=========
1.0 (unreleased)
----------------
include CHANGES.txt
recursive-include src/slapos/recipe/erp5 *.in
[egg_info]
tag_build = .dev
tag_svn_revision = 1
from setuptools import setup, find_packages
name = "slapos.recipe.xwiki"
version = '1.0'
def read(name):
return open(name).read()
long_description=( read('README.txt')
+ '\n' +
read('CHANGES.txt')
)
setup(
name = name,
version = version,
description = "ZC Buildout recipe for create an xwiki instance",
long_description=long_description,
license = "GPLv3",
keywords = "buildout slapos xwiki",
classifiers=[
"Framework :: Buildout :: Recipe",
"Programming Language :: Python",
],
packages = find_packages('src'),
package_dir = {'': 'src'},
include_package_data=True,
install_requires = [
'zc.recipe.egg',
'setuptools',
'slapos.lib.recipe',
],
namespace_packages = ['slapos', 'slapos.recipe'],
entry_points = {'zc.buildout': ['default = %s:Recipe' % name]},
)
Changelog
=========
1.0 (unreleased)
----------------
include CHANGES.txt
recursive-include src/slapos/recipe/erp5 *.in
The slapos.recipe.xwiki aims to instantiate an xwiki environment.
[egg_info]
tag_build = .dev
tag_svn_revision = 1
from setuptools import setup, find_packages
name = "slapos.recipe.xwiki"
version = '1.0'
def read(name):
return open(name).read()
long_description=( read('README.txt')
+ '\n' +
read('CHANGES.txt')
)
setup(
name = name,
version = version,
description = "ZC Buildout recipe for create an xwiki instance",
long_description=long_description,
license = "GPLv3",
keywords = "buildout slapos xwiki",
classifiers=[
"Framework :: Buildout :: Recipe",
"Programming Language :: Python",
],
packages = find_packages('src'),
package_dir = {'': 'src'},
include_package_data=True,
install_requires = [
'zc.recipe.egg',
'setuptools',
'slapos.lib.recipe',
],
namespace_packages = ['slapos', 'slapos.recipe'],
entry_points = {'zc.buildout': ['default = %s:Recipe' % name]},
)
K 25
svn:wc:ra_dav:version-url
V 72
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/src
END
10
dir
45492
https://svn.erp5.org/repos/public/slapos/trunk/recipe/slapos.recipe.xwiki/src
https://svn.erp5.org/repos/public
2011-04-08T10:52:53.516084Z
45235
luke
20353a03-c40f-0410-a6d1-a30d3c3de9de
slapos
dir
K 25
svn:wc:ra_dav:version-url
V 79
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos
END
__init__.py
K 25
svn:wc:ra_dav:version-url
V 91
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos/__init__.py
END
10
dir
45492
https://svn.erp5.org/repos/public/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos
https://svn.erp5.org/repos/public
2011-04-08T10:52:53.516084Z
45235
luke
20353a03-c40f-0410-a6d1-a30d3c3de9de
__init__.py
file
2011-04-15T12:07:28.109799Z
e8234e1a7b6db4112f8d1e356c985a40
2011-04-08T10:52:53.516084Z
45235
luke
245
recipe
dir
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
K 25
svn:wc:ra_dav:version-url
V 86
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos/recipe
END
__init__.py
K 25
svn:wc:ra_dav:version-url
V 98
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos/recipe/__init__.py
END
10
dir
45492
https://svn.erp5.org/repos/public/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos/recipe
https://svn.erp5.org/repos/public
2011-04-08T10:52:53.516084Z
45235
luke
20353a03-c40f-0410-a6d1-a30d3c3de9de
__init__.py
file
2011-04-15T12:07:28.108799Z
e8234e1a7b6db4112f8d1e356c985a40
2011-04-08T10:52:53.516084Z
45235
luke
245
xwiki
dir
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
K 25
svn:wc:ra_dav:version-url
V 92
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos/recipe/xwiki
END
__init__.py
K 25
svn:wc:ra_dav:version-url
V 104
/repos/public/!svn/ver/45235/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos/recipe/xwiki/__init__.py
END
10
dir
45492
https://svn.erp5.org/repos/public/slapos/trunk/recipe/slapos.recipe.xwiki/src/slapos/recipe/xwiki
https://svn.erp5.org/repos/public
2011-04-08T10:52:53.516084Z
45235
luke
20353a03-c40f-0410-a6d1-a30d3c3de9de
__init__.py
file
2011-04-15T12:07:28.107799Z
c2c83100d9bb52238ea13f05aefd02e7
2011-04-08T10:52:53.516084Z
45235
luke
6983
template
dir
##############################################################################
#
# Copyright (c) 2010 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.lib.recipe.BaseSlapRecipe import BaseSlapRecipe
import os
import shutil
import pkg_resources
import subprocess
import time
import zc.buildout
class Recipe(BaseSlapRecipe):
def _install(self):
parameter_dict = self.computer_partition.getInstanceParameterDict()
ipv4 = self.getLocalIPv4Address(parameter_dict)
ipv6 = self.getGlobalIPv6Address(parameter_dict)
self.install_mysql_server_configuration(self.getLocalIPv4Address(parameter_dict))
port = '8900'
tomcat_home = os.path.join(self.data_root_directory, 'tomcat')
tomcat_lib = os.path.join(tomcat_home, 'lib')
xwiki_home = os.path.join(tomcat_home, 'webapps', 'xwiki')
for src, dst in (
(self.options['tomcat_location'].strip(), tomcat_home),
(self.options['xwiki_location'].strip(), xwiki_home),
):
if not os.path.isdir(dst):
try:
shutil.copytree(src, dst)
except:
shtuil.rmtree(dst)
raise
shutil.copy(self.options['hsql_location'].strip(), os.path.join(tomcat_lib,
'hsqldb.jar'))
# headless mode
self._writeFile(os.path.join(tomcat_home, 'bin', 'setenv.sh'), '''#!/bin/sh
export JAVA_OPTS="${JAVA_OPTS} -Djava.awt.headless=true"
''')
# tomcat wrapper
catalina = os.path.join(tomcat_home, 'bin', 'catalina.sh')
# solve "The BASEDIR environment variable is not defined correctly"
bindir = os.path.join(tomcat_home, 'bin')
for f in os.listdir(bindir):
if f.endswith('.sh'):
os.chmod(os.path.join(bindir, f), 0755)
tomcat_wrapper = self.createRunningWrapper('xwiki', """#!/bin/sh
export JRE_HOME=%(java_home)s
exec %(catalina)s run
""" % dict(java_home=self.options['java_home'].strip(),
catalina = catalina))
tomcat_dict = dict(
http_address=ipv6,
http_port=port,
ajp_address=ipv4,
ajp_port="8009",
)
server_xml = os.path.join(tomcat_home, 'conf', 'server.xml')
self._writeFile(server_xml, pkg_resources.resource_string(__name__,
'template/tomcat-server.xml.in') % tomcat_dict)
hibernate_xml = os.path.join(tomcat_home, 'webapps', 'xwiki', 'WEB-INF', 'hibernate.cfg.xml')
self._writeFile(hibernate_xml, pkg_resources.resource_string(__name__,
'template/hibernate.cfg.xml.in') % dict(mysql_port='45678', mysql_ip = ipv4))
self.computer_partition.setConnectionDict(dict(
http_connection="http://[%s]:%s/xwiki/" % (ipv6, port),
))
return [server_xml, tomcat_wrapper]
def _initializeMysqlServer(self):
# XXX: Protect with proper root password
popen = subprocess.Popen([self.options['mysql_install_binary'],
'--skip-name-resolve', '--no-defaults',
'--datadir=%s' % self.data_directory],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
result = popen.communicate()[0]
if popen.returncode is None or popen.returncode != 0:
message = """Failed to initialise server in %(data_directory)r.
The error was: %(result)s""" % dict(data_directory=self.data_directory,
result=result)
raise zc.buildout.UserError(message)
def install_mysql_server_configuration(self, ip):
self.data_directory = os.path.join(self.data_root_directory,
'mysql_server')
self.configuration_file = os.path.join(self.etc_directory, 'my.cnf')
self._createDirectory(self.data_directory)
self.options['ip'] = ip
port = '45678'
self.options['tcp_port'] = port
self.options['data_directory'] = self.data_directory
self.options['pid_file'] = os.path.join(self.run_directory, 'mysqld.pid')
self.options['socket'] = os.path.join(self.run_directory, 'mysqld.sock')
self.options['error_log'] = os.path.join(self.log_directory, 'mysqld.log')
self.options['slow_query_log'] = os.path.join(self.log_directory,
'mysql-slow.log')
self._initializeMysqlServer()
mysql_conf_path = self.createConfigurationFile("my.cnf",
self.substituteTemplate(pkg_resources.resource_filename(__name__,
os.path.join('template', 'my.cnf.in')), self.options))
mysql_wrapper_path = self.createRunningWrapper('mysqld',
pkg_resources.resource_string(__name__, os.path.join('template',
'mysqld.bin')) % {'configuration_file': self.configuration_file,
'real_binary': self.options['mysqld_binary']})
mysql_connection_dict = dict(
ip=ip,
port=port,
user='xwiki',
password='xwiki',
database='xwiki',
)
# XXX: Bad thing -- it is required to fill mysql with some data, but there
# is no known any way to do it w/o running mysql (except rewriting
# mysql_install_db)
mysqld = subprocess.Popen([mysql_wrapper_path],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
try:
# XXX: Simplification of bad idea -- wait some time before connecting to
# mysql
time.sleep(2)
mysql = subprocess.Popen([self.options['mysql_binary'].strip(),
'--no-defaults', '-B', '--user=root',
'--socket=%s' % self.options['socket'],
], stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
result = mysql.communicate(pkg_resources.resource_string(__name__,
'template/initmysql.sql.in') % mysql_connection_dict)[0]
if mysql.returncode is None:
mysql.kill()
if mysql.returncode != 0:
raise zc.buildout.UserError('Issue during filling database, mysql '
'command result was: %s' % result)
finally:
mysqld.kill()
self.computer_partition.setConnectionDict(mysql_connection_dict)
return [mysql_conf_path, mysql_wrapper_path]
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