Fix broken command prompt
Interactive editing of the command line was broken due to the usage of $PROMPT_COMMAND. The cursor would often be placed at the wrong location when editing history due to prompt length confusion. We already had the OS_CLOUDNAME variable for this purpose, and I took the prompt setting logic from what we previously used in tripleo-incubator: http://git.openstack.org/cgit/openstack/tripleo-incubator/tree/cloudprompt Change-Id: I85d6a2be597477ff74ba72ffa4c4aefc42c0df3c Partial-Bug: #1673459
This commit is contained in:
parent
1273381062
commit
2d376f1367
@ -3,5 +3,5 @@ features:
|
||||
- |
|
||||
When sourcing the overcloudrc on the undercloud, the command prompt will
|
||||
show that the credentials have been loaded by being preprended with
|
||||
the overcloud stack name in all capital letters. For example,
|
||||
'(OVERCLOUD) [stack@undercloud ~]$'
|
||||
the overcloud stack name. For example,
|
||||
'(overcloud) [stack@undercloud ~]$'
|
||||
|
@ -40,8 +40,7 @@ class OvercloudRcTest(base.TestCase):
|
||||
self.assertIn("OS_PASSWORD=AdminPassword", result['overcloudrc.v3'])
|
||||
self.assertNotIn("OS_IDENTITY_API_VERSION=3", result['overcloudrc'])
|
||||
self.assertIn("OS_IDENTITY_API_VERSION=3", result['overcloudrc.v3'])
|
||||
expected_prompt = 'export PROMPT_COMMAND="echo -n \'(OVERCAST) \'"'
|
||||
self.assertIn(expected_prompt, result['overcloudrc'])
|
||||
self.assertIn(expected_prompt, result['overcloudrc.v3'])
|
||||
self.assertIn(overcloudrc.CLOUDPROMPT, result['overcloudrc'])
|
||||
self.assertIn(overcloudrc.CLOUDPROMPT, result['overcloudrc.v3'])
|
||||
self.assertIn("OS_AUTH_TYPE=password", result['overcloudrc'])
|
||||
self.assertIn("OS_AUTH_TYPE=password", result['overcloudrc.v3'])
|
||||
|
@ -63,6 +63,14 @@ def bracket_ipv6(address):
|
||||
CLEAR_ENV = """# Clear any old environment that may conflict.
|
||||
for key in $( set | awk '{FS=\"=\"} /^OS_/ {print $1}' ); do unset $key ; done
|
||||
"""
|
||||
CLOUDPROMPT = """
|
||||
# Add OS_CLOUDNAME to PS1
|
||||
if [ -z "${CLOUDPROMPT_ENABLED:-}" ]; then
|
||||
export PS1=${PS1:-""}
|
||||
export PS1=\${OS_CLOUDNAME:+"(\$OS_CLOUDNAME)"}\ $PS1
|
||||
export CLOUDPROMPT_ENABLED=1
|
||||
fi
|
||||
"""
|
||||
|
||||
|
||||
def create_overcloudrc(stack, no_proxy, admin_password):
|
||||
@ -79,7 +87,6 @@ def create_overcloudrc(stack, no_proxy, admin_password):
|
||||
[no_proxy, overcloud_host, overcloud_admin_vip])
|
||||
|
||||
rc_params = {
|
||||
'PROMPT_COMMAND': '"echo -n \'(%s) \'"' % stack.stack_name.upper(),
|
||||
'NOVA_VERSION': '1.1',
|
||||
'COMPUTE_API_VERSION': '1.1',
|
||||
'OS_USERNAME': 'admin',
|
||||
@ -100,6 +107,7 @@ def create_overcloudrc(stack, no_proxy, admin_password):
|
||||
for key, value in rc_params.items():
|
||||
line = "export %(key)s=%(value)s\n" % {'key': key, 'value': value}
|
||||
overcloudrc = overcloudrc + line
|
||||
overcloudrc = overcloudrc + CLOUDPROMPT
|
||||
|
||||
rc_params.update({
|
||||
'OS_AUTH_URL': overcloud_endpoint.replace('/v2.0', '') + '/v3',
|
||||
@ -112,6 +120,7 @@ def create_overcloudrc(stack, no_proxy, admin_password):
|
||||
for key, value in rc_params.items():
|
||||
line = "export %(key)s=%(value)s\n" % {'key': key, 'value': value}
|
||||
overcloudrc_v3 = overcloudrc_v3 + line
|
||||
overcloudrc_v3 = overcloudrc_v3 + CLOUDPROMPT
|
||||
|
||||
return {
|
||||
"overcloudrc": overcloudrc,
|
||||
|
Loading…
x
Reference in New Issue
Block a user