From 06e1d59a5cc3a8a5890af211bc9c76d201733b53 Mon Sep 17 00:00:00 2001 From: Christian Berendt Date: Thu, 29 Nov 2012 18:49:56 +0100 Subject: [PATCH] show swap disk in listing and forms in flavors syspanel At the moment the swap disk entry of flavors is not listed in the syspanel listing of flavors and it's not possible to create a new flavor or edit an existing flavor with the swap size Change-Id: I92195671024bb361fa5825cbdcea515850ddee31 --- openstack_dashboard/api/nova.py | 6 +++--- openstack_dashboard/dashboards/admin/flavors/forms.py | 7 +++++-- openstack_dashboard/dashboards/admin/flavors/tables.py | 7 +++++++ openstack_dashboard/dashboards/admin/flavors/tests.py | 4 ++++ openstack_dashboard/dashboards/admin/flavors/views.py | 1 + openstack_dashboard/test/test_data/nova_data.py | 2 ++ 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/openstack_dashboard/api/nova.py b/openstack_dashboard/api/nova.py index c89c1edb2..f5167742d 100644 --- a/openstack_dashboard/api/nova.py +++ b/openstack_dashboard/api/nova.py @@ -195,9 +195,9 @@ def server_vnc_console(request, instance_id, console_type='novnc'): console_type)['console']) -def flavor_create(request, name, memory, vcpu, disk, ephemeral=0): - return novaclient(request).flavors.create(name, memory, vcpu, - disk, ephemeral=ephemeral) +def flavor_create(request, name, memory, vcpu, disk, ephemeral=0, swap=0): + return novaclient(request).flavors.create(name, memory, vcpu, disk, + ephemeral=ephemeral, swap=swap) def flavor_delete(request, flavor_id): diff --git a/openstack_dashboard/dashboards/admin/flavors/forms.py b/openstack_dashboard/dashboards/admin/flavors/forms.py index c98604b5f..0f512042a 100644 --- a/openstack_dashboard/dashboards/admin/flavors/forms.py +++ b/openstack_dashboard/dashboards/admin/flavors/forms.py @@ -38,6 +38,7 @@ class CreateFlavor(forms.SelfHandlingForm): memory_mb = forms.IntegerField(label=_("RAM MB")) disk_gb = forms.IntegerField(label=_("Root Disk GB")) eph_gb = forms.IntegerField(label=_("Ephemeral Disk GB")) + swap_mb = forms.IntegerField(label=_("Swap Disk MB")) def clean_name(self): name = self.cleaned_data.get('name') @@ -64,7 +65,8 @@ class CreateFlavor(forms.SelfHandlingForm): data['memory_mb'], data['vcpus'], data['disk_gb'], - ephemeral=data['eph_gb']) + ephemeral=data['eph_gb'], + swap=data['swap_mb']) msg = _('Created flavor "%s".') % data['name'] messages.success(request, msg) return flavor @@ -95,7 +97,8 @@ class EditFlavor(CreateFlavor): data['memory_mb'], data['vcpus'], data['disk_gb'], - ephemeral=data['eph_gb']) + ephemeral=data['eph_gb'], + swap=data['swap_mb']) if (len(extras_dict) > 0): api.nova.flavor_extra_set(request, flavor.id, extras_dict) msg = _('Updated flavor "%s".') % data['name'] diff --git a/openstack_dashboard/dashboards/admin/flavors/tables.py b/openstack_dashboard/dashboards/admin/flavors/tables.py index 1b3c3ffc6..a8964143e 100644 --- a/openstack_dashboard/dashboards/admin/flavors/tables.py +++ b/openstack_dashboard/dashboards/admin/flavors/tables.py @@ -43,6 +43,10 @@ def get_size(flavor): return _("%sMB") % flavor.ram +def get_swap_size(flavor): + return _("%sMB") % (flavor.swap or 0) + + class FlavorsTable(tables.DataTable): name = tables.Column('name', verbose_name=_('Flavor Name')) vcpus = tables.Column('vcpus', verbose_name=_('VCPUs')) @@ -52,6 +56,9 @@ class FlavorsTable(tables.DataTable): disk = tables.Column('disk', verbose_name=_('Root Disk')) ephemeral = tables.Column('OS-FLV-EXT-DATA:ephemeral', verbose_name=_('Ephemeral Disk')) + swap = tables.Column(get_swap_size, + verbose_name=_('Swap Disk'), + attrs={'data-type': 'size'}) flavor_id = tables.Column('id', verbose_name=('ID')) class Meta: diff --git a/openstack_dashboard/dashboards/admin/flavors/tests.py b/openstack_dashboard/dashboards/admin/flavors/tests.py index 1dfa49a1a..f4d3ca475 100644 --- a/openstack_dashboard/dashboards/admin/flavors/tests.py +++ b/openstack_dashboard/dashboards/admin/flavors/tests.py @@ -21,6 +21,7 @@ class FlavorsTests(test.BaseAdminViewTests): flavor.ram, flavor.vcpus, flavor.disk, + swap=flavor.swap or 0, ephemeral=eph).AndReturn(flavor) api.nova.flavor_list(IsA(http.HttpRequest)) self.mox.ReplayAll() @@ -34,6 +35,7 @@ class FlavorsTests(test.BaseAdminViewTests): 'vcpus': flavor.vcpus, 'memory_mb': flavor.ram, 'disk_gb': flavor.disk, + 'swap_mb': flavor.swap or 0, 'eph_gb': eph} resp = self.client.post(url, data) self.assertRedirectsNoFollow(resp, @@ -62,6 +64,7 @@ class FlavorsTests(test.BaseAdminViewTests): flavor.ram, flavor.vcpus + 1, flavor.disk, + swap=flavor.swap or 0, ephemeral=eph).AndReturn(flavor) self.mox.ReplayAll() @@ -77,6 +80,7 @@ class FlavorsTests(test.BaseAdminViewTests): 'vcpus': flavor.vcpus + 1, 'memory_mb': flavor.ram, 'disk_gb': flavor.disk, + 'swap_mb': flavor.swap or 0, 'eph_gb': eph} resp = self.client.post(url, data) self.assertRedirectsNoFollow(resp, diff --git a/openstack_dashboard/dashboards/admin/flavors/views.py b/openstack_dashboard/dashboards/admin/flavors/views.py index dba30684b..2c61be8e8 100644 --- a/openstack_dashboard/dashboards/admin/flavors/views.py +++ b/openstack_dashboard/dashboards/admin/flavors/views.py @@ -79,4 +79,5 @@ class EditView(forms.ModalFormView): 'vcpus': flavor.vcpus, 'memory_mb': flavor.ram, 'disk_gb': flavor.disk, + 'swap_mb': flavor.swap or 0, 'eph_gb': getattr(flavor, 'OS-FLV-EXT-DATA:ephemeral', None)} diff --git a/openstack_dashboard/test/test_data/nova_data.py b/openstack_dashboard/test/test_data/nova_data.py index 0bd7c3a8e..fafa862af 100644 --- a/openstack_dashboard/test/test_data/nova_data.py +++ b/openstack_dashboard/test/test_data/nova_data.py @@ -203,6 +203,7 @@ def data(TEST): 'vcpus': 1, 'disk': 0, 'ram': 512, + 'swap': 0, 'OS-FLV-EXT-DATA:ephemeral': 0}) flavor_2 = flavors.Flavor(flavors.FlavorManager(None), {'id': "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", @@ -210,6 +211,7 @@ def data(TEST): 'vcpus': 1000, 'disk': 1024, 'ram': 10000, + 'swap': 0, 'OS-FLV-EXT-DATA:ephemeral': 2048}) TEST.flavors.add(flavor_1, flavor_2)