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=''):
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')
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')
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')