summaryrefslogtreecommitdiff
path: root/nova/availability_zones.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2016-06-22 11:24:27 +0200
committerChangBo Guo(gcb) <eric.guo@easystack.cn>2016-11-29 11:28:24 +0800
commit67af1eefc5c1cf8cde4b4becb933808850acec2d (patch)
treedfdb47d1639a0d31b9cf143c6220d3dd82310076 /nova/availability_zones.py
parent00b359ce146c7a26e2ad578ee8ec5b83461e7dbf (diff)
downloadnova-67af1eefc5c1cf8cde4b4becb933808850acec2d.tar.gz
Port test_metadata to Python 3
* convert_password(): on Python 3, decode password from UTF-8 if it is a byte string * convert_password(): don't modify password in the loop body, use an index increased at each iteration. This is a minor cleanup, unrelated to Python 3. * ec2_md_print() now returns byte strings unchanged. On Python 3, str(bytes) uses "b'...'" format which is not the expected result (or it raises a BytesWarinng exception when using python3 -bb). * Replace the base64 module with oslo_serialization.base64 to control the output type (bytes or text) on Python 2 and Python 3. * _make_cache_key(): on Python 3, don't encode the host to UTF-8. Python 3 requires text. * MetadataRequestHandler: on Python 3, encode HTTP body to UTF-8 if the body type is Unicode. * test_metadata: - encode hmac.new() parameters using encodeutils.to_utf8() - use response.text rather than response.body to compare with Unicode string - use a byte strings for the instance identifier - fix some Unicode versus bytes issues * tests-py3.txt: run test_metadata on Python 3 Co-Authored-By: Davanum Srinivas <davanum@gmail.com> Co-Authored-By: ChangBo Guo(gcb) <eric.guo@easystack.cn> Partially-Implements: blueprint goal-python35 Change-Id: Ifb43ce164d9fd80f9f85c95c762d7b010e84dfeb
Diffstat (limited to 'nova/availability_zones.py')
-rw-r--r--nova/availability_zones.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/nova/availability_zones.py b/nova/availability_zones.py
index 4ae4f3ef36..190882d90d 100644
--- a/nova/availability_zones.py
+++ b/nova/availability_zones.py
@@ -16,9 +16,11 @@
"""Availability zone helper functions."""
import collections
-import nova.conf
+
+import six
from nova import cache_utils
+import nova.conf
from nova import objects
# NOTE(vish): azs don't change that often, so cache them for an hour to
@@ -49,7 +51,9 @@ def reset_cache():
def _make_cache_key(host):
- return "azcache-%s" % host.encode('utf-8')
+ if six.PY2:
+ host = host.encode('utf-8')
+ return "azcache-%s" % host
def _build_metadata_by_host(aggregates, hosts=None):