From: Siobhan Tully Date: Thu, 2 May 2013 10:02:36 +0000 (-0400) Subject: Merged with Tony's changes -- added numberCores to SliverAdmins X-Git-Tag: 1.0~73 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=d1cd5dfcc6df38e882a0d518d10b3856ffd432f9;hp=-c;p=plstackapi.git Merged with Tony's changes -- added numberCores to SliverAdmins --- d1cd5dfcc6df38e882a0d518d10b3856ffd432f9 diff --combined plstackapi/core/admin.py index 3a40bca,904b566..4bb9a98 --- a/plstackapi/core/admin.py +++ b/plstackapi/core/admin.py @@@ -1,5 -1,6 +1,6 @@@ from plstackapi.core.models import Site from plstackapi.core.models import * + from plstackapi.openstack.manager import OpenStackManager from plstackapi.openstack.driver import OpenStackDriver from plstackapi.openstack.client import OpenStackClient @@@ -31,7 -32,7 +32,7 @@@ class ReadonlyTabularInline(admin.Tabul class SliverInline(admin.TabularInline): model = Sliver - fields = ['ip', 'name', 'slice', 'flavor', 'image', 'key', 'node', 'deploymentNetwork'] - fields = ['ip', 'name', 'slice', 'image', 'key', 'node', 'deploymentNetwork'] ++ fields = ['ip', 'name', 'slice', 'numberCores', 'image', 'key', 'node', 'deploymentNetwork'] extra = 0 class SiteInline(admin.TabularInline): @@@ -63,6 -64,7 +64,7 @@@ class PlanetStackBaseAdmin(admin.ModelA class OSModelAdmin(PlanetStackBaseAdmin): """Attach client connection to openstack on delete() and save()""" + def save_model(self, request, obj, form, change): client = OpenStackClient(tenant=request.user.site.login_base, **request.session.get('auth', {})) obj.driver = OpenStackDriver(client=client) @@@ -75,12 -77,24 +77,24 @@@ obj.caller = request.user obj.delete() - class RoleAdmin(OSModelAdmin): + class RoleAdmin(PlanetStackBaseAdmin): fieldsets = [ ('Role', {'fields': ['role_type']}) ] list_display = ('role_type',) + def save_model(self, request, obj, form, change): + auth = request.session.get('auth', {}) + auth['tenant'] = request.user.site.login_base + obj.os_manager = OpenStackManager(auth=auth, caller=request.user) + obj.save() + + def delete_model(self, request, obj): + auth = request.session.get('auth', {}) + auth['tenant'] = request.user.site.login_base + obj.os_manager = OpenStackManager(auth=auth, caller=request.user) + obj.delete() + class DeploymentNetworkAdminForm(forms.ModelForm): sites = forms.ModelMultipleChoiceField( queryset=Site.objects.all(), @@@ -113,6 -127,17 +127,17 @@@ class DeploymentNetworkAdmin(PlanetStac form = DeploymentNetworkAdminForm inlines = [NodeInline,] + def get_formsets(self, request, obj=None): + for inline in self.get_inline_instances(request, obj): + # hide MyInline in the add view + if obj is None: + continue + # give inline object access to driver and caller + client = OpenStackClient(tenant=request.user.site.login_base, **request.session.get('auth', {})) + inline.model.driver = OpenStackDriver(client=client) + inline.model.caller = request.user + yield inline.get_formset(request, obj) + class SiteAdmin(OSModelAdmin): fieldsets = [ (None, {'fields': ['name', 'site_url', 'enabled', 'is_public', 'login_base']}), @@@ -124,6 -149,17 +149,17 @@@ inlines = [NodeInline,] search_fields = ['name'] + def get_formsets(self, request, obj=None): + for inline in self.get_inline_instances(request, obj): + # hide MyInline in the add view + if obj is None: + continue + # give inline object access to driver and caller + client = OpenStackClient(tenant=request.user.site.login_base, **request.session.get('auth', {})) + inline.model.driver = OpenStackDriver(client=client) + inline.model.caller = request.user + yield inline.get_formset(request, obj) + class SitePrivilegeAdmin(PlanetStackBaseAdmin): fieldsets = [ (None, {'fields': ['user', 'site', 'role']}) @@@ -160,10 -196,21 +196,21 @@@ class KeyAdmin(OSModelAdmin) class SliceAdmin(OSModelAdmin): - fields = ['name', 'site', 'instantiation', 'description', 'slice_url'] - list_display = ('name', 'site','slice_url', 'instantiation') + fields = ['name', 'site', 'serviceClass', 'instantiation', 'description', 'slice_url'] + list_display = ('name', 'site','serviceClass', 'slice_url', 'instantiation') inlines = [SliverInline] + def get_formsets(self, request, obj=None): + for inline in self.get_inline_instances(request, obj): + # hide MyInline in the add view + if obj is None: + continue + # give inline object access to driver and caller + client = OpenStackClient(tenant=obj.name, **request.session.get('auth', {})) + inline.model.driver = OpenStackDriver(client=client) + inline.model.caller = request.user + yield inline.get_formset(request, obj) + def get_queryset(self, request): qs = super(SliceAdmin, self).get_queryset(request) if request.user.is_superuser: @@@ -228,9 -275,9 +275,9 @@@ class SliverForm(forms.ModelForm) class SliverAdmin(PlanetStackBaseAdmin): form = SliverForm fieldsets = [ - ('Sliver', {'fields': ['ip', 'name', 'slice', 'numberCores', 'flavor', 'image', 'key', 'node', 'deploymentNetwork']}) - ('Sliver', {'fields': ['ip', 'name', 'slice', 'image', 'key', 'node', 'deploymentNetwork']}) ++ ('Sliver', {'fields': ['ip', 'name', 'slice', 'numberCores', 'image', 'key', 'node', 'deploymentNetwork']}) ] - list_display = ['ip', 'name', 'slice', 'flavor', 'image', 'key', 'node', 'deploymentNetwork'] - list_display = ['ip', 'name', 'slice', 'image', 'key', 'node', 'deploymentNetwork'] ++ list_display = ['ip', 'name', 'slice', 'numberCores', 'image', 'key', 'node', 'deploymentNetwork'] def save_model(self, request, obj, form, change): # update openstack connection to use this sliver's slice/tenant @@@ -268,7 -315,8 +315,8 @@@ class UserCreationForm(forms.ModelForm) def save(self, commit=True): # Save the provided password in hashed format user = super(UserCreationForm, self).save(commit=False) - user.set_password(self.cleaned_data["password1"]) + user.password = self.cleaned_data["password1"] + #user.set_password(self.cleaned_data["password1"]) if commit: user.save() return user @@@ -340,7 -388,6 +388,6 @@@ admin.site.register(Subnet, SubnetAdmin admin.site.register(Image, ImageAdmin) admin.site.register(Node, NodeAdmin) admin.site.register(Sliver, SliverAdmin) - admin.site.register(Flavor) admin.site.register(Key, KeyAdmin) admin.site.register(Role, RoleAdmin) admin.site.register(DeploymentNetwork, DeploymentNetworkAdmin) diff --combined plstackapi/core/models/sliver.py index 529c131,ba308f5..a4bf2c0 --- a/plstackapi/core/models/sliver.py +++ b/plstackapi/core/models/sliver.py @@@ -2,7 -2,6 +2,6 @@@ import o from django.db import models from django.core import exceptions from plstackapi.core.models import PlCoreBase - from plstackapi.core.models import Flavor from plstackapi.core.models import Image from plstackapi.core.models import Key from plstackapi.core.models import Slice @@@ -14,15 -13,13 +13,15 @@@ from plstackapi.core.models import Depl class Sliver(PlCoreBase): instance_id = models.CharField(max_length=200, help_text="Nova instance id") name = models.CharField(max_length=200, help_text="Sliver name") + instance_name = models.CharField(blank=True, null=True, max_length=200, help_text="OpenStack generated name") ip = models.GenericIPAddressField(help_text="Sliver ip address", blank=True, null=True) - flavor = models.ForeignKey(Flavor, related_name='slivers') image = models.ForeignKey(Image, related_name='slivers') key = models.ForeignKey(Key, related_name='slivers') slice = models.ForeignKey(Slice, related_name='slivers') node = models.ForeignKey(Node, related_name='slivers') deploymentNetwork = models.ForeignKey(DeploymentNetwork, verbose_name='deployment', related_name='sliver_deploymentNetwork') + numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for sliver", default=2) + def __unicode__(self): return u'%s::%s' % (self.slice, self.deploymentNetwork) @@@ -33,10 -30,10 +32,10 @@@ if not self.instance_id: instance = self.driver.spawn_instance(name=self.name, key_name = self.key.name, - flavor_id = self.flavor.flavor_id, image_id = self.image.image_id, hostname = self.node.name ) self.instance_id = instance.id + self.instance_name = getattr(instance, 'OS-EXT-SRV-ATTR:instance_name') super(Sliver, self).save(*args, **kwds)