summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--cloudinit/config/cc_final_message.py2
-rw-r--r--cloudinit/config/cc_ssh_authkey_fingerprints.py2
-rw-r--r--cloudinit/util.py24
-rwxr-xr-xpackages/bddeb2
-rw-r--r--systemd/cloud-config.service2
-rw-r--r--systemd/cloud-final.service2
-rw-r--r--systemd/cloud-init-local.service2
-rw-r--r--systemd/cloud-init.service2
9 files changed, 26 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 366292d3..8222e2b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -20,6 +20,8 @@
- add OpenNebula Datasource [Vlastimil Holer]
- add 'cc_disk_setup' config module for paritioning disks and creating
filesystems. Useful if attached disks are not formatted (LP: #1218506)
+ - Fix usage of libselinux-python when selinux is disabled. [Garrett Holmstrom]
+ - multi_log: only write to /dev/console if it exists [Garrett Holmstrom]
0.7.2:
- add a debian watch file
- add 'sudo' entry to ubuntu's default user (LP: #1080717)
diff --git a/cloudinit/config/cc_final_message.py b/cloudinit/config/cc_final_message.py
index 6b864fda..e92cba4a 100644
--- a/cloudinit/config/cc_final_message.py
+++ b/cloudinit/config/cc_final_message.py
@@ -54,7 +54,7 @@ def handle(_name, cfg, cloud, log, args):
'datasource': str(cloud.datasource),
}
util.multi_log("%s\n" % (templater.render_string(msg_in, subs)),
- console=False, stderr=True)
+ console=False, stderr=True, log=log)
except Exception:
util.logexc(log, "Failed to render final message template")
diff --git a/cloudinit/config/cc_ssh_authkey_fingerprints.py b/cloudinit/config/cc_ssh_authkey_fingerprints.py
index c38bcea2..be8083db 100644
--- a/cloudinit/config/cc_ssh_authkey_fingerprints.py
+++ b/cloudinit/config/cc_ssh_authkey_fingerprints.py
@@ -63,7 +63,7 @@ def _is_printable_key(entry):
def _pprint_key_entries(user, key_fn, key_entries, hash_meth='md5',
prefix='ci-info: '):
if not key_entries:
- message = ("%sno authorized ssh keys fingerprints found for user %s."
+ message = ("%sno authorized ssh keys fingerprints found for user %s.\n"
% (prefix, user))
util.multi_log(message)
return
diff --git a/cloudinit/util.py b/cloudinit/util.py
index d50d3e18..cd1cc1a4 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -161,13 +161,13 @@ class SeLinuxGuard(object):
self.recursive = recursive
def __enter__(self):
- if self.selinux:
+ if self.selinux and self.selinux.is_selinux_enabled():
return True
else:
return False
def __exit__(self, excp_type, excp_value, excp_traceback):
- if self.selinux:
+ if self.selinux and self.selinux.is_selinux_enabled():
path = os.path.realpath(os.path.expanduser(self.path))
do_restore = False
try:
@@ -360,11 +360,21 @@ def multi_log(text, console=True, stderr=True,
if stderr:
sys.stderr.write(text)
if console:
- # Don't use the write_file since
- # this might be 'sensitive' info (not debug worthy?)
- with open('/dev/console', 'wb') as wfh:
- wfh.write(text)
- wfh.flush()
+ conpath = "/dev/console"
+ if os.path.exists(conpath):
+ with open(conpath, 'wb') as wfh:
+ wfh.write(text)
+ wfh.flush()
+ else:
+ # A container may lack /dev/console (arguably a container bug). If
+ # it does not exist, then write output to stdout. this will result
+ # in duplicate stderr and stdout messages if stderr was True.
+ #
+ # even though upstart or systemd might have set up output to go to
+ # /dev/console, the user may have configured elsewhere via
+ # cloud-config 'output'. If there is /dev/console, messages will
+ # still get there.
+ sys.stdout.write(text)
if log:
if text[-1] == "\n":
log.log(log_level, text[:-1])
diff --git a/packages/bddeb b/packages/bddeb
index 30559870..8de4d466 100755
--- a/packages/bddeb
+++ b/packages/bddeb
@@ -145,7 +145,7 @@ def main():
print("Creating a debian/ folder in %r" % (xdir))
if not args.no_cloud_utils:
- append_requires=['cloud-utils']
+ append_requires=['cloud-utils | cloud-guest-utils']
else:
append_requires=[]
write_debian_folder(xdir, version, revno, append_requires)
diff --git a/systemd/cloud-config.service b/systemd/cloud-config.service
index fc72fc48..41a86147 100644
--- a/systemd/cloud-config.service
+++ b/systemd/cloud-config.service
@@ -11,7 +11,7 @@ RemainAfterExit=yes
TimeoutSec=0
# Output needs to appear in instance console output
-StandardOutput=tty
+StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
diff --git a/systemd/cloud-final.service b/systemd/cloud-final.service
index f836eab6..ef0f52b9 100644
--- a/systemd/cloud-final.service
+++ b/systemd/cloud-final.service
@@ -11,7 +11,7 @@ RemainAfterExit=yes
TimeoutSec=0
# Output needs to appear in instance console output
-StandardOutput=tty
+StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
diff --git a/systemd/cloud-init-local.service b/systemd/cloud-init-local.service
index 6a551710..a31985c6 100644
--- a/systemd/cloud-init-local.service
+++ b/systemd/cloud-init-local.service
@@ -10,7 +10,7 @@ RemainAfterExit=yes
TimeoutSec=0
# Output needs to appear in instance console output
-StandardOutput=tty
+StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
diff --git a/systemd/cloud-init.service b/systemd/cloud-init.service
index d4eb9fa5..018a1fa8 100644
--- a/systemd/cloud-init.service
+++ b/systemd/cloud-init.service
@@ -11,7 +11,7 @@ RemainAfterExit=yes
TimeoutSec=0
# Output needs to appear in instance console output
-StandardOutput=tty
+StandardOutput=journal+console
[Install]
WantedBy=multi-user.target