[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