diff options
Diffstat (limited to 'nova/virt/disk')
-rw-r--r-- | nova/virt/disk/api.py | 4 | ||||
-rw-r--r-- | nova/virt/disk/vfs/guestfs.py | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/nova/virt/disk/api.py b/nova/virt/disk/api.py index c79ae77371..83d3f13ed2 100644 --- a/nova/virt/disk/api.py +++ b/nova/virt/disk/api.py @@ -615,8 +615,8 @@ def _set_passwd(username, admin_passwd, passwd_data, shadow_data): :param username: the username :param admin_passwd: the admin password - :param passwd_data: path to the passwd file - :param shadow_data: path to the shadow password file + :param passwd_data: Data from the passwd file decoded as a string + :param shadow_data: Data from the shadow file decoded as a string :returns: nothing :raises: exception.NovaException(), IOError() diff --git a/nova/virt/disk/vfs/guestfs.py b/nova/virt/disk/vfs/guestfs.py index db260d9a4a..ce5f48794a 100644 --- a/nova/virt/disk/vfs/guestfs.py +++ b/nova/virt/disk/vfs/guestfs.py @@ -308,7 +308,14 @@ class VFSGuestFS(vfs.VFS): def read_file(self, path): LOG.debug("Read file path=%s", path) path = self._canonicalize_path(path) - return self.handle.read_file(path) + data = self.handle.read_file(path) + # NOTE(lyarwood): libguestfs v1.41.1 (0ee02e0117527) switched the + # return type of read_file from string to bytes and as such we need to + # handle both here, decoding and returning a string if bytes is + # provided. https://bugzilla.redhat.com/show_bug.cgi?id=1661871 + if isinstance(data, bytes): + return data.decode() + return data def has_file(self, path): LOG.debug("Has file path=%s", path) |