summaryrefslogtreecommitdiff
path: root/cloudinit/distros
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2012-06-11 17:13:19 -0700
committerJoshua Harlow <harlowja@yahoo-inc.com>2012-06-11 17:13:19 -0700
commit70640d62e1dffeabceacf16b52a3122fe914c297 (patch)
tree579f96e483ff2126d445761c20cd7e51775f763a /cloudinit/distros
parent6a58c8ee7345c53dda47ae0845b0e8cae0043dd4 (diff)
downloadvyos-cloud-init-70640d62e1dffeabceacf16b52a3122fe914c297.tar.gz
vyos-cloud-init-70640d62e1dffeabceacf16b52a3122fe914c297.zip
Adding in the root distro class + a util function to fetch various distros.
Diffstat (limited to 'cloudinit/distros')
-rw-r--r--cloudinit/distros/__init__.py45
1 files changed, 45 insertions, 0 deletions
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 <scott.moser@canonical.com>
+# Author: Juerg Haefliger <juerg.haefliger@hp.com>
+# Author: Joshua Harlow <harlowja@yahoo-inc.com>
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+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