From 77c30189abe53326d99241a465b702ad7eed6b03 Mon Sep 17 00:00:00 2001 From: Ken'ichi Ohmichi Date: Thu, 31 Jan 2013 22:05:14 +0900 Subject: Fix inject_files for storing binary file. Now a nova-api server decodes injected_files by base64 after receiving encoded files from nova-client. And the server fails to publish run_instance because utf8 codec can't decode due to binary data. This patch fixes this problem, because the base64 decode is operated when a nova-compute server receives injected_files from a nova-api server. Fixes bug 1112134 Change-Id: I664134c74893a970de4464161071692a5b2b5ce7 --- nova/compute/manager.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'nova/compute') diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 605ebab6c..60d72e565 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -27,6 +27,7 @@ terminating it. """ +import base64 import contextlib import functools import socket @@ -1069,6 +1070,9 @@ class ComputeManager(manager.SchedulerDependentManager): filter_properties = {} if injected_files is None: injected_files = [] + else: + injected_files = [(path, base64.b64decode(contents)) + for path, contents in injected_files] @lockutils.synchronized(instance['uuid'], 'nova-') def do_run_instance(): -- cgit