X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fadmin.py;h=8ec00a90444a7c860bf4d0e49f1f457d2bba18f2;hb=ab385c86e10475c711c350f1ddf1cca0c2accd65;hp=e4af7f8f1eb4203667fbc54841033a2f0851bc2e;hpb=45a5a86b0ce2089a577fcbf26b8686b6dd2a7b7f;p=plstackapi.git diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py index e4af7f8..8ec00a9 100644 --- a/planetstack/core/admin.py +++ b/planetstack/core/admin.py @@ -31,7 +31,7 @@ def backend_icon(obj): # backend_status, enacted, updated): if (obj.enacted is not None) and obj.enacted >= obj.updated: return '' else: - if obj.backend_status == "Provisioning in progress" or obj.backend_status=="": + if ((obj.backend_status is not None) and obj.backend_status.startswith("0 -")) or obj.backend_status == "Provisioning in progress" or obj.backend_status=="": return '' % obj.backend_status else: return '' % html_escape(obj.backend_status, quote=True) @@ -340,9 +340,9 @@ class NetworkLookerUpper: class SliverInline(PlStackTabularInline): model = Sliver - fields = ['backend_status_icon', 'all_ips_string', 'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node'] + fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node'] extra = 0 - readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_name'] + readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name'] suit_classes = 'suit-tab suit-tab-slivers' def queryset(self, request): @@ -542,7 +542,7 @@ class DeploymentAdminForm(forms.ModelForm): self.fields['accessControl'].initial = "allow site " + request.user.site.name if self.instance and self.instance.pk: - self.fields['sites'].initial = [x for x in self.instance.sitesdeployments.all()] + self.fields['sites'].initial = [x.site for x in self.instance.sitedeployments.all()] self.fields['images'].initial = [x.image for x in self.instance.imagedeployments.all()] self.fields['flavors'].initial = self.instance.flavors.all() @@ -594,7 +594,7 @@ class DeploymentAdminForm(forms.ModelForm): # create/destroy the through models ourselves. There has to be # a better way... - self.manipulate_m2m_objs(deployment, self.cleaned_data['sites'], deployment.sitedeployment.all(), SiteDeployment, "deployment", "site") + self.manipulate_m2m_objs(deployment, self.cleaned_data['sites'], deployment.sitedeployments.all(), SiteDeployment, "deployment", "site") self.manipulate_m2m_objs(deployment, self.cleaned_data['images'], deployment.imagedeployments.all(), ImageDeployments, "deployment", "image") # manipulate_m2m_objs doesn't work for Flavor/Deployment relationship # so well handle that manually here @@ -716,7 +716,7 @@ class ControllerAdminForm(forms.ModelForm): class ControllerAdmin(PlanetStackBaseAdmin): model = Controller - fieldList = ['name', 'version', 'backend_type', 'auth_url', 'admin_user', 'admin_tenant','admin_password'] + fieldList = ['name', 'backend_type', 'version', 'auth_url', 'admin_user', 'admin_tenant','admin_password'] #fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})] inlines = [ControllerSiteInline] # ,ControllerImagesInline] list_display = ['backend_status_icon', 'name', 'version', 'backend_type'] @@ -777,14 +777,17 @@ class SiteNodeInline(PlStackTabularInline): suit_classes = 'suit-tab suit-tab-nodes' class SiteAdmin(PlanetStackBaseAdmin): - fieldList = ['backend_status_text', 'name', 'site_url', 'enabled', 'is_public', 'login_base', 'accountLink','location'] + #fieldList = ['backend_status_text', 'name', 'site_url', 'enabled', 'is_public', 'login_base', 'accountLink','location'] + fieldList = ['backend_status_text', 'name', 'site_url', 'enabled', 'is_public', 'login_base', 'location'] fieldsets = [ (None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']}), #('Deployment Networks', {'fields': ['deployments'], 'classes':['suit-tab suit-tab-deployments']}), ] - readonly_fields = ['backend_status_text', 'accountLink'] + #readonly_fields = ['backend_status_text', 'accountLink'] + readonly_fields = ['backend_status_text'] - user_readonly_fields = ['name', 'deployments','site_url', 'enabled', 'is_public', 'login_base', 'accountLink'] + #user_readonly_fields = ['name', 'deployments','site_url', 'enabled', 'is_public', 'login_base', 'accountLink'] + user_readonly_fields = ['name', 'deployments','site_url', 'enabled', 'is_public', 'login_base'] list_display = ('backend_status_icon', 'name', 'login_base','site_url', 'enabled') list_display_links = ('backend_status_icon', 'name', ) @@ -934,7 +937,7 @@ class SliceAdmin(PlanetStackBaseAdmin): ('slicenetworks','Networks'), ('sliceprivileges','Privileges'), ('slivers','Slivers'), - ('reservations','Reservations'), + #('reservations','Reservations'), ('tags','Tags'), ] @@ -958,7 +961,7 @@ class SliceAdmin(PlanetStackBaseAdmin): def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None): deployment_nodes = [] for node in Node.objects.all(): - deployment_nodes.append( (node.site_deployment.id, node.id, node.name) ) + deployment_nodes.append( (node.site_deployment.deployment.id, node.id, node.name) ) deployment_flavors = [] for flavor in Flavor.objects.all(): @@ -1088,6 +1091,7 @@ class SliverForm(forms.ModelForm): widgets = { 'ip': PlainTextWidget(), 'instance_name': PlainTextWidget(), + 'instance_id': PlainTextWidget(), 'slice': LinkedSelect, 'deployment': LinkedSelect, 'node': LinkedSelect, @@ -1103,18 +1107,25 @@ class TagAdmin(PlanetStackBaseAdmin): class SliverAdmin(PlanetStackBaseAdmin): form = SliverForm fieldsets = [ - ('Sliver Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'node', 'ip', 'instance_name', 'flavor', 'image', ], 'classes': ['suit-tab suit-tab-general'], }) + ('Sliver Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'node', 'ip', 'instance_id', 'instance_name', 'flavor', 'image', 'ssh_command'], 'classes': ['suit-tab suit-tab-general'], }) ] - readonly_fields = ('backend_status_text', ) - list_display = ['backend_status_icon', 'ip', 'instance_name', 'slice', 'flavor', 'image', 'node', 'deployment'] + readonly_fields = ('backend_status_text', 'ssh_command', ) + list_display = ['backend_status_icon', 'ip', 'instance_id', 'instance_name', 'slice', 'flavor', 'image', 'node', 'deployment'] list_display_links = ('backend_status_icon', 'ip',) - suit_form_tabs =(('general', 'Sliver Details')) + suit_form_tabs =(('general', 'Sliver Details'),) inlines = [TagInline] user_readonly_fields = ['slice', 'deployment', 'node', 'ip', 'instance_name', 'flavor', 'image'] + def ssh_command(self, obj): + ssh_command = obj.get_ssh_command() + if ssh_command: + return ssh_command + else: + return "(not available)" + def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'slice': kwargs['queryset'] = Slice.select_by_user(request.user) @@ -1130,11 +1141,9 @@ class SliverAdmin(PlanetStackBaseAdmin): def get_formsets(self, request, obj=None): # make some fields read only if we are updating an existing record if obj == None: - #self.readonly_fields = ('ip', 'instance_name') - self.readonly_fields = ('backend_status_text',) + self.readonly_fields = ('backend_status_text', 'ssh_command', ) else: - self.readonly_fields = ('backend_status_text',) - #self.readonly_fields = ('ip', 'instance_name', 'slice', 'image', 'key') + self.readonly_fields = ('backend_status_text', 'ssh_command',) for inline in self.get_inline_instances(request, obj): # hide MyInline in the add view @@ -1233,7 +1242,8 @@ class UserAdmin(PermissionCheckingAdminMixin, UserAdmin): # The fields to be used in displaying the User model. # These override the definitions on the base UserAdmin # that reference specific fields on auth.User. - list_display = ('email', 'firstname', 'lastname', 'site', 'last_login') + list_display = ('backend_status_icon', 'email', 'firstname', 'lastname', 'site', 'last_login') + list_display_links = ("email",) list_filter = ('site',) inlines = [SlicePrivilegeInline,SitePrivilegeInline,UserDashboardViewInline] admin_inlines = [ControllerUserInline] @@ -1249,7 +1259,7 @@ class UserAdmin(PermissionCheckingAdminMixin, UserAdmin): add_fieldsets = ( (None, { 'classes': ('wide',), - 'fields': ('email', 'firstname', 'lastname', 'is_readonly', 'phone', 'public_key','password1', 'password2')}, + 'fields': ('site', 'email', 'firstname', 'lastname', 'is_readonly', 'phone', 'public_key','password1', 'password2')}, ), ) readonly_fields = ('backend_status_text', ) @@ -1712,12 +1722,12 @@ admin.site.register(Controller, ControllerAdmin) admin.site.register(Site, SiteAdmin) admin.site.register(Slice, SliceAdmin) admin.site.register(Service, ServiceAdmin) -admin.site.register(Reservation, ReservationAdmin) +#admin.site.register(Reservation, ReservationAdmin) admin.site.register(Network, NetworkAdmin) admin.site.register(Router, RouterAdmin) admin.site.register(NetworkTemplate, NetworkTemplateAdmin) -admin.site.register(Account, AccountAdmin) -admin.site.register(Invoice, InvoiceAdmin) +#admin.site.register(Account, AccountAdmin) +#admin.site.register(Invoice, InvoiceAdmin) if True: admin.site.register(NetworkParameterType, NetworkParameterTypeAdmin)