Commit 2586e4aa authored by Antoine Catton's avatar Antoine Catton

Merge branch 'gitweb'

parents e6e3ea8d 48cd13fe
Changes Changes
======= =======
0.64 (Unrelease) 0.65 (Unrelease)
---------------- ----------------
* No change yet. * No change yet.
0.64.1 (2012-08-28)
-------------------
* Fix: minor fix on downloader recipe in order to allow cross-device renaming.
[Antoine Catton]
0.64 (2012-08-27)
----------------
* Fix: remove "template" recipe which was collinding with slapos.recipe.template.
[Antoine Catton]
0.63 (2012-08-22) 0.63 (2012-08-22)
---------------- ----------------
......
...@@ -127,14 +127,14 @@ ipython = 0.13 ...@@ -127,14 +127,14 @@ ipython = 0.13
lxml = 2.3.5 lxml = 2.3.5
meld3 = 0.6.8 meld3 = 0.6.8
netaddr = 0.7.7 netaddr = 0.7.7
slapos.core = 0.28.4 slapos.core = 0.28.5
slapos.libnetworkcache = 0.12 slapos.libnetworkcache = 0.12
xml-marshaller = 0.9.7 xml-marshaller = 0.9.7
z3c.recipe.scripts = 1.0.1 z3c.recipe.scripts = 1.0.1
zc.recipe.egg = 1.3.2 zc.recipe.egg = 1.3.2
# Required by: # Required by:
# slapos.core==0.28.4 # slapos.core==0.28.5
Flask = 0.9 Flask = 0.9
# Required by: # Required by:
...@@ -146,11 +146,11 @@ Sphinx = 1.1.3 ...@@ -146,11 +146,11 @@ Sphinx = 1.1.3
hexagonit.recipe.download = 1.5.1 hexagonit.recipe.download = 1.5.1
# Required by: # Required by:
# slapos.core==0.28.4 # slapos.core==0.28.5
netifaces = 0.8 netifaces = 0.8
# Required by: # Required by:
# slapos.core==0.28.4 # slapos.core==0.28.5
# slapos.libnetworkcache==0.12 # slapos.libnetworkcache==0.12
# supervisor==3.0a12 # supervisor==3.0a12
# zc.buildout==1.6.0-dev-SlapOS-006 # zc.buildout==1.6.0-dev-SlapOS-006
...@@ -158,9 +158,9 @@ netifaces = 0.8 ...@@ -158,9 +158,9 @@ netifaces = 0.8
setuptools = 0.6c12dev-r88846 setuptools = 0.6c12dev-r88846
# Required by: # Required by:
# slapos.core==0.28.4 # slapos.core==0.28.5
supervisor = 3.0a12 supervisor = 3.0a12
# Required by: # Required by:
# slapos.core==0.28.4 # slapos.core==0.28.5
zope.interface = 4.0.1 zope.interface = 4.0.1
...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages ...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
import glob import glob
import os import os
version = '0.63-dev' version = '0.65-dev'
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"
...@@ -130,7 +130,6 @@ setup(name=name, ...@@ -130,7 +130,6 @@ setup(name=name,
'sshkeys_authority = slapos.recipe.sshkeys_authority:Recipe', 'sshkeys_authority = slapos.recipe.sshkeys_authority:Recipe',
'stunnel = slapos.recipe.stunnel:Recipe', 'stunnel = slapos.recipe.stunnel:Recipe',
'symbolic.link = slapos.recipe.symbolic_link:Recipe', 'symbolic.link = slapos.recipe.symbolic_link:Recipe',
'template = slapos.recipe.template:Recipe',
'testnode = slapos.recipe.testnode:Recipe', 'testnode = slapos.recipe.testnode:Recipe',
'tidstorage = slapos.recipe.tidstorage:Recipe', 'tidstorage = slapos.recipe.tidstorage:Recipe',
'urlparse = slapos.recipe._urlparse:Recipe', 'urlparse = slapos.recipe._urlparse:Recipe',
......
...@@ -59,7 +59,7 @@ def service(args): ...@@ -59,7 +59,7 @@ def service(args):
return 127 # Not-null return code return 127 # Not-null return code
if not args['archive']: if not args['archive']:
os.rename(tmpoutput, args['output']) shutil.move(tmpoutput, args['output'])
else: else:
# XXX: hardcoding path # XXX: hardcoding path
extract_dir = os.path.join(tmpdir, 'extract') extract_dir = os.path.join(tmpdir, 'extract')
...@@ -74,8 +74,8 @@ def service(args): ...@@ -74,8 +74,8 @@ def service(args):
if len(archive_content) == 1 and \ if len(archive_content) == 1 and \
os.path.isfile(os.path.join(extract_dir, os.path.isfile(os.path.join(extract_dir,
archive_content[0])): archive_content[0])):
os.rename(os.path.join(extract_dir, shutil.move(os.path.join(extract_dir,
archive_content[0]), archive_content[0]),
args['output']) args['output'])
else: else:
return 127 # Not-null return code return 127 # Not-null return code
......
...@@ -36,12 +36,14 @@ class Recipe(GenericBaseRecipe): ...@@ -36,12 +36,14 @@ class Recipe(GenericBaseRecipe):
def install(self): def install(self):
repolist = json.loads(self.options['repos']) repolist = json.loads(self.options['repos'])
for repo in repolist: for repo, desc in repolist.iteritems():
absolute_path = os.path.join(self.options['base-directory'], '%s.git' % repo) absolute_path = os.path.join(self.options['base-directory'], '%s.git' % repo)
if not os.path.exists(absolute_path): if not os.path.exists(absolute_path):
check_call([self.options['git-binary'], 'init', check_call([self.options['git-binary'], 'init',
'--bare', absolute_path]) '--bare', absolute_path])
check_call([self.options['git-binary'], 'config', 'http.receivepack', 'true'], # XXX: Hardcoded path
cwd=absolute_path) description_filename = os.path.join(absolute_path, 'description')
with open(description_filename, 'w') as description_file:
description_file.write(desc)
return [] return []
...@@ -48,7 +48,7 @@ def _wait_files_creation(file_list): ...@@ -48,7 +48,7 @@ def _wait_files_creation(file_list):
def execute(args): def execute(args):
"""Portable execution with process replacement""" """Portable execution with process replacement"""
# XXX: Kept for backward compatibility # XXX: Kept for backward compatibility
generic_exec([args[0], None, None]) generic_exec([args, None, None])
def execute_wait(args): def execute_wait(args):
"""Execution but after all files in args[1] exists""" """Execution but after all files in args[1] exists"""
......
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
import os
from slapos.recipe.librecipe import GenericBaseRecipe
class Recipe(GenericBaseRecipe):
def install(self):
mapping = self.options.copy()
for key in ('output', 'template', 'recipe', 'mode'):
if key in mapping:
del mapping[key]
with open(self.options['output'], 'w') as output, \
open(self.options['template'], 'r') as template:
output.write(template.read() % mapping)
if 'mode' in self.options:
os.chmod(self.options['output'], int(self.options['mode'], 8))
return [self.options['output'], ]
#!/usr/bin/env sh #!/usr/bin/env sh
GIT_PROJECT_ROOT="%(projectdir)s" GIT_HTTP_EXPORT_ALL= exec "%(githttpbackend)s" $@ ## This is a very dirty hack
export PATH_INFO="$${REDIRECT_URL:-$PATH_INFO}"
GIT_PROJECT_ROOT='${git-repos:base-directory}' GIT_HTTP_EXPORT_ALL= exec '${:githttpbackend}' $@
#!/usr/bin/env sh #!/usr/bin/env sh
GITWEB_CONFIG="%(gitwebconf)s" exec "%(perl)s" "%(gitweb)s" $@ GITWEB_CONFIG='${gitweb-conf:output}' exec '${:perl}' '${:gitweb}' $@
$projectroot = '%(projectdir)s'; $projectroot = '${git-repos:base-directory}';
$site_name = '%(sitename)s'; $site_name = '${slap-parameter:title}';
# Beautiful URLs # Beautiful URLs
$feature{'pathinfo'}{'default'} = [1]; $feature{'pathinfo'}{'default'} = [1];
PidFile "%(pidfile)s" PidFile "${:pid-file}"
Listen %(ip)s:%(port)s Listen ${slap-network-information:global-ipv6}:${:port}
ServerAdmin someone@email ServerAdmin someone@email
ErrorLog "%(errorlog)s" ErrorLog "${:error-log}"
LogLevel warn LogLevel warn
ScriptSock "%(cgidsock)s" ScriptSock "${:cgid-sock}"
<Directory /> <Directory />
AllowOverride None AllowOverride None
...@@ -13,38 +13,41 @@ ScriptSock "%(cgidsock)s" ...@@ -13,38 +13,41 @@ ScriptSock "%(cgidsock)s"
Deny from all Deny from all
</Directory> </Directory>
Alias "/static/" "%(gitwebstaticdir)s" Alias "/static/" "${:gitweb-static-dir}"
<Directory "%(gitwebstaticdir)s"> <Directory "${:gitweb-static-dir}">
Options FollowSymLinks Options FollowSymLinks
Order deny,allow Order deny,allow
Allow from all Allow from all
</Directory> </Directory>
# This is Static Accelerated git pull # This is Static Accelerated git pull
AliasMatch "^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$" "%(projectdir)s/$1" AliasMatch "^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$" "${:project-dir}/$1"
AliasMatch "^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$" "%(projectdir)s/$1" AliasMatch "^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$" "${:project-dir}/$1"
# When it can't be statically delivered, we rely on git-http-backend # When it can't be statically delivered, we rely on git-http-backend
ScriptAliasMatch \ ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \ "(?x)^/(.*/(HEAD | \
info/refs | \ info/refs | \
objects/info/[^/]+ | \ objects/info/[^/]+ | \
git-(upload|receive)-pack))$" \ git-(upload|receive)-pack))(/push)?$" \
"%(githttpbackend)s/$1" "${:git-http-backend}/$1"
# Everything else is gitweb interface # Everything else is gitweb interface
ScriptAlias "/" "%(gitwebscript)s/" ScriptAlias "/" "${:gitweb-script}/"
<Location /> <Location />
Order deny,allow Order deny,allow
Allow from all Allow from all
RewriteEngine On
RewriteCond %{QUERY_STRING} service=git-receive-pack
RewriteRule ^(.*)$ $1/push [END]
</Location> </Location>
<LocationMatch "^/.*/git-receive-pack$"> <LocationMatch "(^/.*/git-receive-pack|/push)$">
AuthType Basic AuthType Basic
AuthName "Git Push Access" AuthName "Git Push Access"
AuthBasicProvider file AuthBasicProvider file
AuthUserFile "%(passwdfile)s" AuthUserFile "${:passwd-file}"
Require valid-user Require valid-user
SetEnv REMOTE_USER $REDIRECT_REMOTE_USER SetEnv REMOTE_USER $REDIRECT_REMOTE_USER
</LocationMatch> </LocationMatch>
...@@ -60,4 +63,5 @@ LoadModule authz_user_module modules/mod_authz_user.so ...@@ -60,4 +63,5 @@ LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgid_module modules/mod_cgid.so LoadModule cgid_module modules/mod_cgid.so
LoadModule env_module modules/mod_env.so LoadModule env_module modules/mod_env.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule unixd_module modules/mod_unixd.so LoadModule unixd_module modules/mod_unixd.so
...@@ -5,12 +5,19 @@ develop-eggs-directory = ${buildout:develop-eggs-directory} ...@@ -5,12 +5,19 @@ develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true offline = true
parts = parts =
httpd
publish publish
httpd
httpd-conf
gitweb-conf
gitweb-cgi
git-http-backend-cgi
htpasswd
pwgen
git-repos
[publish] [publish]
recipe = slapos.cookbook:publish recipe = slapos.cookbook:publish
url = http://$${pwgen:user}:$${pwgen:password}@[$${httpd-conf:ip}]:$${httpd-conf:port}/ url = http://$${pwgen:user}:$${pwgen:password}@[$${slap-network-information:global-ipv6}]:$${httpd-conf:port}/
[httpd] [httpd]
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
...@@ -19,48 +26,42 @@ output = $${basedirectory:services}/httpd ...@@ -19,48 +26,42 @@ output = $${basedirectory:services}/httpd
[httpd-conf] [httpd-conf]
recipe = slapos.cookbook:template recipe = slapos.recipe.template
template = ${template-httpd-conf:location}/${template-httpd-conf:filename} url = ${template-httpd-conf:location}/${template-httpd-conf:filename}
output = $${rootdirectory:etc}/httpd.conf output = $${rootdirectory:etc}/httpd.conf
pidfile = $${basedirectory:run}/httpd.pid pid-file = $${basedirectory:run}/httpd.pid
errorlog = $${basedirectory:log}/httpd-errorlog.log error-log = $${basedirectory:log}/httpd-errorlog.log
gitwebstaticdir = ${gitweb:location}/share/gitweb/static/ gitweb-static-dir = ${gitweb:location}/share/gitweb/static/
gitwebscript = $${gitweb-cgi:output} gitweb-script = $${gitweb-cgi:output}
githttpbackend = $${git-http-backend-cgi:output} git-http-backend = $${git-http-backend-cgi:output}
cgidsock = $${basedirectory:run}/cgid.sock cgid-sock = $${basedirectory:run}/cgid.sock
projectdir = $${gitweb-conf:projectdir} project-dir = $${git-repos:base-directory}
passwdfile = $${htpasswd:output} passwd-file = $${htpasswd:output}
ip = $${slap-network-information:global-ipv6}
port = 8080 port = 8080
[gitweb-conf] [gitweb-conf]
recipe = slapos.cookbook:template recipe = slapos.recipe.template
template = ${template-gitweb-conf:location}/${template-gitweb-conf:filename} url = ${template-gitweb-conf:location}/${template-gitweb-conf:filename}
output = $${rootdirectory:etc}/gitweb.conf output = $${rootdirectory:etc}/gitweb.conf
projectdir = $${git-repos:base-directory}
sitename = $${slap-parameter:title}
[gitweb-cgi] [gitweb-cgi]
recipe = slapos.cookbook:template recipe = slapos.recipe.template
template = ${template-gitweb-cgi:location}/${template-gitweb-cgi:filename} url = ${template-gitweb-cgi:location}/${template-gitweb-cgi:filename}
output = $${rootdirectory:bin}/gitweb.cgi output = $${rootdirectory:bin}/gitweb.cgi
mode = 700 mode = 700
perl = ${perl:location}/bin/perl perl = ${perl:location}/bin/perl
gitweb = ${gitweb:location}/share/gitweb/gitweb.cgi gitweb = ${gitweb:location}/share/gitweb/gitweb.cgi
gitwebconf = $${gitweb-conf:output}
[git-http-backend-cgi] [git-http-backend-cgi]
recipe = slapos.cookbook:template recipe = slapos.recipe.template
template = ${template-git-http-backend-cgi:location}/${template-git-http-backend-cgi:filename} url = ${template-git-http-backend-cgi:location}/${template-git-http-backend-cgi:filename}
output = $${rootdirectory:bin}/git-http-backend.cgi output = $${rootdirectory:bin}/git-http-backend.cgi
mode = 700 mode = 700
projectdir = $${git-repos:base-directory}
githttpbackend = ${git:location}/libexec/git-core/git-http-backend githttpbackend = ${git:location}/libexec/git-core/git-http-backend
......
...@@ -27,7 +27,7 @@ mode = 0644 ...@@ -27,7 +27,7 @@ mode = 0644
[template-gitrepo] [template-gitrepo]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-gitrepo.cfg url = ${:_profile_base_location_}/instance-gitrepo.cfg
md5sum = 79ebc1f23443562b3facd4945f031fcf md5sum = 2ad8457628996bf0b71d80e10b3b5aa9
output = ${buildout:directory}/template-gitrepo.cfg output = ${buildout:directory}/template-gitrepo.cfg
mode = 0644 mode = 0644
...@@ -39,22 +39,22 @@ download-only = true ...@@ -39,22 +39,22 @@ download-only = true
[template-gitweb-cgi]] [template-gitweb-cgi]]
<= template-download <= template-download
filename = gitweb.cgi.in filename = gitweb.cgi.in
md5sum = 977d23296605d6a7f33f4f83d5bd29c8 md5sum = 5c720202053bfba06eec6e97d8d47cd0
[template-gitweb-conf] [template-gitweb-conf]
<= template-download <= template-download
filename = gitweb.conf.in filename = gitweb.conf.in
md5sum = bdf4b9e616e7b8e436040304bf1ac312 md5sum = d3cb0c16f54da0ea02ac982dd59d7924
[template-git-http-backend-cgi] [template-git-http-backend-cgi]
<= template-download <= template-download
filename = git-http-backend.cgi.in filename = git-http-backend.cgi.in
md5sum = 814393f919dd0204c913aa77e6183b9c md5sum = 7e0562b0ce8d48bc8f6b422850dc53af
[template-httpd-conf] [template-httpd-conf]
<= template-download <= template-download
filename = httpd.conf.in filename = httpd.conf.in
md5sum = 442ffed44a671eb3c5810a6bfa8a3515 md5sum = e5e6a6de32323248d11918934f6aad99
[collective-recipe-cmd] [collective-recipe-cmd]
recipe = zc.recipe.egg recipe = zc.recipe.egg
......
...@@ -57,14 +57,11 @@ path = ${tar:location}/bin/:${gzip:location}/bin/:${bzip2:location}/bin/:${xz-ut ...@@ -57,14 +57,11 @@ path = ${tar:location}/bin/:${gzip:location}/bin/:${bzip2:location}/bin/:${xz-ut
archive = true archive = true
[lxc-conf] [lxc-conf]
recipe = slapos.cookbook:template recipe = slapos.recipe.template
template = ${lxc-conf-in:location}/${lxc-conf-in:filename} url = ${lxc-conf-in:location}/${lxc-conf-in:filename}
output = $${rootdirectory:etc}/lxc.conf output = $${rootdirectory:etc}/lxc.conf
bridge = !!BRIDGE_NAME!! bridge = !!BRIDGE_NAME!!
interface = lxc$${slap-network-information:network-interface} interface = lxc$${slap-network-information:network-interface}
name = $${uuid:uuid}
rootfs = $${rootfs:downloaded-file}
requested = $${slap-connection:requested}
[passwd] [passwd]
recipe = slapos.cookbook:pwgen recipe = slapos.cookbook:pwgen
......
# %(requested)s # ${slap-connection:requested}
lxc.utsname = %(name)s lxc.utsname = ${uuid:uuid}
lxc.network.type = veth lxc.network.type = veth
lxc.network.link = %(bridge)s lxc.network.link = ${:bridge}
lxc.network.veth.pair = %(interface)s lxc.network.veth.pair = ${:interface}
lxc.network.name = eth0 lxc.network.name = eth0
lxc.network.flags = up lxc.network.flags = up
...@@ -24,6 +24,6 @@ lxc.cgroup.devices.allow = c 136:* rwm ...@@ -24,6 +24,6 @@ lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm lxc.cgroup.devices.allow = c 5:2 rwm
lxc.cgroup.devices.allow = c 254:0 rwm lxc.cgroup.devices.allow = c 254:0 rwm
lxc.rootfs = %(rootfs)s lxc.rootfs = ${rootfs:downloaded-file}
lxc.cap.drop = sys_module sys_time sys_chroot mknod lxc.cap.drop = sys_module sys_time sys_chroot mknod
...@@ -12,9 +12,6 @@ extends = ...@@ -12,9 +12,6 @@ extends =
../../component/shellinabox/buildout.cfg ../../component/shellinabox/buildout.cfg
../../component/pwgen/buildout.cfg ../../component/pwgen/buildout.cfg
find-links +=
http://www.nexedi.org/static/packages/source/slapos-lxc/
parts = parts =
lxml-python lxml-python
template template
...@@ -36,16 +33,17 @@ mode = 0644 ...@@ -36,16 +33,17 @@ mode = 0644
[template-lxc] [template-lxc]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-lxc.cfg url = ${:_profile_base_location_}/instance-lxc.cfg
md5sum = 27b9c3a9013beda84b336ea603e306bf md5sum = 056912602caa71a2af9fcae97ee6dfb9
output = ${buildout:directory}/template-lxc.cfg output = ${buildout:directory}/template-lxc.cfg
mode = 0644 mode = 0644
[lxc-conf-in] [lxc-conf-in]
recipe = hexagonit.recipe.download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/${:filename} url = ${:_profile_base_location_}/${:filename}
filename = lxc.conf.in filename = lxc.conf.in
md5sum = e47acb30a9783d2f264b51b3c46262ae md5sum = b25334fc369e4e0f608bc64f14b0315d
download-only = true download-only = true
mode = 0644
[slapos-toolbox] [slapos-toolbox]
recipe = zc.recipe.egg recipe = zc.recipe.egg
...@@ -54,5 +52,5 @@ eggs = ...@@ -54,5 +52,5 @@ eggs =
slapos.toolbox slapos.toolbox
[versions] [versions]
slapos.cookbook = 0.63 slapos.cookbook = 0.64.1
slapos.toolbox = 0.29.1 slapos.toolbox = 0.29.1
...@@ -135,6 +135,16 @@ eggs = ...@@ -135,6 +135,16 @@ eggs =
[networkcache] [networkcache]
# Romain Courteaud + Sebastien Robin + Alain Takoudjou # Romain Courteaud + Sebastien Robin + Alain Takoudjou
# + Cedric de Saint Martin signature certificate # + Cedric de Saint Martin signature certificate
# List of signatures of uploaders we trust:
# Romain Courteaud
# Sebastien Robin
# Kazuhiko Shiozaki
# Cedric de Saint Martin
# Yingjie Xu
# Gabriel Monnerat
# Łukasz Nowak
# Test Agent Signature
# Alain Takoudjou
signature-certificate-list = signature-certificate-list =
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE
...@@ -163,17 +173,17 @@ signature-certificate-list = ...@@ -163,17 +173,17 @@ signature-certificate-list =
hJA/yXa1wbwIPGvX3tVKdOEWPRXZLg== hJA/yXa1wbwIPGvX3tVKdOEWPRXZLg==
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB9DCCAV2gAwIBAgIJAL392bEdqpFQMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV MIIB7jCCAVegAwIBAgIJAJWA0jQ4o9DGMA0GCSqGSIb3DQEBBQUAMA8xDTALBgNV
BAMMCENPTVAtMjM0MB4XDTExMTEwOTE1MzA0M1oXDTEyMTEwODE1MzA0M1owEzER BAMMBHg2MXMwIBcNMTExMTI0MTAyNDQzWhgPMjExMTEwMzExMDI0NDNaMA8xDTAL
MA8GA1UEAwwIQ09NUC0yMzQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMRR BgNVBAMMBHg2MXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANdJNiFsRlkH
T0cacZKztie/DaRRjq3mgcqfPKoGXu6zXmeRQI+6Y4bnzjf8h/jAuPzR552P0xK5 vq2kHP2zdxEyzPAWZH3CQ3Myb3F8hERXTIFSUqntPXDKXDb7Y/laqjMXdj+vptKk
psxhavXA8hOGRLFDtvDMQLepVHWfwqtFtcp5vNf2+KWqOYy0OxHfVIlnatvCqTZN 3Q36J+8VnJbSwjGwmEG6tym9qMSGIPPNw1JXY1R29eF3o4aj21o7DHAkhuNc5Tso
NG1vRsSOAQ+v7QNFHh6NBbiSrjBBfg4vkfzqnsUvAgMBAAGjUDBOMB0GA1UdDgQW 67fUSKgvyVnyH4G6ShQUAtghPaAwS0KvAgMBAAGjUDBOMB0GA1UdDgQWBBSjxFUE
BBTGGw+ASoDi9kqPElDkC0Q5RtAfRjAfBgNVHSMEGDAWgBTGGw+ASoDi9kqPElDk RfnTvABRLAa34Ytkhz5vPzAfBgNVHSMEGDAWgBSjxFUERfnTvABRLAa34Ytkhz5v
C0Q5RtAfRjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIOuR1OqXLke PzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAFLDS7zNhlrQYSQO5KIj
LLzH0kRnlIOe60dYJvRya53wDx5x2g4/qkXZPLx2RcbaUrX/SCbL70vfr+apUPss z2RJe3fj4rLPklo3TmP5KLvendG+LErE2cbKPqnhQ2oVoj6u9tWVwo/g03PMrrnL
dOSJ86sf/PQHW3/1fhTTE+Vck1MiiAq0aIx6WnKnz4+ZcQctB7b0DCsTcQnmbpi2 KrDm39slYD/1KoE5kB4l/p6KVOdeJ4I6xcgu9rnkqqHzDwI4v7e8/D3WZbpiFUsY
n9MuhWaT21VOYhIGzJFPw5XW47/RrwhR vaZhjNYKWQf79l6zXfOvphzJ
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
...@@ -188,6 +198,71 @@ signature-certificate-list = ...@@ -188,6 +198,71 @@ signature-certificate-list =
Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby
If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY= If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY=
-----END CERTIFICATE----- -----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-----
MIIB9DCCAV2gAwIBAgIJAL392bEdqpFQMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtMjM0MB4XDTExMTEwOTE1MzA0M1oXDTEyMTEwODE1MzA0M1owEzER
MA8GA1UEAwwIQ09NUC0yMzQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMRR
T0cacZKztie/DaRRjq3mgcqfPKoGXu6zXmeRQI+6Y4bnzjf8h/jAuPzR552P0xK5
psxhavXA8hOGRLFDtvDMQLepVHWfwqtFtcp5vNf2+KWqOYy0OxHfVIlnatvCqTZN
NG1vRsSOAQ+v7QNFHh6NBbiSrjBBfg4vkfzqnsUvAgMBAAGjUDBOMB0GA1UdDgQW
BBTGGw+ASoDi9kqPElDkC0Q5RtAfRjAfBgNVHSMEGDAWgBTGGw+ASoDi9kqPElDk
C0Q5RtAfRjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIOuR1OqXLke
LLzH0kRnlIOe60dYJvRya53wDx5x2g4/qkXZPLx2RcbaUrX/SCbL70vfr+apUPss
dOSJ86sf/PQHW3/1fhTTE+Vck1MiiAq0aIx6WnKnz4+ZcQctB7b0DCsTcQnmbpi2
n9MuhWaT21VOYhIGzJFPw5XW47/RrwhR
-----END CERTIFICATE-----
[versions] [versions]
Jinja2 = 2.6 Jinja2 = 2.6
......
...@@ -21,7 +21,6 @@ exec-sitecustomize = false ...@@ -21,7 +21,6 @@ exec-sitecustomize = false
# Add location for modified non-official slapos.buildout # Add location for modified non-official slapos.buildout
find-links += find-links +=
http://www.nexedi.org/static/packages/source/slapos.buildout/ http://www.nexedi.org/static/packages/source/slapos.buildout/
http://www.nexedi.org/static/packages/source/hexagonit.recipe.download/
# Use only quite well working sites. # Use only quite well working sites.
allow-hosts += allow-hosts +=
......
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