diff --git a/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance b/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance index 0eafa65029b..1d63b041379 100755 --- a/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance +++ b/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance @@ -200,14 +200,12 @@ def _upload_tarball(staging_path, image_id, glance_host, glance_port, compression_level = properties.get('xenapi_image_compression_level') - utils.create_tarball( - None, staging_path, callback=send_chunked_transfer_encoded, - compression_level=compression_level) - try: - conn.send("0\r\n\r\n") # Chunked-Transfer terminator - except Exception, error: - raise RetryableError(error) + utils.create_tarball( + None, staging_path, callback=send_chunked_transfer_encoded, + compression_level=compression_level) + finally: + send_chunked_transfer_encoded('') # Chunked-Transfer terminator bytes_written = callback_data['bytes_written'] logging.info("Wrote %d bytes to %s" % (bytes_written, url)) diff --git a/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py b/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py index 4e21ed1c506..d5561ce73ea 100644 --- a/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py +++ b/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py @@ -101,6 +101,10 @@ def finish_subprocess(proc, cmdline, cmd_input=None, ok_exit_codes=None): ret = proc.returncode if ret not in ok_exit_codes: + LOG.error("Command '%(cmdline)s' with process id '%(pid)s' expected " + "return code in '%(ok)s' but got '%(rc)s': %(err)s" % + {'cmdline': cmdline, 'pid': proc.pid, 'ok': ok_exit_codes, + 'rc': ret, 'err': err}) raise SubprocessException(' '.join(cmdline), ret, out, err) return out