Remove encryption option for volumes
Change Idb6a923f (https://review.openstack.org/#/c/21264/) added an encryption choice field for volumes. However, this choice field uses volume metadata rather than volume type to denote an encrypted volume. This option is removed in this patch, since the existing volume type field should be used instead. Change-Id: I730b4ffc26f391065943cb0d135ceac113cb6754 Implements: blueprint volume-encryption-field
This commit is contained in:
parent
793f8eadf3
commit
8341a4dff3
@ -34,7 +34,6 @@ class CreateForm(forms.SelfHandlingForm):
|
||||
type = forms.ChoiceField(label=_("Type"),
|
||||
required=False)
|
||||
size = forms.IntegerField(min_value=1, label=_("Size (GB)"))
|
||||
encryption = forms.ChoiceField(label=_("Encryption"), required=False)
|
||||
volume_source_type = forms.ChoiceField(label=_("Volume Source"),
|
||||
required=False)
|
||||
snapshot_source = forms.ChoiceField(label=_("Use snapshot as a source"),
|
||||
@ -62,24 +61,6 @@ class CreateForm(forms.SelfHandlingForm):
|
||||
[(type.name, type.name)
|
||||
for type in volume_types]
|
||||
|
||||
# Hide the volume encryption field if the hypervisor doesn't support it
|
||||
# NOTE: as of Grizzly this is not yet supported in Nova so enabling
|
||||
# this setting will not do anything useful
|
||||
hypervisor_features = getattr(settings,
|
||||
"OPENSTACK_HYPERVISOR_FEATURES",
|
||||
{})
|
||||
can_encrypt_volumes = hypervisor_features.get("can_encrypt_volumes",
|
||||
False)
|
||||
|
||||
if can_encrypt_volumes:
|
||||
# TODO(laura-glendenning) get from api call in future
|
||||
encryption_options = {"LUKS": "dmcrypt LUKS"}
|
||||
self.fields['encryption'].choices = [("", "")] + \
|
||||
[(enc, display) for enc, display in encryption_options.items()]
|
||||
else:
|
||||
self.fields['encryption'].widget = forms.widgets.HiddenInput()
|
||||
self.fields['encryption'].required = False
|
||||
|
||||
if ("snapshot_id" in request.GET):
|
||||
try:
|
||||
snapshot = self.get_snapshot(request,
|
||||
@ -214,9 +195,6 @@ class CreateForm(forms.SelfHandlingForm):
|
||||
|
||||
metadata = {}
|
||||
|
||||
if data['encryption']:
|
||||
metadata['encryption'] = data['encryption']
|
||||
|
||||
volume = cinder.volume_create(request,
|
||||
data['size'],
|
||||
data['name'],
|
||||
|
@ -508,106 +508,6 @@ class VolumeViewTests(test.TestCase):
|
||||
' volumes.']
|
||||
self.assertEqual(res.context['form'].errors['__all__'], expected_error)
|
||||
|
||||
@test.create_stubs({cinder: ('volume_create',
|
||||
'volume_snapshot_list',
|
||||
'volume_type_list',
|
||||
'tenant_absolute_limits',
|
||||
'volume_list',),
|
||||
api.glance: ('image_list_detailed',)})
|
||||
def test_create_volume_encrypted(self):
|
||||
volume = self.volumes.first()
|
||||
volume_type = self.volume_types.first()
|
||||
usage_limit = {'maxTotalVolumeGigabytes': 250,
|
||||
'gigabytesUsed': 20,
|
||||
'maxTotalVolumes': 6}
|
||||
formData = {'name': u'An Encrypted Volume',
|
||||
'description': u'This volume has metadata for encryption.',
|
||||
'method': u'CreateForm',
|
||||
'type': volume_type.name,
|
||||
'size': 50,
|
||||
'snapshot_source': '',
|
||||
'encryption': u'LUKS'}
|
||||
|
||||
# check normal operation with can_encrypt_volumes = true
|
||||
PREV = settings.OPENSTACK_HYPERVISOR_FEATURES['can_encrypt_volumes']
|
||||
settings.OPENSTACK_HYPERVISOR_FEATURES['can_encrypt_volumes'] = True
|
||||
|
||||
cinder.volume_type_list(IsA(http.HttpRequest)).\
|
||||
AndReturn(self.volume_types.list())
|
||||
cinder.tenant_absolute_limits(IsA(http.HttpRequest)).\
|
||||
AndReturn(usage_limit)
|
||||
cinder.volume_list(IsA(http.HttpRequest)).\
|
||||
AndReturn(self.volumes.list())
|
||||
cinder.volume_snapshot_list(IsA(http.HttpRequest)).\
|
||||
AndReturn(self.volume_snapshots.list())
|
||||
api.glance.image_list_detailed(IsA(http.HttpRequest),
|
||||
filters={'is_public': True,
|
||||
'status': 'active'}) \
|
||||
.AndReturn([self.images.list(), False])
|
||||
api.glance.image_list_detailed(IsA(http.HttpRequest),
|
||||
filters={'property-owner_id': self.tenant.id,
|
||||
'status': 'active'}) \
|
||||
.AndReturn([[], False])
|
||||
cinder.volume_create(IsA(http.HttpRequest),
|
||||
formData['size'],
|
||||
formData['name'],
|
||||
formData['description'],
|
||||
formData['type'],
|
||||
metadata={'encryption': formData['encryption']},
|
||||
snapshot_id=None,
|
||||
image_id=None).AndReturn(volume)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
|
||||
url = reverse('horizon:project:volumes:create')
|
||||
res = self.client.post(url, formData)
|
||||
|
||||
redirect_url = reverse('horizon:project:volumes:index')
|
||||
self.assertRedirectsNoFollow(res, redirect_url)
|
||||
|
||||
settings.OPENSTACK_HYPERVISOR_FEATURES['can_encrypt_volumes'] = PREV
|
||||
|
||||
@test.create_stubs({cinder: ('volume_snapshot_list', 'volume_type_list',
|
||||
'tenant_absolute_limits', 'volume_list',),
|
||||
api.glance: ('image_list_detailed',)})
|
||||
def test_create_volume_cannot_encrypt(self):
|
||||
# check that widget is hidden if can_encrypt_volumes = false
|
||||
PREV = settings.OPENSTACK_HYPERVISOR_FEATURES['can_encrypt_volumes']
|
||||
settings.OPENSTACK_HYPERVISOR_FEATURES['can_encrypt_volumes'] = False
|
||||
|
||||
usage_limit = {'maxTotalVolumeGigabytes': 250,
|
||||
'gigabytesUsed': 20,
|
||||
'maxTotalVolumes': 6}
|
||||
|
||||
cinder.volume_type_list(IsA(http.HttpRequest)).\
|
||||
AndReturn(self.volume_types.list())
|
||||
cinder.tenant_absolute_limits(IsA(http.HttpRequest)).\
|
||||
AndReturn(usage_limit)
|
||||
cinder.volume_list(IsA(http.HttpRequest)).\
|
||||
AndReturn(self.volumes.list())
|
||||
cinder.volume_snapshot_list(IsA(http.HttpRequest)).\
|
||||
AndReturn(self.volume_snapshots.list())
|
||||
api.glance.image_list_detailed(IsA(http.HttpRequest),
|
||||
filters={'is_public': True,
|
||||
'status': 'active'}) \
|
||||
.AndReturn([self.images.list(), False])
|
||||
api.glance.image_list_detailed(IsA(http.HttpRequest),
|
||||
filters={'property-owner_id': self.tenant.id,
|
||||
'status': 'active'}) \
|
||||
.AndReturn([[], False])
|
||||
|
||||
self.mox.ReplayAll()
|
||||
|
||||
url = reverse('horizon:project:volumes:create')
|
||||
res = self.client.get(url)
|
||||
|
||||
# Assert the encryption field is hidden.
|
||||
form = res.context['form']
|
||||
self.assertTrue(isinstance(form.fields['encryption'].widget,
|
||||
widgets.HiddenInput))
|
||||
|
||||
settings.OPENSTACK_HYPERVISOR_FEATURES['can_encrypt_volumes'] = PREV
|
||||
|
||||
@test.create_stubs({cinder: ('volume_list',
|
||||
'volume_delete',),
|
||||
api.nova: ('server_list',),
|
||||
|
@ -148,10 +148,6 @@ OPENSTACK_KEYSTONE_BACKEND = {
|
||||
|
||||
OPENSTACK_HYPERVISOR_FEATURES = {
|
||||
'can_set_mount_point': True,
|
||||
|
||||
# NOTE: as of Grizzly this is not yet supported in Nova so enabling this
|
||||
# setting will not do anything useful
|
||||
'can_encrypt_volumes': False
|
||||
}
|
||||
|
||||
# The OPENSTACK_NEUTRON_NETWORK settings can be used to enable optional
|
||||
|
@ -89,10 +89,6 @@ OPENSTACK_NEUTRON_NETWORK = {
|
||||
|
||||
OPENSTACK_HYPERVISOR_FEATURES = {
|
||||
'can_set_mount_point': True,
|
||||
|
||||
# NOTE: as of Grizzly this is not yet supported in Nova so enabling this
|
||||
# setting will not do anything useful
|
||||
'can_encrypt_volumes': False
|
||||
}
|
||||
|
||||
LOGGING['loggers']['openstack_dashboard'] = {
|
||||
|
Loading…
Reference in New Issue
Block a user