From 251070737f0cf69945ae2e2790e9fda28d79d546 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Fri, 15 Mar 2013 10:48:41 -0400 Subject: bcfg2-admin init: create specification directory if it doesn't exist --- src/lib/Bcfg2/Server/Admin/Init.py | 1 + 1 file changed, 1 insertion(+) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Server/Admin/Init.py b/src/lib/Bcfg2/Server/Admin/Init.py index f2d6d7efa..1eb5d247a 100644 --- a/src/lib/Bcfg2/Server/Admin/Init.py +++ b/src/lib/Bcfg2/Server/Admin/Init.py @@ -221,6 +221,7 @@ class Init(Bcfg2.Server.Admin.Mode): if response.lower().strip() == 'y': break else: + os.makedirs(newrepo) break def _prompt_password(self): -- cgit v1.2.3-1-g7c22 From dd72c3652a8abfa7a9f5a4a61f9c6ae2734319ea Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Fri, 15 Mar 2013 10:49:23 -0400 Subject: models: copy SERVER_PLUGINS option to avoid changing the real default, just the local default --- src/lib/Bcfg2/Server/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Server/models.py b/src/lib/Bcfg2/Server/models.py index 0328c6bea..1f64111e7 100644 --- a/src/lib/Bcfg2/Server/models.py +++ b/src/lib/Bcfg2/Server/models.py @@ -1,6 +1,7 @@ """ Django database models for all plugins """ import sys +import copy import logging import Bcfg2.Options import Bcfg2.Server.Plugins @@ -19,7 +20,7 @@ def load_models(plugins=None, cfile='/etc/bcfg2.conf', quiet=True): # we want to provide a different default plugin list -- # namely, _all_ plugins, so that the database is guaranteed to # work, even if /etc/bcfg2.conf isn't set up properly - plugin_opt = Bcfg2.Options.SERVER_PLUGINS + plugin_opt = copy.deepcopy(Bcfg2.Options.SERVER_PLUGINS) plugin_opt.default = Bcfg2.Server.Plugins.__all__ setup = \ -- cgit v1.2.3-1-g7c22 From 7e34868c0c6bfe788deb2891a67b230e856fbdb1 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Fri, 15 Mar 2013 12:29:07 -0400 Subject: init: fixed creation of repo directory --- src/lib/Bcfg2/Server/Admin/Init.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Server/Admin/Init.py b/src/lib/Bcfg2/Server/Admin/Init.py index 1eb5d247a..48fa89498 100644 --- a/src/lib/Bcfg2/Server/Admin/Init.py +++ b/src/lib/Bcfg2/Server/Admin/Init.py @@ -212,7 +212,7 @@ class Init(Bcfg2.Server.Admin.Mode): """Ask for the repository path.""" while True: newrepo = safe_input("Location of Bcfg2 repository [%s]: " % - self.data['repopath']) + self.data['repopath']) if newrepo != '': self.data['repopath'] = os.path.abspath(newrepo) if os.path.isdir(self.data['repopath']): @@ -221,7 +221,7 @@ class Init(Bcfg2.Server.Admin.Mode): if response.lower().strip() == 'y': break else: - os.makedirs(newrepo) + os.makedirs(self.data['repopath']) break def _prompt_password(self): -- cgit v1.2.3-1-g7c22 From cd8fd312c1463aab564a5d811ef92b1e3d938c7a Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Fri, 15 Mar 2013 12:32:23 -0400 Subject: init: fixed creation of repo directory for real this time --- src/lib/Bcfg2/Server/Admin/Init.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Server/Admin/Init.py b/src/lib/Bcfg2/Server/Admin/Init.py index 48fa89498..3e642ee49 100644 --- a/src/lib/Bcfg2/Server/Admin/Init.py +++ b/src/lib/Bcfg2/Server/Admin/Init.py @@ -221,7 +221,6 @@ class Init(Bcfg2.Server.Admin.Mode): if response.lower().strip() == 'y': break else: - os.makedirs(self.data['repopath']) break def _prompt_password(self): @@ -319,6 +318,16 @@ class Init(Bcfg2.Server.Admin.Mode): def init_repo(self): """Setup a new repo and create the content of the configuration file.""" + # Create the repository + path = os.path.join(self.data['repopath'], 'etc') + try: + os.makedirs(path) + self._init_plugins() + print("Repository created successfuly in %s" % + self.data['repopath']) + except OSError: + print("Failed to create %s." % path) + confdata = CONFIG % (self.data['repopath'], ','.join(self.plugins), self.data['sendmail'], @@ -334,13 +343,3 @@ class Init(Bcfg2.Server.Admin.Mode): create_key(self.data['shostname'], self.data['keypath'], self.data['certpath'], self.data['country'], self.data['state'], self.data['location']) - - # Create the repository - path = os.path.join(self.data['repopath'], 'etc') - try: - os.makedirs(path) - self._init_plugins() - print("Repository created successfuly in %s" % - self.data['repopath']) - except OSError: - print("Failed to create %s." % path) -- cgit v1.2.3-1-g7c22 From 931705be94167075267c928b21a96bf7e73ed039 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 18 Mar 2013 09:10:50 -0400 Subject: allow communication passwords with URL special chars (@, /, etc.) in them --- src/lib/Bcfg2/Compat.py | 3 ++- src/lib/Bcfg2/Proxy.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Compat.py b/src/lib/Bcfg2/Compat.py index beb534791..57f96274f 100644 --- a/src/lib/Bcfg2/Compat.py +++ b/src/lib/Bcfg2/Compat.py @@ -19,12 +19,13 @@ except ImportError: # urllib imports try: + from urllib import quote_plus from urlparse import urljoin, urlparse from urllib2 import HTTPBasicAuthHandler, \ HTTPPasswordMgrWithDefaultRealm, build_opener, install_opener, \ urlopen, HTTPError, URLError except ImportError: - from urllib.parse import urljoin, urlparse + from urllib.parse import urljoin, urlparse, quote_plus from urllib.request import HTTPBasicAuthHandler, \ HTTPPasswordMgrWithDefaultRealm, build_opener, install_opener, urlopen from urllib.error import HTTPError, URLError diff --git a/src/lib/Bcfg2/Proxy.py b/src/lib/Bcfg2/Proxy.py index 3b406c78e..224028b6a 100644 --- a/src/lib/Bcfg2/Proxy.py +++ b/src/lib/Bcfg2/Proxy.py @@ -1,6 +1,6 @@ -import logging import re import socket +import logging # The ssl module is provided by either Python 2.6 or a separate ssl # package that works on older versions of Python (see @@ -20,7 +20,7 @@ import sys import time # Compatibility imports -from Bcfg2.Compat import httplib, xmlrpclib, urlparse +from Bcfg2.Compat import httplib, xmlrpclib, urlparse, quote_plus version = sys.version_info[:2] has_py26 = version >= (2, 6) @@ -349,7 +349,8 @@ def ComponentProxy(url, user=None, password=None, key=None, cert=None, ca=None, if user and password: method, path = urlparse(url)[:2] - newurl = "%s://%s:%s@%s" % (method, user, password, path) + newurl = "%s://%s:%s@%s" % (method, quote_plus(user, ''), + quote_plus(password, ''), path) else: newurl = url ssl_trans = XMLRPCTransport(key, cert, ca, -- cgit v1.2.3-1-g7c22 From c82807da53e2e76d70b0496fb3bcfb476d590968 Mon Sep 17 00:00:00 2001 From: Tim Laszlo Date: Mon, 18 Mar 2013 13:12:26 -0500 Subject: Fix the group filter dropdown on firefox --- src/lib/Bcfg2/Reporting/templates/widgets/filter_bar.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Reporting/templates/widgets/filter_bar.html b/src/lib/Bcfg2/Reporting/templates/widgets/filter_bar.html index 759415507..bb4f650d1 100644 --- a/src/lib/Bcfg2/Reporting/templates/widgets/filter_bar.html +++ b/src/lib/Bcfg2/Reporting/templates/widgets/filter_bar.html @@ -16,7 +16,7 @@ {% endif %} -- cgit v1.2.3-1-g7c22 From 9b5bd6d018bad6a7f483bc87c5f4b18ac92b99f0 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 18 Mar 2013 15:17:04 -0400 Subject: POSIX: fixed infinite stat() loop with misnamed Path entry --- src/lib/Bcfg2/Client/Tools/POSIX/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Client/Tools/POSIX/base.py b/src/lib/Bcfg2/Client/Tools/POSIX/base.py index b867fa3d8..f46875743 100644 --- a/src/lib/Bcfg2/Client/Tools/POSIX/base.py +++ b/src/lib/Bcfg2/Client/Tools/POSIX/base.py @@ -687,7 +687,7 @@ class POSIXTool(Bcfg2.Client.Tools.Tool): if path is None: path = entry.get("name") cur = path - while cur != '/': + while cur and cur != '/': if not os.path.exists(cur): created.append(cur) cur = os.path.dirname(cur) -- cgit v1.2.3-1-g7c22 From d56c2292b52359bec50f5e7e7d8b1870c6edfa21 Mon Sep 17 00:00:00 2001 From: Sol Jerome Date: Mon, 18 Mar 2013 18:06:21 -0500 Subject: Reporting: Fix sections for reports settings Signed-off-by: Sol Jerome --- src/lib/Bcfg2/Options.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index fd096b75a..5f079f0b4 100644 --- a/src/lib/Bcfg2/Options.py +++ b/src/lib/Bcfg2/Options.py @@ -621,17 +621,19 @@ WEB_CFILE = \ default="/etc/bcfg2-web.conf", cmd='-W', odesc='', - cf=('statistics', 'config'),) + cf=('reporting', 'config'), + deprecated_cf=('statistics', 'web_prefix'),) DJANGO_TIME_ZONE = \ Option('Django timezone', default=None, - cf=('statistics', 'time_zone'),) + cf=('reporting', 'time_zone'), + deprecated_cf=('statistics', 'web_prefix'),) DJANGO_DEBUG = \ Option('Django debug', default=None, - cf=('statistics', 'web_debug'), + cf=('reporting', 'web_debug'), + deprecated_cf=('statistics', 'web_prefix'), cook=get_bool,) -# Django options DJANGO_WEB_PREFIX = \ Option('Web prefix', default=None, -- cgit v1.2.3-1-g7c22 From 4f6ba35fd86ae748d77557936e39db162cc282e3 Mon Sep 17 00:00:00 2001 From: Tim Laszlo Date: Mon, 18 Mar 2013 18:22:46 -0500 Subject: Fix django TIME_ZONE for django < 1.2 (cherry picked from commit e0d8251f2b8cb315b8124d2733aaab90b9f7e2a2) --- src/lib/Bcfg2/settings.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/lib/Bcfg2') diff --git a/src/lib/Bcfg2/settings.py b/src/lib/Bcfg2/settings.py index 9e6a815c7..5300d068f 100644 --- a/src/lib/Bcfg2/settings.py +++ b/src/lib/Bcfg2/settings.py @@ -27,7 +27,10 @@ DATABASE_PASSWORD = None DATABASE_HOST = None DATABASE_PORT = None -TIME_ZONE = None +if HAS_DJANGO and django.VERSION[0] == 1 and django.VERSION[1] < 2: + TIME_ZONE = 'America/Chicago' +else: + TIME_ZONE = None DEBUG = False TEMPLATE_DEBUG = DEBUG -- cgit v1.2.3-1-g7c22