From 70640d62e1dffeabceacf16b52a3122fe914c297 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Mon, 11 Jun 2012 17:13:19 -0700 Subject: Adding in the root distro class + a util function to fetch various distros. --- cloudinit/distros/__init__.py | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'cloudinit') diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index e69de29b..f7f48d1f 100644 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -0,0 +1,45 @@ +# 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 contextlib + +from cloudinit import importer + + +class Distro(object): + def __init__(self, cloud): + self.cloud = cloud + + def install_packages(self, pkglist): + raise NotImplementedError() + + def apply_network(self, settings): + raise NotImplementedError() + + +def fetch(cfg, cloud): + sys_info = cfg.get('system_info', {}) + distro = sys_info.get('distro', 'ubuntu') + mod_name = "%s.%s" % (__name__, distro) + mod = importer.import_module(mod_name) + distro_cls = getattr(mod, 'Distro') + return distro_cls(cloud) \ No newline at end of file -- cgit v1.2.3