From: Zane Bitter Date: Wed, 29 Aug 2012 17:35:12 +0000 (+0200) Subject: Refactor extract_param_pairs() X-Git-Tag: 2014.1~1500 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=87df079624e4b1441e254db2b066f3b7e9b7fb87;p=openstack-build%2Fheat-build.git Refactor extract_param_pairs() Implement it in terms of the more general extract_param_list(). Change-Id: Ifbf0dd8205da87e707610c0b8cb0ca616d7b2e22 Signed-off-by: Zane Bitter --- diff --git a/heat/api/aws/utils.py b/heat/api/aws/utils.py index ef5bde5f..55fc6898 100644 --- a/heat/api/aws/utils.py +++ b/heat/api/aws/utils.py @@ -44,29 +44,11 @@ def extract_param_pairs(params, prefix='', keyname='', valuename=''): We reformat this into a dict here to match the heat engine API expected format """ - # Define the AWS key format to extract - LIST_KEYS = ( - LIST_USER_KEY_re, - LIST_USER_VALUE_fmt, - ) = ( - re.compile(r"%s\.member\.(.*?)\.%s$" % (prefix, keyname)), - '.'.join([prefix, 'member', '%s', valuename]) - ) - - def get_param_pairs(): - for k in params: - keymatch = LIST_USER_KEY_re.match(k) - if keymatch: - key = params[k] - v = LIST_USER_VALUE_fmt % keymatch.group(1) - try: - value = params[v] - except KeyError: - logger.error('Could not extract parameter %s' % key) - - yield (key, value) + plist = extract_param_list(params, prefix) + kvs = [(p[keyname], p[valuename]) for p in plist + if keyname in p and valuename in p] - return dict(get_param_pairs()) + return dict(kvs) def extract_param_list(params, prefix=''): diff --git a/heat/tests/test_api_aws.py b/heat/tests/test_api_aws.py index b24a5fde..99dcbd08 100644 --- a/heat/tests/test_api_aws.py +++ b/heat/tests/test_api_aws.py @@ -37,10 +37,10 @@ class AWSCommon(unittest.TestCase): self.assert_(response == expected) def test_params_extract(self): - p = {'Parameters.member.Foo.ParameterKey': 'foo', - 'Parameters.member.Foo.ParameterValue': 'bar', - 'Parameters.member.Blarg.ParameterKey': 'blarg', - 'Parameters.member.Blarg.ParameterValue': 'wibble'} + p = {'Parameters.member.1.ParameterKey': 'foo', + 'Parameters.member.1.ParameterValue': 'bar', + 'Parameters.member.2.ParameterKey': 'blarg', + 'Parameters.member.2.ParameterValue': 'wibble'} params = api_utils.extract_param_pairs(p, prefix='Parameters', keyname='ParameterKey', valuename='ParameterValue') @@ -51,24 +51,20 @@ class AWSCommon(unittest.TestCase): self.assertEqual(params['blarg'], 'wibble') def test_params_extract_dots(self): - p = {'Parameters.member.Foo.Bar.ParameterKey': 'foo', - 'Parameters.member.Foo.Bar.ParameterValue': 'bar', - 'Parameters.member.Foo.Baz.ParameterKey': 'blarg', - 'Parameters.member.Foo.Baz.ParameterValue': 'wibble'} + p = {'Parameters.member.1.1.ParameterKey': 'foo', + 'Parameters.member.1.1.ParameterValue': 'bar', + 'Parameters.member.2.1.ParameterKey': 'blarg', + 'Parameters.member.2.1.ParameterValue': 'wibble'} params = api_utils.extract_param_pairs(p, prefix='Parameters', keyname='ParameterKey', valuename='ParameterValue') - self.assertEqual(len(params), 2) - self.assertTrue('foo' in params) - self.assertEqual(params['foo'], 'bar') - self.assertTrue('blarg' in params) - self.assertEqual(params['blarg'], 'wibble') + self.assertFalse(params) def test_params_extract_garbage(self): - p = {'Parameters.member.Foo.Bar.ParameterKey': 'foo', - 'Parameters.member.Foo.Bar.ParameterValue': 'bar', - 'Foo.Baz.ParameterKey': 'blarg', - 'Foo.Baz.ParameterValue': 'wibble'} + p = {'Parameters.member.1.ParameterKey': 'foo', + 'Parameters.member.1.ParameterValue': 'bar', + 'Foo.1.ParameterKey': 'blarg', + 'Foo.1.ParameterValue': 'wibble'} params = api_utils.extract_param_pairs(p, prefix='Parameters', keyname='ParameterKey', valuename='ParameterValue') @@ -85,8 +81,8 @@ class AWSCommon(unittest.TestCase): self.assertFalse(params) def test_params_extract_garbage_suffix(self): - p = {'Parameters.member.Foo.Bar.ParameterKeysuffix': 'foo', - 'Parameters.member.Foo.Bar.ParameterValue': 'bar'} + p = {'Parameters.member.1.ParameterKeysuffix': 'foo', + 'Parameters.member.1.ParameterValue': 'bar'} params = api_utils.extract_param_pairs(p, prefix='Parameters', keyname='ParameterKey', valuename='ParameterValue')