Python3: Fix using dictionary keys() as list

It will throw TypeError when you try to operate on
dict.keys() like a list in python3.
ref:https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects

Targets blueprint: murano-python-3-support

Change-Id: I8a2dc7844248aa26794ed50d77ab59dd12056fcf
This commit is contained in:
Bo Wang
2016-01-15 01:45:22 +08:00
parent c739c01dd5
commit bb297e6364
6 changed files with 12 additions and 11 deletions

View File

@@ -535,7 +535,7 @@ class XMLDictSerializer(DictSerializer):
def default(self, data, result=None):
# We expect data to contain a single key which is the XML root.
root_key = data.keys()[0]
root_key = list(data.keys())[0]
doc = minidom.Document()
node = self._to_xml_node(doc, self.metadata, root_key, data[root_key])

View File

@@ -47,7 +47,7 @@ class Statement(DslExpression):
elif isinstance(statement, dict):
if len(statement) != 1:
raise SyntaxError()
key = statement.keys()[0]
key = list(statement.keys())[0]
value = statement[key]
else:
raise SyntaxError()

View File

@@ -66,7 +66,7 @@ class MuranoMethod(dsl_types.MuranoMethod):
if (not isinstance(record, dict) or
len(record) > 1):
raise ValueError()
name = record.keys()[0]
name = list(record.keys())[0]
self._arguments_scheme[name] = typespec.ArgumentSpec(
self.name, name, record[name], self.murano_class)
self._yaql_function_definition = \

View File

@@ -28,6 +28,7 @@ from murano.dsl import yaql_integration
class MuranoPackage(dsl_types.MuranoPackage):
def __init__(self, package_loader, name, version=None,
runtime_version=None, requirements=None):
super(MuranoPackage, self).__init__()
@@ -73,9 +74,8 @@ class MuranoPackage(dsl_types.MuranoPackage):
@property
def classes(self):
return set(self._classes.keys() +
self._load_queue.keys() +
self._native_load_queue.keys())
return set(self._classes.keys()).union(
self._load_queue.keys()).union(self._native_load_queue.keys())
def get_resource(self, name):
raise NotImplementedError('resource API is not implemented')

View File

@@ -266,13 +266,13 @@ class Agent(object):
def _get_url(self, file):
if isinstance(file, dict):
return file.values()[0]
return list(file.values())[0]
else:
return file
def _get_name(self, file):
if isinstance(file, dict):
name = file.keys()[0]
name = list(file.keys())[0]
else:
name = file
@@ -284,7 +284,7 @@ class Agent(object):
def _get_file_value(self, file):
if isinstance(file, dict):
file = file.values()[0]
file = list(file.values())[0]
return file
def _get_body(self, file, resources, folder):

View File

@@ -38,10 +38,11 @@ class PluginLoaderTest(base.MuranoTestCase):
test_obj = extensions_loader.PluginLoader('test.namespace')
test_obj.load_extension(ext, name_map)
self.assertEqual(1, len(test_obj.packages))
loaded_pkg = test_obj.packages.values()[0]
loaded_pkg = list(test_obj.packages.values())[0]
self.assertIsInstance(loaded_pkg,
extensions_loader.PackageDefinition)
self.assertEqual('test.namespace.Test', loaded_pkg.classes.keys()[0])
self.assertEqual('test.namespace.Test',
list(loaded_pkg.classes.keys())[0])
self.assertEqual({'test.namespace.Test': test_obj.packages.keys()},
name_map)