Implement NoEcho for parameters

Change-Id: I60ce651367479205e0d456e2ac0ec3f949766383
Signed-off-by: Zane Bitter <zbitter@redhat.com>
This commit is contained in:
Zane Bitter 2012-10-31 20:18:43 +01:00
parent d918f3919f
commit f4c34c5628
4 changed files with 38 additions and 3 deletions

View File

@ -94,7 +94,7 @@ def format_stack(stack):
STACK_CREATION_TIME: timeutils.isotime(stack.created_time),
STACK_UPDATED_TIME: timeutils.isotime(stack.updated_time),
STACK_NOTIFICATION_TOPICS: [], # TODO Not implemented yet
STACK_PARAMETERS: dict(stack.parameters),
STACK_PARAMETERS: stack.parameters.map(str),
STACK_DESCRIPTION: stack.t[template.DESCRIPTION],
STACK_TMPL_DESCRIPTION: stack.t[template.DESCRIPTION],
STACK_STATUS: stack.state,

View File

@ -240,7 +240,7 @@ class EngineManager(manager.Manager):
'Every Resources object must contain a Type member.'}
def describe_param(p):
description = {'NoEcho': 'false',
description = {'NoEcho': p.no_echo() and 'true' or 'false',
'ParameterKey': p.name,
'Description': p.description()}
if p.has_default():

View File

@ -91,6 +91,13 @@ class Parameter(object):
raise KeyError('Missing parameter %s' % self.name)
def no_echo(self):
'''
Return whether the parameter should be sanitised in any output to
the user.
'''
return self.schema.get(NO_ECHO, 'false').lower() == 'true'
def description(self):
'''Return the description of the parameter.'''
return self.schema.get(DESCRIPTION, '')
@ -105,7 +112,11 @@ class Parameter(object):
def __str__(self):
'''Return a string representation of the parameter'''
return self.value()
value = self.value()
if self.no_echo():
return '******'
else:
return value
class NumberParam(Parameter):

View File

@ -76,6 +76,30 @@ class ParameterTest(unittest.TestCase):
else:
self.fail('ValueError not raised')
def test_no_echo_true(self):
p = parameters.Parameter('anechoic',
{'Type': 'String',
'NoEcho': 'true'},
'wibble')
self.assertTrue(p.no_echo())
self.assertNotEqual(str(p), 'wibble')
def test_no_echo_true_caps(self):
p = parameters.Parameter('anechoic',
{'Type': 'String',
'NoEcho': 'TrUe'},
'wibble')
self.assertTrue(p.no_echo())
self.assertNotEqual(str(p), 'wibble')
def test_no_echo_false(self):
p = parameters.Parameter('echoic',
{'Type': 'String',
'NoEcho': 'false'},
'wibble')
self.assertFalse(p.no_echo())
self.assertEqual(str(p), 'wibble')
def test_description(self):
description = 'Description of the parameter'
p = parameters.Parameter('p', {'Type': 'String',