From 68fe7735c014ea0bfbcb27b9d0b7e3ed584d3285 Mon Sep 17 00:00:00 2001 From: Chuck Short Date: Sun, 13 Oct 2013 09:01:51 -0400 Subject: [PATCH] python3: iteration order of dict is unpredictable In Python 3.3, hash randomization is enabled by default. It causes the iteration order of dicts and sets to be unpredictable and differ across Python runs. Sort the metadata.keys() in reverse order to keep the test cases as is. Change-Id: I233ada4dae4e9c0bc97bf8fd7d912a0eff9dd5b8 Signed-off-by: Chuck Short --- cinderclient/v1/shell.py | 4 +++- cinderclient/v2/shell.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cinderclient/v1/shell.py b/cinderclient/v1/shell.py index 74f8662..ff7842b 100644 --- a/cinderclient/v1/shell.py +++ b/cinderclient/v1/shell.py @@ -352,7 +352,9 @@ def do_metadata(cs, args): if args.action == 'set': cs.volumes.set_metadata(volume, metadata) elif args.action == 'unset': - cs.volumes.delete_metadata(volume, list(metadata)) + # NOTE(zul): Make sure py2/py3 sorting is the same + cs.volumes.delete_metadata(volume, sorted(metadata.keys(), + reverse=True)) @utils.arg( diff --git a/cinderclient/v2/shell.py b/cinderclient/v2/shell.py index 6ce4e87..014dbf7 100644 --- a/cinderclient/v2/shell.py +++ b/cinderclient/v2/shell.py @@ -390,7 +390,9 @@ def do_metadata(cs, args): if args.action == 'set': cs.volumes.set_metadata(volume, metadata) elif args.action == 'unset': - cs.volumes.delete_metadata(volume, list(metadata)) + # NOTE(zul): Make sure py2/py3 sorting is the same + cs.volumes.delete_metadata(volume, sorted(metadata.keys(), + reverse=True)) @utils.arg('--all-tenants',