From 5ca971e0c8d34eade80cf3e32b471657838b112d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Ninivin?= <cedric.leninivin@tiolive.com> Date: Mon, 10 Sep 2012 13:30:28 +0200 Subject: [PATCH] Register now use slapos.cfg.example from master --- slapos/register/register.py | 137 ++++++++++++++-------- slapos/register/templates/slapos.cfg.in | 147 ------------------------ 2 files changed, 86 insertions(+), 198 deletions(-) delete mode 100644 slapos/register/templates/slapos.cfg.in diff --git a/slapos/register/register.py b/slapos/register/register.py index 7ea67ac75..c07db8662 100644 --- a/slapos/register/register.py +++ b/slapos/register/register.py @@ -28,13 +28,14 @@ import base64 +import ConfigParser from getpass import getpass import logging from optparse import OptionParser, Option import os -import pkg_resources import shutil import sys +import tempfile import urllib2 @@ -111,8 +112,6 @@ class Parser(OptionParser): if options.password != None and options.login == None : self.error("Please enter your login with your password") - if options.ipv6_interface != '' : - options.ipv6_interface = ('ipv6_interface = ' + options.ipv6_interface) return options, node_name @@ -183,62 +182,98 @@ def save_former_config(config): else: break config.logger.info( "Former slapos configuration detected in %s moving to %s" % (former_slapos_configuration,saved_slapos_configuration)) shutil.move(former_slapos_configuration,saved_slapos_configuration) + +def get_slapos_conf_example(): + """ + Get slapos.cfg.example and return its path + """ + register_server_url = "http://git.erp5.org/gitweb/slapos.core.git/blob_plain/HEAD:/slapos.cfg.example" + request = urllib2.Request(register_server_url) + url = urllib2.urlopen(request) + page = url.read() + info, path = tempfile.mkstemp() + slapos_cfg_example = open(path,'w') + slapos_cfg_example.write(page) + slapos_cfg_example.close() + return path def slapconfig(config): """Base Function to configure slapos in /etc/opt/slapos""" dry_run = config.dry_run - try: - # Create slapos configuration directory if needed - slap_configuration_directory = os.path.normpath(config.slapos_configuration) - slap_configuration_file = os.path.join(slap_configuration_directory, 'slapos.cfg') - if not os.path.exists(slap_configuration_directory): - config.logger.info ("Creating directory: %s" % slap_configuration_directory) - if not dry_run: - os.mkdir(slap_configuration_directory, 0711) - - user_certificate_repository_path = os.path.join(slap_configuration_directory,'ssl') - if not os.path.exists(user_certificate_repository_path): - config.logger.info ("Creating directory: %s" % user_certificate_repository_path) - if not dry_run: - os.mkdir(user_certificate_repository_path, 0711) + # Create slapos configuration directory if needed + slap_configuration_directory = os.path.normpath(config.slapos_configuration) + + if not os.path.exists(slap_configuration_directory): + config.logger.info ("Creating directory: %s" % slap_configuration_directory) + if not dry_run: + os.mkdir(slap_configuration_directory, 0711) + + user_certificate_repository_path = os.path.join(slap_configuration_directory,'ssl') + if not os.path.exists(user_certificate_repository_path): + config.logger.info ("Creating directory: %s" % user_certificate_repository_path) + if not dry_run: + os.mkdir(user_certificate_repository_path, 0711) - key_file = os.path.join(user_certificate_repository_path, 'key') - cert_file = os.path.join(user_certificate_repository_path, 'certificate') - for (src, dst) in [(config.key, key_file), (config.certificate, - cert_file)]: - config.logger.info ("Copying to %r, and setting minimum privileges" % dst) - if not dry_run: - destination = open(dst,'w') - destination.write(''.join(src)) - destination.close() - os.chmod(dst, 0600) - os.chown(dst, 0, 0) - - certificate_repository_path = os.path.join(slap_configuration_directory,'ssl','partition_pki') - if not os.path.exists(certificate_repository_path): - config.logger.info ("Creating directory: %s" % certificate_repository_path) - if not dry_run: - os.mkdir(certificate_repository_path, 0711) - - # Put slapgrid configuration file - config.logger.info ("Creating slap configuration: %s" % slap_configuration_file) + key_file = os.path.join(user_certificate_repository_path, 'key') + cert_file = os.path.join(user_certificate_repository_path, 'certificate') + for (src, dst) in [(config.key, key_file), (config.certificate, + cert_file)]: + config.logger.info ("Copying to %r, and setting minimum privileges" % dst) + if not dry_run: + destination = open(dst,'w') + destination.write(''.join(src)) + destination.close() + os.chmod(dst, 0600) + os.chown(dst, 0, 0) + + certificate_repository_path = os.path.join(slap_configuration_directory,'ssl','partition_pki') + if not os.path.exists(certificate_repository_path): + config.logger.info ("Creating directory: %s" % certificate_repository_path) if not dry_run: - open(slap_configuration_file, 'w').write( - pkg_resources.resource_stream(__name__, - 'templates/slapos.cfg.in').read() % dict( - computer_id=config.computer_id, master_url=config.master_url, - key_file=key_file, cert_file=cert_file, - certificate_repository_path=certificate_repository_path, - partition_amount=config.partition_number, - interface=config.interface_name, - ipv4_network=config.ipv4_local_network, - ipv6_interface=config.ipv6_interface - )) - config.logger.info ("SlapOS configuration: DONE") - finally: - return 0 + os.mkdir(certificate_repository_path, 0711) + + # Put slapos configuration file + slap_configuration_file = os.path.join(slap_configuration_directory, + 'slapos.cfg') + config.logger.info ("Creating slap configuration: %s" + % slap_configuration_file) + + # Get example configuration file + slapos_cfg_example = get_slapos_conf_example() + configuration_example_parser = ConfigParser.RawConfigParser() + configuration_example_parser.read(slapos_cfg_example) + os.remove(slapos_cfg_example) + + # prepare slapos section + slaposconfig = dict( + computer_id=config.computer_id, master_url=config.master_url, + key_file=key_file, cert_file=cert_file, + certificate_repository_path=certificate_repository_path) + for key in slaposconfig : + configuration_example_parser.set('slapos',key,slaposconfig[key]) + + # prepare slapformat + slapformatconfig = dict( + interface_name=config.interface_name, + ipv4_local_network=config.ipv4_local_network, + partition_amount=config.partition_number + ) + for key in slapformatconfig : + configuration_example_parser.set('slapformat',key,slapformatconfig[key]) + + if not config.ipv6_interface == '': + configuration_example_parser.set('slapformat','ipv6_interface' + ,config.ipv6_interface) + + if not dry_run: + file = open(slap_configuration_file,"w") + configuration_example_parser.write(file) + file.close() + + config.logger.info ("SlapOS configuration: DONE") + # Class containing all parameters needed for configuration class Config: diff --git a/slapos/register/templates/slapos.cfg.in b/slapos/register/templates/slapos.cfg.in deleted file mode 100644 index 7fb36c32a..000000000 --- a/slapos/register/templates/slapos.cfg.in +++ /dev/null @@ -1,147 +0,0 @@ -[slapos] -software_root = /opt/slapgrid -instance_root = /srv/slapgrid -master_url = %(master_url)s -computer_id = %(computer_id)s -key_file = %(key_file)s -cert_file = %(cert_file)s -certificate_repository_path = %(certificate_repository_path)s - -[slapformat] -interface_name = %(interface)s -computer_xml = /opt/slapos/slapos.xml -log_file = /opt/slapos/slapformat.log -create_tap = false -partition_amount = %(partition_amount)s -partition_base_name = slappart -user_base_name = slapuser -tap_base_name = slaptap -# You can choose any other local network which does not conflict with your -# current machine configuration -ipv4_local_network = %(ipv4_network)s -%(ipv6_interface)s - -[networkcache] -# Define options for binary cache, used to download already compiled software. -download-binary-cache-url = http://www.shacache.org/shacache -download-cache-url = https://www.shacache.org/shacache -download-binary-dir-url = http://www.shacache.org/shadir -# 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 -signature-certificate-list = - -----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----- -# List of URL(s) which shouldn't be installed from binary cache, separated by -# commas. Any URL beginning by a blacklisted URL will be blacklisted as well. -binary-cache-url-blacklist = - http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD - http://git.erp5.org/gitweb/slapos.core.git/blob_plain/refs/heads -- 2.30.9