guestfs: With libguestfs >= v1.41.1 decode returned bytes to string
libguestfs >= v1.41.1 and commit 0ee02e0117527 changed the return type of read_file from string to bytes.0ee02e0117
As we don't check the version of libguestfs installed this change handles both the original behaviour where a string is returned and the newer behaviour by decoding any returned bytes to a string. Closes-Bug: #1882421 Change-Id: I1c12b2903c1e5bf3a88394493456ad33233f3cd8 (cherry picked from commit606d588e3e
) (cherry picked from commite98935f705
) (cherry picked from commit210abc09b8
)
This commit is contained in:
parent
4fd78fb70f
commit
637402eec7
@ -109,7 +109,7 @@ class GuestFS(object):
|
||||
"mode": 0o700
|
||||
}
|
||||
|
||||
return self.files[path]["content"]
|
||||
return bytes(self.files[path]["content"].encode())
|
||||
|
||||
def write(self, path, content):
|
||||
if path not in self.files:
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user