diff options
author | Scott Moser <smoser@ubuntu.com> | 2015-06-10 12:30:02 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2015-06-10 12:30:02 -0400 |
commit | 162ce6a5635574e8dba0be3e06d313a18b46adc6 (patch) | |
tree | bdbd06e2ddee5c539ff826488a082d6d5f574a62 /cloudinit/distros/__init__.py | |
parent | 0f3736ab501ceebaa3c9f5c7543b6218637cb6c7 (diff) | |
parent | 8db399f9149a81de5d65f0759792766ecd509ab3 (diff) | |
download | vyos-cloud-init-162ce6a5635574e8dba0be3e06d313a18b46adc6.tar.gz vyos-cloud-init-162ce6a5635574e8dba0be3e06d313a18b46adc6.zip |
check for systemd using sd_booted() semantics
The existing code determines if systemd is in use by looking at the
distribution name and version. This is prone to error because:
- RHEL derivatives other than CentOS (e.g., Scientific Linux) will fail
this test
- Distributions that are not derived from RHEL also use systemd
This patch makes cloud-init use the same logic that is used in systemd's
sd_booted() method
http://www.freedesktop.org/software/systemd/man/sd_booted.html
LP: #1461201
Diffstat (limited to 'cloudinit/distros/__init__.py')
-rw-r--r-- | cloudinit/distros/__init__.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index e0cce670..8a947867 100644 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -27,6 +27,7 @@ from six import StringIO import abc import os import re +import stat from cloudinit import importer from cloudinit import log as logging @@ -89,6 +90,13 @@ class Distro(object): self._write_hostname(writeable_hostname, self.hostname_conf_fn) self._apply_hostname(writeable_hostname) + def uses_systemd(self): + try: + res = os.lstat('/run/systemd/system') + return stat.S_ISDIR(res.st_mode) + except: + return False + @abc.abstractmethod def package_command(self, cmd, args=None, pkgs=None): raise NotImplementedError() |