summaryrefslogtreecommitdiff
path: root/cloudinit/distros/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit/distros/__init__.py')
-rw-r--r--cloudinit/distros/__init__.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 46b67fa3..8fc0da9f 100644
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -39,8 +39,10 @@ from cloudinit.distros.parsers import hosts
OSFAMILIES = {
'debian': ['debian', 'ubuntu'],
'redhat': ['fedora', 'rhel'],
+ 'gentoo': ['gentoo'],
'freebsd': ['freebsd'],
- 'suse': ['sles']
+ 'suse': ['sles'],
+ 'arch': ['arch'],
}
LOG = logging.getLogger(__name__)
@@ -53,12 +55,21 @@ class Distro(object):
ci_sudoers_fn = "/etc/sudoers.d/90-cloud-init-users"
hostname_conf_fn = "/etc/hostname"
tz_zone_dir = "/usr/share/zoneinfo"
+ init_cmd = ['service'] # systemctl, service etc
+ exclude_modules = []
def __init__(self, name, cfg, paths):
self._paths = paths
self._cfg = cfg
self.name = name
+ def is_excluded(self, name):
+ if name in self.exclude_modules:
+ distro = getattr(self, name, None) or getattr(self, 'osfamily')
+ LOG.debug(("Skipping module named %s, distro %s excluded"), name,
+ distro)
+ return True
+
@abc.abstractmethod
def install_packages(self, pkglist):
raise NotImplementedError()