From 3b964024040bed3c217b6d4f043af55d0dbc5469 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Mon, 11 Jun 2012 17:14:46 -0700 Subject: Adding in the base of a ubuntu distro subclass that can install pkgs (right now). --- cloudinit/distros/ubuntu.py | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/cloudinit/distros/ubuntu.py b/cloudinit/distros/ubuntu.py index e69de29b..d19ef63e 100644 --- a/cloudinit/distros/ubuntu.py +++ b/cloudinit/distros/ubuntu.py @@ -0,0 +1,55 @@ +# vi: ts=4 expandtab +# +# Copyright (C) 2012 Canonical Ltd. +# Copyright (C) 2012 Hewlett-Packard Development Company, L.P. +# Copyright (C) 2012 Yahoo! Inc. +# +# Author: Scott Moser +# Author: Juerg Haefliger +# Author: Joshua Harlow +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os + +from cloudinit import distros +from cloudinit import log as logging +from cloudinit import util + +from cloudinit.settings import (PER_INSTANCE) + + +LOG = logging.getLogger(__name__) + + +class Distro(distros.Distro): + + def install_packages(self, pkglist): + self.update_package_sources() + self.apt_get('install', pkglist) + + def apply_network(self, settings): + pass + + # apt_get top level command (install, update...), and args to pass it + def apt_get(self, tlc, args=None): + e = os.environ.copy() + e['DEBIAN_FRONTEND'] = 'noninteractive' + cmd = ['apt-get', '--option', 'Dpkg::Options::=--force-confold', + '--assume-yes', tlc] + if args: + cmd.extend(args) + util.subp(cmd, env=e) + + def update_package_sources(self): + self.cloud.run("update-sources", self.apt_get, ["update"], freq=PER_INSTANCE) \ No newline at end of file -- cgit v1.2.3