[cloud-init] Add support for installing yum packages
Pádraig Brady
pbrady at fedoraproject.org
Fri Jun 29 12:26:51 UTC 2012
commit 7dfb05653c0db4c0d14e94bd7af7e564d0f2f080
Author: Pádraig Brady <P at draigBrady.com>
Date: Wed Jun 27 17:49:06 2012 +0100
Add support for installing yum packages
cloud-init-0.6.3-yum.patch | 79 ++++++++++++++++++++++++++++++++++++++++++++
cloud-init.spec | 7 +++-
2 files changed, 85 insertions(+), 1 deletions(-)
---
diff --git a/cloud-init-0.6.3-yum.patch b/cloud-init-0.6.3-yum.patch
new file mode 100644
index 0000000..39af26a
--- /dev/null
+++ b/cloud-init-0.6.3-yum.patch
@@ -0,0 +1,79 @@
+From b36b33335c4872bc1bef5bcece33c3ea43de4ea5 Mon Sep 17 00:00:00 2001
+From: Tomas Karasek <tomas.karasek at cern.ch>
+Date: Wed, 27 Jun 2012 16:48:15 +0100
+Subject: [PATCH] support package installation using 'yum'
+
+---
+ cloudinit/CloudConfig/__init__.py | 42 +++++++++++++++++++++++++++++++++---
+ 1 files changed, 38 insertions(+), 4 deletions(-)
+
+diff --git a/cloudinit/CloudConfig/__init__.py b/cloudinit/CloudConfig/__init__.py
+index a16bdde..6a7005a 100644
+--- a/cloudinit/CloudConfig/__init__.py
++++ b/cloudinit/CloudConfig/__init__.py
+@@ -27,6 +27,7 @@ import traceback
+ import os
+ import subprocess
+ import time
++import platform
+
+ per_instance = cloudinit.per_instance
+ per_always = cloudinit.per_always
+@@ -253,6 +254,27 @@ def run_per_instance(name, func, args, clear_on_fail=False):
+ raise
+
+
++def get_package_manager():
++ if 'linux_distribution' in platform.__dict__:
++ distname, _, _ = platform.linux_distribution(
++ full_distribution_name=0)
++ else:
++ distname, _, _ = platform.dist()
++ yum_dists = ['redhat', 'fedora', 'centos']
++ apt_dists = ['debian', 'ubuntu']
++ if distname.lower() in yum_dists:
++ return 'yum'
++ elif distname.lower() in apt_dists:
++ return 'apt'
++ elif os.system('yum --help >/dev/null 2>&1'):
++ return 'yum'
++ elif os.system('apt-get --help >/dev/null 2>&1'):
++ return 'apt'
++
++
++_PACKAGE_MANAGER = get_package_manager()
++
++
+ # apt_get top level command (install, update...), and args to pass it
+ def apt_get(tlc, args=None):
+ if args is None:
+@@ -265,10 +287,22 @@ def apt_get(tlc, args=None):
+ subprocess.check_call(cmd, env=e)
+
+
+-def update_package_sources():
+- run_per_instance("update-sources", apt_get, ("update",))
++def yum(tlc, args=None):
++ if args is None:
++ args = []
++ cmd = ['yum', '-y', tlc]
++ cmd.extend(args)
++ subprocess.check_call(cmd)
+
+
+ def install_packages(pkglist):
+- update_package_sources()
+- apt_get("install", pkglist)
++ if _PACKAGE_MANAGER == "yum":
++ run_per_instance("update-sources", yum, ("makecache",))
++ yum("install", pkglist)
++ elif _PACKAGE_MANAGER == "apt":
++ run_per_instance("update-sources", apt_get, ("update",))
++ apt_get("install", pkglist)
++ else:
++ raise Exception("Unknown distribution, unable to install packages %s" %
++ pkglist)
++
+--
+1.7.6.4
+
diff --git a/cloud-init.spec b/cloud-init.spec
index bf19af3..9a04e78 100644
--- a/cloud-init.spec
+++ b/cloud-init.spec
@@ -2,7 +2,7 @@
Name: cloud-init
Version: 0.6.3
-Release: 0.2.bzr532%{?dist}
+Release: 0.3.bzr532%{?dist}
Summary: Cloud instance init scripts
Group: System Environment/Base
@@ -18,6 +18,7 @@ Patch0: cloud-init-0.6.3-fedora.patch
Patch1: cloud-init-0.6.3-no-runparts.patch
# https://bugs.launchpad.net/cloud-init/+bug/970071
Patch2: cloud-init-0.6.3-lp970071.patch
+Patch3: cloud-init-0.6.3-yum.patch
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -53,6 +54,7 @@ ssh keys and to let the user run various scripts.
%patch0 -p0
%patch1 -p0
%patch2 -p1
+%patch3 -p1
cp -p %{SOURCE2} README.fedora
@@ -134,6 +136,9 @@ fi
%changelog
+* Wed Jun 27 2012 Pádraig Brady <P at draigBrady.com> - 0.6.3-0.3.bzr532
+- Add support for installing yum packages
+
* Sat Mar 31 2012 Andy Grimm <agrimm at gmail.com> - 0.6.3-0.2.bzr532
- Fixed incorrect interpretation of relative path for
AuthorizedKeysFile (BZ #735521)
More information about the scm-commits
mailing list