summaryrefslogtreecommitdiffstats
path: root/dashboard
diff options
context:
space:
mode:
authorParker Berberian <pberberian@iol.unh.edu>2018-11-20 11:19:55 -0500
committerParker Berberian <pberberian@iol.unh.edu>2018-11-26 14:14:10 -0500
commitb02aa2535c7b7beacbc2d7d24d8522fa596afeee (patch)
treed94cb88026327bbaf1f15b841d2ac78115cefaa9 /dashboard
parentf2bbdbbf7e03be031723a9680aa9deaf80e4a99c (diff)
Fixed Misc Bugs
Some corner cases that cause issues recently came to our attention. Fixes issues in the booking workflow and the Notification system. Change-Id: Ie16118ba1bdbeff86bb41a16dc783337b921d527 Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
Diffstat (limited to 'dashboard')
-rw-r--r--dashboard/src/notifier/manager.py4
-rw-r--r--dashboard/src/notifier/views.py4
-rw-r--r--dashboard/src/resource_inventory/resource_manager.py2
-rw-r--r--dashboard/src/templates/notifier/end_booking.html2
-rw-r--r--dashboard/src/templates/notifier/inbox.html2
-rw-r--r--dashboard/src/templates/notifier/new_booking.html2
-rw-r--r--dashboard/src/templates/notifier/notification.html8
-rw-r--r--dashboard/src/workflow/resource_bundle_workflow.py8
-rw-r--r--dashboard/src/workflow/sw_bundle_workflow.py10
9 files changed, 30 insertions, 12 deletions
diff --git a/dashboard/src/notifier/manager.py b/dashboard/src/notifier/manager.py
index a754241..3361074 100644
--- a/dashboard/src/notifier/manager.py
+++ b/dashboard/src/notifier/manager.py
@@ -45,7 +45,7 @@ class NotificationHandler(object):
}
)
)
- owner_notif.recipients.add(booking.owner)
+ owner_notif.recipients.add(booking.owner.userprofile)
if not booking.collaborators.all().exists():
return # no collaborators - were done
@@ -60,7 +60,7 @@ class NotificationHandler(object):
)
)
for c in booking.collaborators.all():
- collab_notif.recipients.add(c)
+ collab_notif.recipients.add(c.userprofile)
@classmethod
def email_job_fulfilled(cls, job):
diff --git a/dashboard/src/notifier/views.py b/dashboard/src/notifier/views.py
index c1a2f7e..4ee757f 100644
--- a/dashboard/src/notifier/views.py
+++ b/dashboard/src/notifier/views.py
@@ -17,7 +17,7 @@ def InboxView(request):
else:
return render(request, "dashboard/login.html", {'title': 'Authentication Required'})
- return render(request, "notifier/inbox.html", {'notifications': Notification.objects.filter(recipient=user.userprofile)})
+ return render(request, "notifier/inbox.html", {'notifications': Notification.objects.filter(recipients=user.userprofile)})
def NotificationView(request, notification_id):
@@ -27,7 +27,7 @@ def NotificationView(request, notification_id):
return render(request, "dashboard/login.html", {'title': 'Authentication Required'})
notification = Notification.objects.get(id=notification_id)
- if user not in notification.recipients:
+ if user.userprofile not in notification.recipients.all():
return render(request, "dashboard/login.html", {'title': 'Access Denied'})
return render(request, "notifier/notification.html", {'notification': notification})
diff --git a/dashboard/src/resource_inventory/resource_manager.py b/dashboard/src/resource_inventory/resource_manager.py
index 3380990..9282580 100644
--- a/dashboard/src/resource_inventory/resource_manager.py
+++ b/dashboard/src/resource_inventory/resource_manager.py
@@ -15,7 +15,7 @@ from dashboard.exceptions import (
ResourceExistenceException,
ResourceAvailabilityException,
ResourceProvisioningException,
- ModelValidationException
+ ModelValidationException,
)
from resource_inventory.models import Host, HostConfiguration, ResourceBundle
diff --git a/dashboard/src/templates/notifier/end_booking.html b/dashboard/src/templates/notifier/end_booking.html
index 22014fb..a2981c1 100644
--- a/dashboard/src/templates/notifier/end_booking.html
+++ b/dashboard/src/templates/notifier/end_booking.html
@@ -30,7 +30,7 @@
</li>
</ul>
- <p>You can find more detailed information <a href=/booking/detail/{{booking.id/>Here</a></p>
+ <p>You can find more detailed information <a href=/booking/detail/{{booking.id}}/>Here</a></p>
</div>
</body>
</html>
diff --git a/dashboard/src/templates/notifier/inbox.html b/dashboard/src/templates/notifier/inbox.html
index c0ee1ba..471eae4 100644
--- a/dashboard/src/templates/notifier/inbox.html
+++ b/dashboard/src/templates/notifier/inbox.html
@@ -56,7 +56,7 @@
<div class="inbox-panel">
<div class="section-panel">
<div class="card-container">
- {% for notification in notifier_messages %}
+ {% for notification in notifications %}
<div class="inbox-entry card" onclick="showmessage({{notification.id}}); setactive(this);">
{{ notification }}
</div>
diff --git a/dashboard/src/templates/notifier/new_booking.html b/dashboard/src/templates/notifier/new_booking.html
index 4b53875..d23b12e 100644
--- a/dashboard/src/templates/notifier/new_booking.html
+++ b/dashboard/src/templates/notifier/new_booking.html
@@ -28,7 +28,7 @@
</li>
</ul>
- <p>You can find more detailed information <a href=/booking/detail/{{booking.id/>Here</a></p>
+ <p>You can find more detailed information <a href=/booking/detail/{{booking.id}}/>Here</a></p>
</div>
</body>
</html>
diff --git a/dashboard/src/templates/notifier/notification.html b/dashboard/src/templates/notifier/notification.html
index 1258fe0..65d26c9 100644
--- a/dashboard/src/templates/notifier/notification.html
+++ b/dashboard/src/templates/notifier/notification.html
@@ -1,4 +1,8 @@
-{% load staticfiles %}
+{% extends "layout.html" %}
+{% block extrahead %}
+<base target="_parent">
+{% endblock %}
+{% block basecontent %}
<div class="card-container">
<h3 class="msg_header">{{notification.title}}</h3>
<p class="content"></p>
@@ -6,7 +10,6 @@
{{notification.content|safe}}
</pre>
-<p class="sender">Message from {{notification.sender}}</p>
</div>
<style media="screen">
@@ -32,3 +35,4 @@
</style>
+{% endblock %}
diff --git a/dashboard/src/workflow/resource_bundle_workflow.py b/dashboard/src/workflow/resource_bundle_workflow.py
index 9fb4ae1..712c92b 100644
--- a/dashboard/src/workflow/resource_bundle_workflow.py
+++ b/dashboard/src/workflow/resource_bundle_workflow.py
@@ -35,7 +35,8 @@ from dashboard.exceptions import (
InvalidVlanConfigurationException,
NetworkExistsException,
InvalidHostnameException,
- NonUniqueHostnameException
+ NonUniqueHostnameException,
+ ResourceAvailabilityException
)
import logging
@@ -233,6 +234,8 @@ class Define_Nets(WorkflowStep):
self.updateModels(xmlData)
# update model with xml
self.metastep.set_valid("Networks applied successfully")
+ except ResourceAvailabilityException:
+ self.metastep.set_invalid("Public network not availble")
except Exception:
self.metastep.set_invalid("An error occurred when applying networks")
return self.render(request)
@@ -261,6 +264,9 @@ class Define_Nets(WorkflowStep):
vlan_id = network['network']['vlan']
is_public = network['network']['public']
if is_public:
+ public_net = vlan_manager.get_public_vlan()
+ if public_net is None:
+ raise ResourceAvailabilityException("No public networks available")
vlan_id = vlan_manager.get_public_vlan().vlan
vlan = Vlan(vlan_id=vlan_id, tagged=network['tagged'], public=is_public)
models['vlans'][existing_host.resource.name][iface['profile_name']].append(vlan)
diff --git a/dashboard/src/workflow/sw_bundle_workflow.py b/dashboard/src/workflow/sw_bundle_workflow.py
index 56d0a5d..26ade22 100644
--- a/dashboard/src/workflow/sw_bundle_workflow.py
+++ b/dashboard/src/workflow/sw_bundle_workflow.py
@@ -69,7 +69,15 @@ class Define_Software(WorkflowStep):
user = self.repo_get(self.repo.SESSION_USER)
i = 0
for host_data in hosts_initial:
- host = GenericHost.objects.get(pk=host_data['host_id'])
+ host_profile = None
+ try:
+ host = GenericHost.objects.get(pk=host_data['host_id'])
+ host_profile = host.profile
+ except Exception:
+ for host in hostlist:
+ if host.resource.name == host_data['host_name']:
+ host_profile = host.profile
+ break
excluded_images = Image.objects.exclude(owner=user).exclude(public=True)
excluded_images = excluded_images | Image.objects.exclude(host_type=host.profile)
lab = self.repo_get(self.repo.SWCONF_SELECTED_GRB).lab