diff options
-rw-r--r-- | .travis.yml | 7 | ||||
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | doc/server/plugins/generators/packages.txt | 9 | ||||
-rw-r--r-- | misc/bcfg2-selinux.spec | 11 | ||||
-rw-r--r-- | misc/bcfg2.spec | 11 | ||||
-rw-r--r-- | osx/Makefile | 2 | ||||
-rw-r--r-- | osx/macports/Portfile | 2 | ||||
-rw-r--r-- | redhat/RELEASE | 2 | ||||
-rw-r--r-- | redhat/bcfg2.spec.in | 3 | ||||
-rwxr-xr-x | setup.py | 2 | ||||
-rw-r--r-- | solaris/Makefile | 2 | ||||
-rw-r--r-- | solaris/pkginfo.bcfg2 | 2 | ||||
-rw-r--r-- | solaris/pkginfo.bcfg2-server | 2 | ||||
-rw-r--r-- | src/lib/Bcfg2/Reporting/templates/base.html | 2 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Admin/Init.py | 4 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Core.py | 17 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Lint/RequiredAttrs.py | 2 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/POSIXCompat.py | 5 | ||||
-rw-r--r-- | src/lib/Bcfg2/version.py | 2 | ||||
-rwxr-xr-x | src/sbin/bcfg2-test | 28 | ||||
-rwxr-xr-x | testsuite/install.sh | 2 | ||||
-rwxr-xr-x | tools/bcfg2-profile-templates.py | 15 |
22 files changed, 76 insertions, 62 deletions
diff --git a/.travis.yml b/.travis.yml index 8786dcc77..f93ab07c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ python: - "2.6" - "2.7" - "3.2" + - "3.3" env: - WITH_OPTIONAL_DEPS=yes - WITH_OPTIONAL_DEPS=no @@ -11,11 +12,13 @@ matrix: exclude: - python: "3.2" env: WITH_OPTIONAL_DEPS=yes + - python: "3.3" + env: WITH_OPTIONAL_DEPS=yes before_install: - testsuite/before_install.sh install: - testsuite/install.sh - - pip install -e . + - pip install --use-mirrors -e . script: - nosetests testsuite branches: @@ -25,7 +28,7 @@ branches: - py3k notifications: email: chris.a.st.pierre@gmail.com - irc: + irc: channels: - "irc.freenode.org#bcfg2" use_notice: true diff --git a/debian/changelog b/debian/changelog index 3a38bf02a..f7c3b0474 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +bcfg2 (1.3.0-0.0) unstable; urgency=low + + * New upstream release + + -- Sol Jerome <sol.jerome@gmail.com> Fri, 15 Mar 2013 08:45:18 -0500 + bcfg2 (1.3.0rc2-0.0) unstable; urgency=low * New upstream release diff --git a/doc/server/plugins/generators/packages.txt b/doc/server/plugins/generators/packages.txt index 60b692021..73145fd6b 100644 --- a/doc/server/plugins/generators/packages.txt +++ b/doc/server/plugins/generators/packages.txt @@ -279,7 +279,8 @@ something like this: <Source type="apt" recommended="true" ...> .. warning:: You must regenerate the Packages cache when adding or - removing the recommended attribute. + removing the recommended attribute (``bcfg2-admin xcmd + Packages.Refresh``). .. [#f1] Bcfg2 will by default add **Essential** packages to the client specification. You can disable this behavior by @@ -383,9 +384,9 @@ will report information like:: Packages: Updating http://mirror.centos.org/centos/5/extras/x86_64/repodata/filelists.xml.gz Packages: Updating http://mirror.centos.org/centos/5/extras/x86_64/repodata/primary.xml.gz -Once line per file download needed. ``Packages/sources.xml`` will -be reloaded at this time, so any source specification changes (new -or modified sources in this file) will be reflected by the server at +One line per file download needed. ``Packages/sources.xml`` will be +reloaded at this time, so any source specification changes (new or +modified sources in this file) will be reflected by the server at this point. This process is much, much faster if you use the :ref:`native yum diff --git a/misc/bcfg2-selinux.spec b/misc/bcfg2-selinux.spec index e5a0eed16..59718a2de 100644 --- a/misc/bcfg2-selinux.spec +++ b/misc/bcfg2-selinux.spec @@ -9,7 +9,7 @@ Name: bcfg2-selinux Version: 1.3.0 -Release: 0.0rc2 +Release: 0.0 Summary: Bcfg2 Client and Server SELinux policy %if 0%{?suse_version} @@ -24,8 +24,8 @@ Conflicts: selinux-policy = 3.11.1 License: BSD URL: http://bcfg2.org -Source0: ftp://ftp.mcs.anl.gov/pub/bcfg/%{name}-%{version}rc2.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}rc2-%{release}-root-%(%{__id_u} -n) +Source0: ftp://ftp.mcs.anl.gov/pub/bcfg/%{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch BuildRequires: checkpolicy, selinux-policy-devel, hardlink @@ -65,7 +65,7 @@ deployment strategies. This package includes the Bcfg2 server and client SELinux policy. %prep -%setup -q -n %{name}-%{version}rc2 +%setup -q -n %{name}-%{version} %build cd redhat/selinux @@ -120,6 +120,9 @@ if [ $1 -eq 0 ] ; then fi %changelog +* Fri Mar 15 2013 Sol Jerome <sol.jerome@gmail.com> 1.3.0-0.0 +- New upstream release + * Tue Jan 29 2013 Sol Jerome <sol.jerome@gmail.com> 1.3.0-0.0rc2 - New upstream release diff --git a/misc/bcfg2.spec b/misc/bcfg2.spec index 35435001f..40fb787a3 100644 --- a/misc/bcfg2.spec +++ b/misc/bcfg2.spec @@ -6,7 +6,7 @@ Name: bcfg2 Version: 1.3.0 -Release: 0.0rc2 +Release: 0.0 Summary: Configuration management system %if 0%{?suse_version} @@ -17,8 +17,8 @@ Group: Applications/System %endif License: BSD URL: http://bcfg2.org -Source0: ftp://ftp.mcs.anl.gov/pub/bcfg/%{name}-%{version}rc2.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}rc2-%{release}-root-%(%{__id_u} -n) +Source0: ftp://ftp.mcs.anl.gov/pub/bcfg/%{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch BuildRequires: python-devel @@ -267,7 +267,7 @@ deployment strategies. This package includes the Bcfg2 reports web frontend. %prep -%setup -q -n %{name}-%{version}rc2 +%setup -q -n %{name}-%{version} %build %{__python}%{pythonversion} setup.py build @@ -454,6 +454,9 @@ fi %endif %changelog +* Fri Mar 15 2013 Sol Jerome <sol.jerome@gmail.com> 1.3.0-0.0 +- New upstream release + * Tue Jan 29 2013 Sol Jerome <sol.jerome@gmail.com> 1.3.0-0.0rc2 - New upstream release diff --git a/osx/Makefile b/osx/Makefile index a46b29116..dbd771ed8 100644 --- a/osx/Makefile +++ b/osx/Makefile @@ -29,7 +29,7 @@ SITELIBDIR = /Library/Python/${PYVERSION}/site-packages # an Info.plist file for packagemaker to look at for package creation # and substitute the version strings. Major/Minor versions can only be # integers (e.g. "1" and "00" for bcfg2 version 1.0.0. -BCFGVER = 1.3.0rc2 +BCFGVER = 1.3.0 MAJOR = 1 MINOR = 30 diff --git a/osx/macports/Portfile b/osx/macports/Portfile index f53974670..d3c162176 100644 --- a/osx/macports/Portfile +++ b/osx/macports/Portfile @@ -5,7 +5,7 @@ PortSystem 1.0 PortGroup python26 1.0 name bcfg2 -version 1.3.0rc2 +version 1.3.0 categories sysutils python maintainers gmail.com:sol.jerome license BSD diff --git a/redhat/RELEASE b/redhat/RELEASE index c39908ef3..ba66466c2 100644 --- a/redhat/RELEASE +++ b/redhat/RELEASE @@ -1 +1 @@ -0.0rc2 +0.0 diff --git a/redhat/bcfg2.spec.in b/redhat/bcfg2.spec.in index 161134091..fdc506d16 100644 --- a/redhat/bcfg2.spec.in +++ b/redhat/bcfg2.spec.in @@ -262,6 +262,9 @@ fi %doc %{_defaultdocdir}/bcfg2-doc-%{version} %changelog +* Fri Mar 15 2013 Sol Jerome <sol.jerome@gmail.com> 1.3.0-0.0 +- New upstream release + * Tue Jan 29 2013 Sol Jerome <sol.jerome@gmail.com> 1.3.0-0.0rc2 - New upstream release @@ -23,7 +23,7 @@ if need_m2crypto: inst_reqs.append('M2Crypto') setup(name="Bcfg2", - version="1.3.0rc2", + version="1.3.0", description="Bcfg2 Server", author="Narayan Desai", author_email="desai@mcs.anl.gov", diff --git a/solaris/Makefile b/solaris/Makefile index d81dd0292..f9b376f50 100644 --- a/solaris/Makefile +++ b/solaris/Makefile @@ -1,7 +1,7 @@ #!/usr/sfw/bin/gmake PYTHON="/usr/local/bin/python" -VERS=1.3.0rc2-1 +VERS=1.3.0-1 PYVERSION := $(shell $(PYTHON) -c "import sys; print sys.version[0:3]") default: clean package diff --git a/solaris/pkginfo.bcfg2 b/solaris/pkginfo.bcfg2 index b95b24f75..6126132ba 100644 --- a/solaris/pkginfo.bcfg2 +++ b/solaris/pkginfo.bcfg2 @@ -1,7 +1,7 @@ PKG="SCbcfg2" NAME="bcfg2" ARCH="sparc" -VERSION="1.3.0rc2" +VERSION="1.3.0" CATEGORY="application" VENDOR="Argonne National Labratory" EMAIL="bcfg-dev@mcs.anl.gov" diff --git a/solaris/pkginfo.bcfg2-server b/solaris/pkginfo.bcfg2-server index 25b0bfa4b..9ab846732 100644 --- a/solaris/pkginfo.bcfg2-server +++ b/solaris/pkginfo.bcfg2-server @@ -1,7 +1,7 @@ PKG="SCbcfg2-server" NAME="bcfg2-server" ARCH="sparc" -VERSION="1.3.0rc2" +VERSION="1.3.0" CATEGORY="application" VENDOR="Argonne National Labratory" EMAIL="bcfg-dev@mcs.anl.gov" diff --git a/src/lib/Bcfg2/Reporting/templates/base.html b/src/lib/Bcfg2/Reporting/templates/base.html index 533dcc79e..67ff1fc36 100644 --- a/src/lib/Bcfg2/Reporting/templates/base.html +++ b/src/lib/Bcfg2/Reporting/templates/base.html @@ -88,7 +88,7 @@ <div style='clear:both'></div> </div><!-- document --> <div id="footer"> - <span>Bcfg2 Version 1.3.0rc2</span> + <span>Bcfg2 Version 1.3.0</span> </div> <div id="calendar_div" style='position:absolute; visibility:hidden; background-color:white; layer-background-color:white;'></div> diff --git a/src/lib/Bcfg2/Server/Admin/Init.py b/src/lib/Bcfg2/Server/Admin/Init.py index 14065980d..f2d6d7efa 100644 --- a/src/lib/Bcfg2/Server/Admin/Init.py +++ b/src/lib/Bcfg2/Server/Admin/Init.py @@ -174,8 +174,6 @@ class Init(Bcfg2.Server.Admin.Mode): self.data['certpath'] = os.path.join(basepath, 'bcfg2.crt') def __call__(self, args): - Bcfg2.Server.Admin.Mode.__call__(self, args) - # Parse options opts = Bcfg2.Options.OptionParser(self.options) opts.parse(args) @@ -292,7 +290,7 @@ class Init(Bcfg2.Server.Admin.Mode): "created [%s]: " % self.data['keypath']) if keypath: self.data['keypath'] = keypath - certpath = safe_input("Path where Bcfg2 server cert will be created" + certpath = safe_input("Path where Bcfg2 server cert will be created " "[%s]: " % self.data['certpath']) if certpath: self.data['certpath'] = certpath diff --git a/src/lib/Bcfg2/Server/Core.py b/src/lib/Bcfg2/Server/Core.py index 782aafbf1..6f642e347 100644 --- a/src/lib/Bcfg2/Server/Core.py +++ b/src/lib/Bcfg2/Server/Core.py @@ -2,13 +2,14 @@ implementations inherit from. """ import os -import atexit -import logging -import select import sys -import threading import time +import atexit +import select +import signal +import logging import inspect +import threading import lxml.etree import Bcfg2.settings import Bcfg2.Server @@ -285,6 +286,14 @@ class BaseCore(object): #: The CA that signed the server cert self.ca = setup['ca'] + def hdlr(sig, frame): # pylint: disable=W0613 + """ Handle SIGINT/Ctrl-C by shutting down the core and exiting + properly. """ + self.shutdown() + os._exit(1) # pylint: disable=W0212 + + signal.signal(signal.SIGINT, hdlr) + #: The FAM :class:`threading.Thread`, #: :func:`_file_monitor_thread` self.fam_thread = \ diff --git a/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py b/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py index 33565b4ad..2a10da417 100644 --- a/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py +++ b/src/lib/Bcfg2/Server/Lint/RequiredAttrs.py @@ -43,7 +43,7 @@ def is_octal_mode(val): def is_username(val): """ Return True if val is a string giving either a positive integer uid, or a valid Unix username """ - return re.match(r'^([a-z][-_a-z0-9]{0,30}|\d+)$', val) + return re.match(r'^([A-z][-_A-z0-9]{0,30}|\d+)$', val) def is_device_mode(val): diff --git a/src/lib/Bcfg2/Server/Plugins/POSIXCompat.py b/src/lib/Bcfg2/Server/Plugins/POSIXCompat.py index 0dd42c9cb..490ee6f20 100644 --- a/src/lib/Bcfg2/Server/Plugins/POSIXCompat.py +++ b/src/lib/Bcfg2/Server/Plugins/POSIXCompat.py @@ -15,6 +15,11 @@ class POSIXCompat(Bcfg2.Server.Plugin.Plugin, def validate_goals(self, metadata, goals): """Verify that we are generating correct old POSIX entries.""" + if metadata.version_info and metadata.version_info > (1, 3, 0, '', 0): + # do not care about a client that is _any_ 1.3.0 release + # (including prereleases and RCs) + return + for goal in goals: for entry in goal.getchildren(): if entry.tag == 'Path' and 'mode' in entry.keys(): diff --git a/src/lib/Bcfg2/version.py b/src/lib/Bcfg2/version.py index 8223d7543..9ecd7f32d 100644 --- a/src/lib/Bcfg2/version.py +++ b/src/lib/Bcfg2/version.py @@ -2,7 +2,7 @@ import re -__version__ = "1.3.0rc2" +__version__ = "1.3.0" class Bcfg2VersionInfo(tuple): diff --git a/src/sbin/bcfg2-test b/src/sbin/bcfg2-test index f77e98269..5b751af93 100755 --- a/src/sbin/bcfg2-test +++ b/src/sbin/bcfg2-test @@ -5,7 +5,6 @@ without failures""" import os import sys -import signal import fnmatch import logging import Bcfg2.Logger @@ -57,6 +56,19 @@ class ClientTest(TestCase): assert len(config.findall("Bundle")) > 0, \ "%s has no content" % self.client + # check for missing bundles + metadata = self.bcfg2_core.build_metadata(self.client) + sbundles = [el.get('name') for el in config.findall("Bundle")] + missing = [b for b in metadata.bundles if b not in sbundles] + assert len(missing) == 0, \ + "Configuration is missing bundle(s): %s" % ':'.join(missing) + + # check for unknown packages + unknown_pkgs = config.xpath('//Package[@type="unknown"]') + assert len(unknown_pkgs) == 0, \ + "Configuration contains unknown packages: %s" % \ + ", ".join(unknown_pkgs) + failures = [] msg = ["Failures:"] for failure in config.xpath('//*[@failure]'): @@ -73,19 +85,6 @@ class ClientTest(TestCase): id = __str__ -def get_sigint_handler(core): - """ Get a function that handles SIGINT/Ctrl-C by shutting down the - core and exiting properly.""" - - def hdlr(sig, frame): # pylint: disable=W0613 - """ Handle SIGINT/Ctrl-C by shutting down the core and exiting - properly. """ - core.shutdown() - os._exit(1) # pylint: disable=W0212 - - return hdlr - - def main(): optinfo = dict(noseopts=Bcfg2.Options.TEST_NOSEOPTS, test_ignore=Bcfg2.Options.TEST_IGNORE, @@ -113,7 +112,6 @@ def main(): setup['noseopts'].append("-v") core = Bcfg2.Server.Core.BaseCore(setup) - signal.signal(signal.SIGINT, get_sigint_handler(core)) ignore = dict() for entry in setup['test_ignore']: diff --git a/testsuite/install.sh b/testsuite/install.sh index 2c962e171..c1685f831 100755 --- a/testsuite/install.sh +++ b/testsuite/install.sh @@ -4,7 +4,7 @@ pip install -r testsuite/requirements.txt --use-mirrors -PYVER=$(python -c 'import sys;print ".".join(str(v) for v in sys.version_info[0:2])') +PYVER=$(python -c 'import sys;print(".".join(str(v) for v in sys.version_info[0:2]))') if [[ "$WITH_OPTIONAL_DEPS" == "yes" ]]; then if [[ $PYVER == "2.5" ]]; then diff --git a/tools/bcfg2-profile-templates.py b/tools/bcfg2-profile-templates.py index cc7a1a3d8..3cd3786f9 100755 --- a/tools/bcfg2-profile-templates.py +++ b/tools/bcfg2-profile-templates.py @@ -4,7 +4,6 @@ import os import sys import time -import signal import logging import operator import Bcfg2.Logger @@ -13,19 +12,6 @@ import Bcfg2.Server.Core LOGGER = None -def get_sigint_handler(core): - """ Get a function that handles SIGINT/Ctrl-C by shutting down the - core and exiting properly.""" - - def hdlr(sig, frame): # pylint: disable=W0613 - """ Handle SIGINT/Ctrl-C by shutting down the core and exiting - properly. """ - core.shutdown() - os._exit(1) # pylint: disable=W0212 - - return hdlr - - def main(): optinfo = \ dict(client=Bcfg2.Options.Option("Benchmark templates for one client", @@ -53,7 +39,6 @@ def main(): logger = logging.getLogger(sys.argv[0]) core = Bcfg2.Server.Core.BaseCore(setup) - signal.signal(signal.SIGINT, get_sigint_handler(core)) logger.info("Bcfg2 server core loaded") core.fam.handle_events_in_interval(0.1) logger.debug("Repository events processed") |