diff --git a/3945.patch b/3945.patch deleted file mode 100644 index e75c349..0000000 --- a/3945.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 1d83bd29c253ba898ac35683258fec285d5a6529 Mon Sep 17 00:00:00 2001 -From: Orion Poplawski -Date: Sat, 4 Oct 2025 19:49:26 -0600 -Subject: [PATCH] Use systemctl is-active --quiet to check status of services - (fixes #3942) - ---- - changelog.d/3942.fixed | 1 + - cobbler/actions/check.py | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - create mode 100644 changelog.d/3942.fixed - -diff --git a/changelog.d/3942.fixed b/changelog.d/3942.fixed -new file mode 100644 -index 0000000000..444bdb800a ---- /dev/null -+++ b/changelog.d/3942.fixed -@@ -0,0 +1 @@ -+check: Use systemctl is-active --quiet to check the status of services -diff --git a/cobbler/actions/check.py b/cobbler/actions/check.py -index b79706aff1..5f6a3fa3bc 100644 ---- a/cobbler/actions/check.py -+++ b/cobbler/actions/check.py -@@ -142,7 +142,7 @@ def check_service(self, status, which, notes=""): - status.append("service %s is not running%s" % (which, notes)) - return - elif utils.is_systemd(): -- return_code = utils.subprocess_call("systemctl status %s > /dev/null 2>/dev/null" % which, -+ return_code = utils.subprocess_call("systemctl is-active --quiet %s > /dev/null 2>/dev/null" % which, - shell=True) - if return_code != 0: - status.append("service %s is not running%s" % (which, notes)) diff --git a/changelog b/changelog deleted file mode 100644 index 291772a..0000000 --- a/changelog +++ /dev/null @@ -1,354 +0,0 @@ -* Thu Jan 16 2025 Fedora Release Engineering - 3.3.7-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sun Jan 05 2025 Orion Poplawski - 3.3.7-2 -- Backport upstream patch for Python 3.13 support (rhbz#2335620) - -* Sun Nov 17 2024 Orion Poplawski - 3.3.7-1 -- Update to 3.3.7 (CVE-2024-47533) - -* Fri Sep 27 2024 Carl George - 3.3.6-2 -- Fix cheetah dependency rhbz#2314630 - -* Wed Jul 31 2024 Orion Poplawski - 3.3.6-1 -- Update to 3.3.6 - -* Thu Jul 25 2024 Miroslav Suchý - 3.3.5-3 -- convert license to SPDX - -* Wed Jul 17 2024 Fedora Release Engineering - 3.3.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Jul 12 2024 Orion Poplawski - 3.3.5-1 -- Update to 3.3.5 - -* Fri Jun 07 2024 Python Maint - 3.3.4-5 -- Rebuilt for Python 3.13 - -* Fri Jun 07 2024 Python Maint - 3.3.4-4 -- Rebuilt for Python 3.13 - -* Sat Apr 27 2024 Orion Poplawski - 3.3.4-3 -- Fix service name in selinux post install script - -* Fri Apr 26 2024 Orion Poplawski - 3.3.4-2 -- Test for existence of web.ss before chowning it (bz#2276860) - -* Mon Feb 26 2024 Orion Poplawski - 3.3.4-1 -- Update to 3.3.4 -- Add local SELinux policy and allow cobbler to check service statuses, - run mkfs.fat, and check for reposync and yumdownloader (bz#2251220) -- Change owndership of web.ss to root (bz#2247653) - -* Wed Jan 24 2024 Fedora Release Engineering - 3.3.3-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 3.3.3-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Wed Jul 19 2023 Fedora Release Engineering - 3.3.3-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Mon Jul 17 2023 Orion Poplawski - 3.3.3-6 -- Add patch to fix build with Sphinx 7 - -* Wed Jun 14 2023 Python Maint - 3.3.3-5 -- Rebuilt for Python 3.12 - -* Thu Jan 19 2023 Fedora Release Engineering - 3.3.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Wed Jul 20 2022 Fedora Release Engineering - 3.3.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jun 23 2022 Python Maint - 3.3.3-2 -- Rebuilt for Python 3.11 - -* Tue Jun 14 2022 Orion Poplawski - 3.3.3-1 -- Update to 3.3.3 - -* Wed May 04 2022 Orion Poplawski - 3.3.2-2 -- Drop setting cache_enabled no longer present in 3.3 - -* Sat Mar 12 2022 Orion Poplawski - 3.3.2-1 -- Update to 3.3.2 - -* Tue Mar 01 2022 Orion Poplawski - 3.3.1-1 -- Update to 3.3.1, removes web interface - -* Tue Mar 01 2022 Orion Poplawski - 3.2.2-9 -- Apply fixes for CVE-2021-45082/3 -- Remove BR on python3-coverage - -* Mon Jan 24 2022 Orion Poplawski - 3.2.2-8 -- Fix posttrans script - -* Wed Jan 19 2022 Fedora Release Engineering - 3.2.2-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Thu Dec 23 2021 Orion Poplawski - 3.2.2-6 -- Fix path to settings.yaml in scriptlet - -* Thu Dec 09 2021 Orion Poplawski - 3.2.2-5 -- Remove defunct get-loaders command - -* Mon Nov 22 2021 Orion Poplawski - 3.2.2-4 -- Add new keys to settings.yaml on migration or if missing -- Save original settings to settings.rpmorig - -* Fri Oct 08 2021 Orion Poplawski - 3.2.2-3 -- Fix dependencies (bz#2010567) - -* Thu Sep 23 2021 Orion Poplawski - 3.2.2-2 -- Migrate settings to settings.yaml -- Migrate pre-cobbler 3 data if needed -- Fix autoinstall_templates -> templates - -* Thu Sep 23 2021 Orion Poplawski - 3.2.2-1 -- Update to 3.2.2 -- bz#2006840: CVE-2021-40323: Arbitrary file disclosure/Template Injection -- bz#2006897: CVE-2021-40324: Arbitrary file write via upload_log_data XMLRPC function -- bz#2006904: CVE-2021-40325: Authorization bypass allows modifying settings - -* Wed Sep 22 2021 Orion Poplawski - 3.2.1-1 -- Update to 3.2.1 - -* Wed Jul 21 2021 Fedora Release Engineering - 3.2.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Fri Jun 04 2021 Python Maint - 3.2.0-5 -- Rebuilt for Python 3.10 - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 3.2.0-4 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Tue Jan 26 2021 Fedora Release Engineering - 3.2.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Sun Oct 25 2020 Orion Poplawski - 3.2.0-2 -- Give root RW permission to /var/lib/cobbler/web.ss -- Fix SELinux cobbler logging issue - -* Sat Oct 24 2020 Orion Poplawski - 3.2.0-1 -- Update to 3.2.0 - -* Thu Sep 17 2020 Orion Poplawski - 3.1.2-4 -- Add requires on python-distro and file - -* Mon Jul 27 2020 Fedora Release Engineering - 3.1.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 08 2020 Orion Poplawski - 3.1.2-2 -- Fix apache configuration - -* Fri May 29 2020 Orion Poplawski - 3.1.2-1 -- Update to 3.1.2 - -* Tue May 26 2020 Miro Hrončok - 3.1.1-4 -- Rebuilt for Python 3.9 - -* Fri Feb 21 2020 Orion Poplawski - 3.1.1-3 -- Add requires for python3-dns - -* Tue Jan 28 2020 Fedora Release Engineering - 3.1.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Sun Jan 12 2020 Orion Poplawski - 3.1.1-1 -- Update to 3.1.1 - -* Tue Oct 22 2019 Orion Poplawski - 3.0.1-4 -- Drop koan completely, including obsoletes. It is a separate package now. - -* Thu Oct 10 2019 Orion Poplawski - 3.0.1-3 -- Require /sbin/service - -* Tue Oct 8 2019 Orion Poplawski - 3.0.1-2 -- Fix requires (requests instead of urlgrabber) -- Fix BR for EL8 - -* Mon Sep 09 2019 Nicolas Chauvet - 3.0.1-1 -- Update to 3.0.1 - -* Fri Aug 30 2019 Nicolas Chauvet - 3.0.0-1 -- Update to 3.0.0 - -* Mon Aug 26 2019 Nicolas Chauvet - 2.8.5-0.1 -- Update to 2.8.5 - pre-release - -* Wed Jul 24 2019 Fedora Release Engineering - 2.8.4-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Thu Jan 31 2019 Fedora Release Engineering - 2.8.4-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Nov 26 2018 Orion Poplawski - 2.8.4-5 -- Fix empty man pages (BZ 1653415) - -* Mon Nov 26 2018 Orion Poplawski - 2.8.4-4 -- Revert bind_manage_ipmi feature that is broken on 2.8 - -* Sun Nov 25 2018 Orion Poplawski - 2.8.4-3 -- Use pathfix.py to fix python shebangs - -* Sun Nov 25 2018 Orion Poplawski - 2.8.4-2 -- Make koan require python2-ethtool (BZ 1638933) - -* Sat Nov 24 2018 Orion Poplawski - 2.8.4-1 -- Update to 2.8.4 (Fixes BZ 1613292, 1643860, 1614433, CVE-2018-1000226, CVE-2018-10931) - -* Thu Jul 12 2018 Fedora Release Engineering - 2.8.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed May 30 2018 Orion Poplawski - 2.8.3-3 -- koan requires urlgrabber - -* Mon May 28 2018 Nicolas Chauvet - 2.8.3-2 -- Restore mergeability with epel7 - -* Mon May 28 2018 Nicolas Chauvet - 2.8.3-1 -- Update to 2.8.3 - security bugfix - -* Wed Feb 21 2018 Orion Poplawski - 2.8.2-6 -- Really fix django requires for Fedora 28+ - -* Tue Feb 20 2018 Orion Poplawski - 2.8.2-5 -- Fix django requires for Fedora 28+ - -* Fri Feb 09 2018 Igor Gnatenko - 2.8.2-4 -- Escape macros in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 2.8.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Feb 06 2018 Iryna Shcherbina - 2.8.2-2 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Mon Sep 18 2017 Orion Poplawski - 2.8.2-1 -- Update to 2.8.2 - -* Wed Aug 02 2017 Fedora Release Engineering - 2.8.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 2.8.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Wed Jun 21 2017 Orion Poplawski - 2.8.1-3 -- Suppress logrotate output - -* Mon Jun 12 2017 Orion Poplawski - 2.8.1-2 -- Fix module loading - -* Wed May 24 2017 Orion Poplawski - 2.8.1-1 -- Update to 2.8.1 - -* Fri Feb 17 2017 Orion Poplawski - 2.8.0-6 -- Add patch to fix handling of multiple bridge interfaces - -* Fri Feb 10 2017 Fedora Release Engineering - 2.8.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Fri Jan 27 2017 Orion Poplawski - 2.8.0-4 -- Fix named patch - -* Tue Jan 24 2017 Orion Poplawski - 2.8.0-3 -- Restart named-chroot service if used - -* Fri Jan 20 2017 Orion Poplawski - 2.8.0-2 -- Fix logrotate script for systemd (bug #1414617) - -* Thu Dec 1 2016 Orion Poplawski - 2.8.0-1 -- Update to 2.8.0 -- Restructure spec file - -* Thu Sep 1 2016 Orion Poplawski - 2.6.11-11.gitf78af86 -- Add patches to fix TEMPLATE_DIRS and use OrderedDict - -* Thu Aug 11 2016 Orion Poplawski - 2.6.11-10.gitf78af86 -- Force IPv4 connections to cobblerd from web proxy - -* Thu Jul 21 2016 Orion Poplawski - 2.6.11-9.gitf78af86 -- Suppress "virt-install --os-variant list" error messages - -* Thu Jul 21 2016 Orion Poplawski - 2.6.11-8.git5680bf8 -- Fix handling unknown os variants with osinfo-query - -* Tue Jul 19 2016 Fedora Release Engineering - 2.6.11-7.git95749a6 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Wed Jul 13 2016 Orion Poplawski - 2.6.11-6.git95749a6 -- Fix typo in koan/app.py - -* Wed Jul 13 2016 Orion Poplawski - 2.6.11-5.git13b035f -- Update to current git snapshot (bug #1276896) - -* Wed Feb 03 2016 Fedora Release Engineering - 2.6.11-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Mon Feb 1 2016 Orion Poplawski - 2.6.11-3 -- Require dnf-plugins-core - -* Sun Jan 24 2016 Orion Poplawski - 2.6.11-2 -- Require dnf-core-plugins instead of yum-utils for repoquery on Fedora 23+ - -* Sun Jan 24 2016 Orion Poplawski - 2.6.11-1 -- Update to 2.6.11 -- Make cobbler arch specific to allow for arch specific requires - -* Thu Oct 1 2015 Orion Poplawski - 2.6.10-1 -- Update to 2.6.10 - -* Mon Jun 22 2015 Orion Poplawski - 2.6.9-1 -- Update to 2.6.9 - -* Wed Jun 17 2015 Fedora Release Engineering - 2.6.8-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Tue May 12 2015 Orion Poplawski - 2.6.8-2 -- Support django 1.8 in Fedora 22+ - -* Fri May 8 2015 Orion Poplawski - 2.6.8-1 -- Update to 2.6.8 -- Backport upstream patch to fix centos version detection (bug #1201879) - -* Tue Apr 28 2015 Orion Poplawski - 2.6.7-3 -- Add patch to fix virt-install support for F21+/EL7 (bug #1188424) - -* Mon Apr 27 2015 Orion Poplawski - 2.6.7-2 -- Create and own directories in tftp_dir - -* Wed Dec 31 2014 Orion Poplawski - 2.6.7-1 -- Update to 2.6.7 - -* Sun Oct 19 2014 Orion Poplawski - 2.6.6-1 -- Update to 2.6.6 - -* Fri Aug 15 2014 Orion Poplawski - 2.6.5-1 -- Update to 2.6.5 - -* Wed Aug 13 2014 Orion Poplawski - 2.6.4-2 -- Require Django >= 1.4 - -* Mon Aug 11 2014 Orion Poplawski - 2.6.4-1 -- Update to 2.6.4 - -* Fri Jul 18 2014 Orion Poplawski - 2.6.3-1 -- Update to 2.6.3 - -* Wed Jul 16 2014 Orion Poplawski - 2.6.2-1 -- Update to 2.6.2 -- Spec cleanup - -* Sat Jun 07 2014 Fedora Release Engineering - 2.6.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Fri May 23 2014 Orion Poplawski - 2.6.1-1 -- Update to 2.6.1 -- Drop koan patch applied upstream - -* Tue Apr 22 2014 Orion Poplawski - 2.6.0-2 -- Only require syslinux on x86 - -* Mon Apr 21 2014 Orion Poplawski - 2.6.0-1 -- Update to 2.6.0 diff --git a/cobbler-nocov.patch b/cobbler-nocov.patch deleted file mode 100644 index c50edfd..0000000 --- a/cobbler-nocov.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff --git a/setup.py b/setup.py -index 59f7601..023d84b 100644 ---- a/setup.py -+++ b/setup.py -@@ -341,17 +341,9 @@ class test_command(Command): - - def run(self): - import pytest -- from coverage import Coverage -- -- cov = Coverage() -- cov.erase() -- cov.start() - - result = pytest.main() - -- cov.stop() -- cov.save() -- cov.html_report(directory="covhtml") - sys.exit(int(bool(len(result.failures) > 0 or len(result.errors) > 0))) - - -@@ -479,7 +471,6 @@ if __name__ == "__main__": - }, - license="GPLv2+", - setup_requires=[ -- "coverage", - "distro", - "setuptools", - "sphinx", -@@ -501,10 +492,7 @@ if __name__ == "__main__": - "lint": ["pyflakes", "pycodestyle", "pylint", "black", "mypy"], - "test": [ - "pytest>6", -- "pytest-cov", -- "codecov", - "pytest-mock", -- "pytest-benchmark", - ], - "docs": ["sphinx", "sphinx-rtd-theme", "sphinxcontrib-apidoc"], - # We require the current version to properly detect duplicate issues diff --git a/cobbler-python3.13.patch b/cobbler-python3.13.patch deleted file mode 100644 index 78847a4..0000000 --- a/cobbler-python3.13.patch +++ /dev/null @@ -1,972 +0,0 @@ -diff --git a/changelog.d/3842.fixed b/changelog.d/3842.fixed -new file mode 100644 -index 00000000..6c6d6313 ---- /dev/null -+++ b/changelog.d/3842.fixed -@@ -0,0 +1 @@ -+Fix compatibility with Python 3.13 -diff --git a/cobbler/actions/reposync.py b/cobbler/actions/reposync.py -index c0163350..ec5745fb 100644 ---- a/cobbler/actions/reposync.py -+++ b/cobbler/actions/reposync.py -@@ -23,9 +23,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - import logging - import os - import os.path --import pipes --import stat -+import shlex - import shutil -+import stat - from typing import Optional, Union - - from cobbler import utils -@@ -272,9 +272,9 @@ class RepoSync: - blended = utils.blender(self.api, False, repo) - flags = blended.get("createrepo_flags", "(ERROR: FLAGS)") - try: -- cmd = "createrepo %s %s %s" % (" ".join(mdoptions), flags, pipes.quote(dirname)) -- utils.subprocess_call(cmd) -- except: -+ cmd = ["createrepo"] + mdoptions + flags + [shlex.quote(dirname)] -+ utils.subprocess_call(cmd, shell=False) -+ except Exception: - utils.log_exc() - self.logger.error("createrepo failed.") - del fnames[:] # we're in the right place -@@ -302,8 +302,19 @@ class RepoSync: - dest_path = os.path.join(self.settings.webdir, "repo_mirror", repo.name) - - # FIXME: wrapper for subprocess that logs to logger -- cmd = ["wget", "-N", "-np", "-r", "-l", "inf", "-nd", "-P", pipes.quote(dest_path), pipes.quote(repo.mirror)] -- rc = utils.subprocess_call(cmd) -+ cmd = [ -+ "wget", -+ "-N", -+ "-np", -+ "-r", -+ "-l", -+ "inf", -+ "-nd", -+ "-P", -+ shlex.quote(dest_path), -+ shlex.quote(repo.mirror), -+ ] -+ return_value = utils.subprocess_call(cmd, shell=False) - - if rc != 0: - raise CX("cobbler reposync failed") -@@ -347,9 +358,14 @@ class RepoSync: - if flags == '': - flags = self.settings.reposync_rsync_flags - -- cmd = "rsync %s --delete-after %s --delete --exclude-from=/etc/cobbler/rsync.exclude %s %s" \ -- % (flags, spacer, pipes.quote(repo.mirror), pipes.quote(dest_path)) -- rc = utils.subprocess_call(cmd) -+ cmd = ["rsync"] + flags + ["--delete-after"] -+ cmd += spacer + [ -+ "--delete", -+ "--exclude-from=/etc/cobbler/rsync.exclude", -+ shlex.quote(repo.mirror), -+ shlex.quote(dest_path), -+ ] -+ return_code = utils.subprocess_call(cmd, shell=False) - - if rc != 0: - raise CX("cobbler reposync failed") -@@ -386,10 +402,11 @@ class RepoSync: - if not HAS_LIBREPO: - raise CX("no librepo found, please install python3-librepo") - -- if os.path.exists("/usr/bin/dnf"): -- cmd = "/usr/bin/dnf reposync" -- elif os.path.exists("/usr/bin/reposync"): -- cmd = "/usr/bin/reposync" -+ if os.path.exists("/usr/bin/reposync"): -+ cmd = ["/usr/bin/reposync"] -+ # DNF5 does not have a reposync subcommand -+ elif os.path.exists("/usr/bin/dnf"): -+ cmd = ["/usr/bin/dnf", "reposync"] - else: - # Warn about not having yum-utils. We don't want to require it in the package because Fedora 22+ has moved - # to dnf. -@@ -451,6 +468,11 @@ class RepoSync: - # Counter-intuitive, but we want the newish kernels too - arch = "i686" - -+ cmd = self.reposync_cmd() -+ cmd += self.rflags + [ -+ f"--repo={shlex.quote(rest)}", -+ f"--download-path={shlex.quote(repos_path)}", -+ ] - if arch != "none": - cmd = "%s -a %s" % (cmd, arch) - -@@ -544,9 +566,11 @@ class RepoSync: - - if not has_rpm_list: - # If we have not requested only certain RPMs, use reposync -- cmd = "%s %s --config=%s --repoid=%s -p %s" \ -- % (cmd, self.rflags, temp_file, pipes.quote(repo.name), -- pipes.quote(repos_path)) -+ cmd += self.rflags + [ -+ f"--config={temp_file}", -+ f"--repoid={shlex.quote(repo.name)}", -+ f"--download-path={shlex.quote(repos_path)}", -+ ] - if arch != "none": - cmd = "%s -a %s" % (cmd, arch) - -@@ -557,14 +581,14 @@ class RepoSync: - - use_source = "" - if arch == "src": -- use_source = "--source" -- -- # Older yumdownloader sometimes explodes on --resolvedeps if this happens to you, upgrade yum & yum-utils -- extra_flags = self.settings.yumdownloader_flags -- cmd = "/usr/bin/dnf download" -- cmd = "%s %s %s --disablerepo=* --enablerepo=%s -c %s --destdir=%s %s" \ -- % (cmd, extra_flags, use_source, pipes.quote(repo.name), temp_file, pipes.quote(dest_path), -- " ".join(repo.rpm_list)) -+ cmd.append("--source") -+ cmd += [ -+ "--disablerepo=*", -+ f"--enablerepo={shlex.quote(repo.name)}", -+ f"-c={temp_file}", -+ f"--destdir={shlex.quote(dest_path)}", -+ ] -+ cmd += repo.rpm_list - - # Now regardless of whether we're doing yumdownloader or reposync or whether the repo was http://, ftp://, or - # rhn://, execute all queued commands here. Any failure at any point stops the operation. -@@ -669,17 +693,21 @@ class RepoSync: - dists = ",".join(repo.apt_dists) - components = ",".join(repo.apt_components) - -- mirror_data = "--method=%s --host=%s --root=%s --dist=%s --section=%s" \ -- % (pipes.quote(method), pipes.quote(host), pipes.quote(mirror), pipes.quote(dists), -- pipes.quote(components)) -+ mirror_data = [ -+ f"--method={shlex.quote(method)}", -+ f"--host={shlex.quote(host)}", -+ f"--root={shlex.quote(mirror)}", -+ f"--dist={shlex.quote(dists)}", -+ f"--section={shlex.quote(components)}", -+ ] - - rflags = "--nocleanup" - for x in repo.yumopts: - if repo.yumopts[x]: - rflags += " %s=%s" % (x, repo.yumopts[x]) - else: -- rflags += " %s" % x -- cmd = "%s %s %s %s" % (mirror_program, rflags, mirror_data, pipes.quote(dest_path)) -+ rflags.append(repo_yumoption) -+ cmd = [mirror_program] + rflags + mirror_data + [shlex.quote(dest_path)] - if repo.arch == RepoArchs.SRC: - cmd = "%s --source" % cmd - else: -diff --git a/tests/actions/reposync_test.py b/tests/actions/reposync_test.py -index 0bee772c..ee8d1549 100644 ---- a/tests/actions/reposync_test.py -+++ b/tests/actions/reposync_test.py -@@ -1,251 +1,592 @@ -+""" -+Tests that validate the functionality of the module that is responsible for repository synchronization. -+""" -+ - import os --import glob -+from pathlib import Path -+from typing import TYPE_CHECKING, Any, Dict, List, Union - - import pytest - --from cobbler import enums -+from cobbler import cexceptions, enums -+from cobbler.actions import reposync - from cobbler.api import CobblerAPI --from cobbler.actions.reposync import RepoSync - from cobbler.items.repo import Repo --from cobbler import cexceptions --from tests.conftest import does_not_raise - -+from tests.conftest import does_not_raise - --@pytest.fixture(scope="class") --def api(): -- return CobblerAPI() -+if TYPE_CHECKING: -+ from pytest_mock import MockerFixture - - --@pytest.fixture(scope="class") --def reposync(api): -- test_reposync = RepoSync(api, tries=2, nofail=False) -+@pytest.fixture(name="reposync_object", scope="function") -+def fixture_reposync_object( -+ mocker: "MockerFixture", cobbler_api: CobblerAPI -+) -> reposync.RepoSync: -+ settings_mock = mocker.MagicMock() -+ settings_mock.webdir = "/srv/www/cobbler" -+ settings_mock.server = "localhost" -+ settings_mock.http_port = 80 -+ settings_mock.proxy_url_ext = "" -+ settings_mock.yumdownloader_flags = "--testflag" -+ settings_mock.reposync_rsync_flags = "--testflag" -+ settings_mock.reposync_flags = "--testflag" -+ mocker.patch.object(cobbler_api, "settings", return_value=settings_mock) -+ test_reposync = reposync.RepoSync(cobbler_api, tries=2, nofail=False) - return test_reposync - - --@pytest.fixture --def repo(api): -+@pytest.fixture(name="repo") -+def fixture_repo(cobbler_api: CobblerAPI) -> Repo: - """ - Creates a Repository "testrepo0" with a keep_updated=True and mirror_locally=True". - """ -- test_repo = Repo(api) -+ test_repo = Repo(cobbler_api) - test_repo.name = "testrepo0" - test_repo.mirror_locally = True - test_repo.keep_updated = True -- api.add_repo(test_repo) - return test_repo - - - @pytest.fixture --def remove_repo(api): -+def remove_repo(cobbler_api: CobblerAPI): - """ - Removes the Repository "testrepo0" which can be created with repo. - """ - yield -- test_repo = api.find_repo("testrepo0") -- if test_repo is not None: -- api.remove_repo(test_repo.name) -+ test_repo = cobbler_api.find_repo("testrepo0") -+ if test_repo is not None and not isinstance(test_repo, list): -+ cobbler_api.remove_repo(test_repo.name) - - --class TestRepoSync: -- @pytest.mark.usefixtures("remove_repo") -- @pytest.mark.parametrize( -- "input_mirror_type,input_mirror,expected_exception", -- [ -- ( -- enums.MirrorType.BASEURL, -- "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os", -- does_not_raise() -- ), -- ( -- enums.MirrorType.MIRRORLIST, -- "https://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=x86_64", -- does_not_raise() -- ), -- ( -- enums.MirrorType.METALINK, -- "https://mirrors.fedoraproject.org/metalink?repo=rawhide&arch=x86_64", -- does_not_raise() -- ), -- ( -- enums.MirrorType.BASEURL, -- "http://www.example.com/path/to/some/repo", -- pytest.raises(cexceptions.CX) -- ), -+@pytest.fixture(scope="function", autouse=True) -+def reset_librepo(): -+ has_librepo = reposync.HAS_LIBREPO -+ yield -+ reposync.HAS_LIBREPO = has_librepo -+ -+ -+def test_repo_walker(mocker: "MockerFixture", tmp_path: Path): -+ # Arrange -+ def test_fun(arg: Any, top: Any, names: Any): -+ pass -+ -+ subdir1 = tmp_path / "sub1" -+ subdir2 = tmp_path / "sub2" -+ subdir1.mkdir() -+ subdir2.mkdir() -+ spy = mocker.Mock(wraps=test_fun) -+ -+ # Act -+ reposync.repo_walker(tmp_path, spy, None) # type: ignore -+ -+ # Assert -+ assert spy.mock_calls == [ -+ # settings.yaml is here because of our autouse fixture that we use to restore the settings -+ mocker.call(None, tmp_path, ["settings.yaml", "sub1", "sub2"]), -+ mocker.call(None, str(subdir1), []), -+ mocker.call(None, str(subdir2), []), -+ ] -+ -+ -+@pytest.mark.parametrize( -+ "input_has_librepo,input_path_exists_side_effect,expected_exception,expected_result", -+ [ -+ (True, [False, True], does_not_raise(), ["/usr/bin/dnf", "reposync"]), -+ (True, [True, False], does_not_raise(), ["/usr/bin/reposync"]), -+ (True, [False, False], pytest.raises(cexceptions.CX), ""), -+ (False, [False, True], pytest.raises(cexceptions.CX), ""), -+ ], -+) -+def test_reposync_cmd( -+ mocker: "MockerFixture", -+ reposync_object: reposync.RepoSync, -+ input_has_librepo: bool, -+ input_path_exists_side_effect: List[bool], -+ expected_exception: Any, -+ expected_result: Union[List[str], str], -+): -+ # Arrange -+ mocker.patch("os.path.exists", side_effect=input_path_exists_side_effect) -+ reposync.HAS_LIBREPO = input_has_librepo -+ -+ # Act -+ with expected_exception: -+ result = reposync_object.reposync_cmd() -+ -+ # Assert -+ assert result == expected_result -+ -+ -+def test_run(mocker: "MockerFixture", reposync_object: reposync.RepoSync, repo: Repo): -+ # Arrange -+ env_vars: Dict[str, Any] = {} -+ mocker.patch("os.makedirs") -+ mocker.patch("os.path.isdir", return_value=True) -+ mocker.patch( -+ "os.path.join", -+ side_effect=[ -+ "/srv/www/cobbler/repo_mirror", -+ "/srv/www/cobbler/repo_mirror/%s" % repo.name, - ], - ) -- def test_reposync_yum( -- self, -- input_mirror_type, -- input_mirror, -- expected_exception, -- api, -- repo, -- reposync -- ): -- # Arrange -- test_repo = repo -- test_repo.breed = enums.RepoBreeds.YUM -- test_repo.mirror = input_mirror -- test_repo.mirror_type = input_mirror_type -- test_repo.rpm_list = "fedora-gpg-keys" -- test_settings = api.settings() -- repo_path = os.path.join(test_settings.webdir, "repo_mirror", test_repo.name) -- -- # Act & Assert -- with expected_exception: -- reposync.run(test_repo.name) -- result = os.path.exists(repo_path) -- if test_repo.rpm_list and test_repo.rpm_list != []: -- for rpm in test_repo.rpm_list: -- assert glob.glob(os.path.join(repo_path, "**", rpm) + "*.rpm", recursive=True) != [] -- assert result -- # Test that re-downloading the metadata in .origin/repodata will not result in an error -- reposync.run(test_repo.name) -- -- @pytest.mark.usefixtures("remove_repo") -- @pytest.mark.parametrize( -- "input_mirror_type,input_mirror,input_arch,input_rpm_list,expected_exception", -+ mocker.patch("os.environ", return_value=env_vars) -+ mocker.patch.object(reposync_object, "repos", return_value=[repo]) -+ mocker.patch.object(reposync_object, "sync") -+ mocker.patch.object(reposync_object, "update_permissions") -+ reposync_object.repos = [repo] # type: ignore -+ -+ # Act -+ reposync_object.run() -+ -+ # Assert -+ # This has to be 0 since all env vars need to be removed after reposync has run. -+ assert len(env_vars) == 0 -+ -+ -+def test_gen_urlgrab_ssl_opts(reposync_object: reposync.RepoSync): -+ # Arrange -+ input_dict: Dict[str, Any] = {} -+ -+ # Act -+ result = reposync_object.gen_urlgrab_ssl_opts(input_dict) -+ -+ # Assert -+ assert isinstance(result, tuple) -+ assert len(result) == 2 -+ # The data of the first element is kind of flexible let's skip asserting it for now -+ assert isinstance(result[1], bool) -+ -+ -+@pytest.mark.usefixtures("remove_repo") -+@pytest.mark.parametrize( -+ "input_mirror_type,input_mirror,expected_exception", -+ [ -+ ( -+ enums.MirrorType.BASEURL, -+ "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os", -+ does_not_raise(), -+ ), -+ ( -+ enums.MirrorType.MIRRORLIST, -+ "https://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=x86_64", -+ does_not_raise(), -+ ), -+ ( -+ enums.MirrorType.METALINK, -+ "https://mirrors.fedoraproject.org/metalink?repo=rawhide&arch=x86_64", -+ does_not_raise(), -+ ), -+ ], -+) -+def test_reposync_yum( -+ mocker: "MockerFixture", -+ input_mirror_type: enums.MirrorType, -+ input_mirror: str, -+ expected_exception: Any, -+ cobbler_api: CobblerAPI, -+ repo: Repo, -+ reposync_object: reposync.RepoSync, -+): -+ # Arrange -+ test_repo = repo -+ test_repo.breed = enums.RepoBreeds.YUM -+ test_repo.mirror = input_mirror -+ test_repo.mirror_type = input_mirror_type -+ test_repo.rpm_list = "fedora-gpg-keys" -+ test_settings = cobbler_api.settings() -+ repo_path = os.path.join(test_settings.webdir, "repo_mirror", test_repo.name) -+ mocked_subprocess = mocker.patch( -+ "cobbler.utils.subprocess_call", autospec=True, return_value=0 -+ ) -+ mocker.patch.object( -+ reposync_object, "create_local_file", return_value="/create/local/file" -+ ) -+ mocker.patch.object( -+ reposync_object, "reposync_cmd", return_value=["/my/fake/dnf", "reposync"] -+ ) -+ mocker.patch.object(reposync_object, "rflags", return_value="--fake-r-flakg") -+ mocker.patch.object( -+ reposync_object, -+ "gen_urlgrab_ssl_opts", -+ return_value=(("TODO", "TODO", "TODO"), False), -+ ) -+ mocker.patch("os.path.exists", return_value=True) -+ mocker.patch("shutil.rmtree") -+ mocker.patch("os.makedirs") -+ mocked_repo_walker = mocker.patch("cobbler.actions.reposync.repo_walker") -+ handle_mock = mocker.MagicMock() -+ result_mock = mocker.MagicMock() -+ mocker.patch("librepo.Handle", return_value=handle_mock) -+ mocker.patch("librepo.Result", return_value=result_mock) -+ -+ # Act & Assert -+ with expected_exception: -+ reposync_object.yum_sync(repo) -+ -+ mocked_subprocess.assert_called_with( -+ [ -+ "/usr/bin/dnf", -+ "download", -+ "--testflag", -+ "--disablerepo=*", -+ f"--enablerepo={repo.name}", -+ "-c=/create/local/file", -+ f"--destdir={repo_path}", -+ "fedora-gpg-keys", -+ ], -+ shell=False, -+ ) -+ handle_mock.perform.assert_called_with(result_mock) -+ assert mocked_repo_walker.call_count == 1 -+ -+ -+@pytest.mark.usefixtures("remove_repo") -+@pytest.mark.parametrize( -+ "input_mirror_type,input_mirror,input_arch,input_rpm_list,expected_exception", -+ [ -+ ( -+ enums.MirrorType.BASEURL, -+ "http://ftp.debian.org/debian", -+ enums.RepoArchs.X86_64, -+ "", -+ does_not_raise(), -+ ), -+ ( -+ enums.MirrorType.MIRRORLIST, -+ "http://ftp.debian.org/debian", -+ enums.RepoArchs.X86_64, -+ "", -+ pytest.raises(cexceptions.CX), -+ ), -+ ( -+ enums.MirrorType.METALINK, -+ "http://ftp.debian.org/debian", -+ enums.RepoArchs.X86_64, -+ "", -+ pytest.raises(cexceptions.CX), -+ ), -+ ( -+ enums.MirrorType.BASEURL, -+ "http://ftp.debian.org/debian", -+ enums.RepoArchs.NONE, -+ "", -+ pytest.raises(cexceptions.CX), -+ ), -+ ( -+ enums.MirrorType.BASEURL, -+ "http://ftp.debian.org/debian", -+ enums.RepoArchs.X86_64, -+ "dpkg", -+ pytest.raises(cexceptions.CX), -+ ), -+ ], -+) -+def test_reposync_apt( -+ mocker: "MockerFixture", -+ input_mirror_type: enums.MirrorType, -+ input_mirror: str, -+ input_arch: enums.RepoArchs, -+ input_rpm_list: str, -+ expected_exception: Any, -+ cobbler_api: CobblerAPI, -+ repo: Repo, -+ reposync_object: reposync.RepoSync, -+): -+ # Arrange -+ test_repo = repo -+ test_repo.breed = enums.RepoBreeds.APT -+ test_repo.arch = input_arch -+ test_repo.apt_components = "main" -+ test_repo.apt_dists = "stable" -+ test_repo.mirror = input_mirror -+ test_repo.mirror_type = input_mirror_type -+ test_repo.rpm_list = input_rpm_list -+ test_settings = cobbler_api.settings() -+ repo_path = os.path.join(test_settings.webdir, "repo_mirror", test_repo.name) -+ mocked_subprocess = mocker.patch( -+ "cobbler.utils.subprocess_call", autospec=True, return_value=0 -+ ) -+ mocker.patch("os.path.exists", return_value=True) -+ -+ # Act -+ with expected_exception: -+ reposync_object.apt_sync(repo) -+ -+ # Assert -+ mocked_subprocess.assert_called_with( -+ [ -+ "/usr/bin/debmirror", -+ "--nocleanup", -+ "--method=http", -+ "--host=ftp.debian.org", -+ "--root=/debian", -+ "--dist=stable", -+ "--section=main", -+ repo_path, -+ "--nosource", -+ "-a=amd64", -+ ], -+ shell=False, -+ ) -+ -+ -+@pytest.mark.usefixtures("remove_repo") -+@pytest.mark.parametrize( -+ "input_mirror_type,input_mirror,expected_exception", -+ [ -+ ( -+ enums.MirrorType.BASEURL, -+ "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/2", -+ does_not_raise(), -+ ), -+ ( -+ enums.MirrorType.MIRRORLIST, -+ "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/2", -+ pytest.raises(cexceptions.CX), -+ ), -+ ( -+ enums.MirrorType.METALINK, -+ "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/2", -+ pytest.raises(cexceptions.CX), -+ ), -+ ], -+) -+def test_reposync_wget( -+ mocker: "MockerFixture", -+ input_mirror_type: enums.MirrorType, -+ input_mirror: str, -+ expected_exception: Any, -+ cobbler_api: CobblerAPI, -+ repo: Repo, -+ reposync_object: reposync.RepoSync, -+): -+ # Arrange -+ test_repo = repo -+ test_repo.breed = enums.RepoBreeds.WGET -+ test_repo.mirror = input_mirror -+ test_repo.mirror_type = input_mirror_type -+ repo_path = os.path.join( -+ reposync_object.settings.webdir, "repo_mirror", test_repo.name -+ ) -+ mocked_subprocess = mocker.patch( -+ "cobbler.utils.subprocess_call", autospec=True, return_value=0 -+ ) -+ mocker.patch("cobbler.actions.reposync.repo_walker") -+ mocker.patch.object(reposync_object, "create_local_file") -+ -+ # Act -+ with expected_exception: -+ reposync_object.wget_sync(test_repo) -+ -+ # Assert -+ mocked_subprocess.assert_called_with( -+ [ -+ "wget", -+ "-N", -+ "-np", -+ "-r", -+ "-l", -+ "inf", -+ "-nd", -+ "-P", -+ repo_path, -+ input_mirror, -+ ], -+ shell=False, -+ ) -+ -+ -+def test_reposync_rhn( -+ mocker: "MockerFixture", reposync_object: reposync.RepoSync, repo: Repo -+): -+ # Arrange -+ repo.mirror = "rhn://%s" % repo.name -+ mocked_subprocess = mocker.patch( -+ "cobbler.utils.subprocess_call", autospec=True, return_value=0 -+ ) -+ mocker.patch("os.path.isdir", return_value=True) -+ mocker.patch("os.makedirs") -+ mocker.patch("cobbler.actions.reposync.repo_walker") -+ mocker.patch.object(reposync_object, "create_local_file") -+ mocker.patch.object( -+ reposync_object, "reposync_cmd", return_value=["/my/fake/reposync"] -+ ) -+ -+ # Act -+ reposync_object.rhn_sync(repo) -+ -+ # Assert -+ # TODO: Check this more and document how its actually working -+ mocked_subprocess.assert_called_with( - [ -- ( -- enums.MirrorType.BASEURL, -- "http://ftp.debian.org/debian", -- enums.RepoArchs.X86_64, -- "", -- does_not_raise() -- ), -- ( -- enums.MirrorType.MIRRORLIST, -- "http://ftp.debian.org/debian", -- enums.RepoArchs.X86_64, -- "", -- pytest.raises(cexceptions.CX) -- ), -- ( -- enums.MirrorType.METALINK, -- "http://ftp.debian.org/debian", -- enums.RepoArchs.X86_64, -- "", -- pytest.raises(cexceptions.CX) -- ), -- ( -- enums.MirrorType.BASEURL, -- "http://www.example.com/path/to/some/repo", -- enums.RepoArchs.X86_64, -- "", -- pytest.raises(cexceptions.CX) -- ), -- ( -- enums.MirrorType.BASEURL, -- "http://ftp.debian.org/debian", -- enums.RepoArchs.NONE, -- "", -- pytest.raises(cexceptions.CX) -- ), -- ( -- enums.MirrorType.BASEURL, -- "http://ftp.debian.org/debian", -- enums.RepoArchs.X86_64, -- "dpkg", -- pytest.raises(cexceptions.CX) -- ), -+ "/my/fake/reposync", -+ "--testflag", -+ "--repo=testrepo0", -+ "--download-path=/srv/www/cobbler/repo_mirror", - ], -+ shell=False, - ) -- def test_reposync_apt( -- self, -- input_mirror_type, -- input_mirror, -- input_arch, -- input_rpm_list, -- expected_exception, -- api, -- repo, -- reposync -- ): -- # Arrange -- test_repo = repo -- test_repo.breed = enums.RepoBreeds.APT -- test_repo.arch = input_arch -- test_repo.apt_components = "main" -- test_repo.apt_dists = "stable" -- test_repo.mirror = input_mirror -- test_repo.mirror_type = input_mirror_type -- test_repo.rpm_list = input_rpm_list -- test_repo.yumopts = "--exclude=.* --include=dpkg.* --no-check-gpg --rsync-extra=none" -- test_settings = api.settings() -- repo_path = os.path.join(test_settings.webdir, "repo_mirror", test_repo.name) -- -- # Act & Assert -- with expected_exception: -- reposync.run(test_repo.name) -- result = os.path.exists(repo_path) -- for rpm in ["dpkg"]: -- assert glob.glob(os.path.join(repo_path, "**", "dpkg") + "*", recursive=True) != [] -- assert result -- -- @pytest.mark.skip("To flaky and thus not reliable. Needs to be mocked to be of use.") -- @pytest.mark.usefixtures("remove_repo") -- @pytest.mark.parametrize( -- "input_mirror_type,input_mirror,expected_exception", -+ -+ -+def test_reposync_rsync( -+ mocker: "MockerFixture", reposync_object: reposync.RepoSync, repo: Repo -+): -+ # Arrange -+ mocked_subprocess = mocker.patch("cobbler.utils.subprocess_call", return_value=0) -+ mocker.patch("cobbler.actions.reposync.repo_walker") -+ mocker.patch.object(reposync_object, "create_local_file") -+ repo_path = os.path.join(reposync_object.settings.webdir, "repo_mirror", repo.name) -+ -+ # Act -+ reposync_object.rsync_sync(repo) -+ -+ # Assert -+ mocked_subprocess.assert_called_with( - [ -- ( -- enums.MirrorType.BASEURL, -- "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/2", -- does_not_raise() -- ), -- ( -- enums.MirrorType.MIRRORLIST, -- "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/2", -- pytest.raises(cexceptions.CX) -- ), -- ( -- enums.MirrorType.METALINK, -- "http://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/2", -- pytest.raises(cexceptions.CX) -- ), -- ( -- enums.MirrorType.BASEURL, -- "http://www.example.com/path/to/some/repo", -- pytest.raises(cexceptions.CX) -- ), -+ "rsync", -+ "--testflag", -+ "--delete-after", -+ "-e ssh", -+ "--delete", -+ "--exclude-from=/etc/cobbler/rsync.exclude", -+ "/", -+ repo_path, - ], -+ shell=False, - ) -- def test_reposync_wget( -- self, -- input_mirror_type, -- input_mirror, -- expected_exception, -- api, -- repo, -- reposync -- ): -- # Arrange -- test_repo = repo -- test_repo.breed = enums.RepoBreeds.WGET -- test_repo.mirror = input_mirror -- test_repo.mirror_type = input_mirror_type -- test_settings = api.settings() -- repo_path = os.path.join(test_settings.webdir, "repo_mirror", test_repo.name) -- -- # Act & Assert -- with expected_exception: -- reposync.run(test_repo.name) -- result = os.path.exists(repo_path) -- for rpm in ["rpm"]: -- assert glob.glob(os.path.join(repo_path, "**", "2") + "*", recursive=True) != [] -- assert result -- -- --@pytest.mark.skip("TODO") --def test_reposync_rhn(): -+ -+ -+def test_createrepo_walker( -+ mocker: "MockerFixture", reposync_object: reposync.RepoSync, repo: Repo -+): - # Arrange -+ input_repo = repo -+ input_repo.breed = enums.RepoBreeds.RSYNC -+ input_dirname = "" -+ input_fnames = [] -+ expected_call = ["createrepo", "--testflags", f"'{input_dirname}'"] -+ mocked_subprocess = mocker.patch( -+ "cobbler.utils.subprocess_call", autospec=True, return_value=0 -+ ) -+ mocker.patch( -+ "cobbler.utils.blender", -+ autospec=True, -+ return_value={"createrepo_flags": "--testflags"}, -+ ) -+ mocker.patch("cobbler.utils.remove_yum_olddata") -+ mocker.patch("cobbler.utils.subprocess_get", return_value="5") -+ mocker.patch("cobbler.utils.get_family", return_value="TODO") -+ mocker.patch("os.path.exists", return_value=True) -+ mocker.patch("os.path.isfile", return_value=True) -+ mocker.patch.object(reposync_object, "librepo_getinfo", return_value={}) -+ - # Act -+ reposync_object.createrepo_walker(input_repo, input_dirname, input_fnames) -+ - # Assert -- assert False -+ # TODO: Improve coverage over different cases in method -+ mocked_subprocess.assert_called_with(expected_call, shell=False) - - --@pytest.mark.skip("TODO") --def test_reposync_rsync(): -+@pytest.mark.parametrize( -+ "input_repotype,expected_exception", -+ [ -+ (enums.RepoBreeds.YUM, does_not_raise()), -+ (enums.RepoBreeds.RHN, does_not_raise()), -+ (enums.RepoBreeds.APT, does_not_raise()), -+ (enums.RepoBreeds.RSYNC, does_not_raise()), -+ (enums.RepoBreeds.WGET, does_not_raise()), -+ (enums.RepoBreeds.NONE, pytest.raises(cexceptions.CX)), -+ ], -+) -+def test_sync( -+ mocker: "MockerFixture", -+ cobbler_api: CobblerAPI, -+ reposync_object: reposync.RepoSync, -+ input_repotype: enums.RepoBreeds, -+ expected_exception: Any, -+): - # Arrange -+ test_repo = Repo(cobbler_api) -+ test_repo.breed = input_repotype -+ rhn_sync_mock = mocker.patch.object(reposync_object, "rhn_sync") -+ yum_sync_mock = mocker.patch.object(reposync_object, "yum_sync") -+ apt_sync_mock = mocker.patch.object(reposync_object, "apt_sync") -+ rsync_sync_mock = mocker.patch.object(reposync_object, "rsync_sync") -+ wget_sync_mock = mocker.patch.object(reposync_object, "wget_sync") -+ - # Act -+ with expected_exception: -+ reposync_object.sync(test_repo) -+ -+ # Assert -+ call_count = sum( -+ ( -+ rhn_sync_mock.call_count, -+ yum_sync_mock.call_count, -+ apt_sync_mock.call_count, -+ rsync_sync_mock.call_count, -+ wget_sync_mock.call_count, -+ ) -+ ) -+ assert call_count == 1 -+ -+ -+def test_librepo_getinfo( -+ mocker: "MockerFixture", reposync_object: reposync.RepoSync, tmp_path: Path -+): -+ # Arrange -+ handle_mock = mocker.MagicMock() -+ result_mock = mocker.MagicMock() -+ mocker.patch("librepo.Handle", return_value=handle_mock) -+ mocker.patch("librepo.Result", return_value=result_mock) -+ -+ # Act -+ reposync_object.librepo_getinfo(str(tmp_path)) -+ -+ # Assert -+ handle_mock.perform.assert_called_with(result_mock) -+ result_mock.getinfo.assert_called() -+ -+ -+def test_create_local_file( -+ mocker: "MockerFixture", reposync_object: reposync.RepoSync, repo: Repo -+): -+ # Arrange -+ mocker.patch("cobbler.utils.filesystem_helpers.mkdir", autospec=True) -+ mock_open = mocker.patch("builtins.open", mocker.mock_open()) -+ input_dest_path = "" -+ input_repo = repo -+ input_output = True -+ -+ # Act -+ reposync_object.create_local_file(input_dest_path, input_repo, output=input_output) -+ -+ # Assert -+ # TODO: Extend checks -+ assert mock_open.call_count == 1 -+ assert mock_open.mock_calls[0] == mocker.call("config.repo", "w", encoding="UTF-8") -+ mock_open_handle = mock_open() -+ assert mock_open_handle.write.mock_calls[0] == mocker.call("[testrepo0]\n") -+ assert mock_open_handle.write.mock_calls[1] == mocker.call("name=testrepo0\n") -+ -+ -+def test_update_permissions( -+ mocker: "MockerFixture", reposync_object: reposync.RepoSync -+): -+ # Arrange -+ mocked_subprocess = mocker.patch( -+ "cobbler.utils.subprocess_call", autospec=True, return_value=0 -+ ) -+ path_to_update = "/my/fake/path" -+ expected_calls = [ -+ mocker.call(["chown", "-R", "root:www", path_to_update], shell=False), -+ mocker.call(["chmod", "-R", "755", path_to_update], shell=False), -+ ] -+ -+ # Act -+ reposync_object.update_permissions(path_to_update) -+ - # Assert -- assert False -+ assert mocked_subprocess.mock_calls == expected_calls diff --git a/cobbler-reposync.patch b/cobbler-reposync.patch deleted file mode 100644 index 4a2fff1..0000000 --- a/cobbler-reposync.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -up cobbler-3.3.7/cobbler/cli.py.reposync cobbler-3.3.7/cobbler/cli.py ---- cobbler-3.3.7/cobbler/cli.py.reposync 2024-11-17 14:02:02.000000000 -0700 -+++ cobbler-3.3.7/cobbler/cli.py 2025-10-04 19:21:03.379260526 -0600 -@@ -1184,7 +1184,13 @@ class CobblerCLI: - task_id = self.start_task("import", options) - elif action_name == "reposync": - self.parser.add_option("--only", dest="only", help="update only this repository name") -- self.parser.add_option("--tries", dest="tries", help="try each repo this many times", default=1) -+ self.parser.add_option( -+ "--tries", -+ dest="tries", -+ help="try each repo this many times", -+ default=1, -+ type="int", -+ ) - self.parser.add_option("--no-fail", dest="nofail", help="don't stop reposyncing if a failure occurs", - action="store_true") - (options, args) = self.parser.parse_args(self.args) diff --git a/cobbler.fc b/cobbler.fc deleted file mode 100644 index 568bf88..0000000 --- a/cobbler.fc +++ /dev/null @@ -1,28 +0,0 @@ -/etc/cobbler(/.*)? gen_context(system_u:object_r:cobbler_etc_t,s0) - -/etc/rc\.d/init\.d/cobblerd -- gen_context(system_u:object_r:cobblerd_initrc_exec_t,s0) - -/usr/bin/cobblerd -- gen_context(system_u:object_r:cobblerd_exec_t,s0) - -/usr/lib/systemd/system/cobblerd.* -- gen_context(system_u:object_r:cobblerd_unit_file_t,s0) - -/var/cache/cobbler(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/cobbler(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) - -/var/lib/tftpboot/aarch64(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/boot(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/etc(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/grub(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/images(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/images2(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/memdisk -- gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/menu\.c32 -- gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/ppc(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/pxelinux\.0 -- gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/pxelinux\.cfg(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/s390x(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) -/var/lib/tftpboot/yaboot -- gen_context(system_u:object_r:cobbler_var_lib_t,s0) - -/var/log/cobbler(/.*)? gen_context(system_u:object_r:cobbler_var_log_t,s0) - -/var/www/cobbler(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t,s0) diff --git a/cobbler.if b/cobbler.if deleted file mode 100644 index 4054eab..0000000 --- a/cobbler.if +++ /dev/null @@ -1,251 +0,0 @@ -## Cobbler installation server. - -######################################## -## -## Execute a domain transition to run cobblerd. -## -## -## -## Domain allowed to transition. -## -## -# -interface(`cobblerd_domtrans',` - gen_require(` - type cobblerd_t, cobblerd_exec_t; - ') - - corecmd_search_bin($1) - domtrans_pattern($1, cobblerd_exec_t, cobblerd_t) -') - -######################################## -## -## Execute cobblerd server in the cobblerd domain. -## -## -## -## Domain allowed to transition. -## -## -# -interface(`cobblerd_systemctl',` - gen_require(` - type named_unit_file_t; - type named_t; - ') - - systemd_exec_systemctl($1) - init_reload_services($1) - allow $1 named_unit_file_t:file read_file_perms; - allow $1 named_unit_file_t:service manage_service_perms; - - ps_process_pattern($1, named_t) -') - -######################################## -## -## Execute cobblerd init scripts in -## the init script domain. -## -## -## -## Domain allowed to transition. -## -## -# -interface(`cobblerd_initrc_domtrans',` - gen_require(` - type cobblerd_initrc_exec_t; - ') - - init_labeled_script_domtrans($1, cobblerd_initrc_exec_t) -') - - - -######################################## -## -## Read cobbler configuration dirs. -## -## -## -## Domain allowed access. -## -## -# -interface(`cobbler_list_config',` - gen_require(` - type cobbler_etc_t; - ') - - list_dirs_pattern($1, cobbler_etc_t, cobbler_etc_t) - files_search_etc($1) -') - - -######################################## -## -## Read cobbler configuration files. -## -## -## -## Domain allowed access. -## -## -# -interface(`cobbler_read_config',` - gen_require(` - type cobbler_etc_t; - ') - - read_files_pattern($1, cobbler_etc_t, cobbler_etc_t) - files_search_etc($1) -') - -######################################## -## -## Do not audit attempts to read and write -## cobbler log files. -## -## -## -## Domain to not audit. -## -## -# -interface(`cobbler_dontaudit_rw_log',` - gen_require(` - type cobbler_var_log_t; - ') - - dontaudit $1 cobbler_var_log_t:file rw_file_perms; -') - -######################################## -## -## Search cobbler lib directories. -## -## -## -## Domain allowed access. -## -## -# -interface(`cobbler_search_lib',` - gen_require(` - type cobbler_var_lib_t; - ') - - files_search_var_lib($1) - search_dirs_pattern($1, cobbler_var_lib_t, cobbler_var_lib_t) -') - -######################################## -## -## Read cobbler lib files. -## -## -## -## Domain allowed access. -## -## -# -interface(`cobbler_read_lib_files',` - gen_require(` - type cobbler_var_lib_t; - ') - - files_search_var_lib($1) - read_files_pattern($1, cobbler_var_lib_t, cobbler_var_lib_t) - read_lnk_files_pattern($1, cobbler_var_lib_t, cobbler_var_lib_t) -') - -######################################## -## -## Create, read, write, and delete -## cobbler lib files. -## -## -## -## Domain allowed access. -## -## -# -interface(`cobbler_manage_lib_files',` - gen_require(` - type cobbler_var_lib_t; - ') - - files_search_var_lib($1) - manage_files_pattern($1, cobbler_var_lib_t, cobbler_var_lib_t) - manage_lnk_files_pattern($1, cobbler_var_lib_t, cobbler_var_lib_t) - manage_dirs_pattern($1, cobbler_var_lib_t, cobbler_var_lib_t) -') - -######################################## -## -## All of the rules required to -## administrate an cobbler environment. -## -## -## -## Domain allowed access. -## -## -## -## -## Role allowed access. -## -## -## -# -interface(`cobblerd_admin',` - refpolicywarn(`$0($*) has been deprecated, use cobbler_admin() instead.') - cobbler_admin($1, $2) -') - -######################################## -## -## All of the rules required to -## administrate an cobbler environment. -## -## -## -## Domain allowed access. -## -## -## -## -## Role allowed access. -## -## -## -# -interface(`cobbler_admin',` - gen_require(` - type cobblerd_t, cobbler_var_lib_t, cobbler_var_log_t; - type cobbler_etc_t, cobblerd_initrc_exec_t; - type cobbler_tmp_t; - ') - - allow $1 cobblerd_t:process { ptrace signal_perms }; - ps_process_pattern($1, cobblerd_t) - - cobblerd_initrc_domtrans($1) - domain_system_change_exemption($1) - role_transition $2 cobblerd_initrc_exec_t system_r; - allow $2 system_r; - - files_search_etc($1) - admin_pattern($1, cobbler_etc_t) - - files_search_tmp($1) - admin_pattern($1, cobbler_tmp_t) - - files_search_var_lib($1) - admin_pattern($1, cobbler_var_lib_t) - - logging_search_logs($1) - admin_pattern($1, cobbler_var_log_t) -') diff --git a/cobbler.spec b/cobbler.spec index 69d7d40..ef2c04e 100644 --- a/cobbler.spec +++ b/cobbler.spec @@ -1,342 +1,1960 @@ -%global tftpboot_dir %{_sharedstatedir}/tftpboot/ +%global debug_package %{nil} -%global commit 700eb5bdfb28baba4de5e4083bec9e132a763bcb -%global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global selinuxtype targeted +%global tftp_dir /var/lib/tftpboot/ -# Tests require an installed system with root access -%bcond check 0 +%global commit0 f78af86a963b099d1e22586b24aedff9062da9c1 +%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) Name: cobbler -Version: 3.3.7 -Release: %autorelease +Version: 2.8.5 +Release: 1%{?dist} Summary: Boot server configurator -URL: https://cobbler.github.io/ -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +URL: http://cobbler.github.io/ +License: GPLv2+ Source0: https://github.com/cobbler/cobbler/archive/v%{version}/%{name}-%{version}.tar.gz -Source1: migrate-settings.sh -Source2: %{name}.te -Source3: %{name}.if -Source4: %{name}.fc -# Do not run coverage tests -Patch0: cobbler-nocov.patch -# Python 3.13 support (backport of https://github.com/cobbler/cobbler/pull/3842) -# https://bugzilla.redhat.com/show_bug.cgi?id=2335620 -Patch1: cobbler-python3.13.patch -# Upstream fix for reposync --tries -# https://bugzilla.redhat.com/show_bug.cgi?id=2401605 -# Backport of https://github.com/cobbler/cobbler/pull/3378 -Patch2: cobbler-reposync.patch -# Use systemctl is-active to prevent some SELinux denials checking service status -# https://bugzilla.redhat.com/show_bug.cgi?id=2353898 -Patch3: https://github.com/cobbler/cobbler/pull/3945.patch -BuildArch: noarch - -BuildRequires: make -BuildRequires: python%{python3_pkgversion}-devel -# Cheetah switched names from Cheetah3 to CT3 in its metadata in version 3.3.0. -# https://github.com/CheetahTemplate3/cheetah3/commit/673259b2d139b4ea970b1c2da12607b7ac39cbec -%if 0%{?fedora} >= 42 || 0%{?rhel} >= 10 -BuildRequires: %{py3_dist ct3} +BuildRequires: git +BuildRequires: /usr/bin/pathfix.py +BuildRequires: python2-devel +BuildRequires: python2-pyyaml +BuildRequires: python2-setuptools +%if 0%{?fedora} || 0%{?rhel} > 7 +BuildRequires: python2-cheetah %else -BuildRequires: %{py3_dist cheetah3} +BuildRequires: python-cheetah %endif -BuildRequires: %{py3_dist distro} -BuildRequires: %{py3_dist netaddr} -BuildRequires: %{py3_dist pyyaml} -BuildRequires: %{py3_dist requests} -BuildRequires: %{py3_dist schema} -BuildRequires: %{py3_dist setuptools} -# For docs -BuildRequires: %{py3_dist sphinx} -%if %{with check} -# For tests -BuildRequires: %{py3_dist crypt-r} -BuildRequires: %{py3_dist dnspython} -BuildRequires: %{py3_dist file-magic} -BuildRequires: %{py3_dist pytest-benchmark} -%endif - -# This ensures that the *-selinux package and all it’s dependencies are not pulled -# into containers and other systems that do not use SELinux -Requires: (%{name}-selinux if selinux-policy-%{selinuxtype}) Requires: httpd Requires: tftp-server -Requires: dosfstools -Requires: createrepo_c +Requires: createrepo Requires: rsync -Requires: xorriso +Requires: python2-simplejson +Requires: python2-pyyaml +%if 0%{?fedora} || 0%{?rhel} > 7 +Requires: python2-mod_wsgi +Requires: python2-cheetah +Requires: python2-netaddr +Requires: python2-urlgrabber +%else +Requires: mod_wsgi +Requires: python-cheetah +Requires: python-netaddr +Requires: python-urlgrabber +%endif +# syslinux is only available on x86 +%ifarch %{ix86} x86_64 +Requires: syslinux +%endif Requires: genisoimage -# Not everyone wants bash-completion...? -Recommends: bash-completion +%if 0%{?fedora} Requires: dnf-plugins-core -# syslinux is only available on x86 -Requires: (syslinux if (filesystem(x86-64) or filesystem(x86-32))) -# grub2 efi stuff is only available on x86 -Recommends: grub2-efi-ia32 -Recommends: grub2-efi-x64 -Recommends: logrotate -Recommends: %{py3_dist librepo} -Obsoletes: cobbler-web < 3.3 - +%else +Requires: yum-utils +%endif +# https://github.com/cobbler/cobbler/issues/1685 +Requires: /sbin/service +%if 0%{?fedora} || 0%{?rhel} >= 7 BuildRequires: systemd Requires(post): systemd Requires(preun): systemd Requires(postun): systemd +%else +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +%endif %description -Cobbler is a network install server. Cobbler supports PXE, ISO -virtualized installs, and re-installing existing Linux machines. The -last two modes use a helper tool, 'koan', that integrates with cobbler. -Cobbler's advanced features include importing distributions from DVDs -and rsync mirrors, kickstart templating, integrated yum mirroring, and -built-in DHCP/DNS Management. Cobbler has a XML-RPC API for integration -with other applications. +Cobbler is a network install server. Cobbler supports PXE, ISO +virtualized installs, and re-installing existing Linux machines. +The last two modes use a helper tool, 'koan', that integrates with +cobbler. There is also a web interface 'cobbler-web'. Cobbler's +advanced features include importing distributions from DVDs and rsync +mirrors, kickstart templating, integrated yum mirroring, and built-in +DHCP/DNS Management. Cobbler has a XMLRPC API for integration with +other applications. -%package selinux -Summary: SELinux policies for %{name} -Requires: selinux-policy-%{selinuxtype} -Requires(post): selinux-policy-%{selinuxtype} -BuildRequires: selinux-policy-devel +%package -n cobbler-web +Summary: Web interface for Cobbler BuildArch: noarch -%{?selinux_requires} +Requires: cobbler +%if 0%{?fedora} +Requires: python2-django1.11 +Requires: python2-ipaddress +%endif +%if 0%{?el7} +Requires: python2-django +Requires: python-ipaddress +%endif +%if 0%{?fedora} || 0%{?rhel} > 7 +Requires: python2-mod_wsgi +%else +Requires: Django > 1.6 +Requires: mod_wsgi +%endif +Requires: mod_ssl +Requires(post): openssl + +%description -n cobbler-web +Web interface for Cobbler that allows visiting +http://server/cobbler_web to configure the install server. -%description selinux -SELinux policies for %{name}. +%package -n koan +Summary: Helper tool that performs cobbler orders on remote machines +BuildArch: noarch +Requires: python2-simplejson +%if 0%{?fedora} || 0%{?rhel} > 7 +Requires: python2-ethtool +Requires: python2-urlgrabber +%else +Requires: python-ethtool +Requires: python-urlgrabber +%endif +Requires: /sbin/service +Requires: virt-install - -%package tests -Summary: Unit tests for cobbler -Requires: cobbler = %{version}-%{release} - -%description tests -Unit test files from the Cobbler project. - - -%package tests-containers -Summary: Dockerfiles and scripts to setup testing containers -Requires: cobbler = %{version}-%{release} - -%description tests-containers -Dockerfiles and scripts to setup testing containers. +%description -n koan +Koan stands for kickstart-over-a-network and allows for both +network installation of new virtualized guests and reinstallation +of an existing system. For use with a boot-server configured with Cobbler %prep %autosetup -p1 -mkdir -p selinux -cp -p %{SOURCE2} %{SOURCE3} %{SOURCE4} selinux/ - -# Cheetah switched names from Cheetah3 to CT3 in its metadata in version 3.3.0. -# https://github.com/CheetahTemplate3/cheetah3/commit/673259b2d139b4ea970b1c2da12607b7ac39cbec -%if 0%{?fedora} >= 42 || 0%{?rhel} >= 10 -sed -e 's/Cheetah3/CT3/' -i setup.py -%endif - +pathfix.py -pni "%{__python2} %{py2_shbang_opts}" . %build -. ./distro_build_configs.sh -%py3_build -make man - -# SELinux -make -f %{_datadir}/selinux/devel/Makefile %{name}.pp -bzip2 -9 %{name}.pp - +%py2_build %install -. ./distro_build_configs.sh -# bypass install errors ( don't chown in install step) -%py3_install ||: +%py2_install # cobbler -rm %{buildroot}%{_sysconfdir}/cobbler/cobbler.conf +rm $RPM_BUILD_ROOT%{_sysconfdir}/cobbler/cobbler.conf -mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d -mv %{buildroot}%{_sysconfdir}/cobbler/cobblerd_rotate %{buildroot}%{_sysconfdir}/logrotate.d/cobblerd +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d +mv $RPM_BUILD_ROOT%{_sysconfdir}/cobbler/cobblerd_rotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/cobblerd -# Create data directories in tftpboot_dir -mkdir -p %{buildroot}%{tftpboot_dir}/{boot,etc,grub/system{,_link},images{,2},ppc,pxelinux.cfg,s390x} +# Create data directories in tftp_dir +mkdir -p $RPM_BUILD_ROOT%{tftp_dir}/{boot,etc,grub,images{,2},ppc,pxelinux.cfg,s390x} -# systemd - move to proper location -mkdir -p %{buildroot}%{_unitdir} -mv %{buildroot}%{_sysconfdir}/cobbler/cobblerd.service %{buildroot}%{_unitdir} - -# ghosted files -touch %{buildroot}%{_sharedstatedir}/cobbler/web.ss - -# migrate-settings.sh -install -p -m0755 %SOURCE1 %{buildroot}%{_datadir}/cobbler/bin/migrate-settings.sh - -# SELinux -install -D -m 0644 %{name}.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 -install -D -p -m 0644 selinux/%{name}.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}.if - - -%if %{with check} -%check -%pytest -v +%if 0%{?rhel} == 6 +# sysvinit +mkdir -p %{_sysconfdir}/init.d +mv $RPM_BUILD_ROOT%{_sysconfdir}/cobbler/cobblerd $RPM_BUILD_ROOT%{_sysconfdir}/init.d/cobblerd +rm $RPM_BUILD_ROOT%{_sysconfdir}/cobbler/cobblerd.service +%else +# systemd +rm $RPM_BUILD_ROOT%{_sysconfdir}/cobbler/cobblerd +rm $RPM_BUILD_ROOT%{_sysconfdir}/init.d/cobblerd +mkdir -p $RPM_BUILD_ROOT%{_unitdir} +mv $RPM_BUILD_ROOT%{_sysconfdir}/cobbler/cobblerd.service $RPM_BUILD_ROOT%{_unitdir} %endif +# cobbler-web +rm $RPM_BUILD_ROOT%{_sysconfdir}/cobbler/cobbler_web.conf + +# koan +mkdir -p $RPM_BUILD_ROOT/var/spool/koan + %pre -if [ $1 -ge 2 ]; then +if (( $1 >= 2 )); then # package upgrade: backup configuration - DATE=$(date "+%%Y%%m%%d-%%H%%M%%S") - if [ ! -d "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}" ]; then - mkdir -p "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}" + DATE=$(date "+%Y%m%d-%H%M%S") + if [[ ! -d /var/lib/cobbler/backup/upgrade-${DATE} ]]; then + mkdir -p /var/lib/cobbler/backup/upgrade-${DATE} fi - for i in "config" "snippets" "templates" "triggers" "scripts"; do - if [ -d "%{_sharedstatedir}/cobbler/${i}" ]; then - cp -r "%{_sharedstatedir}/cobbler/${i}" "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}" + for i in "config" "snippets" "kickstarts" "triggers" "scripts"; do + if [[ -d /var/lib/cobbler/${i} ]]; then + cp -r /var/lib/cobbler/${i} /var/lib/cobbler/backup/upgrade-${DATE} fi done - if [ -d %{_sysconfdir}/cobbler ]; then - cp -r %{_sysconfdir}/cobbler "%{_sharedstatedir}/cobbler/backup/upgrade-${DATE}" + if [[ -d /etc/cobbler ]]; then + cp -r /etc/cobbler /var/lib/cobbler/backup/upgrade-${DATE} fi fi + +%if 0%{?rhel} == 6 +%post +# package install +if (( $1 == 1 )); then + /sbin/chkconfig --add cobblerd > /dev/null 2>&1 + /etc/init.d/cobblerd start > /dev/null 2>&1 + /etc/init.d/httpd restart > /dev/null 2>&1 +fi +%preun +# before last package is removed +if (( $1 == 0 )); then + /sbin/chkconfig --del cobblerd > /dev/null 2>&1 + /etc/init.d/cobblerd stop > /dev/null 2>&1 +fi +%postun +# after last package is removed +if (( $1 == 0 )); then + /etc/init.d/httpd condrestart > /dev/null 2>&1 +fi +%endif + + +%if 0%{?fedora} || 0%{?rhel} >= 7 %post %systemd_post cobblerd.service -# Fixup permission for world readable settings files -chmod 640 %{_sysconfdir}/cobbler/settings.yaml -chmod 600 %{_sysconfdir}/cobbler/mongodb.conf -chmod 600 %{_sysconfdir}/cobbler/modules.conf -chmod 640 %{_sysconfdir}/cobbler/users.conf -chmod 640 %{_sysconfdir}/cobbler/users.digest -chmod 750 %{_sysconfdir}/cobbler/settings.d -chmod 640 %{_sysconfdir}/cobbler/settings.d/* -chgrp apache %{_sysconfdir}/cobbler/settings.yaml -chgrp apache %{_sysconfdir}/cobbler/users.conf -chgrp apache %{_sysconfdir}/cobbler/users.digest -chgrp apache %{_sysconfdir}/cobbler/settings.d -chgrp apache %{_sysconfdir}/cobbler/settings.d/* -# Change from apache -if [ -f %{_sharedstatedir}/cobbler/web.ss ]; then - chown root %{_sharedstatedir}/cobbler/web.ss -fi - -%posttrans -# Migrate pre-3.2.1 settings to settings.yaml -if [ -f %{_sysconfdir}/cobbler/settings.rpmsave ]; then - echo warning: migrating old settings to settings.yaml - mv %{_sysconfdir}/cobbler/settings.yaml{,.rpmnew} - cp -a %{_sysconfdir}/cobbler/settings.{rpmsave,rpmorig} - mv %{_sysconfdir}/cobbler/settings.{rpmsave,yaml} - %{_datadir}/cobbler/bin/migrate-settings.sh -fi -# Add some missing options if needed -grep -q '^reposync_rsync_flags:' %{_sysconfdir}/cobbler/settings.yaml || echo -e '#ADDED:\nreposync_rsync_flags: "-rltDv --copy-unsafe-links"' >> %{_sysconfdir}/cobbler/settings.yaml %preun %systemd_preun cobblerd.service %postun %systemd_postun_with_restart cobblerd.service +%endif - -%pre selinux -%selinux_relabel_pre -s %{selinuxtype} - -%post selinux -%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 -%selinux_relabel_post -s %{selinuxtype} - -if [ "$1" -le "1" ]; then # First install - # the daemon needs to be restarted for the custom label to be applied - %systemd_postun_with_restart cobblerd.service -fi - -%postun selinux -if [ $1 -eq 0 ]; then - %selinux_modules_uninstall -s %{selinuxtype} %{name} - %selinux_relabel_post -s %{selinuxtype} -fi +%post -n cobbler-web +# Change the SECRET_KEY option in the Django settings.py file +# required for security reasons, should be unique on all systems +RAND_SECRET=$(openssl rand -base64 40 | sed 's/\//\\\//g') +sed -i -e "s/SECRET_KEY = ''/SECRET_KEY = \'$RAND_SECRET\'/" /usr/share/cobbler/web/settings.py %files %license COPYING -%doc AUTHORS.in README.md -%doc docs/developer-guide.rst docs/quickstart-guide.rst docs/installation-guide.rst -%dir %{_sysconfdir}/cobbler -%config(noreplace) %{_sysconfdir}/cobbler/auth.conf -%config(noreplace) %{_sysconfdir}/cobbler/boot_loader_conf/ -%config(noreplace) %{_sysconfdir}/cobbler/cheetah_macros -%config(noreplace) %{_sysconfdir}/cobbler/dhcp.template -%config(noreplace) %{_sysconfdir}/cobbler/dhcp6.template -%config(noreplace) %{_sysconfdir}/cobbler/dnsmasq.template -%config(noreplace) %{_sysconfdir}/cobbler/genders.template -%config(noreplace) %{_sysconfdir}/cobbler/import_rsync_whitelist -%config(noreplace) %{_sysconfdir}/cobbler/iso/ -%config(noreplace) %{_sysconfdir}/cobbler/logging_config.conf -%attr(600, root, root) %config(noreplace) %{_sysconfdir}/cobbler/modules.conf -%attr(600, root, root) %config(noreplace) %{_sysconfdir}/cobbler/mongodb.conf -%config(noreplace) %{_sysconfdir}/cobbler/named.template -%config(noreplace) %{_sysconfdir}/cobbler/ndjbdns.template -%config(noreplace) %{_sysconfdir}/cobbler/reporting/ -%config(noreplace) %{_sysconfdir}/cobbler/rsync.exclude -%config(noreplace) %{_sysconfdir}/cobbler/rsync.template -%config(noreplace) %{_sysconfdir}/cobbler/secondary.template -%attr(640, root, apache) %config(noreplace) %{_sysconfdir}/cobbler/settings.yaml -%attr(750, root, apache) %dir %{_sysconfdir}/cobbler/settings.d -%attr(640, root, apache) %config(noreplace) %{_sysconfdir}/cobbler/settings.d/bind_manage_ipmi.settings -%attr(640, root, apache) %config(noreplace) %{_sysconfdir}/cobbler/settings.d/manage_genders.settings -%attr(640, root, apache) %config(noreplace) %{_sysconfdir}/cobbler/settings.d/nsupdate.settings -%attr(640, root, apache) %config(noreplace) %{_sysconfdir}/cobbler/settings.d/windows.settings -%attr(640, root, apache) %config(noreplace) %{_sysconfdir}/cobbler/users.conf -%attr(640, root, apache) %config(noreplace) %{_sysconfdir}/cobbler/users.digest -%config(noreplace) %{_sysconfdir}/cobbler/version -%config(noreplace) %{_sysconfdir}/cobbler/windows/ -%config(noreplace) %{_sysconfdir}/cobbler/zone.template -%config(noreplace) %{_sysconfdir}/cobbler/zone_templates/ +%doc AUTHORS README.md docs/README.openvz docs/README.mysql +%config(noreplace) %{_sysconfdir}/cobbler %config(noreplace) %{_sysconfdir}/logrotate.d/cobblerd %config(noreplace) /etc/httpd/conf.d/cobbler.conf %{_bindir}/cobbler -%{_bindir}/cobbler-settings %{_bindir}/cobbler-ext-nodes %{_bindir}/cobblerd -%{_datadir}/bash-completion/ -%dir %{_datadir}/cobbler -%{_datadir}/cobbler/bin +%{_sbindir}/tftpd.py %{_mandir}/man1/cobbler.1* -%{_mandir}/man5/cobbler.conf.5* -%{_mandir}/man8/cobblerd.8* -%{python3_sitelib}/cobbler/ -%{python3_sitelib}/cobbler*.egg-info +%{python2_sitelib}/cobbler/ +%{python2_sitelib}/cobbler*.egg-info +%if 0%{?fedora} || 0%{?rhel} >= 7 %{_unitdir}/cobblerd.service -%{tftpboot_dir}/* +%else +/etc/init.d/cobblerd +%endif +%{tftp_dir}/* /var/www/cobbler -%dir %{_sharedstatedir}/cobbler -%ghost %attr(0755,root,root) %{_sharedstatedir}/cobbler/backup/ -%config(noreplace) %{_sharedstatedir}/cobbler/collections/ -%config(noreplace) %{_sharedstatedir}/cobbler/distro_signatures.json -%config(noreplace) %{_sharedstatedir}/cobbler/grub_config/ -%config(noreplace) %{_sharedstatedir}/cobbler/loaders/ -%config(noreplace) %{_sharedstatedir}/cobbler/scripts/ -%config(noreplace) %{_sharedstatedir}/cobbler/snippets/ -%config(noreplace) %{_sharedstatedir}/cobbler/templates/ -%config(noreplace) %{_sharedstatedir}/cobbler/triggers/ -%ghost %attr(0644,root,root) %{_sharedstatedir}/cobbler/lock -# Currently used for cli auth -%ghost %attr(0644,root,root) %{_sharedstatedir}/cobbler/web.ss +%config(noreplace) /var/lib/cobbler +%exclude /var/lib/cobbler/webui_sessions /var/log/cobbler -%files selinux -%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.* -%{_datadir}/selinux/devel/include/distributed/%{name}.if -%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name} +%files -n cobbler-web +%license COPYING +%doc AUTHORS README.md +%config(noreplace) /etc/httpd/conf.d/cobbler_web.conf +%attr(-,apache,apache) /usr/share/cobbler/web +%dir %attr(700,apache,root) /var/lib/cobbler/webui_sessions +%attr(-,apache,apache) /var/www/cobbler_webui_content/ -%files tests -%{_datadir}/cobbler/tests/ - -%files tests-containers -%{_datadir}/cobbler/docker/ +%files -n koan +%license COPYING +%doc AUTHORS README.md +%{_bindir}/cobbler-register +%{_bindir}/koan +%{_bindir}/ovz-install +%{_mandir}/man1/koan.1* +%{_mandir}/man1/cobbler-register.1* +%{python2_sitelib}/koan/ +%exclude %{python2_sitelib}/koan/sub_process.py* +%exclude %{python2_sitelib}/koan/opt_parse.py* +%exclude %{python2_sitelib}/koan/text_wrap.py* +/var/lib/koan +/var/log/koan +/var/spool/koan %changelog -%autochangelog +* Sun Dec 29 2019 Orion Poplawski - 2.8.5-1 +- Udate to 2.8.5 final release + +* Mon Oct 14 2019 Orion Poplawski - 2.8.5-0.3 +- Require python2-ipaddress + +* Thu Oct 10 2019 Orion Poplawski - 2.8.5-0.2 +- Require /sbin/service + +* Mon Aug 26 2019 Nicolas Chauvet - 2.8.5-0.1 +- Update to 2.8.5 - pre-release + +* Wed Jul 24 2019 Fedora Release Engineering - 2.8.4-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 2.8.4-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Nov 26 2018 Orion Poplawski - 2.8.4-5 +- Fix empty man pages (BZ 1653415) + +* Mon Nov 26 2018 Orion Poplawski - 2.8.4-4 +- Revert bind_manage_ipmi feature that is broken on 2.8 + +* Sun Nov 25 2018 Orion Poplawski - 2.8.4-3 +- Use pathfix.py to fix python shebangs + +* Sun Nov 25 2018 Orion Poplawski - 2.8.4-2 +- Make koan require python2-ethtool (BZ 1638933) + +* Sat Nov 24 2018 Orion Poplawski - 2.8.4-1 +- Update to 2.8.4 (Fixes BZ 1613292, 1643860, 1614433, CVE-2018-1000226, CVE-2018-10931) + +* Thu Jul 12 2018 Fedora Release Engineering - 2.8.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed May 30 2018 Orion Poplawski - 2.8.3-3 +- koan requires urlgrabber + +* Mon May 28 2018 Nicolas Chauvet - 2.8.3-2 +- Restore mergeability with epel7 + +* Mon May 28 2018 Nicolas Chauvet - 2.8.3-1 +- Update to 2.8.3 - security bugfix + +* Wed Feb 21 2018 Orion Poplawski - 2.8.2-6 +- Really fix django requires for Fedora 28+ + +* Tue Feb 20 2018 Orion Poplawski - 2.8.2-5 +- Fix django requires for Fedora 28+ + +* Fri Feb 09 2018 Igor Gnatenko - 2.8.2-4 +- Escape macros in %%changelog + +* Wed Feb 07 2018 Fedora Release Engineering - 2.8.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Feb 06 2018 Iryna Shcherbina - 2.8.2-2 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Mon Sep 18 2017 Orion Poplawski - 2.8.2-1 +- Update to 2.8.2 + +* Wed Aug 02 2017 Fedora Release Engineering - 2.8.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 2.8.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 21 2017 Orion Poplawski - 2.8.1-3 +- Suppress logrotate output + +* Mon Jun 12 2017 Orion Poplawski - 2.8.1-2 +- Fix module loading + +* Wed May 24 2017 Orion Poplawski - 2.8.1-1 +- Update to 2.8.1 + +* Fri Feb 17 2017 Orion Poplawski - 2.8.0-6 +- Add patch to fix handling of multiple bridge interfaces + +* Fri Feb 10 2017 Fedora Release Engineering - 2.8.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jan 27 2017 Orion Poplawski - 2.8.0-4 +- Fix named patch + +* Tue Jan 24 2017 Orion Poplawski - 2.8.0-3 +- Restart named-chroot service if used + +* Fri Jan 20 2017 Orion Poplawski - 2.8.0-2 +- Fix logrotate script for systemd (bug #1414617) + +* Thu Dec 1 2016 Orion Poplawski - 2.8.0-1 +- Update to 2.8.0 +- Restructure spec file + +* Thu Sep 1 2016 Orion Poplawski - 2.6.11-11.gitf78af86 +- Add patches to fix TEMPLATE_DIRS and use OrderedDict + +* Thu Aug 11 2016 Orion Poplawski - 2.6.11-10.gitf78af86 +- Force IPv4 connections to cobblerd from web proxy + +* Thu Jul 21 2016 Orion Poplawski - 2.6.11-9.gitf78af86 +- Suppress "virt-install --os-variant list" error messages + +* Thu Jul 21 2016 Orion Poplawski - 2.6.11-8.git5680bf8 +- Fix handling unknown os variants with osinfo-query + +* Tue Jul 19 2016 Fedora Release Engineering - 2.6.11-7.git95749a6 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Wed Jul 13 2016 Orion Poplawski - 2.6.11-6.git95749a6 +- Fix typo in koan/app.py + +* Wed Jul 13 2016 Orion Poplawski - 2.6.11-5.git13b035f +- Update to current git snapshot (bug #1276896) + +* Wed Feb 03 2016 Fedora Release Engineering - 2.6.11-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Feb 1 2016 Orion Poplawski - 2.6.11-3 +- Require dnf-plugins-core + +* Sun Jan 24 2016 Orion Poplawski - 2.6.11-2 +- Require dnf-core-plugins instead of yum-utils for repoquery on Fedora 23+ + +* Sun Jan 24 2016 Orion Poplawski - 2.6.11-1 +- Update to 2.6.11 +- Make cobbler arch specific to allow for arch specific requires + +* Thu Oct 1 2015 Orion Poplawski - 2.6.10-1 +- Update to 2.6.10 + +* Mon Jun 22 2015 Orion Poplawski - 2.6.9-1 +- Update to 2.6.9 + +* Wed Jun 17 2015 Fedora Release Engineering - 2.6.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue May 12 2015 Orion Poplawski - 2.6.8-2 +- Support django 1.8 in Fedora 22+ + +* Fri May 8 2015 Orion Poplawski - 2.6.8-1 +- Update to 2.6.8 +- Backport upstream patch to fix centos version detection (bug #1201879) + +* Tue Apr 28 2015 Orion Poplawski - 2.6.7-3 +- Add patch to fix virt-install support for F21+/EL7 (bug #1188424) + +* Mon Apr 27 2015 Orion Poplawski - 2.6.7-2 +- Create and own directories in tftp_dir + +* Wed Dec 31 2014 Orion Poplawski - 2.6.7-1 +- Update to 2.6.7 + +* Sun Oct 19 2014 Orion Poplawski - 2.6.6-1 +- Update to 2.6.6 + +* Fri Aug 15 2014 Orion Poplawski - 2.6.5-1 +- Update to 2.6.5 + +* Wed Aug 13 2014 Orion Poplawski - 2.6.4-2 +- Require Django >= 1.4 + +* Mon Aug 11 2014 Orion Poplawski - 2.6.4-1 +- Update to 2.6.4 + +* Fri Jul 18 2014 Orion Poplawski - 2.6.3-1 +- Update to 2.6.3 + +* Wed Jul 16 2014 Orion Poplawski - 2.6.2-1 +- Update to 2.6.2 +- Spec cleanup + +* Sat Jun 07 2014 Fedora Release Engineering - 2.6.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 23 2014 Orion Poplawski - 2.6.1-1 +- Update to 2.6.1 +- Drop koan patch applied upstream + +* Tue Apr 22 2014 Orion Poplawski - 2.6.0-2 +- Only require syslinux on x86 + +* Mon Apr 21 2014 Orion Poplawski - 2.6.0-1 +- Update to 2.6.0 + +* Mon Apr 21 2014 Orion Poplawski - 2.4.3-1 +- Update to 2.4.3 +- Add patch to fix bug #1047350 +- Add requires python-simplejson and virt-install for EL5 (bug #852422) +- Use updated systemd macros (bug #850061) +- Require python-ctypes on EL5 (bug #838884) + +* Sat Aug 03 2013 Fedora Release Engineering - 2.4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Jun 20 2013 James Cammarata 2.4.0-1 +- Release 2.4.0-1 (jimi@sngx.net) +* Fri May 24 2013 James Cammarata 2.4.0-beta6 +- New BETA release - 2.4.0 beta6 +* Mon Apr 22 2013 James Cammarata 2.4.0-beta5 +- A few bugfixes and rebuilding the RPM because of a goof + (jimi@sngx.net) + +* Wed Apr 03 2013 James Cammarata 2.4.0-beta4 +- 2.4.0-beta4 release +* Wed Dec 12 2012 James Cammarata 2.4.0-beta3 +- New release 2.4.0-beta3 +* Thu Oct 11 2012 James Cammarata 2.4.0-beta2 +- Modified spec version/release to be 2.4.0-beta2 (jimi@sngx.net) +- fixing up a bad commit merge (jimi@sngx.net) + +* Thu Oct 11 2012 James Cammarata 2.4.0-beta1 +- Beta Release 1 of 2.4.0 +- BUGFIX - Issue #329 - Systems no longer allow an add with an image for a + parent (jimi@sngx.net) +- BUGFIX - Issue #327 - revert 5afcff7 and fix in a more sane way + (jimi@sngx.net) +- Removed some duplicates created by reapplying a patch (jimi@sngx.net) +- BUGFIX - Issue #267 - old python-virtinst does not support --boot + (jimi@sngx.net) +- Revise install_post_puppet.py to use newer puppet syntax + (stephen@esstec.co.uk) +- Get rid of deprecated Puppet syntax so that cobbler works with Puppet 3.0 + (stephen@esstec.co.uk) +- Added ubuntu to dist check for named.conf location + (daniel.givens@rackspace.com) +- Expanded automatic determination of tftpboot path, isc dhcp and bind service + names and config files based on distro. (daniel@givenstx.com) +- Make the service name for DHCP and DNS restarts configurable for better + portable between distros. (daniel.givens@rackspace.com) +- Serial based on formatted date and revision number (alevy@mobitv.com) +- Correct undefined variable name (jbd@jbdenis.net) +- fix merge Issue #252 BUGFIX and #262 (daikame@gmail.com) +- Add check for valid driver_type before executing qemu-img (jimi@sngx.net) +- fix mistake remove import. (daikame@gmail.com) +- move exec method to utils.py, and catch unexpected exception. + (daikame@gmail.com) +- not check driver type on create method. (daikame@gmail.com) +- BUGFIX - Issue #305 - Incorrect Kickstart file when gPXE enabled + (jimi@sngx.net) +- BUGFIX - Issue #304 - Cobbler does not store values correctly for ksmeta + Objects were getting flattened improperly, so it was losing escapes/quoting + for values with spaces (jimi@sngx.net) +- add vmdk and raw file create support. (daikame@gmail.com) +- BUGFIX - Issue #267 - old python-virtinst does not support --boot + (jimi@sngx.net) +- Modified spec version/release to be 2.4.0-beta-1 (jimi@sngx.net) +- Initial commit for mysql backend support (jimi@sngx.net) +- BUGFIX - Issue #277 - move webroot to /srv/www for debian/ubuntu + (jimi@sngx.net) +- FEATURE - adding 'zonetype' variable for DNS zone rendering (jimi@sngx.net) +- BUGFIX - Issue #278 - cobbler import fails for ubuntu images due to rsync + args (jimi@sngx.net) +- BUGFIX - Issue #285 - update cobbler man page for incorrect options + (jimi@sngx.net) +- BUGFIX - Issue #241 - adding distro with blank name via XMLRPC should not + work (jimi@sngx.net) +- BUGFIX - Issue #272 - allow anamon to log entries when building systems based + on profiles (no corresponding system record) (jimi@sngx.net) +- BUGFIX - Issue #252 - fuzzy match on lvs name returns a false match + preventing LV creation (jimi@sngx.net) +- BUGFIX - Issue #287 - patch to allow templar to work without a config, which + was breaking the tftpd.py script (jimi@sngx.net) +- add qcow2 driver type (daikame@gmail.com) +- fix koan qemu-machine-type param test. (daikame@gmail.com) +- Only cosmetic cleanup - removed commands that were commented out, added + spaces for more clear code (flaks@bnl.gov) +- Modified sample.seed to make use kickstart_start and kickstart_done snippets + for debian. As a result the following cobbler features work for debian: - + prevent net boot looping - cobbler status reflects debian installations - + preseed file is downloaded a nd saved on the installed system as + /var/log/cobbler.seed Also made download_config_files_deb snippet, make use + of late_command New post_run_deb snippet allows to execute post installation + script. (flaks@bnl.gov) +- Some changes for testing (jimi@sngx.net) +- Minor fix for urlparse on older pythons (>2.5) (jimi@sngx.net) +- FEATURE - Issue #253 - Use PEERDNS=no for DHCP interfaces when name servers + are specified (jimi@sngx.net) +- install-tree for debian/ubuntu modified to take tree= from meta data. http, + ftp and nfs remote tree locations supported (flaks@bnl.gov) +- add support of custom logical volume name (daikame@gmail.com) +- Partial revert of 87acfc8b, and a minor change to bring the koan extra-args + inline with the PXE args (jimi@sngx.net) +- New default preseed, and a few minor changes to make ubuntu auto install work + better (jimi@sngx.net) +- Add support for qemu machine type to emulate (option --qemu-machine-type). + (isaoshimizu@gmail.com) +- Modern x86 kernels have 2048 char limit and this is needed to support + configurations with kickstart+NIC kernel params. Otherwise koan refuses to + accept the param list. (oliver@cpan.org) +- Allow koan's -S option to work for SuSE breed. Also remove -S for breed=None, + as I assume "Red Hat" is not a sane assumption for all Distros without a + breed. (oliver@cpan.org) +- Only add a udev net rule for an interface if the MAC is set. This fixes + behaviour whereby a dummy udev rule at eth0 forces the first NIC to get eth1 + post-install. (oliver@cpan.org) +- Make the domainname setting be the full eth0 DNS Name, minus the first dotted + part (and not the FQDN). (oliver@cpan.org) +- BUGFIX - Issue #252 - fuzzy match on lvs name returns a false match + preventing LV creation (jimi@sngx.net) +- Added back in the filesystem loader. (oliver@cpan.org) +- BUGFIX - Issue #247 - Reposync does not work from the web interface + (jimi@sngx.net) +- BUGFIX - Issue #246 - CentOS 5.x install fence_tools to /sbin/ + (jimi@sngx.net) +- Fix post_report trigger typo (jimi@sngx.net) +- Some fixes for koan running with an old virt-install (jimi@sngx.net) +- Define pxe_menu_items variable when creating PXE files for systems + (jthiltges2@unl.edu) +- Refactor PXE and GRUB menu item creation into a separate function + (jthiltges2@unl.edu) +- django 1.4 and later have deprecated the old TEMPLATE_LOADERS and replaced + them with a new app_directories.Loader (oliver@cpan.org) +- Add support for UEFI boot to the subnet, but not for defined systems yet. + (erinn.looneytriggs@gmail.com) +- Fix redhat import whitelist for Fedora 17 (jimi@sngx.net) +- Fix unittest on the case of haven't virt-install libs. (daikame@gmail.com) +- os_version for debian should be similar to ubunty for virt-install to work + changed tree in app.py so that I can use debian mirror different from cobbler + server (flaks@bnl.gov) +- fedora 17 changed the output of ifconfig command. This will make IFNAME set + in snippets again (flaks@bnl.gov) +- remove edit for now (flaks@bnl.gov) +- Fixed snippets for bonded_bridge_slave and a few other fixes for koan/web GUI + (jimi@sngx.net) +- Initial support for bonded_bridge_slave type. TODO: modifying snippets to + actually make it work... (jimi@sngx.net) +- The webui_sessions directory belongs only to cobbler-web + (chutzimir@gmail.com) +- RPM: put cobbler*.conf files only in /etc/httpd/conf.d + (cristian.ciupitu@yahoo.com) +- better fix for pull request #228 (jorgen.maas@gmail.com) +- make rpms failed because the misc/ directory containing the augeas lense + could not be found. this simple diff fixes that. (jorgen.maas@gmail.com) +- Ubuntu actually requires auto=true in kopts See + http://serverfault.com/a/144290/39018 (ekirpichov@gmail.com) +- Whitespace cleanup for the new openvz stuff (jimi@sngx.net) +- Remove dead code (useless imports) (cristian.ciupitu@yahoo.com) +- BUGFIX extra-args option problems (daikame@gmail.com) +- FIX koan virt-install tests. (daikame@gmail.com) +- added debian support to prevent net boot looping (flaks@bnl.gov) +- README.openvz: - added (nvrhood@gmail.com) +- scripts/ovz-install: - added support for "services" kickstart option - + corrected repos and installation source processing (nvrhood@gmail.com) +- cobbler.spec, setup.py: - added scripts/ovz-install (nvrhood@gmail.com) +- koan/openvzcreate.py, scripts/ovz-install: - changes in copyright notice + (nvrhood@gmail.com) +- koan/app.py: - bug in koan: size of freespace on VG expressed as float with + comma, but need fload with point (nvrhood@gmail.com) +- koan/app.py: - added type "openvz" (nvrhood@gmail.com) +- cobbler/collection.py: - openvz containers doesn't need to boot from PXE, so + we prevent PXE-menu creation for such profiles. (nvrhood@gmail.com) +- cobbler/item_profile.py, cobbler/utils.py: - added "openvz" virtualization + type (nvrhood@gmail.com) +- cobbler/item_system.py: - added openvz for virt_type (nvrhood@gmail.com) +- [BUGFIX] template errors can hit an exception path that references an + undefined variable (jimi@sngx.net) +- If the call to int() fails, inum has no value, thus the reference to inum in + the except clause causes an UnboundLocalError when it tries to reference + inum. (joshua@azariah.com) +- Add new ubuntu (alpha) version to codes.py (jorgen.maas@gmail.com) +- Not all remove current ifcfg- post_install_network_config (me@n0ts.org) +- Update systemctl script to resolve some issues (jimi@sngx.net) +- More spec fixes (jimi@sngx.net) +- Removing replicate_use_default_rsync_options setting and setting + replicate_rsync_options to existing rsync default. Issue #58 + (john@julienfamily.com) +- Commit for RFE: Expose rsync options during replication. Issue #58 + (john@julienfamily.com) +- Yet more HTML/CSS fixes, cleaning up some overly large inputs caused by other + CSS changes (jimi@sngx.net) +- More HTML/CSS improvements for new weblayout (jimi@sngx.net) +- CSS improvements for the tabbed layout (jimi@sngx.net) +- Fix for settings edit using the new tab format (jimi@sngx.net) +- Added a cancel button to replace the reset button (jimi@sngx.net) +- Fix saving of multiselect fields (jimi@sngx.net) +- Modification to generic_edit template to use tabs for categories plus some + miscellaneous cleanup (jimi@sngx.net) +- Adding an example line for redhat imports to the whitelist file + (jimi@sngx.net) +- Another minor fix for suse imports - fixing up name when using --available-as + (already done in other import modules) - allowing multiple arch imports (also + already done in other imports) (jimi@sngx.net) +- Some fixups for suse using --available-as (jimi@sngx.net) +- Fix for import when using --available-as - currently rsyncs full remote tree, + changing that to only import files in a white list - some modifications to + import modules to clean some things up and make available-as work better - + fix in utils.py for path_tail, which was not working right and appending the + full path (jimi@sngx.net) +- Run the same sed command on the default distributed config file to ensure + consistent indentation (jimi@sngx.net) +- Add setting to enable/disable dynamic settings changes Adding + cobblersettings.aug to distributed files, since we need a copy that doesn't + insert tabs Added a "cobbler check" that checks if dynamic settings is + enabled and prints a sed command to cleanup the settings file spacing/indents + (jimi@sngx.net) +- Change cli command "settings" to "setting" to match other commands (which are + not plurarlized) (jimi@sngx.net) +- Removing commented-out try/except block in config.py, didn't mean to commit + this (jimi@sngx.net) +- Fixed/improved CLI reporting for settings (jimi@sngx.net) +- Added support for validating setting type when saving Also fixed up the + augeas stuff to save lists and hashes correctly (jimi@sngx.net) +- Fix for incorrect redirect when login times out when looking at a setting + edit (jimi@sngx.net) +- Dynamic settings edit support for the web GUI (jimi@sngx.net) +- Added ability to write settings file via augeas (jimi@sngx.net) +- Initial support for modifying settings live Changed settings do not survive a + reboot and revert to what's in /etc/cobbler/settings TODO: * report --name + show a single setting * validate settings based on type (string, list, bool, + etc.) * web support for editing * persisting settings after change + (jimi@sngx.net) +- Branch for 2.4.0, updated spec and setup.py (jimi@sngx.net) + +* Sun Jun 17 2012 James Cammarata 2.2.3-2 +- [BUGFIX] re-enable writing of DHCP entries for non-pxeboot-enabled systems + unless they're static (jimi@sngx.net) +* Tue Jun 05 2012 James Cammarata 2.2.3-1 +- [BUGFIX] add dns to kernel commandline when using static interface + (frido@enu.zolder.org) +- [BUGFIX] issue #196 - repo environment variables bleed into other repos + during sync process This patch has reposync cleanup/restore any environment + variables that were changed during the process (jimi@sngx.net) +- BUGFIX quick dirty fix to work around an issue where cobbler would not log in ldap + usernames which contain uppercase characters. at line 60 instead of "if user + in data", "if user.lower() in data" is used. It would appear the parser puts + the usernames in data[] in lowercase, and the comparison fails because "user" + does hold capitalizations. (matthiasvandegaer@hotmail.com) +- [BUGFIX] simplify SELinux check reporting + * Remove calls to semanage, policy prevents apps from running that directly + (and speeds up check immensely) + * Point users at a wiki page which will contain details on ensuring cobbler + works with SELinux properly (jimi@sngx.net) +- [BUGFIX] issue #117 - incorrect permissions on files in /var/lib/cobbler + (j-nomura@ce.jp.nec.com) +- [BUGFIX] issue #183 - update objects mgmt classes field when a mgmt class is + renamed (jimi@sngx.net) +- [BUGFIX] adding some untracked directories and the new augeas lense to the + setup.py and cobbler.spec files (jimi@sngx.net) +- [FEATURE] Added ability to disable grubby --copy-default behavior for distros that may + have problems with it (jimi@sngx.net) +- [SECURITY] Major changes to power commands: + * Fence options are now based on /usr/sbin/fence_* - so basically anything the + fence agents package provides. + * Templates will now be sourced from /etc/cobbler/power/fence_.template. + These templates are optional, and are only required if you want to do extra + options for a given command. - All options for the fence agent command are sent + over STDIN. + * Support for ipmitool is gone, use fence_ipmilan instead (which uses ipmitool + under the hood anyway). This may apply to other power types if they were provided + by a fence_ command. + * Modified labels for the power options to be more descriptive. (jimi@sngx.net) +- [BUGFIX] issue #136 - don't allow invalid characters in names when copying + objects (jimi@sngx.net) +- [BUGFIX] issue #168 - change input_string_or_list to use shlex for split This + function was using a regular string split, which did not allow quoted or + escaped strings to be preserved. (jimi@sngx.net) +- [BUGFIX] Correct method to process the template file. This Fixes the previous issue + and process the template. (charlesrg@gmail.com) +- [BUGFIX] issue #170 - koan now checks length of drivers list before indexing + (daniel@defreez.com) +- [BUGFIX] Issue #153 - distro delete doesn't remove link from + /var/www/cobbler/links Link was being created incorrectly during the import + (jimi@sngx.net) +- [FEATURE] snippets: save/restore boot-device on ppc64 on fedora17 (nacc@us.ibm.com) +- [BUGFIX] Fixed typo in pre_anamon (brandor5@gmail.com) +- [BUGFIX] Added use of $http_port to server URL in pre_anamon and post_anamon + (brandor5@gmail.com) +- [BUGFIX] Fixed dnsmasq issue regarding missing dhcp-host entries (cobbler@basjes.nl) +- [BUGFIX] in buildiso for RedHat based systems. The interface->ip resolution was + broken when ksdevice=bootif (default) (jorgen.maas@gmail.com) +- [BUGFIX] rename failed for distros that did not live under ks_mirror + (jimi@sngx.net) +- [BUGFIX] Partial revert of commit 3c81dd3081 - incorrectly removed the 'extends' + template directive, breaking rendering in django (jimi@sngx.net) +- [BUGFIX] Reverting commit 1d6c53a97, which was breaking spacewalk Changed the web + interface stuff to use the existing extended_version() remote call + (jimi@sngx.net) +- [BUGFIX] Minor fix for serializer_pretty_json change, setting indent to 0 was still + causing more formatted JSON to be output (jimi@sngx.net) +- [SECURITY] Adding PrivateTmp=yes to the cobblerd.service file for systemd + (jimi@sngx.net) +- [FEATURE] add a config option to enable pretty JSON output (disabled by default) + (aronparsons@gmail.com) +- [BUGFIX] issue #107 - creating xendomains link for autoboot fails Changing an + exception to a printed warning, there's no need to completely bomb out on the + process for this (jimi@sngx.net) +- [BUGFIX] issue #28 - Cobbler drops errors on the floor during a replicate + Added additional logging to add_ functions to report an error if the add_item + call returns False (jimi@sngx.net) +- [BUGFIX] add requirement for python-simplejson to koan's package + (jimi@sngx.net) +- [BUGFIX] action_sync: fix sync_dhcp remote calls (nacc@us.ibm.com) +- [BUGFIX] Add support for KVM paravirt (justin@thespies.org) +- [BUGFIX] Makefile updates for debian/ubuntu systems (jimi@sngx.net) +- [BUGFIX] fix infinite netboot cycle with ppc64 systems (nacc@us.ibm.com) +- [BUGFIX] Don't allow Templar classes to be created without a valid config + There are a LOT of places in the templar.py code that use self.settings + without checking to make sure a valid config was passed in. This could cause + random stack dumps when templating, so it's better to force a config to be + passed in. Thankfully, there were only two pieces of code that actually did + this, one of which was the tftpd management module which was fixed elsewhere. + (jimi@sngx.net) +- [BUGFIX] instance of Templar() was being created without a config passed in + This caused a stack dump when the manage_in_tftpd module tried to access the + config settings (jimi@sngx.net) +- [BUGFIX] Fix for issue #17 - Make cobbler import be more squeaky when it doesn't + import anything (jimi@sngx.net) +- [FEATURE] autoyast_sample: save and restore boot device order (nacc@us.ibm.com) +- [BUGFIX] Fix for issue #105 - buildiso fails Added a new option for buildiso: + --mkisofs-opts, which allows specifying extra options to mkisofs TODO: add + input box to web interface for this option (jimi@sngx.net) +- [BUGFIX] incorrect lower-casing of kickstart paths - regression from issue + #43 (jimi@sngx.net) +- [FEATURE] Automatically detect and support bind chroot (orion@cora.nwra.com) +- [FEATURE] Add yumopts to kickstart repos (orion@cora.nwra.com) +- [BUGFIX] Fix issue with cobbler system reboot (nacc@us.ibm.com) +- [BUGFIX] fix stack trace in write_pxe_file if distro==None (smoser@brickies.net) +- [BUGFIX] Changed findkeys function to be consisten with keep_ssh_host_keys snippet + (flaks@bnl.gov) +- [BUGFIX] Fix for issue #15 - cobbler image command does not recognize + --image-type=memdisk (jimi@sngx.net) +- [BUGFIX] Issue #13 - reposync with --tries > 1 always repeats, even on + success The success flag was being set when the reposync ran, but didn't + break out of the retry loop - easy fix (jimi@sngx.net) +- [BUGFIX] Fix for issue #42 - kickstart not found error when path has leading + space (jimi@sngx.net) +- [BUGFIX] Fix for issue #26 - Web Interface: Profile Edit + * Added jquery UI stuff + * Added javascript to generic_edit template to make all selects in the + class "edit" resizeable + (jimi@sngx.net) +- [BUGFIX] Fix for issue #53 - cobbler system add without --profile exits 0, + but does nothing (jimi@sngx.net) +- [BUGFIX] Issue #73 - Broken symlinks on distro rename from web_gui + (jimi@sngx.net) +- regular OS version maintenance (jorgen.maas@gmail.com) +- [BUGFIX] let koan not overwrite existing initrd+kernel (ug@suse.de) +- [FEATURE] koan: + * Port imagecreate to virt-install (crobinso@redhat.com) + * Port qcreate to virt-install (crobinso@redhat.com) + * Port xen creation to virt-install (crobinso@redhat.com) +- [FEATURE] new snippet allows for certificate-based RHN registration + (jim.nachlin@gawker.com) +- [FEATURE] Have autoyast by default behave more like RHEL, regarding networking etc. + (chorn@fluxcoil.net) +- [BUGFIX] sles patches (chorn@fluxcoil.net) +- [BUGFIX] Simple fix for issue where memtest entries were not getting created after + installing memtest86+ and doing a cobbler sync (rharriso@redhat.com) +- [BUGFIX] REMOTE_ADDR was not being set in the arguments in calls to CobblerSvc + instance causing ip address not to show up in install.log. + (jweber@cofront.net) +- [BUGFIX] add missing import of shutil (aparsons@redhat.com) +- [BUGFIX] add a sample kickstart file for ESXi (aparsons@redhat.com) +- [BUGFIX] the ESXi installer allows two nameservers to be defined (aparsons@redhat.com) +- [BUGFIX] close file descriptors on backgrounded processes to avoid hanging %%pre + (aparsons@redhat.com) +- [BUGFIX] rsync copies the repositories with --delete hence deleting everyhting local + that isn't on the source server. The createrepo then creates (following the + default settings) a cache directory ... which is deleted by the next rsync + run. Putting the cache directory in the rsync exclude list avoids this + deletion and speeds up running reposync dramatically. (niels@basjes.nl) +- [BUGFIX] Properly blame SELinux for httpd_can_network_connect type errors on initial + setup. (michael.dehaan@gmail.com) +- fix install=... kernel parameter when importing a SUSE distro (ug@suse.de) +- [BUGFIX] Force Django to use the system's TIME_ZONE by default. + (jorgen.maas@gmail.com) +- [FEATURE] Separated check for permissions from file existence check. + (aaron.peschel@gmail.com) +- [BUGFIX] If the xendomain symlink already exists, a clearer error will be produced. + (aaron.peschel@gmail.com) +- [FEATURE] Adding support for ESXi5, and fixing a few minor things (like not having a + default kickstart for esxi4) Todos: * The esxi*-ks.cfg files are empty, and + need proper kickstart templates * Import bug testing and general kickstart + testing (jimi@sngx.net) +- [FEATURE] Adding basic support for gPXE (jimi@sngx.net) +- [FEATURE] Add arm as a valid architecture. (chuck.short@canonical.com) +- [SECURITY] Changes PYTHON_EGG_CACHE to a safer path owned just by the webserver. + (chuck.short@canonical.com) +- [BUGFIX] koan: do not include ks_meta args when obtaining tree When obtaining the tree + for Ubuntu machines, ensure that ks_meta args are not passed as part of the + tree if they exist. (chuck.short@canonical.com) +- [FEATURE] koan: Use grub2 for --replace-self instead of grubby The koan option + '--replace-self' uses grubby, which relies on grub1, to replace a local + installation by installing the new kernel/initrd into grub menu entries. + Ubuntu/Debian no longer uses it grub1. This patch adds the ability to use + grub2 to add the kernel/initrd downloaded to a menuentry. On reboot, it will + boot from the install kernel reinstalling the system. Fixes (LP: #766229) + (chuck.short@canonical.com) +- [BUGFIX] Fix reposync missing env variable for debmirror Fixes missing HOME env + variable for debmirror by hardcoding the environment variable to + /var/lib/cobbler (chuck.short@canonical.com) +- [BUGFIX] Fix creation of repo mirror when importing iso. Fixes the creation of a + disabled repo mirror when importing ISO's such as the mini.iso that does not + contain any mirror/packages. Additionally, really enables 'apt' as possible + repository. (chuck.short@canonical.com) +- [BUGFIX] adding default_template_type to settings.py, caused some issues with + templar when the setting was not specified in the /etc/cobbler/settings + (jimi@sngx.net) +- [BUGFIX] fix for following issue: can't save networking options of a system + in cobbler web interface. (#8) (jimi@sngx.net) +- [BUGFIX] Add a new setting to force CLI commands to use the localhost for xmlrpc + (chjohnst@gmail.com) +- [BUGFIX] Don't blow up on broken links under /var/www/cobbler/links + (jeffschroeder@computer.org) +- [SECURITY] Making https the default for the cobbler web GUI. Also modifying the cobbler- + web RPM build to require mod_ssl and mod_wsgi (missing wsgi was an oversight, + just correcting it now) (jimi@sngx.net) +- [FEATURE] Adding authn_pam. This also creates a new setting - authn_pam_service, which + allows the user to configure which PAM service they want to use for cobblerd. + The default is the 'login' service (jimi@sngx.net) +- [SECURITY] Change in cobbler.spec to modify permissions on webui sessions directory to + prevent non-privileged user acccess to the session keys (jimi@sngx.net) +- [SECURITY] Enabling CSRF protection for the web interface (jimi@sngx.net) +- [SECURITY] Convert all yaml loads to safe_loads for security/safety reasons. + https://bugs.launchpad.net/ubuntu/+source/cobbler/+bug/858883 (jimi@sngx.net) +- [FEATURE] Added the setting 'default_template_type' to the settings file, and created + logic to use that in Templar().render(). Also added an option to the same + function to pass the template type in as an argument. (jimi@sngx.net) +- [FEATURE] Initial commit for adding support for other template languages, namely jinja2 + in this case (jimi@sngx.net) + +* Tue Nov 15 2011 Scott Henson 2.2.2-1 +- Changelog update (shenson@redhat.com) +- Fixed indentation on closing tr tag (gregswift@gmail.com) +- Added leader column to the non-generic tables so that all tables have the + same layout. It leaves room for a checkbox and multiple selects i nthese + other tables as well. (gregswift@gmail.com) +- Added action class to the event log link to bring it inline with other table + functions (gregswift@gmail.com) +- buildiso bugfix: overriding dns nameservers via the dns kopt now works. + reported by Simon Woolsgrove (jorgen.maas@gmail.com) +- Fix for pxegen, where an image without a distro could cause a stack dump on + cobbler sync (jimi@sngx.net) +- Added initial support for specifying the on-disk format of virtual disks, + currently supported for QEMU only when using koan (jimi@sngx.net) +- Add fedora16, rawhide, opensuse 11.2, 11.3, 11.4 and 12.1 to codes.py This + should also fix ticket #611 (jorgen.maas@gmail.com) +- Use VALID_OS_VERSIONS from codes.py in the redhat importer. + (jorgen.maas@gmail.com) +- Cleanup: use utils.subprocess_call in services.py (jorgen.maas@gmail.com) +- Cleanup: use utils.subprocess_call in remote.py. (jorgen.maas@gmail.com) +- Cleanup: use utils.subprocess_call in scm_track.py. Also document that 'hg' + is a valid option in the settings file. (jorgen.maas@gmail.com) +- Dont import the sub_process module when it's not needed. + (jorgen.maas@gmail.com) +- Fixes to import_tree() to actually copy files to a safe place when + --available-as is specified. Also some cleanup to the debian/ubuntu import + module for when --available-as is specified. (jimi@sngx.net) +- Modification to import processes so that rsync:// works as a path. These + changes should also correct the incorrect linking issue where the link + created in webdir/links/ pointed at a directory in ks_mirror without the arch + specified, resulting in a broken link if --arch was specified on the command + line Also removed the .old import modules for debian/ubuntu, which were + replaced with the unified manage_import_debian_ubuntu.py (jimi@sngx.net) +- cleanup: use codes.VALID_OS_VERSIONS in the freebsd importer + (jorgen.maas@gmail.com) +- cleanup: use codes.VALID_OS_VERSIONS in the debian/ubuntu importer + (jorgen.maas@gmail.com) +- Bugfix: add the /var/www/cobbler/pub directory to setup.py. Calling buildiso + from cobbler-web now works as expected. (jorgen.maas@gmail.com) +- BUGFIX: patch koan (xencreate) to correct the same issue that was broken for + vmware regarding qemu_net_type (jimi@sngx.net) +- BUGFIX: fixed issue with saving objects in the webgui failing when it was the + first of that object type saved. (jimi@sngx.net) +- Minor fix to the remote version to use the nicer extended version available + (jimi@sngx.net) +- Fix a bug in buildiso when duplicate kopt keys are used. Reported and tested + by Simon Woolsgrove (jorgen.maas@gmail.com) +- Fix for koan, where vmwcreate.py was not updated to accept the network type, + causing failures. (jimi@sngx.net) +- Added a %%post section for the cobbler-web package, which replaces the + SECRET_KEY field in the Django settings.py with a random string + (jimi@sngx.net) +- BUGFIX: added sign_puppet_certs_automatically to settings.py. The fact that + this was missing was causing failures in the the pre/post puppet install + modules. (jimi@sngx.net) +- set the auto-boot option for a virtual machine (ug@suse.de) +- Correction for koan using the incorrect default port for connecting to + cobblerd (jimi@sngx.net) +- config/settings: add "manage_tftpd: 1" (default setting) + (cristian.ciupitu@yahoo.com) + +* Wed Oct 05 2011 Scott Henson 2.2.1-1 +- Import changes for systemd from the fedora spec file (shenson@redhat.com) + +* Wed Oct 05 2011 Scott Henson 2.2.0-1 +- Remove the version (shenson@redhat.com) +- New upstream 2.2.0 release (shenson@redhat.com) +- Add networking snippet for SuSE systems. (jorgen.maas@gmail.com) +- Add a /etc/hosts snippet for SuSE systems. (jorgen.maas@gmail.com) +- Add a proxy snippet for SuSE systems. (jorgen.maas@gmail.com) +- Buildiso: make use of the proxy field (SuSE, Debian/Ubuntu). + (jorgen.maas@gmail.com) +- Rename buildiso.header to buildiso.template for consistency. Also restore the + local LABEL in the template. (jorgen.maas@gmail.com) +- Bugfix: uppercase macaddresses used in buildiso netdevice= keyword cause the + autoyast installer to not setup the network and thus fail. + (jorgen.maas@gmail.com) +- Buildiso: minor cleanup diff. (jorgen.maas@gmail.com) +- Buildiso: behaviour changed after feedback from the community. + (jorgen.maas@gmail.com) +- Build standalone ISO from the webinterface. (jorgen.maas@gmail.com) +- Fix standalone ISO building for SuSE, Debian and Ubuntu. + (jorgen.maas@gmail.com) +- add proxy field to field_info.py (jorgen.maas@gmail.com) +- Remove FreeBSD from the unix breed as it has it's own now. Also, add freebsd7 + as it is supported until feb 2013. Minor version numbers don't make sense, + also removed. (jorgen.maas@gmail.com) +- Add a proxy field to profile and system objects. This is useful for + environments where systems are not allowed to make direct connections to the + cobbler/repo servers. (jorgen.maas@gmail.com) +- Introduce a "status" field to system objects. Useful in environments where + DTAP is required, the possible values for this field are: development, + testing, acceptance, production (jorgen.maas@gmail.com) +- Buildiso: only process profiles for selected systems. (jorgen.maas@gmail.com) +- Buildiso: add batch action to build an iso for selected profiles. + (jorgen.maas@gmail.com) +- Buildiso: use management interface feature. (jorgen.maas@gmail.com) +- Buildiso: get rid of some code duplication (ISO header). + (jorgen.maas@gmail.com) +- Buildiso: add interface to macaddr resolution. (jorgen.maas@gmail.com) +- Buildiso: add Debian and Ubuntu support. (jorgen.maas@gmail.com) +- Buildiso: select systems from the webinterface. (jorgen.maas@gmail.com) +- Fix an exception when buildiso is called from the webinterface. + (jorgen.maas@gmail.com) +- fix power_virsh template to check dom status before executing command. + (bpeck@redhat.com) +- if hostname is not resolvable do not fail and use that hostname + (msuchy@redhat.com) +- Removed action_import module and references to it in code to prevent future + confusion. (jimi@sngx.net) +- Fixing redirects after a failed token validation. You should now be + redirected back to the page you were viewing after having to log back in due + to a forced login. (jimi@sngx.net) +- Use port to access cobbler (peter.vreman@acision.com) +- Stripping "g" from vgs output case-insensitive runs faster + (mmello@redhat.com) +- Adding ability to create new sub-directories when saving snippets. Addresses + trac #634 - save new snippet fails on non existing subdir (jimi@sngx.net) +- Fix traceback when executing "cobbler system reboot" with no system name + specified Trac ticket #578 - missing check for name option with system reboot + (jimi@sngx.net) +- bind zone template writing (jcallaway@squarespace.com) +- Removing the duplicate lines from importing re module (mmello@redhat.com) +- Merge remote-tracking branch 'jimi1283/bridge-interface' (shenson@redhat.com) +- Modification to allow DEPRECATED options to be added as options to optparse + so they work as aliases (jimi@sngx.net) +- Re-adding the ability to generate a random mac from the webui. Trac #543 + (Generate random mac missing from 2.x webui) (jimi@sngx.net) +- Merge remote-tracking branch 'jsabo/fbsdreplication' (shenson@redhat.com) +- Tim Verhoeven (Tue. 08:35) (Cobbler attachment) + Subject: [PATCH] Add support to koan to select type of network device to + emulate To: cobbler development list + Date: Tue, 2 Aug 2011 14:35:21 +0200 (shenson@redhat.com) +- Hello, (shenson@redhat.com) +- scm_track: Add --all to git add options to handle deletions (tmz@pobox.com) +- Moved HEADER heredoc from action_buildiso.py to + /etc/cobbler/iso/buildiso.header (gbailey@terremark.com) +- Enable replication for FreeBSD (jsabo@verisign.com) +- Merge branch 'master' into bridge-interface (jimi@sngx.net) +- Remove json settings from local_get_cobbler_xmlrpc_url() (jsabo@verisign.com) +- 1) Moving --subnet field to --netmask 2) Created DEPRECATED_FIELDS structure + in field_info.py to deal with moves like this * also applies to the + bonding->interface_type move for bridged interface support (jimi@sngx.net) +- Merge remote-tracking branch 'jimi1283/bridge-interface' (shenson@redhat.com) +- Fixing up some serializer module stuff: * detecting module load errors when + trying to deserialize collections * added a what() function to all the + serializer modules for ID purposes * error detection for mongo stuff, + including pymongo import problems as well as connection issues + (jimi@sngx.net) +- Cleanup of bonding stuff in all files, including webui and koan. Additional + cleanup in the network config scripts, and re-added the modprobe.conf + renaming code to the post install network config. (jimi@sngx.net) +- Initial rework to allow bridge/bridge slave interfaces Added static route + configuration to pre_install_network_config Major cleanup/reworking of + post_install_network_config script (jimi@sngx.net) +- Fix for bad commit of some json settings test (jimi@sngx.net) +- Merge remote-tracking branch 'jsabo/fbsdimport' (shenson@redhat.com) +- Adding initial support for FreeBSD media importing (jsabo@verisign.com) +- Setting TIME_ZONE to None in web/settings.py causes a 500 error on a RHEL5 + system with python 2.4 and django 1.1. Commenting out the config line has the + same effect as setting it to None, and prevents the 500. (jimi@sngx.net) +- Fixes for importing RHEL6: * path_tail() was previously moved to utils, a + couple places in the import modules still used self.path_tail instead + of utils.path_tail, causing a stack dump * Fixed an issue in + utils.path_tail(), which was using self. still from when it was a member + of the import class * When mirror name was set on import and using + --available-as, it was appending a lot of junk instead of just using the + specified mirror name (jimi@sngx.net) +- Merge branch 'master' of git://git.fedorahosted.org/cobbler (jimi@sngx.net) +- Fix a quick error (shenson@redhat.com) +- Set the tftpboot dir for rhel6 hosts (jsabo@verisign.com) +- Fixed a typo (jorgen.maas@gmail.com) +- Added an extra field in the system/interface item. The field is called + "management" and should be used to identify the management interface, this + could be useful information for multihomed systems. (jorgen.maas@gmail.com) +- In the event log view the data/time field got wrapped which is very annoying. + Fast fix for now, i'm pretty sure there are better ways to do this. + (jorgen.maas@gmail.com) +- Event log soring on date reverted, let's sort on id instead. Reverse over + events in the template. Convert gmtime in the template to localtime. + (jorgen.maas@gmail.com) +- Sort the event log by date/time (jorgen.maas@gmail.com) +- Remove some unsupported OS versions from codes.py (jorgen.maas@gmail.com) +- Some changes in the generate_netboot_iso function/code: - Users had to supply + all system names on the commandline which they wanted to include in the ISO + boot menu. This patch changes that behaviour; all systems are included by + default now. You can still provide an override with the --systems parameter, + thus making this feature more consistent with what one might expect from + reading the help. - While at it I tried to make the code more readable and + removed some unneeded iterations. - Prevent some unneeded kernel/initrd + copies. - You can now override ip/netmask/gateway/dns parameters with + corresponding kernel_options. - Fixed a bug for SuSE systems where ksdevice + should be netdevice. - If no ksdevice/netdevice (or equivalent) has been + supplied via kernel_options try to guess the proper interface to use, but + don't just use one if we can't be sure about it (e.g. for multihomed + systems). (jorgen.maas@gmail.com) +- Add SLES 11 to codes.py (jorgen.maas@gmail.com) +- Add support for Fedora15 to codes.py (jorgen.maas@gmail.com) +- Django uses the timezone information from web/settings.py Changing the + hardcoded value to None forces Django to use the systems timezone instead of + this hardcoded value (jorgen.maas@gmail.com) +- Fix cobbler replication for non-RHEL hosts. The slicing used in the + link_distro function didn't work for all distros. (jsabo@verisign.com) +- Fix vmware esx importing. It was setting the links dir to the dir the iso was + mounted on import (jsabo@verisign.com) +- Merge remote-tracking branch 'jsabo/webuifun' (shenson@redhat.com) +- Fix bug with esxi replication. It wasn't rsyncing the distro over if the + parentdir already existed. (jsabo@verisign.com) +- Merge branch 'master' of git://git.fedorahosted.org/cobbler (jimi@sngx.net) +- Initial commit for mongodb backend support and adding support for settings as + json (jimi@sngx.net) +- Web UI patches from Greg Swift applied (jsabo@verisign.com) +- whitespace fix (dkilpatrick@verisign.com) +- Fix to fix to py_tftp change to sync in bootloaders + (dkilpatrick@verisign.com) +- Fixing a bug reported by Jonathan Sabo. (dkilpatrick@verisign.com) +- Merge branch 'master' of git://git.fedorahosted.org/cobbler + (dkilpatrick@verisign.com) +- Revert "Jonathan Sabo (June 09) (Cobbler)" + (shenson@redhat.com) +- Unmount and deactivate all software raid devices after searching for ssh keys + (jonathan.underwood@gmail.com) +- Merge remote-tracking branch 'ugansert/master' (shenson@redhat.com) +- Jonathan Sabo (June 09) (Cobbler) Subject: [PATCH] Fix + issue with importing distro's on new cobbler box To: cobbler development list + Date: Thu, 9 Jun 2011 16:17:20 -0400 + (shenson@redhat.com) +- missing manage_rsync option from config/settings (jsabo@criminal.org) +- Remove left-over debugging log message (dkilpatrick@verisign.com) +- SUSE requires the correct arch to find kernel+initrd on the inst-source + (ug@suse.de) +- added autoyast=... parameter to the ISO building code when breed=suse + (ug@suse.de) +- calculate meta data in the XML file without cheetah variables now + (ug@suse.de) +- render the cheetah template before passing the XML to the python XML parser + (ug@suse.de) +- made the pathes flexible to avoid problem on other distros than fedora/redhat + (ug@suse.de) +- bugfix (ug@suse.de) +- Merge patch from stable (cristian.ciupitu@yahoo.com) +- utils: initialize main_logger only when needed (cristian.ciupitu@yahoo.com) +- During refactor, failed to move templater initialization into + write_boot_files_distro. (dkilpatrick@verisign.com) +- Fixed a couple of simple typos. Made the boot_files support work (added + template support for the key, defined the img_path attribute for that + expansion) (dkilpatrick@verisign.com) +- Fixes to get to the "minimally tested" level. Fixed two syntax errors in + tftpd.py, and fixed refences to api and os.path in manage_in_tftpd.py + (dkilpatrick@verisign.com) +- Rebasing commit, continued. (kilpatds@oppositelock.org) +- Change the vmware stuff to use 'boot_files' as the space to set files that + need to be available to a tftp-booting process (dkilpatrick@verisign.com) +- Added 'boot_files' field for 'files that need to be put into tftpboot' + (dkilpatrick@verisign.com) +- Merge conflict. (kilpatds@oppositelock.org) +- Add in a default for puppet_auto_setup, thanks to Camille Meulien + for finding it. (shenson@redhat.com) +- Add a directory remap feature to fetchable_files processing. /foo/*=/bar/ + Client requests for "/foo/baz" will be turned into requests for /bar/baz. + Target paths are evaluated against the root filesystem, not tftpboot. + Template expansion is done on "bar/baz", so that would typically more + usefully be something like /boot/*=$distro_path/boot + (dkilpatrick@verisign.com) +- Removed trailing whitespace causing git warnings (dkilpatrick@verisign.com) +- Fix a bug where tftpd.py would throw if a client requested '/'. + (dkilpatrick@verisign.com) +- Allow slop in the config, not just the client. modules: don't hardcode + /tftpboot (dkilpatrick@verisign.com) +- Moved footer to actually float at the bottom of the page or visible section, + whichever is further down. Unfortunately leaves a slightly larger margin pad + on there. Will have to see if it can be made cleaner (gregswift@gmail.com) +- Removed right padding on delete checkboxes (gregswift@gmail.com) +- Adjusted all the self closing tags to end eith a " />" instead of not having + a space separating them (gregswift@gmail.com) +- Added "add" button to the filter bit (gregswift@gmail.com) +- Removed "Enabled" label on checkboxes, this can be added via css as part of + the theme if people want it using :after { content: " Enabled" } Padded the + context-tip off the checkboxes so that it lines up with most of the other + context tips instead of being burring in the middle of the form + (gregswift@gmail.com) +- Added bottom margin on text area so that it isn't as tight next to other form + fields (gregswift@gmail.com) +- Added id tags to the forms for ks templates and snippets Set some margins for + those two forms, they were a bit scrunched because they didn't have a + sectionbody fieldset and legend Removed inline formatting of input sizes on + those two pages Set the textareas in those two pages via css + (gregswift@gmail.com) +- Made the tooltips get hiddent except for on hover, with a small image + displayed in their place (gregswift@gmail.com) +- Added a top margin to the submit/reset buttons... looks cleaner having some + space. (gregswift@gmail.com) +- Changed generic edit form to the following: - Made blocks into fieldsets + again, converting the h2 to a legend. I didn't mean to change this the first + time through. - Pulled up a level, removing the wrapping div, making each + fieldset contain an order list, instead of each line being an ordered list, + which was silly of me. - Since it went up a level, un-indented all of the + internal html tags 2 spaces - changed the place holder for the network + widgets to spans so that they displayed cleanly (Don't like the spans either, + but its for the javascript) In the stylesheet just changed the + div.sectionbody to ol.sectionbody (gregswift@gmail.com) +- Fixed closing ul->div on multiselect section. Must have missed it a few + commits ago. (gregswift@gmail.com) +- IE uses input styling such as borders even on checkboxes... was not intended, + so has been cleared for checkboxes (gregswift@gmail.com) +- This is a change to the multiselect buttons view, i didn't mean to commit + the style sheet along with the spelling check fixes, but since I did might as + well do the whole thing and then erevert it later if people dislike it + (gregswift@gmail.com) +- Fixed another postition mispelling (gregswift@gmail.com) +- fixed typo postition should be position (gregswift@gmail.com) +- Returned the multiselect section to being div's, since its actually not a set + of list items, it is a single list item. Re-arranged the multiselect so that + the buttons are centered between the two sections Removed all of the line + breaks form that section Made the select box headings actually labels moved + the order of multiselect after sectionbody definition due to inheritence + (gregswift@gmail.com) +- Restored select boxes to "default" styling since they are not as cleanly css- + able Made visibly selected action from Batch Actions bold, mainly so by + default Batch Action is bold. Moved text-area and multi-select sizing into + stylesheet. re-alphabetized some of the tag styles Made the default login's + text inputs centered, since everything else on that page is + (gregswift@gmail.com) +- Added missing bracket from two commits ago in the stylesheet. + (gregswift@gmail.com) +- Re-added the tool tips for when they exist in the edit forms and set a style + on them. Removed an extraneous line break from textareas in edit form + (gregswift@gmail.com) +- Fixed javascript where I had used teh wrong quotes, thus breaking the network + interface widgets (gregswift@gmail.com) +- Added label and span to cleanup block (gregswift@gmail.com) +- Added version across all of the template loads so that the footer is + populated with it (gregswift@gmail.com) +- all css: - set overall default font size of 1em - added missing tags to the + cleanup css block - fixed button layout -- list line buttons are smaller font + to keep lines smaller -- set action input button's size - set indentation and + bolding of items in batch action - redid the list formatting -- removed zebra + stripes, they share the standard background now -- hover is now the + background color of the old darker zebra stripe -- selected lines now + background of the older light zebra stripe - added webkit border radius + (gregswift@gmail.com) +- generic_lists.tmpl - Removed force space on the checklists generic_lists.tmpl + - Added javascript to allow for selected row highlighting + (gregswift@gmail.com) +- Removed inline formatting from import.tmpl Made the context tips spans + (gregswift@gmail.com) +- Made both filter-adder elements exist in the same li element + (gregswift@gmail.com) +- Added default formatting for ordered lists Added formatting for the new + multiselect unordered list Changed old div definitions for the multiselect to + li Added label formatting for inside sectionbody to line up all the forms. + (gregswift@gmail.com) +- Adjusted multiselect section to be an unordered list instead of a div + (gregswift@gmail.com) +- Moved the close list tag inside the for loop, otherwise we generate lots of + nasty nested lists (gregswift@gmail.com) +- Changed edit templates to use ol instead of ul, because it apparently helps + out those using screen readers, and we should be making things accessible, + yes? (gregswift@gmail.com) +- Re-structured the edit templates to be unordered lists. Standardized the + tooltip/contextual data as context-tip class Redid the delete setup so that + its Delete->Really? Instead of Delete:Yes->Really? Same number of check + boxes. Setup the delete bit so that Delete and Really are labels for the + checkboxes and there isn't extraneous html input tags (gregswift@gmail.com) +- Added top margin on the filter adder (gregswift@gmail.com) +- Adjusted single action item buttons to be in the same list element, as it + makes alignment cleaner, and more sense from a grouping standpoint Set + submenubar default height to 26px Set submenubar's alignment to be as clean + as I've been able to get so far. (gregswift@gmail.com) +- Set background color back to original (gregswift@gmail.com) +- Adjusted all buttons to hover invert from blue to-blackish, the inverse of + the normal links (which go blackish to blue) but left the text color the + same. i'm not sure its as pretty, but dfinately more readable. Plus the + color change scheme is more consistant. Also made table buttons smaller than + other buttons (gregswift@gmail.com) +- Fixed width on paginate select boxes to auto, instead of over 200px + (gregswift@gmail.com) +- Removed margin around hr tag, waste of space, and looks closer to original + now (gregswift@gmail.com) +- Removed extraneous body div by putting user div inside container. + (gregswift@gmail.com) +- Adjuested style sheet to improve standardization of form fields, such as + buttons, text input widths, and fontsizes in buttons vs drop downs. + (gregswift@gmail.com) +- Some menu re-alignment on both menubar and submenubar (gregswift@gmail.com) +- Got the container and the user display into a cleaner size alignment to + display on the screen. less chance of horiz scroll (gregswift@gmail.com) +- Fix to get login form a bit better placed without duplicate work + (gregswift@gmail.com) +- pan.action not needed... .action takes care of it (gregswift@gmail.com) +- Removed padding on login screen (gregswift@gmail.com) +- Redid action and button classes to make them look like buttons.. still needs + work. Resized pointer classes to make things a bit more level on that row + (gregswift@gmail.com) +- New cleanup at the top negates the need for this table entry + (gregswift@gmail.com) +- Removed the body height to 99%%. Was doing this for sticky footer, but + current path says its not needed (gregswift@gmail.com) +- Added some windows and mac default fonts Made the body relative, supposed to + help with the layout Set text color to slightly off black.. was told there is + some odd optical reasoning behind this (gregswift@gmail.com) +- Made class settings for the table rows a touch more specific in the css + (gregswift@gmail.com) +- Added "normalization" to clean up cross browser differences at top of + style.css (gregswift@gmail.com) +- Added button class to all buttons, submit, and resets (gregswift@gmail.com) +- Fixed sectionheader to not be styled as actions... they are h2! + (gregswift@gmail.com) +- Fixed container reference from class to id (gregswift@gmail.com) +- Added missing action class on the "Create new" links in generic_list.tmpl + (gregswift@gmail.com) +- Revert part of 344969648c1ce1e753af because RHEL5's django doesn't support + that (gregswift@gmail.com) +- removed underline on remaing links (gregswift@gmail.com) +- Fixed the way the logo was placed on the page and removed the excess + background setting. (gregswift@gmail.com) +- Some cleanup to the style sheet along - removed fieldset since no more exist + (not sure about this in long run.... we'll see) - cleaned up default style + for ul cause it was causing override issues - got menubar and submenu bar + mostly settled (gregswift@gmail.com) +- Fixed submenu bar ul to be identified by id not class (gregswift@gmail.com) +- Rebuilt primary css stylesheet - not complete yet (gregswift@gmail.com) +- Removed logout from cobbler meft hand menu (gregswift@gmail.com) +- Next step in redoing layout: - added current logged in user and logout button + to a div element at top of page - fixed content div from class to id - added + footer (version entry doesn't work for some reason) - links to cobbler + website (gregswift@gmail.com) +- in generic_list.tmpl - set the edit link to class 'action' - merged the + creation of the edit action 'View kickstart' for system and profile + (gregswift@gmail.com) +- Replaced tool tip as div+em with a span classed as tooltip. tooltip class + just adds italic. (gregswift@gmail.com) +- Fixed table header alignment to left (gregswift@gmail.com) +- Take the logo out of the html, making it a css element, but retain the + location and basic feel of the placement. (gregswift@gmail.com) +- Step one of redoing the action list, pagination and filters. - split + pagination and filters to two tmpl files - pagination can be called on its + own (so it can live in top and bottom theoretically) - filter will eventually + include pagination so its on the bottom - new submenubar includes pagination + - new submenubar does age specific actiosn as links instead of drop downs + cause there is usually 1, rarely 2, never more. (gregswift@gmail.com) +- Removed pagination from left hand column (gregswift@gmail.com) +- Removed an erroneous double quote from master.tmpl (gregswift@gmail.com) +- Went a bit overboard and re-adjusted whitespace in all the templates. Trying + to do the code in deep blocks across templates can be a bit tedious and + difficult to maintain. While the output is not perfect, at least the + templates are more readable. (gregswift@gmail.com) +- Removed remaining vestige of action menu shading feature + (gregswift@gmail.com) +- Removed header shade references completely from the lists and the code from + master.tmpl (gregswift@gmail.com) +- Wrapped setting.tmpl error with the error class (gregswift@gmail.com) +- Changed h3 to h2 inside pages Made task_created's h4 into a h1 and + standarized with the other pages (gregswift@gmail.com) +- Standardized header with a hr tag before the form tags (gregswift@gmail.com) +- Added base width on the multiple select boxes, primarily for when they are + empty (gregswift@gmail.com) +- Removed fieldset wrappers and replaced legends with h1 and h2 depending on + depth (gregswift@gmail.com) +- Adjusted logic for the legent to only change one word, instead of the full + string (gregswift@gmail.com) +- Removed empty cell from table in generic_edit.tmpl (gregswift@gmail.com) +- Revert 8fed301e61f28f8eaf08e430869b5e5df6d02df0 because it was to many + different changes (gregswift@gmail.com) +- Removed empty cell from table in generic_edit.tmpl (gregswift@gmail.com) +- Moved some cobbler admin and help menus to a separate menu in the menubar + (gregswift@gmail.com) +- Added HTML5 autofocus attribute to login.tmpl. Unsupported browsers just + ignores this. (gregswift@gmail.com) +- Re-built login.tmpl: - logo isn't a link anymore back to the same page - logo + is centered with the login form - fieldset has been removed - set a css class + for the body of the login page, unused for now. And the css: - removed the + black border from css - centered the login button as well + (gregswift@gmail.com) +- Made the links and span.actions hover with the same color as used for the + section headings (gregswift@gmail.com) +- Removed as much in-HTML placed formatting as possible and implemented them in + css. The main bit remaining is the ul.li floats in paginate.tmpl + (gregswift@gmail.com) +- Cleaned up single tag closing for several of the checkboxes + (gregswift@gmail.com) +- removed a trailing forward slash that was creating an orphaned close span tag + (gregswift@gmail.com) +- Relabeled cells in thead row from td tags to th (gregswift@gmail.com) +- Added tr wrapper inside thead of tables for markup validation + (gregswift@gmail.com) +- Use :// as separator for virsh URIs (atodorov@otb.bg) +- Create more condensed s390 parm files (thardeck@suse.de) +- Add possibility to interrupt zPXE and to enter CMS (thardeck@suse.de) +- Cleanup the way that we download content - Fixes a bug where we were only + downloading grub-x86_64.efi (shenson@redhat.com) +- Port this config over as well (shenson@redhat.com) +- Only clear logs that exist. (bpeck@redhat.com) +- Pull in new configs from the obsoletes directory. (shenson@redhat.com) +- Removed extraneous close row tag from events.tmpl (gregswift@gmail.com) +- Fixed spelling of receive in enoaccess.tmpl (gregswift@gmail.com) +- Added missing close tags on a few menu unordered list items in master.tmpl + (gregswift@gmail.com) +- Added missing "for" correlation tag for labels in generic_edit.tmpl + (gregswift@gmail.com) +- Removed extraneous close divs from generic_edit.tmpl (gregswift@gmail.com) +- Removing old and unused template files (gregswift@gmail.com) +- Add support for Ubuntu distros. (andreserl@ubuntu.com) +- Koan install tree path for Ubuntu/Debian distros. (andreserl@ubuntu.com) +- Fixing hardlink bin path. (andreserl@ubuntu.com) +- Do not fail when yum python module is not present. (andreserl@ubuntu.com) +- Add Ubuntu/Debian support to koan utils for later use. (andreserl@ubuntu.com) +- typo in autoyast xml parsing (ug@suse.de) +- Minor change to validate a token before checking on a user. (jimi@sngx.net) +- get install tree from install=... parameter for SUSE (ug@suse.de) +- handle autoyast XML files (ug@suse.de) +- fixed support for SUSE in build-iso process. Fixed a typo (ug@suse.de) +- added SUSE breed to import-webui (ug@suse.de) +- Merge remote-tracking branch 'lanky/master' (shenson@redhat.com) +- Merge remote-tracking branch 'jimi1283/master' (shenson@redhat.com) +- added support for suse-distro import (ug@suse.de) +- Fix a sub_process Popen call that did not set close_fds to true. This causes + issues with sync where dhcpd keeps the XMLRPC port open and prevents cobblerd + from restarting (jimi@sngx.net) +- Cleanup of unneccsary widgets in distro/profile. These needed to be removed + as part of the multiselect change. (jimi@sngx.net) +- Yet another change to multiselect editing. Multiselects are now presented as + side-by-side add/delete boxes, where values can be moved back and forth and + only appear in one of the two boxes. (jimi@sngx.net) +- Fix for django traceback when logging into the web interface with a bad + username and/or password (jimi@sngx.net) +- Fix for snippet/kickstart editing via the web interface, where a 'tainted + file path' error was thrown (jimi@sngx.net) +- added the single missed $idata.get() item (stuart@sjsears.com) +- updated post_install_network_config to use $idata.get(key, "") instead of + $idata[key]. This stops rendering issues with the snippet when some keys are + missing (for example after an upgrade from 2.0.X to 2.1.0, where a large + number of new keys appear to have been added.) and prevents us from having to + go through all system records and add default values for them. + (stuart@sjsears.com) +- Take account of puppet_auto_setup in install_post_puppet.py + (jonathan.underwood@gmail.com) +- Take account of puppet_auto_setup in install_pre_puppet.py + (jonathan.underwood@gmail.com) +- Add puppet snippets to sample.ks (jonathan.underwood@gmail.com) +- Add puppet_auto_setup to settings file (jonathan.underwood@gmail.com) +- Add snippets/puppet_register_if_enabled (jonathan.underwood@gmail.com) +- Add snippets/puppet_install_if_enabled (jonathan.underwood@gmail.com) +- Add configuration of puppet pre/post modules to settings file + (jonathan.underwood@gmail.com) +- Add install_post_puppet.py module (jonathan.underwood@gmail.com) +- Add install_pre_puppet.py module (jonathan.underwood@gmail.com) +- Apply a fix for importing red hat distros, thanks jsabo (shenson@redhat.com) +- Changes to action/batch actions at top of generic list pages * move logic + into views, where it belongs * simplify template code * change actions/batch + actions into drop down select lists * added/modified javascript to deal with + above changes (jimi@sngx.net) +- Minor fixes to cobbler.conf, since the AliasMatch was conflicting with the + WSGI script alias (jimi@sngx.net) +- Initial commit for form-based login and authentication (jimi@sngx.net) +- Convert webui to use WSGI instead of mod_python (jimi@sngx.net) +- Save field data in the django user session so the webui doesn't save things + unnecessarily (jimi@sngx.net) +- Make use of --format in git and use the short hash. Thanks Todd Zullinger + (shenson@redhat.com) +- We need git. Thanks to Luc de Louw (shenson@redhat.com) +- Start of the change log supplied by Michael MacDonald + (shenson@redhat.com) +- Fix typo in cobbler man page entry for profile (jonathan.underwood@gmail.com) +- Fix cobbler man page entry for parent profile option + (jonathan.underwood@gmail.com) +- Set SELinux context of host ssh keys correctly after reinstallation + (jonathan.underwood@gmail.com) +- Fixing bug with img_path. It was being used prior to being set if you have + images. (jonathan.sabo@gmail.com) +- Add firstboot install trigger mode (jonathan.sabo@gmail.com) +- Fix old style shell triggers by checking for None prior to adding args to arg + list and fix indentation (jonathan.sabo@gmail.com) +- Bugfix: restore --no-fail functionality to CLI reposync + (icomfort@stanford.edu) +- Add the ability to replicate the new object types (mgmtclass,file,package). + (jonathan.sabo@gmail.com) +- Add VMware ESX and ESXi replication. (jonathan.sabo@gmail.com) +- Add batch delete option for profiles and mgmtclasses + (jonathan.sabo@gmail.com) +- Spelling fail (shenson@redhat.com) +- Remove deploy as a valid direct action (shenson@redhat.com) +- Trac Ticket #509: A fix that does not break everything else. + (https://fedorahosted.org/cobbler/ticket/509) (andrew@eiknet.com) +- Only chown the file if it does not already exist (shenson@redhat.com) +- Modification to cobbler web interface, added a drop-down select box for + management classes and some new javascript to add/remove items from the + multi-select (jimi@sngx.net) +- Check if the cachedir exists before we run find on it. (shenson@redhat.com) +- Fix trac#574 memtest (shenson@redhat.com) +- Add network config snippets for esx and esxi network configuration + $SNIPPET('network_config_esxi') renders to: (jonathan.sabo@gmail.com) +- Trac Ticket #510: Modified 'cobbler buildiso' to use + /var/cache/cobbler/buildiso by default. Added a /etc/cobbler/settings value + of 'buildisodir' to make it setable by the end user. --tempdir will still + overwrite either setting on the command line. (andrew@eiknet.com) +- Add img_path to the metadata[] so that it's rendered out in the esxi pxe + templates. Add os_version checks for esxi in kickstart_done so that it uses + wget or curl depending on what's known to be available. + (jonathan.sabo@gmail.com) +- Added --sync-all option to cobbler replicate which forces all systems, + distros, profiles, repos and images to be synced without specifying each. + (rrr67599@rtpuw027.corpnet2.com) +- Added manage_rsync option which defaults to 0. This will make cobbler not + overwrite a local rsyncd.conf unless enabled. + (rrr67599@rtpuw027.corpnet2.com) +- Added semicolon master template's placement of the arrow in the page heading + (gregswift@gmail.com) +- Quick fix from jsabo (shenson@redhat.com) +- added hover line highlighting to table displays (gregswift@gmail.com) +- Modification to generic_edit template so that the name field is not a text + box when editing. (jimi@sngx.net) +- Minor fixes for mgmt classes webui changes. - Bug when adding a new obj, + since obj is None it was causing a django stack dump - Minor tweaks to + javascript (jimi@sngx.net) +- Fixed error in which the json files for mgmtclasses was not being deleted + when a mgmtclass was removed, meaning they showed back up the next time + cobblerd was restarted (jimi@sngx.net) +- Fixed syntax error in clogger.py that was preventing cobblerd from starting + (jimi@sngx.net) +- Supports an additional initrd from kernel_options. (bpeck@redhat.com) +- Remove a bogus self (shenson@redhat.com) +- Re-enable debmirror. (chuck.short@canonical.com) +- Extending the current Wake-on-Lan support for wider distro compatibility. + Thanks to Dustin Kirkland. (chuck.short@canonical.com) +- Dont hardcode /etc/rc.d/init.d redhatism. (chuck.short@canonical.com) +- Newer (pxe|sys)linux's localboot value produces unreliable results when using + documented options, -1 seems to provide the best supported value + (chuck.short@canonical.com) +- Detect the webroot to be used based on the distro. + (chuck.short@canonical.com) +- If the logfile path doesn't exist, don't attempt to create the log file. + Mainly needed when cobbler is required to run inside the build env + (cobbler4j). Thanks to Dave Walker + (chuck.short@canonical.com) +- Implement system power status API method and CLI command (crosa@redhat.com) +- Update setup files to use proper apache configuration path + (konrad.scherer@windriver.com) +- Debian has www-data user for web server file access instead of apache. + (konrad.scherer@windriver.com) +- Update init script to work under debian. (konrad.scherer@windriver.com) +- Use lsb_release module to detect debian distributions. Debian release is + returned as a string because it could be sid which will never have a version + number. (konrad.scherer@windriver.com) +- Fix check for apache installation (konrad.scherer@windriver.com) +- Handle Cheetah version with more than 3 parts (konrad.scherer@windriver.com) +- Allow dlcontent to use proxy environment variables (shenson@redhat.com) +- Copy memtest to $bootloc/images/. Fixes BZ#663307 (shenson@redhat.com) +- Merge remote branch 'jimi1283/master' (shenson@redhat.com) +- Turn the cheetah version numbers into integers while testing them so we don't + always return true (shenson@redhat.com) +- Kill some whitespace (shenson@redhat.com) +- Fix for bug #587 - Un-escaped '$' in snippet silently fails to render + (jimi@sngx.net) +- Fix for bug #587 - Un-escaped '$' in snippet silently fails to render + (jimi@sngx.net) +- Merge branch 'master' of git://git.fedorahosted.org/cobbler (jimi@sngx.net) +- Don't use link caching in places it isn't needed (shenson@redhat.com) +- Better logging on subprocess calls (shenson@redhat.com) +- Fix for trac #541 - cobbler sync deletes /var/www/cobbler/pub (jimi@sngx.net) +- Merged work in the import-modules branch with the debian/ubuntu modules + created by Chuck Short (jimi@sngx.net) +- Merge branch 'cshort' into import-modules (jimi@sngx.net) +- Finished up debian/ubuntu support for imports Tweaked redhat/vmware import + modules logging output Added rsync function to utils to get it out of each + module - still need to fix the redhat/vmware modules to actually use this + (jimi@sngx.net) +- Initial commit for the Debian import module. * tested against Debian squeeze. + (chuck.short@canonical.com) +- Initial commit for the Ubuntu import module. * tested against Natty which + imported successfully. (chuck.short@canonical.com) +- tftp-hpa users for both Ubuntu Debian use /var/lib/tftpboot. + (chuck.short@canonical.com) +- Disable the checks that are not really valid for Ubuntu or Debian. + (chuck.short@canonical.com) +- Add myself to the authors file. (chuck.short@canonical.com) +- Updates for debian/ubuntu support in import modules (jimi@sngx.net) +- Fix a problem with cheetah >= 2.4.2 where the snippets were causing errors, + particularly on F14 due to its use of cheetah 2.4.3. (shenson@redhat.com) +- Initial commit of the Ubuntu import module (jimi@sngx.net) +- Merge remote branch 'jimi1283/import-modules' (shenson@redhat.com) +- Merge remote branch 'jimi1283/master' (shenson@redhat.com) +- Extended ESX/ESXi support * Fixed release detection for both ESX and ESXi * + Added support to kickstart_finder() so that the fetchable_files list gets + filled out when the distro is ESXi (jimi@sngx.net) +- Fixed distro_adder() in manage_import_vmware so ESXi gets imported properly + (jimi@sngx.net) +- Initial commit for the VMWare import module * tested against esx4 update 1, + which imported successfully (jimi@sngx.net) +- Minor style changes for web css * darken background slightly so the logo + doesn't look washed out * make text input boxes wider (jimi@sngx.net) +- Fix for the generic_edit function for the web page. The choices field for + management classes was not being set for distros/profiles - only systems, + causing a django stack dump (jimi@sngx.net) +- modify keep_ssh_host_keys snippet to use old keys during OS installation + (flaks@bnl.gov) +- Merge remote branch 'jimi1283/master' (shenson@redhat.com) +- Added replicate to list of DIRECT_ACTIONS, so it shows up in the --help + output (jimi@sngx.net) +- Merge branch 'master' into import-modules (jimi@sngx.net) +- Merge branch 'master' of git://git.fedorahosted.org/cobbler (jimi@sngx.net) +- Some fixes to the manage_import_redhat module * stop using mirror_name for + path stuff - using self.path instead * fixed rsync command to use self.path + too, this should really be made a global somewhere else though + (jimi@sngx.net) +- Add synopsis entries to man page to enable whatis command + (kirkland@ubuntu.com) +- Add "ubuntu" as detected distribution. (clint@ubuntu.com) +- Fix for redhat import module. Setting the kickstart file with a default + value was causing some issues later on with the kickstart_finder() function, + which assumes all new profiles don't have a kickstart file yet + (jimi@sngx.net) +- Fix for non x86 arches, bug and fix by David Robinson + (shenson@redhat.com) +- Don't die when we find deltas, just don't use them (shenson@redhat.com) +- Merge remote branch 'khightower/khightower/enhanced-configuration-management' + (shenson@redhat.com) +- By: Bill Peck exclude initrd.addrsize as well. This + affects s390 builds (shenson@redhat.com) +- Fix an issue where an item was getting handed to remove_item instead of the + name of the item. This would cause an exception further down in the stack + when .lower() was called on the object (by the call to get_item). + (shenson@redhat.com) +- Add a check to make sure system is in obj_types before removing it. Also + remove an old FIXME that this previously fixed (shenson@redhat.com) +- Fix regression in 2.0.8 that dumped into pxe cfg files (shenson@redhat.com) +- Initial commit of import module for redhat (jimi@sngx.net) +- Merge branch 'master' of git://git.fedorahosted.org/cobbler (jimi@sngx.net) +- Added new modules for copying a distros's fetchable files to the + /tftpboot/images directory - add_post_distro_tftp_copy_fetchable_files.py + copies on an add/edit - sync_post_tftp_copy_fetchable_files.py copies the + files for ALL distros on a full sync (jimi@sngx.net) +- Removed trailing '---' from each of the PXE templates for ESXi, which causes + PXE issues (jimi@sngx.net) +- Make stripping of "G" from vgs output case-insensitive + (heffer@fedoraproject.org) +- Replace rhpl with ethtool (heffer@fedoraproject.org) +- Add --force-path option to force overwrite of virt-path location + (pryor@bnl.gov) +- item_[profile|system] - update parents after editing (mlevedahl@gmail.com) +- collection.py - rename rather than delete mirror dirs (mlevedahl@gmail.com) +- Wil Cooley (shenson@redhat.com) +- Merge remote branch 'kilpatds/io' (shenson@redhat.com) +- Add additional qemu_driver_type parameter to start_install function + (Konrad.Scherer@windriver.com) +- Add valid debian names for releases (Konrad.Scherer@windriver.com) +- Add debian preseed support to koan (Konrad.Scherer@windriver.com) +- Add support for EFI grub booting. (dgoodwin@rm-rf.ca) +- Turn the 'daemonize I/O' code back on. cobbler sync seems to still work + (dkilpatrick@verisign.com) +- Fix some spacing in the init script (dkilpatrick@verisign.com) +- Added a copy-default attribute to koan, to control the params passed to + grubby (paji@redhat.com) +- Turn on the cache by default Enable a negative cache, with a shorter timeout. + Use the cache for normal lookups, not much ip-after-failed. + (dkilpatrick@verisign.com) +- no passing full error message. Der (dkilpatrick@verisign.com) +- Pull the default block size into the template, since that can need to be + changed. Make tftpd.py understand -B for compatibility. Default to a smaller + mtu, for vmware compatibility. (dkilpatrick@verisign.com) +- in.tftpd needs to be run as root. Whoops (dkilpatrick@verisign.com) +- Handle exceptions in the idle-timer handling. This could cause tftpd.py to + never exit (dkilpatrick@verisign.com) +- Do a better job of handling things when a logger doesn't exist. And don't try + and find out what the FD is for logging purposes when I know that might throw + and I won't catch it. (dkilpatrick@verisign.com) +- Scott Henson pointed out that my earlier changes stopped a sync from also + copying kernel/initrd files into the web directry. Split out the targets + from the copy, and make sure that sync still copies to webdir, and then also + fixed where I wasn't copying those files in the synclite case. + (dkilpatrick@verisign.com) +- Put back code that I removed incorrectly. (sync DHCP, DNS) + (dkilpatrick@verisign.com) +- Support installing FreeBSD without an IP address set in the host record. + (dkilpatrick@verisign.com) +- Fixed some bugs in the special-case handling code, where I was not properly + handling kernel requests, because I'd merged some code that looked alike, but + couldn't actually be merged. (dkilpatrick@verisign.com) +- fixing koan to use cobblers version of os_release which works with RHEL 6 + (jsherril@redhat.com) +- Adding preliminary support for importing ESXi for PXE booting (jimi@sngx.net) +- Fix cobbler check tftp typo. (dgoodwin@rm-rf.ca) +- buildiso now builds iso's that include the http_port setting (in + /etc/cobbler/settings) in the kickstart file url + (maarten.dirkse@filterworks.com) +- Add check detection for missing ksvalidator (dean.wilson@gmail.com) +- Use shlex.split() to properly handle a quoted install URL (e.g. url + --url="http://example.org") (jlaska@redhat.com) +- Update codes.py to accept 'fedora14' as a valid --os-version + (jlaska@redhat.com) +- No more self (shenson@redhat.com) +- Don't die if a single repo fails to sync. (shenson@redhat.com) +- Refactor: depluralize madhatter branch (kelsey.hightower@gmail.com) +- Updating setup.py and spec file. (kelsey.hightower@gmail.com) +- New unit tests: Mgmtclasses (kelsey.hightower@gmail.com) +- Updating cobbler/koan man pages with info on using the new configuration + management capabilities (kelsey.hightower@gmail.com) +- Cobbler web integration for new configuration management capabilities + (kelsey.hightower@gmail.com) +- Koan configuration management enhancements (kelsey.hightower@gmail.com) +- Cobbler configuration management enhancements (kelsey.hightower@gmail.com) +- New cobbler objects: mgmtclasses, packages, and files. + (kelsey.hightower@gmail.com) +- Merge remote branch 'jsabo/kickstart_done' (shenson@redhat.com) +- Move kickstart_done and kickstart_start out of kickgen.py and into their own + snippets. This also adds support for VMware ESX triggers and magic urls by + checking for the "vmware" breed and then using curl when that's all thats + available vs wget. VMware's installer makes wget available during the %%pre + section but only curl is around following install at %%post time. Yay! I've + also updated the sample kickstarts to use $SNIPPET('kickstart_done') and + $SNIPPET('kickstart_start') (jonathan.sabo@gmail.com) +- No more getting confused between otype and obj_type (shenson@redhat.com) +- The clean_link_cache method was calling subprocess_call without a logger + (shenson@redhat.com) +- Scott Henson pointed out that my earlier changes stopped a sync from also + copying kernel/initrd files into the web directry. Split out the targets + from the copy, and make sure that sync still copies to webdir, and then also + fixed where I wasn't copying those files in the synclite case. + (dkilpatrick@verisign.com) +- revert bad templates path (dkilpatrick@verisign.com) +- Put back code that I removed incorrectly. (sync DHCP, DNS) + (dkilpatrick@verisign.com) +- Support installing FreeBSD without an IP address set in the host record. + (dkilpatrick@verisign.com) +- Fixed some bugs in the special-case handling code, where I was not properly + handling kernel requests, because I'd merged some code that looked alike, but + couldn't actually be merged. (dkilpatrick@verisign.com) +- Two more fixes to bugs introduced by pytftpd patch set: * The generated + configs did not have initrd set propertly * Some extra debugging log lines + made it into remote.py (dkilpatrick@verisign.com) +- Fix Trac#530 by properly handling a logger being none. Additionally, make + subprocess_call and subprocess_get use common bits to reduce duplication. + (shenson@redhat.com) +- Fix a cobbler_web authentication leak issue. There are times when the token + that cobbelr_web had did not match the user logged in. This patch ensures + that the token always matches the user that is logged in. + (shenson@redhat.com) +- No more getting confused between otype and obj_type (shenson@redhat.com) +- The clean_link_cache method was calling subprocess_call without a logger + (shenson@redhat.com) +- Merge remote branch 'kilpatds/master' (shenson@redhat.com) +- Scott Henson pointed out that my earlier changes stopped a sync from also + copying kernel/initrd files into the web directry. Split out the targets + from the copy, and make sure that sync still copies to webdir, and then also + fixed where I wasn't copying those files in the synclite case. + (dkilpatrick@verisign.com) +- revert bad templates path (dkilpatrick@verisign.com) +- Put back code that I removed incorrectly. (sync DHCP, DNS) + (dkilpatrick@verisign.com) +- Support installing FreeBSD without an IP address set in the host record. + (dkilpatrick@verisign.com) +- Fixed some bugs in the special-case handling code, where I was not properly + handling kernel requests, because I'd merged some code that looked alike, but + couldn't actually be merged. (dkilpatrick@verisign.com) +- Two more fixes to bugs introduced by pytftpd patch set: * The generated + configs did not have initrd set propertly * Some extra debugging log lines + made it into remote.py (dkilpatrick@verisign.com) +- fast sync. A new way of copying files around using a link cache. It creates + a link cache per device and uses it as an intermediary so that files that are + the same are not copied multiple times. Should greatly speed up sync times. + (shenson@redhat.com) +- A few small fixes and a new feature for the Python tftp server * Support + environments where the MAC address is know, but the IP address is not + (private networks). I do this by waiting for pxelinux.0 to request a file + with the mac address added to the filename, and then look up the host by + MAC. * Fix my MAC lookup logic. I didn't know to look for the ARP type (01-, + at least for ethernet) added by pxelinux.0 * Fix up some log lines to make + more sense * Fix a bug where I didn't get handle an empty fetchable_files + properly, and didn't fall back to checking for profile matches. + (dkilpatrick@verisign.com) +- Two fixed to bad changes in my prior patch set. Sorry about that. * Bad path + in cobbler/action_sync.py. No "templates" * Bad generation of the default + boot menu. The first initrd from a profile was getting into the metadata + cache and hanging around, thus becoming the initrd for all labels. + (dkilpatrick@verisign.com) +- A smart tftp server, and a module to manage it + (dkilpatr@dkilpatr.verisign.com) +- Export the generated pxelinux.cfg file via the materialized system + information RPC method. This enables the python tftpd server below to serve + that file up without any sync being required. + (dkilpatr@dkilpatr.verisign.com) +- Move management of /tftpboot into modules. This is a setup step for a later + python tftpd server that will eliminate the need for much of this work. + (dkilpatr@dkilpatr.verisign.com) +- Fetchable Files attribute: Provides a new attribute similar in spirit to + mgmt_files, but with somewhat reversed meaning. + (dkilpatr@dkilpatr.verisign.com) +- fix log rotation to actually work (bpeck@redhat.com) +- find_kernel and find_initrd already do the right checks for file_is_remote + and return None if things are wrong. (bpeck@redhat.com) +- Trac #588 Add mercurial support for scm tracking (kelsey.hightower@gmail.com) +- Add a breed for scientific linux (shenson@redhat.com) +- "mgmt_parameters" for item_profile has the wrong default setting when + creating a sub_profile. I'm assuming that <> would be correct for a + sub_profile as well. (bpeck@redhat.com) +- The new setup.py placed webui_content in the wrong spot... + (akesling@redhat.com) +- Merge commit 'a81ca9a4c18f17f5f8d645abf03c0e525cd234e1' (jeckersb@redhat.com) +- Added back in old-style version tracking... because api.py needs it. + (akesling@redhat.com) +- Wrap the cobbler-web description (shenson@redhat.com) +- Create the tftpboot directory during install (shenson@redhat.com) +- Add in /var/lib/cobbler/loaders (shenson@redhat.com) +- Create the images directory so that selinux will be happy + (shenson@redhat.com) +- Dont install some things in the webroot and put the services script down + (shenson@redhat.com) +- Fix some issues with clean installs of cobbler post build cleanup + (shenson@redhat.com) +- rhel5 doesn't build egg-info by default. (bpeck@redhat.com) +- Some systems don't reboot properly at the end of install. s390 being one of + them. This post module will call power reboot if postreboot is in ks_meta for + that system. (bpeck@redhat.com) +- Changes to allow s390 to work. s390 has a hard limit on the number of chars + it can recieve. (bpeck@redhat.com) +- show netboot status via koan. This is really handy if you have a system which + fails to pxe boot you can create a service in rc.local which checks the + status of netboot and calls --replace-self for example. (bpeck@redhat.com) +- When adding in distros/profiles from disk don't bomb out if missing kernel or + ramdisk. just don't add it. (bpeck@redhat.com) +- add X log to anamon tracking as well. (bpeck@redhat.com) +- Added new remote method clear_logs. Clearing console and anamon logs in %%pre + is too late if the install never happens. (bpeck@redhat.com) +- fixes /var/www/cobbler/svc/services.py to canonicalize the uri before parsing + it. This fixes a regression with mod_wsgi enabled and trying to provision a + rhel3 machine. (bpeck@redhat.com) +- anaconda umounts /proc on us while were still running. Deal with it. + (bpeck@redhat.com) +- fix escape (bpeck@redhat.com) +- dont lowercase power type (bpeck@redhat.com) +- Bump to 2.1.0 (shenson@redhat.com) +- Properly detect unknown distributions (shenson@redhat.com) +- cobblerd service: Required-Start: network -> $network + (cristian.ciupitu@yahoo.com) +- cobblerd service: add Default-Stop to LSB header (cristian.ciupitu@yahoo.com) +- No more . on the end (shenson@redhat.com) +- Do not delete settings and modules.conf (shenson@redhat.com) +- Remove manpage generation from the make file (shenson@redhat.com) +- Update the author and author email (shenson@redhat.com) +- Proper ownership on some files (shenson@redhat.com) +- More rpm cleanups (shenson@redhat.com) +- Don't have the #! because rpm complains (shenson@redhat.com) +- No more selinux here, we should not be calling chcon, things will end up with + the proper context in a well configured selinux environment + (shenson@redhat.com) +- No more chowning the log file. (shenson@redhat.com) +- A new spec file to go with the new setup.py (shenson@redhat.com) +- Forgot to add aux to MANIFEST.in (akesling@redhat.com) +- Fixed naming scheme for web UI to make it more uniform, what was Puppet + Parameters is now Management Parameters. (akesling@redhat.com) +- Removed unnecessary cruft. (akesling@redhat.com) +- Reconfigured setup.py to now place config files and web ui content in the + right places. The paths are configurable like they were in the previous + setup.py, but everything is much cleaner. (akesling@redhat.com) +- Removed unnecessary templating functionality from configuration generation + (and setup.py) (akesling@redhat.com) +- Added more useful files to setup.py and MANIFEST.in as well as extra + functionality which setup.py should contain. (akesling@redhat.com) +- Massive overhaul of setup.py . Moved things around a little to clean up + building/packaging/distributing. The new setup.py is still incomplete. + (akesling@redhat.com) +- RPM specific changes to setup.cfg. (akesling@redhat.com) +- Currently working through making setup.py functional for generating rpms + dynamically. setup.py is just cobbler-web at the moment... and it appears to + work. The next things to do are test the current RPM and add in + functionality for reducing repetitive setup.py configuration lines. + (akesling@redhat.com) +- Changed list-view edit link from a javascript onclick event to an actual + link... so that you can now just open it in a new tab. (akesling@redhat.com) +- Added tip for random MAC Address functionality to System MAC Address field. + (akesling@redhat.com) +- Added "Puppet Parameters" attribute to Profile and System items. The new + input field is a textarea which takes proper a YAML formatted dictionary. + This data is used for the Puppet External Nodes api call (found in + services.py). (akesling@croissant.usersys.redhat.com) +- Resume apitesting assuming against local Cobbler server. (dgoodwin@rm-rf.ca) +- Replace rogue tab with whitespace. (dgoodwin@rm-rf.ca) +- Open all log files in append mode. Tasks should not be special. This + simplifies the handling of logging for selinux. (shenson@redhat.com) +- Add rendered dir to cobbler.spec. (dgoodwin@rm-rf.ca) +- Re-add mod_python dep only for cobbler-web. (dgoodwin@rm-rf.ca) +- initializing variable that is not always initialized but is always accessed + (jsherril@redhat.com) +- Merge remote branch 'pvreman/master' (shenson@redhat.com) +- add logging of triggers (peter.vreman@acision.com) +- add logging of triggers (peter.vreman@acision.com) +- cobbler-ext-nodes needs also to use http_port (peter.vreman@acision.com) +- Adding VMware ESX specific boot options (jonathan.sabo@gmail.com) +- Merge stable into master (shenson@redhat.com) +- Fix cobbler_web authentication in a way that doesn't break previously working + stuff (shenson@redhat.com) +- Allow qemu disk type to be specified. Contributed by Galia Lisovskaya + (shenson@redhat.com) +- Merge remote branch 'jsabo/esx' (shenson@redhat.com) +- Fix a bug where we were not looking for the syslinux provided menu.c32 before + going after the getloaders one (shenson@redhat.com) +- Fix cobbler_web authentication in a way that doesn't break previously working + stuff (shenson@redhat.com) +- More preparation for the release (shenson@redhat.com) +- Update spec file for release (shenson@redhat.com) +- Update changelog for release (shenson@redhat.com) +- Bugfix: fetch extra metadata from upstream repositories more safely + (icomfort@stanford.edu) +- Bugfix: allow the creation of subprofiles again (icomfort@stanford.edu) +- Don't warn needlessly when repo rpm_list is empty (icomfort@stanford.edu) +- Bugfix: run createrepo on partial yum mirrors (icomfort@stanford.edu) +- Change default mode for new directories from 0777 to 0755 + (icomfort@stanford.edu) +- Fix replication when prune is specified and no systems are specified. This + prevents us from killing systems on a slave that keeps its own systems. To + get the old behavior, just specify a systems list that won't match anything. + (shenson@redhat.com) +- Always authorize the CLI (shenson@redhat.com) +- Bugfix: fetch extra metadata from upstream repositories more safely + (icomfort@stanford.edu) +- Bugfix: allow the creation of subprofiles again (icomfort@stanford.edu) +- Don't warn needlessly when repo rpm_list is empty (icomfort@stanford.edu) +- Bugfix: run createrepo on partial yum mirrors (icomfort@stanford.edu) +- Change default mode for new directories from 0777 to 0755 + (icomfort@stanford.edu) +- Fix replication when prune is specified and no systems are specified. This + prevents us from killing systems on a slave that keeps its own systems. To + get the old behavior, just specify a systems list that won't match anything. + (shenson@redhat.com) +- Always authorize the CLI (shenson@redhat.com) +- Merge branch 'wsgi' (dgoodwin@rm-rf.ca) +- Adding VMware ESX 4 update 1 support (jonathan.sabo@gmail.com) +- remove references to apt support from the man page (jeckersb@redhat.com) +- wsgi: Service cleanup. (dgoodwin@rm-rf.ca) +- wsgi: Revert to old error handling. (dgoodwin@rm-rf.ca) +- wsgi: Switch Cobbler packaging/config from mod_python to mod_wsgi. (dgoodwin + @rm-rf.ca) +- wsgi: Return 404 when hitting svc URLs for missing objects. (dgoodwin@rm- + rf.ca) +- Merge branch 'master' into wsgi (dgoodwin@rm-rf.ca) +- wsgi: First cut of port to mod_wsgi. (dgoodwin@rm-rf.ca) + +* Thu Jun 17 2010 Scott Henson - 2.1.0-1 +- Bump upstream release + +* Tue Apr 27 2010 Scott Henson - 2.0.4-1 +- Bug fix release, see Changelog for details + +* Thu Apr 15 2010 Devan Goodwin 2.0.3.2-1 +- Tagging for new build tools. + +* Mon Mar 1 2010 Scott Henson - 2.0.3.1-3 +- Bump release because I forgot cobbler-web + +* Mon Mar 1 2010 Scott Henson - 2.0.3.1-2 +- Remove requires on mkinitrd as it is not used + +* Mon Feb 15 2010 Scott Henson - 2.0.3.1-1 +- Upstream Brown Paper Bag Release (see CHANGELOG) + +* Thu Feb 11 2010 Scott Henson - 2.0.3-1 +- Upstream changes (see CHANGELOG) + +* Mon Nov 23 2009 John Eckersberg - 2.0.2-1 +- Upstream changes (see CHANGELOG) + +* Tue Sep 15 2009 Michael DeHaan - 2.0.0-1 +- First release with unified spec files diff --git a/cobbler.te b/cobbler.te deleted file mode 100644 index d233f01..0000000 --- a/cobbler.te +++ /dev/null @@ -1,249 +0,0 @@ -policy_module(cobbler, 1.3.0) - -######################################## -# -# Declarations -# - -## -##

-## Determine whether Cobbler can modify -## public files used for public file -## transfer services. -##

-##
-gen_tunable(cobbler_anon_write, false) - -## -##

-## Determine whether Cobbler can connect -## to the network using TCP. -##

-##
-gen_tunable(cobbler_can_network_connect, false) - -## -##

-## Determine whether Cobbler can access -## cifs file systems. -##

-##
-gen_tunable(cobbler_use_cifs, false) - -## -##

-## Determine whether Cobbler can access -## nfs file systems. -##

-##
-gen_tunable(cobbler_use_nfs, false) - -gen_require(` - type debuginfo_exec_t; - type init_exec_t; - class file getattr; -') - -type cobblerd_t; -type cobblerd_exec_t; -init_daemon_domain(cobblerd_t, cobblerd_exec_t) - -type cobblerd_initrc_exec_t; -init_script_file(cobblerd_initrc_exec_t) - -type cobbler_etc_t; -files_config_file(cobbler_etc_t) - -type cobbler_var_log_t; -logging_log_file(cobbler_var_log_t) - -type cobbler_var_lib_t alias cobbler_content_t; -files_type(cobbler_var_lib_t) - -type cobbler_tmp_t; -files_tmp_file(cobbler_tmp_t) - -type cobblerd_unit_file_t; -systemd_unit_file(cobblerd_unit_file_t) - -######################################## -# -# Local policy -# - -allow cobblerd_t self:capability { chown dac_read_search fowner fsetid sys_nice }; -dontaudit cobblerd_t self:capability sys_tty_config; -allow cobblerd_t self:process { getsched setsched signal }; -allow cobblerd_t self:fifo_file rw_fifo_file_perms; -allow cobblerd_t self:tcp_socket { accept listen }; -allow cobblerd_t self:netlink_audit_socket create_socket_perms; - -allow cobblerd_t cobbler_etc_t:dir list_dir_perms; -allow cobblerd_t cobbler_etc_t:file read_file_perms; -allow cobblerd_t cobbler_etc_t:lnk_file read_lnk_file_perms; - -allow cobblerd_t cobbler_tmp_t:file mmap_file_perms; -# Allow cobbler to stat /usr/libexec/dnf-utils (aka reposync/yumdownloader) -allow cobblerd_t debuginfo_exec_t:file getattr; -# Allow cobbler to stat /usr/lib/systemd/systemd -allow cobblerd_t init_exec_t:file getattr; -# Allow cobbler to check status of itself -allow cobblerd_t cobblerd_unit_file_t:service status; - -manage_dirs_pattern(cobblerd_t, cobbler_tmp_t, cobbler_tmp_t) -manage_files_pattern(cobblerd_t, cobbler_tmp_t, cobbler_tmp_t) -files_tmp_filetrans(cobblerd_t, cobbler_tmp_t, { dir file }) - -manage_dirs_pattern(cobblerd_t, cobbler_var_lib_t, cobbler_var_lib_t) -manage_files_pattern(cobblerd_t, cobbler_var_lib_t, cobbler_var_lib_t) -manage_lnk_files_pattern(cobblerd_t, cobbler_var_lib_t, cobbler_var_lib_t) -files_var_lib_filetrans(cobblerd_t, cobbler_var_lib_t, dir) -files_var_filetrans(cobblerd_t, cobbler_var_lib_t, dir, "cobbler") - -append_files_pattern(cobblerd_t, cobbler_var_log_t, cobbler_var_log_t) -create_files_pattern(cobblerd_t, cobbler_var_log_t, cobbler_var_log_t) -read_files_pattern(cobblerd_t, cobbler_var_log_t, cobbler_var_log_t) -setattr_files_pattern(cobblerd_t, cobbler_var_log_t, cobbler_var_log_t) -logging_log_filetrans(cobblerd_t, cobbler_var_log_t, file) - -kernel_read_system_state(cobblerd_t) -kernel_read_network_state(cobblerd_t) - -corecmd_exec_bin(cobblerd_t) -corecmd_exec_shell(cobblerd_t) - -corenet_all_recvfrom_netlabel(cobblerd_t) -corenet_all_recvfrom_unlabeled(cobblerd_t) -corenet_tcp_sendrecv_generic_if(cobblerd_t) -corenet_tcp_sendrecv_generic_node(cobblerd_t) -corenet_tcp_bind_generic_node(cobblerd_t) - -corenet_sendrecv_cobbler_server_packets(cobblerd_t) -corenet_tcp_bind_cobbler_port(cobblerd_t) -corenet_tcp_sendrecv_cobbler_port(cobblerd_t) - -corenet_sendrecv_ftp_client_packets(cobblerd_t) -corenet_tcp_connect_ftp_port(cobblerd_t) -corenet_tcp_sendrecv_ftp_port(cobblerd_t) - -corenet_tcp_sendrecv_http_port(cobblerd_t) -corenet_tcp_connect_http_port(cobblerd_t) -corenet_sendrecv_http_client_packets(cobblerd_t) - -dev_read_sysfs(cobblerd_t) -dev_read_urand(cobblerd_t) - -files_list_boot(cobblerd_t) -files_list_tmp(cobblerd_t) -files_read_boot_files(cobblerd_t) -files_read_etc_runtime_files(cobblerd_t) - -fs_getattr_all_fs(cobblerd_t) -fs_read_iso9660_files(cobblerd_t) - -selinux_get_enforce_mode(cobblerd_t) - -term_use_console(cobblerd_t) - -auth_use_nsswitch(cobblerd_t) - -logging_send_syslog_msg(cobblerd_t) - -miscfiles_read_localization(cobblerd_t) -miscfiles_read_public_files(cobblerd_t) - -sysnet_dns_name_resolve(cobblerd_t) -sysnet_rw_dhcp_config(cobblerd_t) -sysnet_write_config(cobblerd_t) - -tunable_policy(`cobbler_anon_write',` - miscfiles_manage_public_files(cobblerd_t) -') - -tunable_policy(`cobbler_can_network_connect',` - corenet_sendrecv_all_client_packets(cobblerd_t) - corenet_tcp_connect_all_ports(cobblerd_t) - corenet_tcp_sendrecv_all_ports(cobblerd_t) -') - -tunable_policy(`cobbler_use_cifs',` - fs_manage_cifs_dirs(cobblerd_t) - fs_manage_cifs_files(cobblerd_t) - fs_manage_cifs_symlinks(cobblerd_t) -') - -tunable_policy(`cobbler_use_nfs',` - fs_manage_nfs_dirs(cobblerd_t) - fs_manage_nfs_files(cobblerd_t) - fs_manage_nfs_symlinks(cobblerd_t) -') - -optional_policy(` - apache_search_config(cobblerd_t) - apache_domtrans(cobblerd_t) - apache_search_sys_content(cobblerd_t) -') - -optional_policy(` - bind_read_config(cobblerd_t) - bind_write_config(cobblerd_t) - bind_domtrans_ndc(cobblerd_t) - bind_domtrans(cobblerd_t) - bind_initrc_domtrans(cobblerd_t) - bind_manage_zone(cobblerd_t) - bind_systemctl(cobblerd_t) -') - -optional_policy(` - certmaster_exec(cobblerd_t) -') - -optional_policy(` - dhcpd_domtrans(cobblerd_t) - dhcpd_initrc_domtrans(cobblerd_t) - dhcpd_systemctl(cobblerd_t) -') - -optional_policy(` - dnsmasq_domtrans(cobblerd_t) - dnsmasq_initrc_domtrans(cobblerd_t) - dnsmasq_write_config(cobblerd_t) - dnsmasq_systemctl(cobblerd_t) -') - -# To read /boot/efi -optional_policy(` - fs_list_dos(cobblerd_t) - fs_read_dos_files(cobblerd_t) -') - -# To run mkfs.fat when generating ISO -optional_policy(` - fstools_exec(cobblerd_t) -') - -optional_policy(` - libs_exec_ldconfig(cobblerd_t) -') - -optional_policy(` - mysql_stream_connect(cobblerd_t) -') - -optional_policy(` - rpm_exec(cobblerd_t) -') - -optional_policy(` - rsync_exec(cobblerd_t) - rsync_read_config(cobblerd_t) - rsync_manage_config(cobblerd_t) - rsync_etc_filetrans_config(cobblerd_t, file, "rsync.conf") -') - -optional_policy(` - tftp_manage_config(cobblerd_t) - tftp_manage_rw_content(cobblerd_t) - tftp_delete_content_dirs(cobblerd_t) - tftp_filetrans_tftpdir(cobblerd_t, cobbler_var_lib_t, { dir file }) -') diff --git a/cobblerd.service b/cobblerd.service new file mode 100644 index 0000000..0df27d9 --- /dev/null +++ b/cobblerd.service @@ -0,0 +1,13 @@ +[Unit] +Description=Cobbler Helper Daemon +After=syslog.target network.target + +[Service] +Type=oneshot +ExecStart=/usr/bin/cobblerd +RemainAfterExit=yes +PrivateTmp=yes + +[Install] +WantedBy=multi-user.target + diff --git a/migrate-settings.sh b/migrate-settings.sh deleted file mode 100644 index 6ef3c1a..0000000 --- a/migrate-settings.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -sed -i -e 's,^default_kickstart: */var/lib/cobbler/kickstarts,default_autoinstall: /var/lib/cobbler/templates,' \ - -e '/^\(consoles\|func_\|kernel_options_s390x\|power_template_dir\|pxe_template_dir\|redhat_management_type\|snippetsdir\|template_remote_kickstarts\):/s/^/# REMOVED: /' \ - -e '$a#ADDED:' -e '$acache_enabled: true' -e '$areposync_rsync_flags: "-rltDv --copy-unsafe-links"' /etc/cobbler/settings.yaml diff --git a/sources b/sources index ba2585a..d7a28a1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cobbler-3.3.7.tar.gz) = df6570dd7c6cbe50464624267df1bbecbb29e60513bba312a6c726502d4670670f3113f24b6b7e465d0b3353c0721e6fe3725dbc4569b4f624ec2b4a29682d1a +SHA512 (cobbler-2.8.5.tar.gz) = 6587308eb9eb49f7a894ddd052e1e3e226b4bcbffcf5c7e909e035b3faba1a8ae00631b96e11f0274d058b41b985b9a53776428b4587708111ef8158dec4e9d1