Commit 754d77ee authored by Rafael Monnerat's avatar Rafael Monnerat

Merge remote-tracking branch 'origin/master' into slapos

parents 02bdfdbb 01a467f4
Changes Changes
======= =======
0.85 (2013-12-03)
-----------------
* Slaprunner: recipe replaced by a buildout profile [14fbcd92]
* Slaprunner: import instances can automatically deploy Software Releases [64c48388]
* Slaprunner: backup script passes basic authentification [8877615]
* Slaprunner: backup doesn't destroy symlinks for Software Releases [f519a078]
* Shellinabox: now uses uid and gid to start [e9349c65]
* Shellinabox: can do autoconnection [516e772]
* Librecipe-generic: correction of bash code for /bin/sh compatibility [bee8c9c8]
0.84.2 (2013-10-04) 0.84.2 (2013-10-04)
------------------- -------------------
......
...@@ -15,25 +15,25 @@ extends = ...@@ -15,25 +15,25 @@ extends =
[apr] [apr]
recipe = hexagonit.recipe.download recipe = hexagonit.recipe.download
version = 1.4.6 version = 1.5.0
url = http://mir2.ovh.net/ftp.apache.org/dist/apr/apr-${:version}.tar.bz2 url = http://mir2.ovh.net/ftp.apache.org/dist/apr/apr-${:version}.tar.bz2
md5sum = ffee70a111fd07372982b0550bbb14b7 md5sum = cc93bd2c12d0d037f68e21cc6385dc31
[apr-util] [apr-util]
recipe = hexagonit.recipe.download recipe = hexagonit.recipe.download
version = 1.5.2 version = 1.5.3
url = http://mir2.ovh.net/ftp.apache.org/dist/apr/apr-util-${:version}.tar.bz2 url = http://mir2.ovh.net/ftp.apache.org/dist/apr/apr-util-${:version}.tar.bz2
md5sum = 89c1348aa79e898d7c34a6206311c9c2 md5sum = 6f3417691c7a27090f36e7cf4d94b36e
[apache] [apache]
# inspired on http://old.aclark.net/team/aclark/blog/a-lamp-buildout-for-wordpress-and-other-php-apps/ # inspired on http://old.aclark.net/team/aclark/blog/a-lamp-buildout-for-wordpress-and-other-php-apps/
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
depends = depends =
${gdbm:version} ${gdbm:version}
version = 2.4.4 version = 2.4.7
revision = 1 revision = 1
url = http://mir2.ovh.net/ftp.apache.org/dist/httpd/httpd-${:version}.tar.bz2 url = http://mir2.ovh.net/ftp.apache.org/dist/httpd/httpd-${:version}.tar.bz2
md5sum = 0e712ee2119cd798c8ae39d5f11a9206 md5sum = 170d7fb6fe5f28b87d1878020a9ab94e
configure-command = cp -ar ${apr:location}/apr-${apr:version} srclib/apr/; cp -ar ${apr-util:location}/apr-util-${apr-util:version} srclib/apr-util; ./configure configure-command = cp -ar ${apr:location}/apr-${apr:version} srclib/apr/; cp -ar ${apr-util:location}/apr-util-${apr-util:version} srclib/apr-util; ./configure
configure-options = --prefix=${buildout:parts-directory}/${:_buildout_section_name_} configure-options = --prefix=${buildout:parts-directory}/${:_buildout_section_name_}
--disable-static --disable-static
...@@ -120,9 +120,9 @@ make-targets = ...@@ -120,9 +120,9 @@ make-targets =
[apache-2.2] [apache-2.2]
# inspired on http://old.aclark.net/team/aclark/blog/a-lamp-buildout-for-wordpress-and-other-php-apps/ # inspired on http://old.aclark.net/team/aclark/blog/a-lamp-buildout-for-wordpress-and-other-php-apps/
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
version = 2.2.25 version = 2.2.26
url = http://mir2.ovh.net/ftp.apache.org/dist/httpd/httpd-${:version}.tar.bz2 url = http://mir2.ovh.net/ftp.apache.org/dist/httpd/httpd-${:version}.tar.bz2
md5sum = 9ebe3070c0bb4311f21a0cd0e34f0045 md5sum = 254eda547f8d624604e4bf403241e617
patch-options = -p1 patch-options = -p1
configure-options = --disable-static configure-options = --disable-static
--enable-authn-alias --enable-authn-alias
......
...@@ -19,7 +19,7 @@ recipe = slapos.recipe.build:npm ...@@ -19,7 +19,7 @@ recipe = slapos.recipe.build:npm
packages = sm@0.2.11 packages = sm@0.2.11
node = nodejs node = nodejs
environment = environment =
PATH=${nodejs:location}/bin:%(PATH)s PATH=${nodejs-0.6:location}/bin:%(PATH)s
[cloud9-stable] [cloud9-stable]
# Online IDE written in javascript/node.js # Online IDE written in javascript/node.js
...@@ -49,7 +49,34 @@ recipe = hexagonit.recipe.download ...@@ -49,7 +49,34 @@ recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/${:filename} url = ${:_profile_base_location_}/${:filename}
filename = cloud9-socket.patch filename = cloud9-socket.patch
download-only = true download-only = true
#md5sum = 5dc8cc28447ed3747b8a53c768d872aa md5sum = c581456cb3a76841898f79f9600e3a1e
[cloud9-file-already-exist.patch]
# This patch prevents the error "File already exists"
recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/${:filename}
filename = cloud9-file_already_exist.patch
download-only = true
md5sum = 0bc104af8176388d60cbf884b72c8318
[cloud9-remove-all-listeners.patch]
# This patch prevents cloud9 to die every
# time a tab is closed
recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/${:filename}
filename = cloud9-removeAllListeners.patch
download-only = true
md5sum = 357915330d677f4917140e02a55646b7
[cloud9-git-download]
recipe = slapos.recipe.build:gitclone
repository = https://github.com/ajaxorg/cloud9.git
revision = f7d102bc225c922f116d2cea52a746d64343ea59
location = ${buildout:parts-directory}/cloud9
git-executable = ${git:location}/bin/git
develop = true
use-cache = true
ignore-ssl-certificate = true
[cloud9-git] [cloud9-git]
# Online IDE written in javascript/node.js # Online IDE written in javascript/node.js
...@@ -58,13 +85,10 @@ download-only = true ...@@ -58,13 +85,10 @@ download-only = true
# NODE_PATH=${:destination}/node_modules ${nodejs:node_location} ${:cloud9_js_location} # NODE_PATH=${:destination}/node_modules ${nodejs:node_location} ${:cloud9_js_location}
recipe = plone.recipe.command recipe = plone.recipe.command
stop-on-error = true stop-on-error = true
commit = f7d102bc225c922f116d2cea52a746d64343ea59 environment = export GIT_SSL_NO_VERIFY=true; export PATH=${git:location}/bin:${nodejs-0.6:location}/bin:${node-sm:location}/node_modules/.bin/:$PATH; export CPPFLAGS="-I${libxml2:location}/include -I${nodejs-0.6:location}/include"; export LDFLAGS="-L${libxml2:location}/lib -Wl,-rpath=${libxml2:location}/lib"; export HOME=${cloud9-git-download:location};
repository = https://github.com/ajaxorg/cloud9.git command = ${:environment} (cd ${cloud9-git-download:location} && ${node-sm:location}/node_modules/.bin/sm install && patch -p1 < ${cloud9-session-directory.patch:location}/${cloud9-session-directory.patch:filename} && patch -p1 < ${cloud9-socket.patch:location}/${cloud9-socket.patch:filename} && patch -p1 < ${cloud9-file-already-exist.patch:location}/${cloud9-file-already-exist.patch:filename} && patch -p1 < ${cloud9-remove-all-listeners.patch:location}/${cloud9-remove-all-listeners.patch:filename}) || (rm -fr ${cloud9-git-download:location}; exit 1)
location = ${buildout:parts-directory}/${:_buildout_section_name_} update-command = true
environment = export GIT_SSL_NO_VERIFY=true; export PATH=${git:location}/bin:${nodejs:location}/bin:${node-sm:location}/node_modules/sm/bin:$PATH; export CPPFLAGS="-I${libxml2:location}/include -I${nodejs:location}/include"; export LDFLAGS="-L${libxml2:location}/lib -Wl,-rpath=${libxml2:location}/lib"; export HOME=${:location}; executable = ${cloud9-git-download:location}/server.js
command = ${:environment} (git clone --quiet ${:repository} ${:location} && cd ${:location} && git reset --hard ${:commit} && ${node-sm:location}/node_modules/.bin/sm install && patch -p1 < ${cloud9-session-directory.patch:location}/${cloud9-session-directory.patch:filename} && ${node-sm:location}/node_modules/.bin/sm install && patch -p1 < ${cloud9-socket.patch:location}/${cloud9-socket.patch:filename}) || (rm -fr ${:location}; exit 1)
update-command =
executable = ${:location}/server.js
[cloud9-npm] [cloud9-npm]
# Online IDE written in javascript/node.js # Online IDE written in javascript/node.js
......
diff --git a/node_modules/vfs-local/localfs.js b/node_modules/vfs-local/localfs.js
index 7ce9981..1dd07b7 100644
--- a/node_modules/vfs-local/localfs.js
+++ b/node_modules/vfs-local/localfs.js
@@ -677,7 +677,7 @@ module.exports = function setup(fsOptions) {
else {
var err = new Error("File already exists.");
err.code = "EEXIST";
- callback(err);
+ //callback(err);
}
});
});
diff --git a/plugins-server/cloud9.ide.watcher/file_watcher.js b/plugins-server/cloud9.ide.watcher/file_watcher.
index b7ed7da..36dcd05 100644
--- a/plugins-server/cloud9.ide.watcher/file_watcher.js
+++ b/plugins-server/cloud9.ide.watcher/file_watcher.js
@@ -69,11 +69,11 @@ util.inherits(FileWatcher, EventEmitter);
this.close = function() {
if (this.watcher) {
- this.watcher.removeAllListeners();
+ //this.watcher.removeAllListeners();
this.watcher.close();
this.emit("close");
}
this.watcher = null;
};
-}).call(FileWatcher.prototype);
\ No newline at end of file
+}).call(FileWatcher.prototype);
...@@ -11,8 +11,8 @@ parts = ...@@ -11,8 +11,8 @@ parts =
[curl] [curl]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = http://curl.haxx.se/download/curl-7.31.0.tar.bz2 url = http://curl.haxx.se/download/curl-7.34.0.tar.bz2
md5sum = b7bea20579ac2f696338ae03f2c19ba5 md5sum = 88491df2bb32e9146e776ae6ac2f8327
configure-options = configure-options =
--disable-static --disable-static
--disable-ldap --disable-ldap
...@@ -28,12 +28,15 @@ configure-options = ...@@ -28,12 +28,15 @@ configure-options =
--enable-ipv6 --enable-ipv6
--disable-sspi --disable-sspi
--without-gnutls --without-gnutls
--without-spnego
--with-ssl=${openssl:location} --with-ssl=${openssl:location}
--with-zlib=${zlib:location} --with-zlib=${zlib:location}
--without-nss --without-nss
--without-libmetalink
--without-libssh2 --without-libssh2
--without-librtmp --without-librtmp
--without-libidn --without-libidn
--without-nghttp2
environment = environment =
PATH=${pkgconfig:location}/bin:%(PATH)s PATH=${pkgconfig:location}/bin:%(PATH)s
......
...@@ -34,7 +34,7 @@ script = ...@@ -34,7 +34,7 @@ script =
wrapper = open(wrapper_location, 'w') wrapper = open(wrapper_location, 'w')
wrapper.write("""#!${dash:location}/bin/dash wrapper.write("""#!${dash:location}/bin/dash
cd %(location)s cd %(location)s
export LD_LIBRARY_PATH=%(location)s:${libXrender:location}/lib/:{dbus:location}/lib/:${dbus-glib:location}/lib/:${freetype:location}/lib/:${fontconfig:location}/lib/:${libX11:location}/lib/:${bzip2:location}/lib/:${libXext:location}/lib/:${libXt:location}/lib/:${zlib:location}/lib/:${libXcursor:location}/lib/:${gtk-2:location}/lib/:${cairo:location}/lib/:${pango:location}/lib/:${glib:location}/lib/:${atk:location}/lib/:${gdk-pixbuf:location}/lib/:${alsa:location}/lib/:${libpng15:location}/lib/:${libSM:location}/lib/:${libICE:location}/lib:${libxml2:location}/lib:${openssl:location}/lib export LD_LIBRARY_PATH=%(location)s:${libXrender:location}/lib:${dbus:location}/lib:${dbus-glib:location}/lib:${freetype:location}/lib:${fontconfig:location}/lib:${libX11:location}/lib:${bzip2:location}/lib:${libXext:location}/lib:${libXt:location}/lib:${zlib:location}/lib:${libXcursor:location}/lib:${gtk-2:location}/lib:${cairo:location}/lib:${pango:location}/lib:${glib:location}/lib:${atk:location}/lib:${gdk-pixbuf:location}/lib:${alsa:location}/lib:${libpng15:location}/lib:${libSM:location}/lib:${libICE:location}/lib:${libxml2:location}/lib:${openssl:location}/lib
export PATH=${fontconfig:location}/bin:$PATH export PATH=${fontconfig:location}/bin:$PATH
exec %(location)s/firefox $*""") exec %(location)s/firefox $*""")
wrapper.close() wrapper.close()
......
...@@ -8,12 +8,13 @@ extends = ...@@ -8,12 +8,13 @@ extends =
[gettext] [gettext]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.1.tar.gz url = http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.3.1.tar.gz
md5sum = 034c8103b14654ebd300fadac44d6f14 md5sum = 3fc808f7d25487fc72b5759df7419e02
configure-options = configure-options =
--disable-static --disable-static
--disable-java --disable-java
--disable-native-java
--disable-csharp --disable-csharp
--with-libncurses-prefix=${ncurses:location} --with-libncurses-prefix=${ncurses:location}
--with-libxml2-prefix=${libxml2:location} --with-libxml2-prefix=${libxml2:location}
...@@ -22,6 +23,8 @@ configure-options = ...@@ -22,6 +23,8 @@ configure-options =
--disable-acl --disable-acl
--disable-openmp --disable-openmp
--without-git --without-git
--without-bz2
--without-xz
environment = environment =
CPPFLAGS=-I${libxml2:location}/include -I${zlib:location}/include -I${ncurses:location}/include CPPFLAGS=-I${libxml2:location}/include -I${zlib:location}/include -I${ncurses:location}/include
......
...@@ -8,8 +8,8 @@ parts = ...@@ -8,8 +8,8 @@ parts =
[grep] [grep]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = http://ftp.gnu.org/gnu/grep/grep-2.14.tar.xz url = http://ftp.gnu.org/gnu/grep/grep-2.15.tar.xz
md5sum = d4a3f03849d1e17ce56ab76aa5a24cab md5sum = 8cab8ca52bcae735af40278423c7c942
environment = environment =
PATH=${xz-utils:location}/bin:%(PATH)s PATH=${xz-utils:location}/bin:%(PATH)s
CPPFLAGS=-I${pcre:location}/include CPPFLAGS=-I${pcre:location}/include
......
...@@ -11,9 +11,9 @@ extends = ...@@ -11,9 +11,9 @@ extends =
[groonga] [groonga]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
version = 3.0.9 version = 3.1.1
url = http://packages.groonga.org/source/groonga/groonga-${:version}.tar.gz url = http://packages.groonga.org/source/groonga/groonga-${:version}.tar.gz
md5sum = 2e9f7090f40876233c1f077fd25c26ee md5sum = c8bae890be05b4226f095839a049823e
configure-options = configure-options =
--disable-static --disable-static
--disable-glibtest --disable-glibtest
......
[buildout] [buildout]
extends =
../xz-utils/buildout.cfg
parts = parts =
m4 m4
[m4-drop.gets.patch]
recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/${:filename}
md5sum = dc5f06fb42649e181c40177eb1edc333
download-only = true
filename = drop.gets.patch
[m4] [m4]
virtual-depends = ${m4-drop.gets.patch:md5sum}
patch-options = -p1
patches =
${m4-drop.gets.patch:location}/${m4-drop.gets.patch:filename}
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.bz2 url = http://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.xz
md5sum = 8a7cef47fecab6272eb86a6be6363b2f md5sum = 12a3c829301a4fd6586a57d3fcf196dc
environment =
PATH=${xz-utils:location}/bin:%(PATH)s
...@@ -26,10 +26,10 @@ download-only = true ...@@ -26,10 +26,10 @@ download-only = true
[mariadb] [mariadb]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
version = 10.0.6 version = 10.0.7
revision = 1 revision = 1
url = http://downloads.askmonty.org/f/mariadb-${:version}/kvm-tarbake-jaunty-x86/mariadb-${:version}.tar.gz/from/http://ftp.osuosl.org/pub/mariadb url = http://downloads.askmonty.org/f/mariadb-${:version}/kvm-tarbake-jaunty-x86/mariadb-${:version}.tar.gz/from/http://ftp.osuosl.org/pub/mariadb
md5sum = 4b9ba2c23164c7543af96ff162f1bc85 md5sum = 46d341a6e76f3faf6891d3db45402862
# compile directory is required to build mysql plugins. # compile directory is required to build mysql plugins.
keep-compile-dir = true keep-compile-dir = true
patch-options = -p0 patch-options = -p0
...@@ -63,8 +63,8 @@ environment = ...@@ -63,8 +63,8 @@ environment =
# mroonga - a storage engine for MySQL. It provides fast fulltext search feature to all MySQL users. # mroonga - a storage engine for MySQL. It provides fast fulltext search feature to all MySQL users.
# http://mroonga.github.com/ # http://mroonga.github.com/
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = http://packages.groonga.org/source/mroonga/mroonga-3.09.tar.gz url = http://packages.groonga.org/source/mroonga/mroonga-3.11.tar.gz
md5sum = bdcd1d86185a64520881d33e12b7d7a7 md5sum = 3adfc67972b219586d0fdef9da25bc55
configure-options = configure-options =
--with-mysql-source=${mariadb:location}__compile__/mariadb-${mariadb:version} --with-mysql-source=${mariadb:location}__compile__/mariadb-${mariadb:version}
--with-mysql-config=${mariadb:location}/bin/mysql_config --with-mysql-config=${mariadb:location}/bin/mysql_config
...@@ -74,6 +74,6 @@ depends = ...@@ -74,6 +74,6 @@ depends =
${groonga-normalizer-mysql:version} ${groonga-normalizer-mysql:version}
environment = environment =
PATH=${groonga:location}/bin:${pkgconfig:location}/bin:%(PATH)s PATH=${groonga:location}/bin:${pkgconfig:location}/bin:%(PATH)s
CPPFLAGS=-I${groonga:location}/include/groonga -I${mariadb:location}__compile__/mariadb-${mariadb:version}/pcre CPPFLAGS=-I${groonga:location}/include/groonga
LDFLAGS=-L${groonga:location}/lib LDFLAGS=-L${groonga:location}/lib
PKG_CONFIG_PATH=${groonga:location}/lib/pkgconfig:${groonga-normalizer-mysql:location}/lib/pkgconfig PKG_CONFIG_PATH=${groonga:location}/lib/pkgconfig:${groonga-normalizer-mysql:location}/lib/pkgconfig
...@@ -10,8 +10,8 @@ parts = ...@@ -10,8 +10,8 @@ parts =
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
depends = depends =
${perl:version} ${perl:version}
version = 2.2.5 version = 2.2.6
url = http://www.percona.com/redir/downloads/percona-toolkit/${:version}/percona-toolkit-${:version}.tar.gz url = http://www.percona.com/redir/downloads/percona-toolkit/${:version}/percona-toolkit-${:version}.tar.gz
md5sum = 66165271fc3ddf8311e5ff3b1a954595 md5sum = 2a008bccc3b62b5362d01a03c916e88d
configure-command = configure-command =
${perl:location}/bin/perl Makefile.PL ${perl:location}/bin/perl Makefile.PL
...@@ -27,8 +27,8 @@ python = python2.7 ...@@ -27,8 +27,8 @@ python = python2.7
[python2.7] [python2.7]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
package_version = 2.7.6 package_version = 2.7.6
package_version_suffix = rc1 package_version_suffix =
md5sum = 74e1f6abe529350ac0d239387ee98616 md5sum = bcf93efa8eaf383c98ed3ce40b763497
depends = depends =
${gdbm:version} ${gdbm:version}
......
[buildout]
parts =
screen
extends =
../ncurses/buildout.cfg
[screen]
recipe = slapos.recipe.cmmi
version = 4.0.3
url = http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz
md5sum = 8506fd205028a96c741e4037de6e3c42
environment=
CFLAGS=-I${ncurses:location}/include
LDFLAGS=-L${ncurses:location}/lib/ -Wl,-rpath=${ncurses:location}/lib/
\ No newline at end of file
...@@ -41,5 +41,5 @@ environment = ...@@ -41,5 +41,5 @@ environment =
[varnish-3.0] [varnish-3.0]
<= varnish-2.1 <= varnish-2.1
url = http://repo.varnish-cache.org/source/varnish-3.0.4.tar.gz url = http://repo.varnish-cache.org/source/varnish-3.0.5.tar.gz
md5sum = a130ce9c3504b9603a46542635e18701 md5sum = 674d44775cc927aee4601edb37f60198
[buildout]
parts =
vim
extends =
../ncurses/buildout.cfg
[vim]
recipe = slapos.recipe.cmmi
version = 7.4
url = http://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
md5sum = 607e135c559be642f210094ad023dc65
environment=
CFLAGS=-I${ncurses:location}/include
LDFLAGS=-L${ncurses:location}/lib/ -Wl,-rpath=${ncurses:location}/lib/
\ No newline at end of file
...@@ -245,8 +245,8 @@ md5sum = 9959fe0bfb22a0e7260433b8d199590a ...@@ -245,8 +245,8 @@ md5sum = 9959fe0bfb22a0e7260433b8d199590a
[pixman] [pixman]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = http://xorg.freedesktop.org/archive/individual/lib/pixman-0.23.2.tar.bz2 url = http://xorg.freedesktop.org/archive/individual/lib/pixman-0.32.4.tar.bz2
md5sum = 2e2805f5ca02edeb15a7862779670069 md5sum = cdb566504fe9daf6728c7b03cc7ea228
[libfontenc] [libfontenc]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
......
...@@ -28,7 +28,7 @@ from setuptools import setup, find_packages ...@@ -28,7 +28,7 @@ from setuptools import setup, find_packages
import glob import glob
import os import os
version = '0.84.2' version = '0.85'
name = 'slapos.cookbook' name = 'slapos.cookbook'
long_description = open("README.txt").read() + "\n" + \ long_description = open("README.txt").read() + "\n" + \
open("CHANGES.txt").read() + "\n" open("CHANGES.txt").read() + "\n"
...@@ -184,7 +184,6 @@ setup(name=name, ...@@ -184,7 +184,6 @@ setup(name=name,
'slapmonitor = slapos.recipe.slapmonitor:MonitorRecipe', 'slapmonitor = slapos.recipe.slapmonitor:MonitorRecipe',
'slapmonitor-xml = slapos.recipe.slapmonitor:MonitorXMLRecipe', 'slapmonitor-xml = slapos.recipe.slapmonitor:MonitorXMLRecipe',
'slapreport = slapos.recipe.slapreport:Recipe', 'slapreport = slapos.recipe.slapreport:Recipe',
'slaprunner = slapos.recipe.slaprunner:Recipe',
'slaprunner.test = slapos.recipe.slaprunner:Test', 'slaprunner.test = slapos.recipe.slaprunner:Test',
'slaprunner.export = slapos.recipe.slaprunner.backup:ExportRecipe', 'slaprunner.export = slapos.recipe.slaprunner.backup:ExportRecipe',
'slaprunner.import = slapos.recipe.slaprunner.backup:ImportRecipe', 'slaprunner.import = slapos.recipe.slaprunner.backup:ImportRecipe',
......
...@@ -155,7 +155,7 @@ class GenericBaseRecipe(object): ...@@ -155,7 +155,7 @@ class GenericBaseRecipe(object):
pidfile=%s pidfile=%s
if [ -e $pidfile ]; then if [ -e $pidfile ]; then
pid=$(cat $pidfile) pid=$(cat $pidfile)
if [[ ! -z $(ps -p "$pid" | grep $(basename %s)) ]]; then if [ ! -z $(ps -p "$pid" | grep $(basename %s)) ]; then
echo "Already running with pid $pid." echo "Already running with pid $pid."
exit 1 exit 1
else else
......
...@@ -34,7 +34,11 @@ from slapos.recipe.librecipe import GenericBaseRecipe ...@@ -34,7 +34,11 @@ from slapos.recipe.librecipe import GenericBaseRecipe
def login_shell(args): def login_shell(args):
password = args['password'] password = args['password']
if (password != ''):
entered_password = getpass() entered_password = getpass()
else:
entered_password = ''
if entered_password != password: if entered_password != password:
return 1 return 1
...@@ -54,11 +58,11 @@ def shellinabox(args): ...@@ -54,11 +58,11 @@ def shellinabox(args):
with open(args['ssl_certificate']) as public_key_file: with open(args['ssl_certificate']) as public_key_file:
print >> certificate_file, public_key_file.read() print >> certificate_file, public_key_file.read()
user = pwd.getpwuid(os.getuid()).pw_name user = pwd.getpwuid(os.getuid()).pw_uid
group = grp.getgrgid(os.getgid()).gr_name group = grp.getgrgid(os.getgid()).gr_gid
service = '/:%(user)s:%(group)s:%(directory)s:%(command)s' % { service = '/:%(user)s:%(group)s:%(directory)s:%(command)s' % {
'user': group, 'user': user,
'group': user, 'group': group,
'directory': args['directory'], 'directory': args['directory'],
'command': args['login_shell'], 'command': args['login_shell'],
} }
......
...@@ -27,78 +27,8 @@ ...@@ -27,78 +27,8 @@
from slapos.recipe.librecipe import GenericBaseRecipe from slapos.recipe.librecipe import GenericBaseRecipe
import os import os
class Recipe(GenericBaseRecipe): #XXX-Nicolas This recipe has to be deleted as soon as possible
#No changes allowed, except full-replacement using buildout
def _options(self, options):
self.ipv4 = options['ipv4'].strip()
self.ipv6 = options['ipv6'].strip()
self.proxy_port = options['proxy_port'].strip()
self.runner_port = options['runner_port'].strip()
self.workdir = options['working-directory'].strip()
self.software_directory = options['software-directory'].strip()
self.instance_directory = options['instance-directory'].strip()
self.partition_amount = options['partition-amount'].strip()
self.cloud9_url = options.get('cloud9-url', '').strip()
self.log_file = os.path.join(options['log_dir'].strip(), 'slaprunner.log')
# Set slaprunner access URL, CLN Beware ipv6 access is made throught nginx
options['access-url'] = 'https://[%s]:%s' % (self.ipv6, self.runner_port)
def install(self):
path_list = []
configuration = dict(
software_root=self.software_directory,
instance_root=self.instance_directory,
master_url='http://%s:%s' % (self.ipv4, self.proxy_port),
computer_id='slaprunner',
partition_amount=self.partition_amount,
slapgrid_sr=self.options['slapgrid_sr'],
slapgrid_cp=self.options['slapgrid_cp'],
slapproxy=self.options['slapproxy'],
supervisor=self.options['supervisor'],
supervisord_config=os.path.join(self.instance_directory, 'etc',
'supervisord.conf'),
runner_workdir=self.workdir,
etc_dir=self.options['etc_dir'],
run_dir=self.options['run_dir'],
log_dir=self.options['log_dir'],
runner_host=self.ipv4,
runner_port=self.runner_port,
ipv4_address=self.ipv4,
ipv6_address=self.ipv6,
proxy_host=self.ipv4,
proxy_port=self.proxy_port,
proxy_database=os.path.join(self.workdir, 'proxy.db'),
git=self.options['git-binary'],
ssh_client=self.options['ssh_client'],
public_key=self.options['public_key'],
private_key=self.options['private_key'],
cloud9_url=self.cloud9_url
)
config_file = self.createFile(self.options['slapos.cfg'],
self.substituteTemplate(self.getTemplateFilename('slapos.cfg.in'),
configuration))
path_list.append(config_file)
environment = dict(
PATH=os.path.dirname(
self.options['git-binary']) + ':' + os.environ['PATH'],
GIT_SSH=self.options['ssh_client']
)
launch_args = [self.options['slaprunner'].strip(), config_file,
'--log_file', self.log_file]
if self.optionIsTrue('debug', default=False):
launch_args.append('--debug')
wrapper = self.createPythonScript(self.options['wrapper'],
'slapos.recipe.librecipe.execute.executee',
(launch_args, environment)
)
path_list.append(wrapper)
return path_list
class Test(GenericBaseRecipe): class Test(GenericBaseRecipe):
def _options(self, options): def _options(self, options):
self.ipv4 = options['ipv4'].strip() self.ipv4 = options['ipv4'].strip()
......
...@@ -70,7 +70,7 @@ class ExportRecipe(GenericBaseRecipe): ...@@ -70,7 +70,7 @@ class ExportRecipe(GenericBaseRecipe):
fi fi
done done
} }
sync_element %(srv-directory)s/runner %(backup-directory)s/runner/ instance project proxy.db softwareLink sync_element %(srv-directory)s/runner %(backup-directory)s/runner/ instance project proxy.db
sync_element %(etc-directory)s %(backup-directory)s/etc/ .rcode .project .users .htpasswd ssh sync_element %(etc-directory)s %(backup-directory)s/etc/ .rcode .project .users .htpasswd ssh
if [ -d %(backup-directory)s/runner/software ]; then if [ -d %(backup-directory)s/runner/software ]; then
rm %(backup-directory)s/runner/software/* rm %(backup-directory)s/runner/software/*
...@@ -119,13 +119,14 @@ class ImportRecipe(GenericBaseRecipe): ...@@ -119,13 +119,14 @@ class ImportRecipe(GenericBaseRecipe):
fi fi
done done
} }
restore_element %(backup-directory)s/runner/ %(srv-directory)s/runner instance project proxy.db softwareLink restore_element %(backup-directory)s/runner/ %(srv-directory)s/runner instance project proxy.db
restore_element %(backup-directory)s/etc/ %(etc-directory)s .rcode .project .users .htpasswd ssh restore_element %(backup-directory)s/etc/ %(etc-directory)s .rcode .project .users .htpasswd ssh
ifs=$IFS IFS=';' ifs=$IFS IFS=';'
read user pass remaining < %(etc-directory)s/.users read user pass remaining < %(etc-directory)s/.users
IFS=$ifs IFS=$ifs
%(curl-binary)s --insecure -vg6L -F clogin="$user" -F cpwd="$pass" --dump-header login_cookie %(backend-url)s/doLogin; %(curl-binary)s --insecure -vg6L -F clogin="$user" -F cpwd="$pass" --dump-header login_cookie %(backend-url)s/doLogin;
%(curl-binary)s --insecure -vg6LX POST --cookie login_cookie --max-time 5 %(backend-url)s/runSoftwareProfile; %(curl-binary)s --insecure -vg6L --cookie login_cookie --max-time 5 %(backend-url)s/isSRReady;
%(curl-binary)s --insecure -vg6LX POST --cookie login_cookie --max-time 5 %(backend-url)s/runSoftwareProfile --user "$user":"$pass";
rm -f login_cookie rm -f login_cookie
""" % self.options) """ % self.options)
self.createExecutable(wrapper, content=content) self.createExecutable(wrapper, content=content)
......
...@@ -120,6 +120,11 @@ plain_http_port ...@@ -120,6 +120,11 @@ plain_http_port
Port used by apache to serve plain http (only used to redirect to https). Port used by apache to serve plain http (only used to redirect to https).
Optional parameter, defaults to 8080. Optional parameter, defaults to 8080.
ip-read-limit
~~~~~~~~~~~~~
Use to set IPReadLimit Parameter for antiloris.
Optional parameter, defaults to 10.
apache_custom_http (custom-group) apache_custom_http (custom-group)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jinja template for apache virtualhost http configuration. It will be used by all slaves Jinja template for apache virtualhost http configuration. It will be used by all slaves
......
...@@ -51,21 +51,21 @@ command = ...@@ -51,21 +51,21 @@ command =
[template] [template]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg url = ${:_profile_base_location_}/instance.cfg
md5sum = 9c6346c8eaf484748e6be0b62b65cf2e md5sum = 5c22b1e0fe601255ebf19adf6093489f
output = ${buildout:directory}/template.cfg output = ${buildout:directory}/template.cfg
mode = 0644 mode = 0644
[template-apache-frontend] [template-apache-frontend]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-apache-frontend.cfg url = ${:_profile_base_location_}/instance-apache-frontend.cfg
md5sum = 7e7e7599ec41cf1eb6e8e725d855c345 md5sum = 9f3eec91f43ae0730e9bba93f83572fc
output = ${buildout:directory}/template-apache-frontend.cfg output = ${buildout:directory}/template-apache-frontend.cfg
mode = 0644 mode = 0644
[template-apache-replicate] [template-apache-replicate]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-apache-replicate.cfg.in url = ${:_profile_base_location_}/instance-apache-replicate.cfg.in
md5sum = 2c96799f1429d0541c04c0875d864777 md5sum = 02658d39fa429fef7faba9658e4f1474
mode = 0644 mode = 0644
[template-slave-list] [template-slave-list]
...@@ -83,12 +83,13 @@ mode = 640 ...@@ -83,12 +83,13 @@ mode = 640
[template-replicate-publish-slave-information] [template-replicate-publish-slave-information]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/templates/replicate-publish-slave-information.cfg.in url = ${:_profile_base_location_}/templates/replicate-publish-slave-information.cfg.in
md5sum = 61a14dff06718e3d90c346a0a7b20c5a
mode = 640 mode = 640
[template-apache-frontend-configuration] [template-apache-frontend-configuration]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/templates/apache.conf.in url = ${:_profile_base_location_}/templates/apache.conf.in
md5sum = c141b9e78c7e80d75bb40493910294e5 md5sum = b4d7461c29fb6c36f09e48fa5ad59fba
mode = 640 mode = 640
[template-apache-cached-configuration] [template-apache-cached-configuration]
...@@ -128,6 +129,12 @@ url = ${:_profile_base_location_}/templates/default-virtualhost.conf.in ...@@ -128,6 +129,12 @@ url = ${:_profile_base_location_}/templates/default-virtualhost.conf.in
md5sum = ac845c0fa3835832307a0e7323cb339d md5sum = ac845c0fa3835832307a0e7323cb339d
mode = 640 mode = 640
[template-squid-configuration]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/templates/squid.conf.jinja2
md5sum = 9f70474181372d34c8cd203f24ab546e
mode = 640
[template-empty] [template-empty]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/templates/empty.in url = ${:_profile_base_location_}/templates/empty.in
......
...@@ -7,7 +7,6 @@ parts = ...@@ -7,7 +7,6 @@ parts =
cron-entry-logrotate cron-entry-logrotate
ca-frontend ca-frontend
certificate-authority certificate-authority
squid-cache
logrotate-entry-apache logrotate-entry-apache
logrotate-entry-apache-cached logrotate-entry-apache-cached
logrotate-entry-squid logrotate-entry-squid
...@@ -16,7 +15,10 @@ parts = ...@@ -16,7 +15,10 @@ parts =
switch-apache-softwaretype switch-apache-softwaretype
frontend-apache-graceful frontend-apache-graceful
cached-apache-graceful cached-apache-graceful
squid-service
squid-prepare
squid-reload squid-reload
promise-squid
dynamic-template-default-vh dynamic-template-default-vh
not-found-html not-found-html
promise-apache-frontend-v4-https promise-apache-frontend-v4-https
...@@ -24,7 +26,6 @@ parts = ...@@ -24,7 +26,6 @@ parts =
promise-apache-frontend-v6-https promise-apache-frontend-v6-https
promise-apache-frontend-v6-http promise-apache-frontend-v6-http
promise-apache-cached promise-apache-cached
promise-squid
eggs-directory = ${buildout:eggs-directory} eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory}
...@@ -55,13 +56,11 @@ crontabs = $${:etc}/crontabs ...@@ -55,13 +56,11 @@ crontabs = $${:etc}/crontabs
cronstamps = $${:etc}/cronstamps cronstamps = $${:etc}/cronstamps
ca-dir = $${:srv}/ssl ca-dir = $${:srv}/ssl
squid-cache = $${:srv}/squid_cache
[switch-apache-softwaretype] [switch-apache-softwaretype]
recipe = slapos.cookbook:softwaretype recipe = slapos.cookbook:softwaretype
default = $${dynamic-default-template-slave-list:rendered} single-default = $${dynamic-default-template-slave-list:rendered}
custom-personal = $${dynamic-custom-personal-template-slave-list:rendered} single-custom-personal = $${dynamic-custom-personal-template-slave-list:rendered}
custom-group = $${dynamic-custom-group-template-slave-list:rendered} single-custom-group = $${dynamic-custom-group-template-slave-list:rendered}
[instance-parameter] [instance-parameter]
# Fetches parameters defined in SlapOS Master for this instance. # Fetches parameters defined in SlapOS Master for this instance.
...@@ -129,7 +128,7 @@ extra-context = ...@@ -129,7 +128,7 @@ extra-context =
raw empty_template ${template-empty:target} raw empty_template ${template-empty:target}
raw template_slave_configuration ${template-slave-configuration:target} raw template_slave_configuration ${template-slave-configuration:target}
raw template_rewrite_cached ${template-rewrite-cached:target} raw template_rewrite_cached ${template-rewrite-cached:target}
raw software_type custom-personal raw software_type single-custom-personal
[dynamic-custom-group-template-slave-list] [dynamic-custom-group-template-slave-list]
< = jinja2-template-base < = jinja2-template-base
...@@ -152,7 +151,7 @@ extra-context = ...@@ -152,7 +151,7 @@ extra-context =
key cache_port apache-configuration:cache-port key cache_port apache-configuration:cache-port
raw empty_template ${template-empty:target} raw empty_template ${template-empty:target}
raw template_rewrite_cached ${template-rewrite-cached:target} raw template_rewrite_cached ${template-rewrite-cached:target}
raw software_type custom-group raw software_type single-custom-group
[dynamic-default-template-slave-list] [dynamic-default-template-slave-list]
< = jinja2-template-base < = jinja2-template-base
...@@ -175,7 +174,7 @@ extra-context = ...@@ -175,7 +174,7 @@ extra-context =
raw template_slave_configuration ${template-default-slave-virtualhost:target} raw template_slave_configuration ${template-default-slave-virtualhost:target}
raw empty_template ${template-empty:target} raw empty_template ${template-empty:target}
raw template_rewrite_cached ${template-rewrite-cached:target} raw template_rewrite_cached ${template-rewrite-cached:target}
raw software_type default-RootSoftwareInstance raw software_type single-default
# XXXX Hack to allow two software types # XXXX Hack to allow two software types
[dynamic-virtualhost-template-slave] [dynamic-virtualhost-template-slave]
...@@ -399,13 +398,19 @@ sharedscripts = true ...@@ -399,13 +398,19 @@ sharedscripts = true
notifempty = true notifempty = true
create = true create = true
######################
# Squid deployment
######################
[squid-directory]
recipe = slapos.cookbook:mkdirectory
squid-cache = $${directory:srv}/squid_cache
[squid-cache] [squid-cache]
recipe = slapos.cookbook:squid
prepare-path = $${directory:etc-run}/squid-prepare prepare-path = $${directory:etc-run}/squid-prepare
wrapper-path = $${directory:service}/squid wrapper-path = $${directory:service}/squid
binary-path = ${squid:location}/sbin/squid binary-path = ${squid:location}/sbin/squid
conf-path = $${directory:etc}/squid.cfg configuration-path = $${directory:etc}/squid.cfg
cache-path = $${directory:squid-cache} cache-path = $${squid-directory:squid-cache}
ip = $${instance-parameter:ipv4-random} ip = $${instance-parameter:ipv4-random}
port = $${apache-configuration:cache-port} port = $${apache-configuration:cache-port}
backend-ip = $${instance-parameter:ipv4-random} backend-ip = $${instance-parameter:ipv4-random}
...@@ -415,11 +420,44 @@ access-log-path = $${directory:log}/squid-access.log ...@@ -415,11 +420,44 @@ access-log-path = $${directory:log}/squid-access.log
cache-log-path = $${directory:log}/squid-cache.log cache-log-path = $${directory:log}/squid-cache.log
pid-filename-path = $${directory:run}/squid.pid pid-filename-path = $${directory:run}/squid.pid
[squid-configuration]
< = jinja2-template-base
template = ${template-squid-configuration:target}
rendered = $${squid-cache:configuration-path}
extra-context =
key ip squid-cache:ip
key port squid-cache:port
key backend_ip squid-cache:backend-ip
key backend_port squid-cache:backend-port
key cache_path squid-cache:cache-path
key access_log_path squid-cache:access-log-path
key cache_log_path squid-cache:cache-log-path
key pid_filename_path squid-cache:pid-filename-path
key open_port squid-cache:open-port
[squid-service]
recipe = slapos.cookbook:wrapper
command-line = $${squid-cache:binary-path} -N -f $${squid-configuration:rendered}
wrapper-path = $${squid-cache:wrapper-path}
[squid-prepare]
recipe = slapos.cookbook:wrapper
command-line = $${squid-cache:binary-path} -z -f $${squid-configuration:rendered}
wrapper-path = $${squid-cache:prepare-path}
[squid-reload] [squid-reload]
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
command-line = ${buildout:bin-directory}/killpidfromfile $${squid-cache:pid-filename-path} SIGHUP command-line = ${buildout:bin-directory}/killpidfromfile $${squid-cache:pid-filename-path} SIGHUP
wrapper-path = $${directory:etc-run}/squid-reload wrapper-path = $${directory:etc-run}/squid-reload
[promise-squid]
recipe = slapos.cookbook:check_port_listening
path = $${directory:promise}/squid
hostname = $${instance-parameter:ipv4-random}
port = $${apache-configuration:cache-port}
# End of Squid part
[frontend-apache-graceful] [frontend-apache-graceful]
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
command-line = ${buildout:bin-directory}/killpidfromfile $${apache-configuration:pid-file} SIGUSR1 command-line = ${buildout:bin-directory}/killpidfromfile $${apache-configuration:pid-file} SIGUSR1
...@@ -460,12 +498,6 @@ path = $${directory:promise}/apache_cached ...@@ -460,12 +498,6 @@ path = $${directory:promise}/apache_cached
hostname = $${instance-parameter:ipv4-random} hostname = $${instance-parameter:ipv4-random}
port = $${apache-configuration:cache-through-port} port = $${apache-configuration:cache-through-port}
[promise-squid]
recipe = slapos.cookbook:check_port_listening
path = $${directory:promise}/squid
hostname = $${instance-parameter:ipv4-random}
port = $${apache-configuration:cache-port}
[slap_connection] [slap_connection]
# Kept for backward compatiblity # Kept for backward compatiblity
computer_id = $${slap-connection:computer-id} computer_id = $${slap-connection:computer-id}
......
{% if slap_software_type.startswith(software_type) -%} {% if slap_software_type in software_type -%}
[jinja2-template-base] [jinja2-template-base]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
...@@ -13,18 +13,22 @@ context = ...@@ -13,18 +13,22 @@ context =
${:extra-context} ${:extra-context}
{% set part_list = [] -%} {% set part_list = [] -%}
{% set type_key = 'replicate-' %} {% set single_type_key = 'single-' %}
{% set type_key_length = type_key | length %} {% if slap_software_type in ("replicate", "RootSoftwareInstance") %}
{% if slap_software_type.startswith(type_key) %} {% set frontend_type = slapparameter_dict.pop('-frontend-type', 'single-default') -%}
{% set frontend_type = slap_software_type[type_key_length:] -%}
{% else -%} {% else -%}
{% set frontend_type = slapparameter_dict.pop('-frontend-type', 'default') -%} {% set frontend_type = "%s%s" % (single_type_key, slap_software_type) -%}
{% endif -%} {% endif -%}
{% set frontend_quantity = slapparameter_dict.pop('-frontend-quantity', '2') | int -%} {% set frontend_quantity = slapparameter_dict.pop('-frontend-quantity', '1') | int -%}
{% set slave_list_name = 'extra_slave_instance_list' -%} {% set slave_list_name = 'extra_slave_instance_list' -%}
{% set frontend_list = [] %} {% set frontend_list = [] %}
{% set frontend_section_list = [] %} {% set frontend_section_list = [] %}
{% set namebase = 'apache-frontend' -%} {% set namebase = 'apache-frontend' -%}
# XXX Dirty hack, not possible to define default value before
{% set sla_computer_apache_1_key = '-sla-1-computer_guid' -%}
{% if not sla_computer_apache_1_key in slapparameter_dict -%}
{% do slapparameter_dict.__setitem__(sla_computer_apache_1_key, '${slap-connection:computer-id}') -%}
{% endif -%}
# Here we request individualy each frontend. # Here we request individualy each frontend.
# The presence of sla parameters is checked and added if found # The presence of sla parameters is checked and added if found
...@@ -81,6 +85,8 @@ slave-amount = {{ slave_instance_list | length }} ...@@ -81,6 +85,8 @@ slave-amount = {{ slave_instance_list | length }}
recipe = slapos.cookbook:softwaretype recipe = slapos.cookbook:softwaretype
default = ${dynamic-publish-slave-information:rendered} default = ${dynamic-publish-slave-information:rendered}
replicate = ${dynamic-publish-slave-information:rendered} replicate = ${dynamic-publish-slave-information:rendered}
custom-personal = ${dynamic-publish-slave-information:rendered}
custom-group = ${dynamic-publish-slave-information:rendered}
[slave-information] [slave-information]
{% for frontend_section in frontend_section_list -%} {% for frontend_section in frontend_section_list -%}
...@@ -120,7 +126,6 @@ cert_file = ${slap-connection:cert-file} ...@@ -120,7 +126,6 @@ cert_file = ${slap-connection:cert-file}
[slap-parameter] [slap-parameter]
slave_instance_list = slave_instance_list =
-frontend-quantity = 2 -frontend-quantity = 1
-frontend-type = default -frontend-type = single-default
{%- endif %} {%- endif %}
...@@ -30,12 +30,12 @@ context = ...@@ -30,12 +30,12 @@ context =
[switch-softwaretype] [switch-softwaretype]
recipe = slapos.cookbook:softwaretype recipe = slapos.cookbook:softwaretype
default = ${template-apache-frontend:output} default = $${dynamic-template-apache-replicate:rendered}
custom-personal = ${template-apache-frontend:output} custom-personal = $${dynamic-template-apache-replicate:rendered}
custom-group = ${template-apache-frontend:output} custom-group = $${dynamic-template-apache-replicate:rendered}
replicate-default = $${dynamic-template-apache-replicate:rendered} single-default = ${template-apache-frontend:output}
replicate-custom-personal = $${dynamic-template-apache-replicate:rendered} single-custom-personal = ${template-apache-frontend:output}
replicate-custom-group = $${dynamic-template-apache-replicate:rendered} single-custom-group = ${template-apache-frontend:output}
replicate = $${dynamic-template-apache-replicate:rendered} replicate = $${dynamic-template-apache-replicate:rendered}
[dynamic-template-apache-replicate] [dynamic-template-apache-replicate]
...@@ -46,4 +46,4 @@ extensions = jinja2.ext.do ...@@ -46,4 +46,4 @@ extensions = jinja2.ext.do
extra-context = extra-context =
raw template_publish_slave_information ${template-replicate-publish-slave-information:target} raw template_publish_slave_information ${template-replicate-publish-slave-information:target}
# Must match the key id in [switch-softwaretype] which uses this section. # Must match the key id in [switch-softwaretype] which uses this section.
raw software_type replicate raw software_type RootSoftwareInstance-default-custom-personal-custom-group-replicate
...@@ -86,6 +86,12 @@ BrowserMatch "^gnome-vfs" redirect-carefully ...@@ -86,6 +86,12 @@ BrowserMatch "^gnome-vfs" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
# Increase IPReadLimit to 10
<IfModule antiloris_module>
# IPReadLimit - Maximum simultaneous connections in READ state per IP address
IPReadLimit {{ slapparameter_dict.get('ip-read-limit', '10') }}
</IfModule>
# Cache directives # Cache directives
CacheEnable mem / CacheEnable mem /
CacheDefaultExpire 3600 CacheDefaultExpire 3600
......
refresh_pattern . 0 20% 4320 max-stale=604800
# Dissallow cachemgr access
http_access deny manager
# Squid service configuration
http_port {{ ip }}:{{ port }} accel defaultsite={{ ip }}
cache_peer {{ backend_ip }} parent {{ backend_port }} 0 no-query originserver name=backend
acl our_sites port {{ open_port }}
http_access allow our_sites
cache_peer_access backend allow our_sites
cache_peer_access backend deny all
# Drop squid headers
# via off
# reply_header_access X-Cache-Lookup deny all
# reply_header_access X-Squid-Error deny all
# reply_header_access X-Cache deny all
header_replace X-Forwarded-For
follow_x_forwarded_for allow all
forwarded_for on
# Use 1Go of RAM
cache_mem 1024 MB
# But do not keep big object in RAM
maximum_object_size_in_memory 2048 KB
# Log
access_log {{ access_log_path }}
cache_log {{ cache_log_path }}
pid_filename {{ pid_filename_path }}
...@@ -28,3 +28,74 @@ instance-amount ...@@ -28,3 +28,74 @@ instance-amount
Optional parameter. Optional parameter.
Default: 10 Default: 10
AUTO-DEPLOYMENT
---------------
You can automatically deploy a software release while deploying the webrunner itself, using the paramater XML.
To do this, you only need to pass as a parameter named "slapos-software" : "AAA/BBB", where AAA is the folder of slapos.git where is located your BBB software.
For example, to deploy the hello-world software, you need to pass : software/helloworld
This is possible because the slapos.git is automatically downloaded when the webrunner is deployed.
It is also possible to download you own git repository, by providing the url in the "slapos-repository" parameter.
Last but not least, it is also possible to switch the branch with the parameter "slapos-reference" (by default pointing on master)
Resilience :
------------
To order a resilient runner, you have to request a runner with the option: "--type resilient"
You can then decide on which node you want to deploy each instance, with the parameters.xml :
<?xml version='1.0' encoding='utf-8'?>
<instance>
<parameter id="-sla-runner2-computer_guid">COMP-XXXX</parameter>
<parameter id="-sla-pbs2-computer_guid">COMP-XXXX</parameter>
<parameter id="-sla-pbs1-computer_guid">COMP-XXXX</parameter>
<parameter id="-sla-runner1-computer_guid">COMP-XXXX</parameter>
<parameter id="-sla-runner0-computer_guid">COMP-XXXX</parameter>
</instance>
If you want to check by yourself that the pull-backup instances do their job, you can change directory to the slappart of runner0, and run ./bin/exporter (after creating your account, using the given backend_url or url): it would fill ./srv/backup/runner with data. If you then go to an import instance (runner1 or runner2) on the port 50005, you should be able to sign in the runner.
Tips :
~~~~~
To find in which partition the instance has been deployed, you can open the page of this specific instance, and look for "slappartXX" on the page.
Tests :
-------
To test the runner, start by ordering a runner with default type. Then READ the important note below :
/!\ IMPORTANT NOTE ON THE TESTS /!\ : in order to make them work, you have to comment the last line of the file __init__.py in the runner module (which is just : "run()"). Indeed, this line is used to load the config, when importing this module throught Gunicorn (the wsgi server). But the test suite loads itself the configuration, in fonction of the tested scenarios, etc... (You can find the module in the SR folder directory, under ./eggs/slapos.toolbox, or under parts/slapos.toolbox if you have a development version)
Then, su in the concerned slapuserX and run "./bin/runTestSuite".
For the tests on the resiliency of the webrunner, please refer to the README in slapos.toolbox.git/slapos/resiliencytest
Request custom frontend :
-------------------------
While deploying a server in your instance, you may need to ask for a custom ipv4 frontend.
The way to do that is to send a new parameter to your runner instance, using the parameters XML. The name of it is "custom-frontend-backend-url".
To create the frontend, you now have to wait the slaprunner to be processed.
If you deploy a server, which uses basic auth, you also have to declare the parameter "custom-frontend-basic-auth" as true, or your slaprunner instance won't show as correctly instanciated.
Example :
<?xml version='1.0' encoding='utf-8'?>
<instance>
<parameter id="custom-frontend-backend-url">http(s)://[THE_IPV6_ADDRESS]:PORT</parameter>
<parameter id="custom-frontend-basic-auth">true</parameter>
</instance>
Things to notice for the nex developer :
----------------------------------------
As you can see in instance-runner-*.cfg, the buildout section extends a hard-coded template file. If one day you need to modify the filename, do not forget to modify it in instance.cfg, but also in these files ! (the problem is that the content of instance.cfg is not known by buildout while the deployment of the software release)
- Use https to connect to the runner. !!! Critical
- resilient sr: Cloned instances should not launch slapgrid-sr if it was not launched on export instance - resilient sr: Cloned instances should not launch slapgrid-sr if it was not launched on export instance
- shellinabox password should be the same in all the resilient instances
[buildout] [buildout]
extends = extends =
../../component/bash/buildout.cfg ../../component/bash/buildout.cfg
../../component/busybox/buildout.cfg
../../component/cloud9/buildout.cfg ../../component/cloud9/buildout.cfg
../../component/curl/buildout.cfg ../../component/curl/buildout.cfg
../../component/dash/buildout.cfg ../../component/dash/buildout.cfg
../../component/dropbear/buildout.cfg ../../component/dropbear/buildout.cfg
../../component/git/buildout.cfg ../../component/git/buildout.cfg
../../component/lxml-python/buildout.cfg ../../component/lxml-python/buildout.cfg
../../component/nano/buildout.cfg
../../component/nginx/buildout.cfg ../../component/nginx/buildout.cfg
../../component/rsync/buildout.cfg ../../component/rsync/buildout.cfg
../../component/python-2.7/buildout.cfg
../../component/screen/buildout.cfg
../../component/shellinabox/buildout.cfg
../../component/vim/buildout.cfg
../../stack/flask.cfg ../../stack/flask.cfg
../../stack/shacache-client.cfg ../../stack/shacache-client.cfg
../../stack/resilient/buildout.cfg ../../stack/resilient/buildout.cfg
...@@ -25,7 +31,7 @@ parts = ...@@ -25,7 +31,7 @@ parts =
instance-runner-import instance-runner-import
instance-runner-export instance-runner-export
slapos-cookbook slapos-cookbook
slapos-cfg-template
# XXX: we have to manually add this for resilience # XXX: we have to manually add this for resilience
rdiff-backup rdiff-backup
collective.recipe.template-egg collective.recipe.template-egg
...@@ -76,48 +82,50 @@ command = ...@@ -76,48 +82,50 @@ command =
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg url = ${:_profile_base_location_}/instance.cfg
output = ${buildout:directory}/template.cfg output = ${buildout:directory}/template.cfg
md5sum = 92a2f3bcd5ff79e3b61ca4a8bacb73ec md5sum = 8a47421ac6158b4ee476acab212c67d9
mode = 0644 mode = 0644
[template-runner] [template-runner]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-runner.cfg url = ${:_profile_base_location_}/instance-runner.cfg
output = ${buildout:directory}/template-runner.cfg output = ${buildout:directory}/template-runner.cfg.in
md5sum = bcd1ee4dd126d2c6e9461f7753fc83b7 md5sum = 098ec22334dc6d0cd8fe747e733c86d8
mode = 0644 mode = 0644
[instance-runner-import] [instance-runner-import]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-runner-import.cfg.in url = ${:_profile_base_location_}/instance-runner-import.cfg.in
output = ${buildout:directory}/instance-runner-import.cfg output = ${buildout:directory}/instance-runner-import.cfg
md5sum = f16cb60bb16632e652bea69cd5cdd9b7 md5sum = 93e3c496c0955a0f7e09570bbe44e3ea
mode = 0644 mode = 0644
[instance-runner-export] [instance-runner-export]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-runner-export.cfg.in url = ${:_profile_base_location_}/instance-runner-export.cfg.in
output = ${buildout:directory}/instance-runner-export.cfg output = ${buildout:directory}/instance-runner-export.cfg
md5sum = 9ce3482e64a0c957f7a5f25ad0dc03ae md5sum = 3a69ef9a2743dbb4ab0708a7675d100c
mode = 0644 mode = 0644
[template-resilient] [template-resilient]
recipe = slapos.recipe.download recipe = slapos.recipe.download
url = ${:_profile_base_location_}/instance-resilient.cfg.jinja2 url = ${:_profile_base_location_}/instance-resilient.cfg.jinja2
md5sum = 2562a6ac6893cc71a7328d7064aff599 md5sum = 932c506779cef5b20576a57d97877742
filename = instance-resilient.cfg.jinja2 filename = instance-resilient.cfg.jinja2
mode = 0644 mode = 0644
[template-resilient-test] [template-resilient-test]
recipe = slapos.recipe.download recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/instance-resilient-test.cfg.jinja2 url = ${:_profile_base_location_}/instance-resilient-test.cfg.jinja2
md5sum = ac772d3a1cce4072acfabd563df449bb download-only = true
md5sum = 18269f9c88f9c3bb1c2b535e44f64f56
filename = instance-resilient-test.cfg.jinja2 filename = instance-resilient-test.cfg.jinja2
mode = 0644 mode = 0644
[template_nginx_conf] [template_nginx_conf]
recipe = slapos.recipe.download recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/nginx_conf.in url = ${:_profile_base_location_}/nginx_conf.in
md5sum = 09b7677dfc6b23c1f58e67fd06a7625e download-only = true
md5sum = e169a8f217fab490ffb435d4b2d07ef3
filename = nginx_conf.in filename = nginx_conf.in
mode = 0644 mode = 0644
...@@ -129,6 +137,15 @@ filename = launcher.in ...@@ -129,6 +137,15 @@ filename = launcher.in
mode = 0644 mode = 0644
location = ${buildout:parts-directory}/${:_buildout_section_name_} location = ${buildout:parts-directory}/${:_buildout_section_name_}
[slapos-cfg-template]
recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/template/${:filename}
md5sum = 6e90b4d037ba549640345827370f8dc3
location = ${buildout:parts-directory}/${:_buildout_section_name_}
filename = slapos.cfg.in
download-only = true
mode = 0644
[eggs] [eggs]
recipe = z3c.recipe.scripts recipe = z3c.recipe.scripts
eggs = eggs =
...@@ -145,6 +162,8 @@ eggs = ...@@ -145,6 +162,8 @@ eggs =
slapos.core slapos.core
xml_marshaller xml_marshaller
pytz pytz
collective.recipe.environment
Gunicorn
# Add slapos.libnetworkcache to path of slapos.core so that slaprunner can build SRs using cache # Add slapos.libnetworkcache to path of slapos.core so that slaprunner can build SRs using cache
[slapos-cookbook] [slapos-cookbook]
...@@ -162,4 +181,3 @@ eggs = ...@@ -162,4 +181,3 @@ eggs =
xml_marshaller xml_marshaller
pytz pytz
slapos.libnetworkcache slapos.libnetworkcache
...@@ -26,20 +26,21 @@ develop = ...@@ -26,20 +26,21 @@ develop =
[slapos.toolbox-repository] [slapos.toolbox-repository]
recipe = slapos.recipe.build:gitclone recipe = slapos.recipe.build:gitclone
repository = http://git.erp5.org/repos/slapos.toolbox.git repository = http://git.erp5.org/repos/slapos.toolbox.git
branch = kvmresiliency branch = slaprunner-paas
git-executable = ${git:location}/bin/git git-executable = ${git:location}/bin/git
[slapos.cookbook-repository] [slapos.cookbook-repository]
recipe = slapos.recipe.build:gitclone recipe = slapos.recipe.build:gitclone
repository = http://git.erp5.org/repos/slapos.git repository = http://git.erp5.org/repos/slapos.git
branch = slaprunner branch = slaprunner-paas-test
git-executable = ${git:location}/bin/git git-executable = ${git:location}/bin/git
# Used for resiliency tests only # Used for resiliency tests only
[erp5.util-repository] [erp5.util-repository]
recipe = slapos.recipe.build:gitclone recipe = slapos.recipe.build:gitclone
repository = http://git.erp5.org/repos/erp5.git repository = http://git.erp5.org/repos/erp5.git
branch = scalability-master2 #branch = scalability-master2
revision = f9a812f4e97ffeed359bc5611366a5c8675ec749
git-executable = ${git:location}/bin/git git-executable = ${git:location}/bin/git
#[slapos.core-repository] #[slapos.core-repository]
......
...@@ -46,10 +46,13 @@ config = resiliency-backup-periodicity frontend-domain cloud9-frontend-domain {{ ...@@ -46,10 +46,13 @@ config = resiliency-backup-periodicity frontend-domain cloud9-frontend-domain {{
{% for key, value in cluster_parameter_dict.items() -%} {% for key, value in cluster_parameter_dict.items() -%}
config-{{ key }} = {{ dumps(value) }} config-{{ key }} = {{ dumps(value) }}
{% endfor -%} {% endfor -%}
config-resiliency-backup-periodicity = * config-resiliency-backup-periodicity = * * * * *
# XXX hardcoded # XXX hardcoded
config-frontend-domain = google.com config-frontend-domain = google.com
config-cloud9-frontend-domain = google.com config-cloud9-frontend-domain = google.com
# XXX Hack to deploy Root Instance on the same computer as the type-test Instance
sla = computer_guid
sla-computer_guid = ${slap-connection:computer-id}
return = backend_url return = backend_url
[slap-parameter] [slap-parameter]
...@@ -17,17 +17,19 @@ parts += ...@@ -17,17 +17,19 @@ parts +=
# Bubble up the parameters # Bubble up the parameters
[request-runner] [request-runner]
return = url ssh-public-key ssh-url notification-id ip backend_url url cloud9_url ssh_command password_recovery_code cloud9_backend_url return = url ssh-public-key ssh-url notification-id ip backend_url url cloud9_url ssh_command password_recovery_code cloud9_backend_url shell_password access_url 1_info
[publish-connection-informations] [publish-connection-informations]
recipe = slapos.cookbook:publish recipe = slapos.cookbook:publish
1_info = Set your passord in slaprunner in order to access cloud9 1_info = ${request-runner:connection-1_info}
backend_url = ${request-runner:connection-backend_url} backend_url = ${request-runner:connection-backend_url}
access_url = ${request-runner:connection-access_url}
url = ${request-runner:connection-url} url = ${request-runner:connection-url}
cloud9_url = ${request-runner:connection-cloud9_url} cloud9_url = ${request-runner:connection-cloud9_url}
cloud9_backend_url = ${request-runner:connection-cloud9_backend_url} cloud9_backend_url = ${request-runner:connection-cloud9_backend_url}
ssh_command = ${request-runner:connection-ssh_command} ssh_command = ${request-runner:connection-ssh_command}
password_recovery_code = ${request-runner:connection-password_recovery_code} password_recovery_code = ${request-runner:connection-password_recovery_code}
shell_password = ${request-runner:connection-shell_password}
[slap-parameter] [slap-parameter]
# Default parameters for distributed deployment # Default parameters for distributed deployment
......
[buildout] [buildout]
extends = ${template-runner:output} extends = template-runner.cfg
${pbsready-export:output} ${pbsready-export:output}
parts += parts +=
...@@ -9,20 +9,28 @@ parts += ...@@ -9,20 +9,28 @@ parts +=
certificate-authority certificate-authority
ca-nginx ca-nginx
ca-node-frontend ca-node-frontend
slaprunner ca-shellinabox
gunicorn-launcher
gunicorn-graceful
test-runner test-runner
sshkeys-dropbear-runner sshkeys-dropbear-runner
dropbear-server-add-authorized-key dropbear-server-add-authorized-key
sshkeys-authority sshkeys-authority
publish-connection-informations
slaprunner-promise slaprunner-promise
slaprunner-frontend-promise slaprunner-frontend-promise
cloud9-promise cloud9-promise
cloud9-frontend-promise cloud9-frontend-promise
dropbear-promise dropbear-promise
shellinabox-promise
symlinks symlinks
request-cloud9-frontend
node-frontend-promise node-frontend-promise
nginx-promise nginx-promise
publish-connection-informations shellinabox
slapos-cfg
slapos-repo-config
prepare-software
cron-entry-backup cron-entry-backup
[exporter] [exporter]
......
[buildout] [buildout]
extends = ${template-runner:output} extends = template-runner.cfg
${pbsready-import:output} ${pbsready-import:output}
parts += parts +=
...@@ -9,7 +9,9 @@ parts += ...@@ -9,7 +9,9 @@ parts +=
certificate-authority certificate-authority
ca-nginx ca-nginx
ca-node-frontend ca-node-frontend
slaprunner ca-shellinabox
gunicorn-launcher
gunicorn-graceful
test-runner test-runner
sshkeys-dropbear-runner sshkeys-dropbear-runner
dropbear-server-add-authorized-key dropbear-server-add-authorized-key
...@@ -17,8 +19,14 @@ parts += ...@@ -17,8 +19,14 @@ parts +=
slaprunner-promise slaprunner-promise
cloud9-promise cloud9-promise
dropbear-promise dropbear-promise
shellinabox-promise
nginx-promise
shellinabox
symlinks symlinks
nginx-promise nginx-promise
slapos-cfg
slapos-repo-config
prepare-software
# have to repeat the next one, as it's not inherited from pbsready-import # have to repeat the next one, as it's not inherited from pbsready-import
import-on-notification import-on-notification
......
...@@ -6,7 +6,9 @@ parts = ...@@ -6,7 +6,9 @@ parts =
certificate-authority certificate-authority
ca-nginx ca-nginx
ca-node-frontend ca-node-frontend
slaprunner ca-shellinabox
gunicorn-launcher
gunicorn-graceful
test-runner test-runner
sshkeys-dropbear-runner sshkeys-dropbear-runner
dropbear-server-add-authorized-key dropbear-server-add-authorized-key
...@@ -17,15 +19,64 @@ parts = ...@@ -17,15 +19,64 @@ parts =
cloud9-promise cloud9-promise
cloud9-frontend-promise cloud9-frontend-promise
dropbear-promise dropbear-promise
shellinabox-promise
symlinks symlinks
request-cloud9-frontend request-cloud9-frontend
node-frontend-promise node-frontend-promise
nginx-promise nginx-promise
shellinabox
slapos-cfg
slapos-repo-config
prepare-software
{% if slapparameter_dict.get('custom-frontend-backend-url') %}
custom-frontend-promise
{% endif %}
eggs-directory = ${buildout:eggs-directory} eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true offline = true
{% if slapparameter_dict.get('custom-frontend-backend-url') -%}
# Requests, if defined, a frontend to allow access to a server
# located inside of the virtual machine listening to port X
# to LAN IPv4.
# Internaly, the frontend will be asked to listen on the IPv6
# with port X + 10000, to match NAT rules of Qemu.
[request-custom-frontend]
recipe = slapos.cookbook:request
software-url = {{ slapparameter_dict.get('custom-frontend-software-url', 'http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg') }}
software-type = {{ slapparameter_dict.get('custom-frontend-software-type', 'RootSoftwareInstance') }}
slave = true
name = Custom Web Frontend
server-url = $${slap-connection:server-url}
key-file = $${slap-connection:key-file}
cert-file = $${slap-connection:cert-file}
computer-id = $${slap-connection:computer-id}
partition-id = $${slap-connection:partition-id}
{% if slapparameter_dict.get('custom-frontend-instance-guid') -%}
sla = instance_guid
sla-instance_guid = $${slap-parameter:frontend-instance-guid}
{% endif -%}
config = url
config-url = {{ slapparameter_dict.get('custom-frontend-backend-url') }}
return = site_url domain
[custom-frontend-promise]
recipe = slapos.cookbook:check_url_available
path = $${directory:promises}/custom_frontend_promise
url = https://$${request-custom-frontend:connection-domain}
{% if slapparameter_dict.get('custom-frontend-basic-auth') -%}
check-secure = 1
{% endif -%}
dash_path = {{ dash_executable_location }}
curl_path = {{ curl_executable_location }}
[publish-connection-informations]
custom-frontend-url = https://$${request-custom-frontend:connection-domain}
{% endif -%}
# Create all needed directories # Create all needed directories
[directory] [directory]
...@@ -47,7 +98,7 @@ promises = $${:etc}/promise/ ...@@ -47,7 +98,7 @@ promises = $${:etc}/promise/
test = $${:etc}/test/ test = $${:etc}/test/
nginx-data = $${directory:srv}/nginx nginx-data = $${directory:srv}/nginx
ca-dir = $${:srv}/ssl ca-dir = $${:srv}/ssl
project = $${:srv}/runner/project/
[runnerdirectory] [runnerdirectory]
recipe = slapos.cookbook:mkdirectory recipe = slapos.cookbook:mkdirectory
...@@ -65,7 +116,7 @@ sessions = $${buildout:directory}/.sessions ...@@ -65,7 +116,7 @@ sessions = $${buildout:directory}/.sessions
[recovery-code] [recovery-code]
recipe = slapos.cookbook:generate.password recipe = slapos.cookbook:generate.password
storage-path = $${directory:etc}/.rcode storage-path = $${directory:etc}/.rcode
bytes = 4 bytes = 8
# Deploy cloud9 and slaprunner # Deploy cloud9 and slaprunner
[cloud9] [cloud9]
...@@ -75,11 +126,10 @@ port = 4443 ...@@ -75,11 +126,10 @@ port = 4443
wrapper = $${directory:services}/cloud9 wrapper = $${directory:services}/cloud9
working-directory = $${runnerdirectory:home} working-directory = $${runnerdirectory:home}
git-binary = ${git:location}/bin/git git-binary = ${git:location}/bin/git
node-binary = ${nodejs:location}/bin/node node-binary = ${nodejs-0.6:location}/bin/node
cloud9 = ${cloud9:executable} cloud9 = ${cloud9:executable}
[slaprunner] [slaprunner]
recipe = slapos.cookbook:slaprunner
slaprunner = ${buildout:directory}/bin/slaprunner slaprunner = ${buildout:directory}/bin/slaprunner
slapgrid_sr = ${buildout:directory}/bin/slapgrid-sr slapgrid_sr = ${buildout:directory}/bin/slapgrid-sr
slapgrid_cp = ${buildout:directory}/bin/slapgrid-cp slapgrid_cp = ${buildout:directory}/bin/slapgrid-cp
...@@ -105,6 +155,12 @@ partition-amount = $${slap-parameter:instance-amount} ...@@ -105,6 +155,12 @@ partition-amount = $${slap-parameter:instance-amount}
cloud9-url = $${cloud9:access-url} cloud9-url = $${cloud9:access-url}
wrapper = $${directory:services}/slaprunner wrapper = $${directory:services}/slaprunner
debug = $${slap-parameter:debug} debug = $${slap-parameter:debug}
access-url = https://[$${:ipv6}]:$${:runner_port}
supd-temp-var = $${directory:etc}/supervisord.conf
prox-db-var = $${slaprunner:working-directory}/proxy.db
console = False
verbose = False
debug = False
[test-runner] [test-runner]
<= slaprunner <= slaprunner
...@@ -182,7 +238,7 @@ context = ...@@ -182,7 +238,7 @@ context =
key backend_port nginx-frontend:port key backend_port nginx-frontend:port
raw shell_path ${bash:location}/bin/bash raw shell_path ${bash:location}/bin/bash
raw node_env ${buildout:parts-directory}:${npm-modules:location}/node_modules raw node_env ${buildout:parts-directory}:${npm-modules:location}/node_modules
raw node_path ${nodejs:location}/bin/node raw node_path ${nodejs-0.6:location}/bin/node
raw conf_path ${simple-proxy:location}/${simple-proxy:filename} raw conf_path ${simple-proxy:location}/${simple-proxy:filename}
#--------------------------- #---------------------------
...@@ -218,7 +274,7 @@ path_pid = $${directory:run}/nginx.pid ...@@ -218,7 +274,7 @@ path_pid = $${directory:run}/nginx.pid
path_log = $${directory:log}/nginx.log path_log = $${directory:log}/nginx.log
path_access_log = $${directory:log}/nginx.access.log path_access_log = $${directory:log}/nginx.access.log
path_error_log = $${directory:log}/nginx.error.log path_error_log = $${directory:log}/nginx.error.log
path_tmp = $${buildout:directory}/tmp path_tmp = $${directory:tmp}/
# Config files # Config files
path_nginx_conf = $${directory:etc}/nginx.conf path_nginx_conf = $${directory:etc}/nginx.conf
# Executables # Executables
...@@ -235,6 +291,8 @@ recipe = slapos.recipe.template:jinja2 ...@@ -235,6 +291,8 @@ recipe = slapos.recipe.template:jinja2
template = ${template_nginx_conf:location}/${template_nginx_conf:filename} template = ${template_nginx_conf:location}/${template_nginx_conf:filename}
rendered = $${nginx-frontend:path_nginx_conf} rendered = $${nginx-frontend:path_nginx_conf}
context = context =
key shellinabox_port shellinabox:port
key socket gunicorn:socket
section param_nginx_frontend nginx-frontend section param_nginx_frontend nginx-frontend
section param_tempdir tempdirectory section param_tempdir tempdirectory
...@@ -246,6 +304,29 @@ mode = 700 ...@@ -246,6 +304,29 @@ mode = 700
context = context =
section param_nginx_frontend nginx-frontend section param_nginx_frontend nginx-frontend
#--------------------
#--
#-- WSGI
[gunicorn]
bin_gunicorn = $${directory:bin}/gunicorn
bin_launcher = $${directory:services}/gunicorn
path_shell = ${dash:location}/bin/dash
socket = $${directory:tmp}/flaskserver.sock
path_pid = $${directory:run}/gunicorn.pid
[gunicorn-launcher]
recipe = slapos.cookbook:wrapper
command-line = $${gunicorn:bin_gunicorn} slapos.runner:app -p $${gunicorn:path_pid} -b unix:$${gunicorn:socket} -e RUNNER_CONFIG=$${slaprunner:slapos.cfg} --preload
wrapper-path = $${gunicorn:bin_launcher}
environment = PATH=$${environ:PATH}
RUNNER_CONFIG=$${slaprunner:slapos.cfg}
[gunicorn-graceful]
recipe = slapos.cookbook:wrapper
command-line = $${directory:bin}/killpidfromfile $${gunicorn:path_pid} SIGHUP
wrapper-path = $${directory:scripts}/gunicorn-graceful
#-------------------- #--------------------
#-- #--
#-- ssl certificates #-- ssl certificates
...@@ -289,6 +370,13 @@ wrapper = $${directory:services}/node-frontend ...@@ -289,6 +370,13 @@ wrapper = $${directory:services}/node-frontend
# Put domain name # Put domain name
name = example.com name = example.com
[ca-shellinabox]
<= certificate-authority
recipe = slapos.cookbook:certificate_authority.request
executable = $${shellinabox:wrapper}
wrapper = $${directory:services}/shellinaboxd
key-file = $${cadirectory:certs}/shellinabox.key
cert-file = $${cadirectory:certs}/shellinabox.crt
#-------------------- #--------------------
#-- #--
#-- Request frontend #-- Request frontend
...@@ -301,7 +389,7 @@ name = SlapRunner Frontend ...@@ -301,7 +389,7 @@ name = SlapRunner Frontend
software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
slave = true slave = true
config = url domain config = url domain
config-url = $${node-frontend:access-url} config-url = $${slaprunner:access-url}
config-domain = $${slap-parameter:frontend-domain} config-domain = $${slap-parameter:frontend-domain}
return = site_url domain return = site_url domain
...@@ -322,12 +410,14 @@ return = site_url domain ...@@ -322,12 +410,14 @@ return = site_url domain
[publish-connection-informations] [publish-connection-informations]
recipe = slapos.cookbook:publish recipe = slapos.cookbook:publish
1_info = Set your passord in slaprunner in order to access cloud9 1_info = On your first run, Use "access_url" to setup you account.Then you can use both "url" or "access_url". Or "backend_url" if you want to use ipv6. Moreover, you have to setup your account in slaprunner in order to access cloud9.
backend_url = $${slaprunner:access-url} backend_url = $${slaprunner:access-url}
access_url = $${:url}/login
url = https://$${request-frontend:connection-domain} url = https://$${request-frontend:connection-domain}
cloud9_backend_url = $${node-frontend:access-url} cloud9_backend_url = $${node-frontend:access-url}
cloud9_url = https://$${request-cloud9-frontend:connection-domain} cloud9_url = https://$${request-cloud9-frontend:connection-domain}
ssh_command = ssh $${dropbear-runner-server:host} -p $${dropbear-runner-server:port} ssh_command = ssh $${dropbear-runner-server:host} -p $${dropbear-runner-server:port}
shell_password = $${shellinabox:password}
password_recovery_code = $${recovery-code:passwd} password_recovery_code = $${recovery-code:passwd}
#--------------------------- #---------------------------
...@@ -343,7 +433,7 @@ port = $${slaprunner:runner_port} ...@@ -343,7 +433,7 @@ port = $${slaprunner:runner_port}
[slaprunner-frontend-promise] [slaprunner-frontend-promise]
recipe = slapos.cookbook:check_url_available recipe = slapos.cookbook:check_url_available
path = $${directory:promises}/slaprunner_frontend path = $${directory:promises}/slaprunner_frontend
url = https://$${request-frontend:connection-domain} url = https://$${request-frontend:connection-domain}/login
dash_path = ${dash:location}/bin/dash dash_path = ${dash:location}/bin/dash
curl_path = ${curl:location}/bin/curl curl_path = ${curl:location}/bin/curl
...@@ -380,6 +470,12 @@ path = $${directory:promises}/dropbear ...@@ -380,6 +470,12 @@ path = $${directory:promises}/dropbear
hostname = $${dropbear-runner-server:host} hostname = $${dropbear-runner-server:host}
port = $${dropbear-runner-server:port} port = $${dropbear-runner-server:port}
[shellinabox-promise]
recipe = slapos.cookbook:check_port_listening
path = $${directory:promises}/shellinabox
hostname = $${shellinabox:ipv6}
port = $${shellinabox:port}
[symlinks] [symlinks]
recipe = cns.recipe.symlink recipe = cns.recipe.symlink
symlink_target = $${directory:bin} symlink_target = $${directory:bin}
...@@ -393,4 +489,91 @@ instance-amount = 10 ...@@ -393,4 +489,91 @@ instance-amount = 10
debug = false debug = false
cloud9-frontend-domain = cloud9-frontend-domain =
frontend-domain = frontend-domain =
slapos-repository = http://git.erp5.org/repos/slapos.git
slapos-software =
slapos-reference = master
auto-deploy = true
[slapos-cfg]
recipe = slapos.recipe.template:jinja2
template = ${slapos-cfg-template:location}/${slapos-cfg-template:filename}
rendered = $${slaprunner:slapos.cfg}
mode = 700
context =
key software_root runnerdirectory:software-root
key instance_root runnerdirectory:instance-root
key ipv4 slaprunner:ipv4
key proxy_port slaprunner:proxy_port
key partition_amount slaprunner:partition-amount
key slapgrid_sr slaprunner:slapgrid_sr
key slapgrid_cp slaprunner:slapgrid_cp
key slapproxy slaprunner:slapproxy
key supervisor slaprunner:supervisor
key supervisord_config slaprunner:supd-temp-var
key runner_workdir slaprunner:working-directory
key runner_port slaprunner:runner_port
key ipv6 slaprunner:ipv6
key etc_dir slaprunner:etc_dir
key proxy_host slaprunner:ipv4
key proxy_database slaprunner:prox-db-var
key ssh_client slaprunner:ssh_client
key public_key slaprunner:public_key
key private_key slaprunner:private_key
key git slaprunner:git-binary
key cloud9_url slaprunner:cloud9-url
key run_dir slaprunner:run_dir
key log_dir slaprunner:log_dir
key console slaprunner:console
key verbose slaprunner:verbose
key debug slaprunner:debug
key auto_deploy slap-parameter:auto-deploy
[shellinabox]
recipe = slapos.cookbook:shellinabox
ipv6 = $${slap-network-information:global-ipv6}
port = 8080
shell = $${shell:wrapper}
wrapper = $${directory:bin}/shellinaboxd
shellinabox-binary = ${shellinabox:location}/bin/shellinaboxd
password = $${shellinabox-code:passwd}
directory = $${runnerdirectory:home}
login-shell = $${directory:bin}/login
certificate-directory = $${cadirectory:certs}
cert-file = $${ca-shellinabox:cert-file}
key-file = $${ca-shellinabox:key-file}
[shellinabox-code]
recipe = slapos.cookbook:generate.password
storage-path = $${directory:etc}/.scode
bytes = 8
[shell]
recipe = slapos.cookbook:shell
wrapper = $${directory:bin}/sh
shell = ${bash:location}/bin/bash
home = $${runnerdirectory:home}
path = $${environ:PATH}:${nano:location}/bin:${vim:location}/bin:${screen:location}/bin:${git:location}/bin
ps1 = "\\w> "
[environ]
recipe = collective.recipe.environment
[slapos-repo]
recipe = slapos.recipe.build:gitclone
repository = $${slap-parameter:slapos-repository}
git-executable = ${git:location}/bin/git
develop = true
location = $${directory:project}/slapos
[slapos-repo-config]
recipe = plone.recipe.command
stop-on-error = true
reference = $${slap-parameter:slapos-reference}
location = $${slapos-repo:location}
command = cd $${:location} && ${git:location}/bin/git checkout $${:reference} && echo "$${directory:etc}/.project" && SR=$${slap-parameter:slapos-software} && if [ -n "$SR" ] && [ ! -f "$${directory:etc}/.project" ]; then echo workspace/slapos/$${slap-parameter:slapos-software}/ > $${directory:etc}/.project; fi
[prepare-software]
recipe = slapos.cookbook:wrapper
command-line = ${curl:location}/bin/curl -g https://[$${slaprunner:ipv6}]:$${slaprunner:runner_port}/isSRReady --max-time 1 --insecure
wrapper-path = $${directory:scripts}/prepareSoftware
...@@ -7,16 +7,30 @@ develop-eggs-directory = ${buildout:develop-eggs-directory} ...@@ -7,16 +7,30 @@ develop-eggs-directory = ${buildout:develop-eggs-directory}
[switch_softwaretype] [switch_softwaretype]
recipe = slapos.cookbook:softwaretype recipe = slapos.cookbook:softwaretype
default = ${template-runner:output} default = $${instance-base-runner:rendered}
resilient = $${instance-resilient:rendered} resilient = $${instance-resilient:rendered}
test = $${instance-resilient-test:rendered} test = $${instance-resilient-test:rendered}
runner = ${template-runner:output} runner = $${instance-base-runner:rendered}
runner-import = ${instance-runner-import:output} runner-import = ${instance-runner-import:output}
runner-export = ${instance-runner-export:output} runner-export = ${instance-runner-export:output}
frozen = ${instance-frozen:output} frozen = ${instance-frozen:output}
pull-backup = ${template-pull-backup:output} pull-backup = ${template-pull-backup:output}
[instance-base-runner]
recipe = slapos.recipe.template:jinja2
template = ${template-runner:output}
rendered = $${buildout:directory}/template-runner.cfg
extensions = jinja2.ext.do
context = key buildout buildout:bin-directory
key develop_eggs_directory buildout:develop-eggs-directory
key eggs_directory buildout:eggs-directory
key slapparameter_dict slap-configuration:configuration
raw curl_executable_location ${curl:location}/bin/curl
raw dash_executable_location ${dash:location}/bin/dash
raw dcron_executable_location ${dcron:location}/sbin/crond
mode = 0644
[instance-resilient] [instance-resilient]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
template = ${template-resilient:target} template = ${template-resilient:target}
......
...@@ -55,9 +55,32 @@ http { ...@@ -55,9 +55,32 @@ http {
fastcgi_temp_path {{ param_tempdir['fastcgi_temp_path'] }}; fastcgi_temp_path {{ param_tempdir['fastcgi_temp_path'] }};
uwsgi_temp_path {{ param_tempdir['uwsgi_temp_path'] }}; uwsgi_temp_path {{ param_tempdir['uwsgi_temp_path'] }};
scgi_temp_path {{ param_tempdir['scgi_temp_path'] }}; scgi_temp_path {{ param_tempdir['scgi_temp_path'] }};
error_page 401 /login;
location / { location / {
proxy_pass http://{{ param_nginx_frontend['runner-ip'] }}:{{ param_nginx_frontend['runner-port'] }}; auth_basic "Restricted";
auth_basic_user_file {{ param_nginx_frontend['etc_dir'] }}/.htpasswd;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Accel-Mapping /private/;
proxy_pass http://unix:{{ socket }};
}
location ~ ^(/login|/doLogin|/static|/setAccount|/configAccount|/slapgridResult|/isSRReady) {
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Accel-Mapping /private/;
proxy_pass http://unix:{{ socket }};
}
location /shellinabox {
proxy_pass http://[{{ param_nginx_frontend['global-ip'] }}]:{{ shellinabox_port }}/;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
auth_basic "Restricted";
auth_basic_user_file {{ param_nginx_frontend['etc_dir'] }}/.htpasswd;
proxy_redirect off; proxy_redirect off;
proxy_buffering off; proxy_buffering off;
proxy_set_header Host $host; proxy_set_header Host $host;
......
...@@ -11,6 +11,16 @@ extends = common.cfg ...@@ -11,6 +11,16 @@ extends = common.cfg
# signature certificates of the following uploaders. # signature certificates of the following uploaders.
# Cedric de Saint Martin # Cedric de Saint Martin
# Test Agent # Test Agent
# Romain Courteaud
# Sebastien Robin
# Kazuhiko Shiozaki
# Cedric de Saint Martin
# Yingjie Xu
# Gabriel Monnerat
# Łukasz Nowak
# Test Agent (Automatic update from tests)
# Aurélien Calonne
# Nicolas Wavrant
signature-certificate-list = signature-certificate-list =
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
...@@ -38,6 +48,136 @@ signature-certificate-list = ...@@ -38,6 +48,136 @@ signature-certificate-list =
5pW18Ry5Ie7iFK4cQMerZwWPxBodEbAteYlRsI6kePV7Gf735Y1RpuN8qZ2sYL6e 5pW18Ry5Ie7iFK4cQMerZwWPxBodEbAteYlRsI6kePV7Gf735Y1RpuN8qZ2sYL6e
x2IMeSwJ82BpdEI5niXxB+iT0HxhmR+XaMI= x2IMeSwJ82BpdEI5niXxB+iT0HxhmR+XaMI=
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE
CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5
MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl
ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw
boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX
Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA
ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX
mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC
q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g
QUUGLQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB8jCCAVugAwIBAgIJAPu2zchZ2BxoMA0GCSqGSIb3DQEBBQUAMBIxEDAOBgNV
BAMMB3RzeGRldjMwHhcNMTExMDE0MTIxNjIzWhcNMTIxMDEzMTIxNjIzWjASMRAw
DgYDVQQDDAd0c3hkZXYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrPbh+
YGmo6mWmhVb1vTqX0BbeU0jCTB8TK3i6ep3tzSw2rkUGSx3niXn9LNTFNcIn3MZN
XHqbb4AS2Zxyk/2tr3939qqOrS4YRCtXBwTCuFY6r+a7pZsjiTNddPsEhuj4lEnR
L8Ax5mmzoi9nE+hiPSwqjRwWRU1+182rzXmN4QIDAQABo1AwTjAdBgNVHQ4EFgQU
/4XXREzqBbBNJvX5gU8tLWxZaeQwHwYDVR0jBBgwFoAU/4XXREzqBbBNJvX5gU8t
LWxZaeQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQA07q/rKoE7fAda
FED57/SR00OvY9wLlFEF2QJ5OLu+O33YUXDDbGpfUSF9R8l0g9dix1JbWK9nQ6Yd
R/KCo6D0sw0ZgeQv1aUXbl/xJ9k4jlTxmWbPeiiPZEqU1W9wN5lkGuLxV4CEGTKU
hJA/yXa1wbwIPGvX3tVKdOEWPRXZLg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB7jCCAVegAwIBAgIJAJWA0jQ4o9DGMA0GCSqGSIb3DQEBBQUAMA8xDTALBgNV
BAMMBHg2MXMwIBcNMTExMTI0MTAyNDQzWhgPMjExMTEwMzExMDI0NDNaMA8xDTAL
BgNVBAMMBHg2MXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANdJNiFsRlkH
vq2kHP2zdxEyzPAWZH3CQ3Myb3F8hERXTIFSUqntPXDKXDb7Y/laqjMXdj+vptKk
3Q36J+8VnJbSwjGwmEG6tym9qMSGIPPNw1JXY1R29eF3o4aj21o7DHAkhuNc5Tso
67fUSKgvyVnyH4G6ShQUAtghPaAwS0KvAgMBAAGjUDBOMB0GA1UdDgQWBBSjxFUE
RfnTvABRLAa34Ytkhz5vPzAfBgNVHSMEGDAWgBSjxFUERfnTvABRLAa34Ytkhz5v
PzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAFLDS7zNhlrQYSQO5KIj
z2RJe3fj4rLPklo3TmP5KLvendG+LErE2cbKPqnhQ2oVoj6u9tWVwo/g03PMrrnL
KrDm39slYD/1KoE5kB4l/p6KVOdeJ4I6xcgu9rnkqqHzDwI4v7e8/D3WZbpiFUsY
vaZhjNYKWQf79l6zXfOvphzJ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtMjMyMCAXDTEyMDIxNjExMTAyM1oYDzIxMTIwMTIzMTExMDIzWjAT
MREwDwYDVQQDDAhDT01QLTIzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
wi/3Z8W9pUiegUXIk/AiFDQ0UJ4JFAwjqr+HSRUirlUsHHT+8DzH/hfcTDX1I5BB
D1ADk+ydXjMm3OZrQcXjn29OUfM5C+g+oqeMnYQImN0DDQIOcUyr7AJc4xhvuXQ1
P2pJ5NOd3tbd0kexETa1LVhR6EgBC25LyRBRae76qosCAwEAAaNQME4wHQYDVR0O
BBYEFMDmW9aFy1sKTfCpcRkYnP6zUd1cMB8GA1UdIwQYMBaAFMDmW9aFy1sKTfCp
cRkYnP6zUd1cMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAskbFizHr
b6d3iIyN+wffxz/V9epbKIZVEGJd/6LrTdLiUfJPec7FaxVCWNyKBlCpINBM7cEV
Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby
If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAIlBksrZVkK8MA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtMzU3MCAXDTEyMDEyNjEwNTUyOFoYDzIxMTIwMTAyMTA1NTI4WjAT
MREwDwYDVQQDDAhDT01QLTM1NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
ts+iGUwi44vtIfwXR8DCnLtHV4ydl0YTK2joJflj0/Ws7mz5BYkxIU4fea/6+VF3
i11nwBgYgxQyjNztgc9u9O71k1W5tU95yO7U7bFdYd5uxYA9/22fjObaTQoC4Nc9
mTu6r/VHyJ1yRsunBZXvnk/XaKp7gGE9vNEyJvPn2bkCAwEAAaNQME4wHQYDVR0O
BBYEFKuGIYu8+6aEkTVg62BRYaD11PILMB8GA1UdIwQYMBaAFKuGIYu8+6aEkTVg
62BRYaD11PILMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAMoTRpBxK
YLEZJbofF7gSrRIcrlUJYXfTfw1QUBOKkGFFDsiJpEg4y5pUk1s5Jq9K3SDzNq/W
it1oYjOhuGg3al8OOeKFrU6nvNTF1BAvJCl0tr3POai5yXyN5jlK/zPfypmQYxE+
TaqQSGBJPVXYt6lrq/PRD9ciZgKLOwEqK8w=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAPHoWu90gbsgMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
BAMMCXZpZmlibm9kZTAeFw0xMjAzMTkyMzIwNTVaFw0xMzAzMTkyMzIwNTVaMBQx
EjAQBgNVBAMMCXZpZmlibm9kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
ozBijpO8PS5RTeKTzA90vi9ezvv4vVjNaguqT4UwP9+O1+i6yq1Y2W5zZxw/Klbn
oudyNzie3/wqs9VfPmcyU9ajFzBv/Tobm3obmOqBN0GSYs5fyGw+O9G3//6ZEhf0
NinwdKmrRX+d0P5bHewadZWIvlmOupcnVJmkks852BECAwEAAaNQME4wHQYDVR0O
BBYEFF9EtgfZZs8L2ZxBJxSiY6eTsTEwMB8GA1UdIwQYMBaAFF9EtgfZZs8L2ZxB
JxSiY6eTsTEwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAc43YTfc6
baSemaMAc/jz8LNLhRE5dLfLOcRSoHda8y0lOrfe4lHT6yP5l8uyWAzLW+g6s3DA
Yme/bhX0g51BmI6gjKJo5DoPtiXk/Y9lxwD3p7PWi+RhN+AZQ5rpo8UfwnnN059n
yDuimQfvJjBFMVrdn9iP6SfMjxKaGk6gVmI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAMNZBmoIOXPBMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtMTMyMCAXDTEyMDUwMjEyMDQyNloYDzIxMTIwNDA4MTIwNDI2WjAT
MREwDwYDVQQDDAhDT01QLTEzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
6peZQt1sAmMAmSG9BVxxcXm8x15kE9iAplmANYNQ7z2YO57c10jDtlYlwVfi/rct
xNUOKQtc8UQtV/fJWP0QT0GITdRz5X/TkWiojiFgkopza9/b1hXs5rltYByUGLhg
7JZ9dZGBihzPfn6U8ESAKiJzQP8Hyz/o81FPfuHCftsCAwEAAaNQME4wHQYDVR0O
BBYEFNuxsc77Z6/JSKPoyloHNm9zF9yqMB8GA1UdIwQYMBaAFNuxsc77Z6/JSKPo
yloHNm9zF9yqMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAl4hBaJy1
cgiNV2+Z5oNTrHgmzWvSY4duECOTBxeuIOnhql3vLlaQmo0p8Z4c13kTZq2s3nhd
Loe5mIHsjRVKvzB6SvIaFUYq/EzmHnqNdpIGkT/Mj7r/iUs61btTcGUCLsUiUeci
Vd0Ozh79JSRpkrdI8R/NRQ2XPHAo+29TT70=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAKRvzcy7OH0UMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtNzcyMCAXDTEyMDgxMDE1NDI1MVoYDzIxMTIwNzE3MTU0MjUxWjAT
MREwDwYDVQQDDAhDT01QLTc3MjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
o7aipd6MbnuGDeR1UJUjuMLQUariAyQ2l2ZDS6TfOwjHiPw/mhzkielgk73kqN7A
sUREx41eTcYCXzTq3WP3xCLE4LxLg1eIhd4nwNHj8H18xR9aP0AGjo4UFl5BOMa1
mwoyBt3VtfGtUmb8whpeJgHhqrPPxLoON+i6fIbXDaUCAwEAAaNQME4wHQYDVR0O
BBYEFEfjy3OopT2lOksKmKBNHTJE2hFlMB8GA1UdIwQYMBaAFEfjy3OopT2lOksK
mKBNHTJE2hFlMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAaNRx6YN2
M/p3R8/xS6zvH1EqJ3FFD7XeAQ52WuQnKSREzuw0dsw12ClxjcHiQEFioyTiTtjs
5pW18Ry5Ie7iFK4cQMerZwWPxBodEbAteYlRsI6kePV7Gf735Y1RpuN8qZ2sYL6e
x2IMeSwJ82BpdEI5niXxB+iT0HxhmR+XaMI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB+DCCAWGgAwIBAgIJAKGd0vpks6T/MA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
BAMMCUNPTVAtMTU4NDAgFw0xMzA2MjAxMjE5MjBaGA8yMTEzMDUyNzEyMTkyMFow
FDESMBAGA1UEAwwJQ09NUC0xNTg0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQDZTH9etPUC+wMZQ3UIiOwyyCfHsJ+7duCFYjuo1uZrhtDt/fp8qb8qK9ob+df3
EEYgA0IgI2j/9jNUEnKbc5+OrfKznzXjrlrH7zU8lKBVNCLzQuqBKRNajZ+UvO8R
nlqK2jZCXP/p3HXDYUTEwIR5W3tVCEn/Vda4upTLcPVE5wIDAQABo1AwTjAdBgNV
HQ4EFgQU7KXaNDheQWoy5uOU01tn1M5vNkEwHwYDVR0jBBgwFoAU7KXaNDheQWoy
5uOU01tn1M5vNkEwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQASmqCU
Znbvu6izdicvjuE3aKnBa7G++Fdp2bdne5VCwVbVLYCQWatB+n4crKqGdnVply/u
+uZ16u1DbO9rYoKgWqjLk1GfiLw5v86pd5+wZd5I9QJ0/Sbz2vZk5S4ciMIGwArc
m711+GzlW5xe6GyH9SZaGOPAdUbI6JTDwLzEgA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB+DCCAWGgAwIBAgIJAJAOvB8P2YYMMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
BAMMCUNPTVAtMTg1MjAgFw0xMzEyMDMxMjU5NDJaGA8yMTEzMTEwOTEyNTk0Mlow
FDESMBAGA1UEAwwJQ09NUC0xODUyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQDgR2qKVURmOUmzc7KVL2Gk2VezWlHlJy3V3k1WVYahhFsSjf3O4VyTtroHbIGu
YMJaHLSvGvvvkVJIz/DKqOvl1/6435t+coYECimvzqzTBDWFlEKJbEixz/3nPnXe
CFqVzuCQ7e3nRIrIGLml6jZnXwPlzx8ANn1LO8pwKHj+xwIDAQABo1AwTjAdBgNV
HQ4EFgQUvo7qkSq82Ax5/vnxHoJOhySQSGowHwYDVR0jBBgwFoAUvo7qkSq82Ax5
/vnxHoJOhySQSGowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCbNxtq
BckDSWb92gy/p+JbkMXLjRSSWgeKafvWQXMXpPHW847CPzUDB7zT0rT8a8SRjVuL
Vt/oo2VlJ9xbKEz/qppX8w1TwEZhEJk6h8ky51s2EyyITUy8LHESJes9l46DRbr8
Rm6WS5sk5oiCd146YkWhfZuOsQHXSG/+WC/GPQ==
-----END CERTIFICATE-----
[versions] [versions]
Flask-Auth = 0.85 Flask-Auth = 0.85
...@@ -46,35 +186,36 @@ Werkzeug = 0.8.3 ...@@ -46,35 +186,36 @@ Werkzeug = 0.8.3
apache-libcloud = 0.11.4 apache-libcloud = 0.11.4
async = 0.6.1 async = 0.6.1
buildout-versions = 1.7 buildout-versions = 1.7
cliff = 1.4
cmd2 = 0.6.6
cns.recipe.symlink = 0.2.3 cns.recipe.symlink = 0.2.3
collective.recipe.environment = 0.2.0
collective.recipe.template = 1.10
erp5.util = 0.4.36
gitdb = 0.5.4 gitdb = 0.5.4
hexagonit.recipe.cmmi = 1.6 hexagonit.recipe.cmmi = 1.6
inotifyx = 0.2.0 inotifyx = 0.2.0-1
lock-file = 2.0
lxml = 3.0.1 lxml = 3.0.1
meld3 = 0.6.10 meld3 = 0.6.10
netaddr = 0.7.10 netaddr = 0.7.10
plone.recipe.command = 1.1 plone.recipe.command = 1.1
prettytable = 0.7.2
pycrypto = 2.6 pycrypto = 2.6
pytz = 2013b pytz = 2013.7
#slapos.cookbook = 0.71.1 rdiff-backup = 1.0.5
requests = 1.2.3
slapos.cookbook = 0.85
slapos.core = 0.35.1 slapos.core = 0.35.1
slapos.libnetworkcache = 0.13.4 slapos.libnetworkcache = 0.13.4
slapos.recipe.build = 0.11.5 slapos.recipe.build = 0.11.5
slapos.recipe.cmmi = 0.2
slapos.recipe.download = 1.0.dev-r4053
slapos.recipe.template = 2.4.2 slapos.recipe.template = 2.4.2
#slapos.toolbox = 0.34.0 slapos.toolbox = 0.38.1
smmap = 0.8.2 smmap = 0.8.2
xml-marshaller = 0.9.7 xml-marshaller = 0.9.7
z3c.recipe.scripts = 1.0.1 z3c.recipe.scripts = 1.0.1
lock-file = 2.0
rdiff-backup = 1.0.5
slapos.recipe.cmmi = 0.2
slapos.recipe.download = 1.0.dev-r4053
slapos.toolbox = 0.35.1
slapos.cookbook = 0.78.5
cliff = 1.4
cmd2 = 0.6.6
prettytable = 0.7.2
requests = 1.2.3
# Required by: # Required by:
# slapos.core==0.34 # slapos.core==0.34
# slapos.toolbox==0.34.0 # slapos.toolbox==0.34.0
...@@ -94,7 +235,7 @@ feedparser = 5.1.3 ...@@ -94,7 +235,7 @@ feedparser = 5.1.3
# Required by: # Required by:
# hexagonit.recipe.cmmi==1.6 # hexagonit.recipe.cmmi==1.6
hexagonit.recipe.download = 1.6nxd002 hexagonit.recipe.download = 1.7nxd002
# Required by: # Required by:
# slapos.core==0.34 # slapos.core==0.34
...@@ -134,3 +275,6 @@ unittest2 = 0.5.1 ...@@ -134,3 +275,6 @@ unittest2 = 0.5.1
# Required by: # Required by:
# slapos.core==0.34 # slapos.core==0.34
zope.interface = 4.0.3 zope.interface = 4.0.3
# WSGI server
gunicorn = 18.0
[slapos]
software_root = {{ software_root }}
instance_root = {{instance_root }}
master_url = http://{{ ipv4 }}:{{ proxy_port }}
computer_id = slaprunner
maximal_delay = 0
[slapformat]
partition_amount = {{ partition_amount }}
[slaprunner]
slapgrid_sr = {{ slapgrid_sr }}
slapgrid_cp = {{ slapgrid_cp }}
slapproxy = {{ slapproxy }}
supervisor = {{ supervisor }}
supervisord_config = {{ supervisord_config }}
runner_workdir = {{ runner_workdir }}
runner_host = {{ ipv4 }}
runner_port = {{ runner_port }}
ipv4_address = {{ ipv4 }}
ipv6_address = {{ ipv6 }}
etc_dir = {{ etc_dir }}
run_dir = {{ run_dir }}
log_dir = {{ log_dir }}
console = {{ console }}
verbose = {{ verbose }}
debug = {{ debug }}
auto_deploy = {{ auto_deploy }}
[slapproxy]
host = {{ proxy_host }}
port = {{ proxy_port }}
database_uri = {{ proxy_database }}
[sshkeys_authority]
ssh_client = {{ ssh_client }}
public_key = {{ public_key }}
private_key = {{ private_key }}
[gitclient]
git = {{ git }}
[cloud9_IDE]
cloud9 = {{ cloud9_url }}
...@@ -426,7 +426,6 @@ eggs = ...@@ -426,7 +426,6 @@ eggs =
Jinja2 Jinja2
mechanize mechanize
numpy numpy
ordereddict
paramiko paramiko
ply ply
pyflakes pyflakes
...@@ -450,6 +449,7 @@ eggs = ...@@ -450,6 +449,7 @@ eggs =
spyne spyne
httplib2 httplib2
suds suds
pprofile
# Needed for checking ZODB Components source code # Needed for checking ZODB Components source code
pylint pylint
...@@ -519,7 +519,7 @@ entry-points = ...@@ -519,7 +519,7 @@ entry-points =
scripts = zodbanalyze scripts = zodbanalyze
[cloudooo-repository] [cloudooo-repository]
branch = master branch =
revision = 5c67568c403239bd8e25993602d03c553236fcec revision = 5c67568c403239bd8e25993602d03c553236fcec
[mysql-python] [mysql-python]
...@@ -559,6 +559,9 @@ Products.DCWorkflow = 2.2.4nxd001 ...@@ -559,6 +559,9 @@ Products.DCWorkflow = 2.2.4nxd001
cloudooo = 1.2.5-dev cloudooo = 1.2.5-dev
# use newer version than specified in ZTK # use newer version than specified in ZTK
Jinja2 = 2.6
argparse = 1.2.1
coverage = 3.6
lxml = 2.3.6 lxml = 2.3.6
# Known version with works # Known version with works
...@@ -577,9 +580,6 @@ python-memcached = 1.47-ipv6-1 ...@@ -577,9 +580,6 @@ python-memcached = 1.47-ipv6-1
# use newest version of pytz # use newest version of pytz
pytz = pytz =
# Patched version which support python 2.6
PyXML = 0.8.4nxd001
# we are still using this old stable version. # we are still using this old stable version.
rdiff-backup = 1.0.5 rdiff-backup = 1.0.5
...@@ -592,10 +592,10 @@ slapos.cookbook = ...@@ -592,10 +592,10 @@ slapos.cookbook =
# modified version that works fine for buildout installation # modified version that works fine for buildout installation
SOAPpy = 0.12.0nxd001 SOAPpy = 0.12.0nxd001
# CMF 2.3 requries Zope 2.13. # CMF 2.3 is not yet supported.
Products.CMFCalendar = 2.2.2 Products.CMFCalendar = 2.2.2
Products.CMFCore = 2.2.6 Products.CMFCore = 2.2.8
Products.CMFDefault = 2.2.2 Products.CMFDefault = 2.2.3
Products.CMFTopic = 2.2.1 Products.CMFTopic = 2.2.1
Products.CMFUid = 2.2.1 Products.CMFUid = 2.2.1
...@@ -605,16 +605,15 @@ zope.app.appsetup = 3.16.0 ...@@ -605,16 +605,15 @@ zope.app.appsetup = 3.16.0
# newer version requires zope.i18n>=4.0.0a3 # newer version requires zope.i18n>=4.0.0a3
zope.app.publication = 3.14.0 zope.app.publication = 3.14.0
# BBB: Temporarily keep zope.app.testing awaiting we use newer version of CMF # newer version requires zope.testbrowser>=4
# (for tests like testCookieCrumbler).
zope.app.testing = 3.8.1 zope.app.testing = 3.8.1
# Pinned versions # Pinned versions
Flask = 0.9 Flask = 0.9
GitPython = 0.3.2.RC1 GitPython = 0.3.2.RC1
Jinja2 = 2.6
MySQL-python = 1.2.4 MySQL-python = 1.2.4
PIL = 1.1.7 PIL = 1.1.7
PyXML = 0.8.5
PasteDeploy = 1.5.0 PasteDeploy = 1.5.0
Products.CMFActionIcons = 2.1.3 Products.CMFActionIcons = 2.1.3
Products.DCWorkflowGraph = 0.4.1 Products.DCWorkflowGraph = 0.4.1
...@@ -625,66 +624,64 @@ Products.MimetypesRegistry = 2.0.4 ...@@ -625,66 +624,64 @@ Products.MimetypesRegistry = 2.0.4
Products.PluginRegistry = 1.3 Products.PluginRegistry = 1.3
Products.TIDStorage = 5.4.8 Products.TIDStorage = 5.4.8
Products.ZSQLMethods = 2.13.4 Products.ZSQLMethods = 2.13.4
PyPDF2 = 1.19
Pygments = 1.6 Pygments = 1.6
StructuredText = 2.11.1 StructuredText = 2.11.1
WSGIUtils = 0.7 WSGIUtils = 0.7
Werkzeug = 0.8.3 Werkzeug = 0.8.3
apache-libcloud = 0.12.4 apache-libcloud = 0.12.4
argparse = 1.2.1
async = 0.6.1 async = 0.6.1
atomize = 0.1.1 atomize = 0.1.1
cElementTree = 1.0.5-20051216 cElementTree = 1.0.5-20051216
chardet = 2.1.1 chardet = 2.1.1
coverage = 3.6
csp-eventlet = 0.7.0 csp-eventlet = 0.7.0
elementtree = 1.2.7-20070827-preview elementtree = 1.2.7-20070827-preview
erp5.recipe.cmmiforcei686 = 0.1.3 erp5.recipe.cmmiforcei686 = 0.1.3
erp5.util = 0.4.34 erp5.util = 0.4.36
erp5diff = 0.8.1.5 erp5diff = 0.8.1.5
eventlet = 0.12.1 eventlet = 0.14.0
feedparser = 5.1.3 feedparser = 5.1.3
five.formlib = 1.0.4 five.formlib = 1.0.4
five.localsitemanager = 2.0.5 five.localsitemanager = 2.0.5
fpconst = 0.7.2 fpconst = 0.7.2
gitdb = 0.5.4 gitdb = 0.5.4
greenlet = 0.4.0 greenlet = 0.4.1
hexagonit.recipe.cmmi = 1.6 hexagonit.recipe.cmmi = 2.0
http-parser = 0.8.1 http-parser = 0.8.3
huBarcode = 0.63 huBarcode = 0.63
inotifyx = 0.2.0 inotifyx = 0.2.0
ipdb = 0.7 ipdb = 0.8
ipython = 0.13.2 ipython = 1.1.0
meld3 = 0.6.10 meld3 = 0.6.10
mr.developer = 1.26 mr.developer = 1.26
netaddr = 0.7.10 netaddr = 0.7.10
netifaces = 0.8_1 netifaces = 0.8_1
ordereddict = 1.1 ordereddict = 1.1
paramiko = 1.10.1 paramiko = 1.12.0
plone.recipe.command = 1.1 plone.recipe.command = 1.1
ply = 3.4 ply = 3.4
polib = 1.0.3 polib = 1.0.3
psutil = 0.7.1 psutil = 1.2.1
pyPdf = 1.13
pyflakes = 0.7.2 pyflakes = 0.7.2
python-ldap = 2.4.10 python-ldap = 2.4.13
python-magic = 0.4.3 python-magic = 0.4.6
qrcode = 2.7 qrcode = 4.0.4
requests = 1.2.3 requests = 2.1.0
restkit = 4.2.1 restkit = 4.2.2
rtjp-eventlet = 0.3.2 rtjp-eventlet = 0.3.2
slapos.core = 0.35.1 slapos.core = 0.35.1
slapos.recipe.build = 0.11.6 slapos.recipe.build = 0.12
slapos.recipe.template = 2.4.2 slapos.recipe.template = 2.4.2
slapos.toolbox = 0.33.1 slapos.toolbox = 0.33.1
smmap = 0.8.2 smmap = 0.8.2
socketpool = 0.5.2 socketpool = 0.5.3
spyne = 2.10.7 spyne = 2.10.9
supervisor = 3.0b2 supervisor = 3.0b2
threadframe = 0.2 threadframe = 0.2
timerserver = 2.0.2 timerserver = 2.0.2
urlnorm = 1.1.2 urlnorm = 1.1.2
uuid = 1.30 uuid = 1.30
validictory = 0.9.1 validictory = 0.9.3
xml-marshaller = 0.9.7 xml-marshaller = 0.9.7
xupdate-processor = 0.4 xupdate-processor = 0.4
zope.app.debug = 3.4.1 zope.app.debug = 3.4.1
......
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