Merge "Adds config to disable the password in stack"

This commit is contained in:
Jenkins 2015-11-09 10:45:56 +00:00 committed by Gerrit Code Review
commit 4de120386a
3 changed files with 39 additions and 9 deletions

View File

@ -830,6 +830,21 @@ A dictionary of settings which can be used to enable optional services provided
by cinder. Currently only the backup service is available.
``OPENSTACK_HEAT_STACK``
-----------------------------
.. versionadded:: 9.0.0(Mitaka)
Default: ``{'enable_user_pass': True}``
A dictionary of settings to use with heat stacks. Currently, the only setting
available is "enable_user_pass", which can be used to disable the password
field while launching the stack. Currently HEAT API needs user password to
perform all the heat operations because in HEAT API trusts is not enabled by
default. So, this setting can be set as "False" in-case HEAT uses trusts by
default otherwise it needs to be set as "True".
``OPENSTACK_NEUTRON_NETWORK``
-----------------------------

View File

@ -13,6 +13,7 @@
import json
import logging
from django.conf import settings
from django.utils import html
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.debug import sensitive_variables # noqa
@ -281,18 +282,24 @@ class CreateStackForm(forms.SelfHandlingForm):
def __init__(self, *args, **kwargs):
parameters = kwargs.pop('parameters')
# special case: load template data from API, not passed in params
if(kwargs.get('validate_me')):
if kwargs.get('validate_me'):
parameters = kwargs.pop('validate_me')
super(CreateStackForm, self).__init__(*args, **kwargs)
if self._stack_password_enabled():
self.fields['password'] = forms.CharField(
label=_('Password for user "%s"') % self.request.user.username,
help_text=_('This is required for operations to be performed '
'throughout the lifecycle of the stack'),
widget=forms.PasswordInput())
self._build_parameter_fields(parameters)
def _build_parameter_fields(self, template_validate):
self.fields['password'] = forms.CharField(
label=_('Password for user "%s"') % self.request.user.username,
help_text=_('This is required for operations to be performed '
'throughout the lifecycle of the stack'),
widget=forms.PasswordInput())
def _stack_password_enabled(self):
stack_settings = getattr(settings, 'OPENSTACK_HEAT_STACK', {})
return stack_settings.get('enable_user_pass', True)
def _build_parameter_fields(self, template_validate):
self.help_text = template_validate['Description']
params = template_validate.get('Parameters', {})
@ -368,8 +375,9 @@ class CreateStackForm(forms.SelfHandlingForm):
'timeout_mins': data.get('timeout_mins'),
'disable_rollback': not(data.get('enable_rollback')),
'parameters': dict(params_list),
'password': data.get('password')
}
if data.get('password'):
fields['password'] = data.get('password')
if data.get('template_data'):
fields['template'] = data.get('template_data')
@ -422,8 +430,9 @@ class EditStackForm(CreateStackForm):
'timeout_mins': data.get('timeout_mins'),
'disable_rollback': not(data.get('enable_rollback')),
'parameters': dict(params_list),
'password': data.get('password')
}
if data.get('password'):
fields['password'] = data.get('password')
# if the user went directly to this form, resubmit the existing
# template data. otherwise, submit what they had from the first form

View File

@ -277,6 +277,12 @@ OPENSTACK_NEUTRON_NETWORK = {
'supported_vnic_types': ['*']
}
# The OPENSTACK_HEAT_STACK settings can be used to disable password
# field required while launching the stack.
OPENSTACK_HEAT_STACK = {
'enable_user_pass': True,
}
# The OPENSTACK_IMAGE_BACKEND settings can be used to customize features
# in the OpenStack Dashboard related to the Image service, such as the list
# of supported image formats.