I just upgraded the openstack-dashboard we are using to the latest version provided by Ubuntu Cloud Archive. There were multiple bugs causing "Internal Server Error" which I had to patch manually to rectify, I couldn't see anyone reporting the same errors after a brief google search.

Can someone examine the patch provided and please confirm whether they have this issue or not? I'm running Ubuntu 12.04 with Folsom installed using the Ubuntu Cloud Archive.

# dpkg -l | grep -e 'openstack\|horizon'
ii  openstack-dashboard              2012.2-0ubuntu2~cloud0       django web interface to Openstack
ii  openstack-dashboard-ubuntu-theme 2012.2-0ubuntu2~cloud0       Ubuntu theme for the Openstack dashboard
ii  python-django-horizon            2012.2-0ubuntu2~cloud0       Django module providing web based interaction with OpenStack
ii  python-django-openstack          2012.2-0ubuntu2~cloud0       dummy transitonal package from python-django-openstack to python-django-horizon
ii  python-openstack-auth            1.0.1-0ubuntu6~cloud0        A django authentication backend for Openstack

I have attached the main patch I had to apply to get dashboard working again, but I also had to patch: /usr/lib/python2.7/dist-packages/horizon/dashboards/settings/project/views.py  to change "from horizon.api import keystone" to "from horizon.api import keystoneclient" as well. If this is an actual bug I'm happy to file and supply the patch as appropriate.





--

--
Sina Sadeghi
Lead Cloud Engineer

Aptira Pty Ltd
1800 APTIRA
aptira.com
Follow @aptira

diff -u /tmp/workflows.py "/usr/lib/python2.7/dist-packages/horizon/dashboards/nova/instances/workflows.py"
--- /tmp/workflows.py   2013-01-10 14:24:31.874187212 +1100
+++ /usr/lib/python2.7/dist-packages/horizon/dashboards/nova/instances/workflows.py     2013-01-10 14:30:01.531892135 +1100
@@ -23,7 +23,9 @@
 from django.utils.text import normalize_newlines
 from django.utils.translation import ugettext as _

-from horizon import api
+from horizon.api import glanceclient
+from horizon.api import nova
+from horizon.api import quantum
 from horizon import exceptions
 from horizon import forms
 from horizon import workflows
@@ -115,8 +117,8 @@
     def populate_volume_id_choices(self, request, context):
         volume_options = [("", _("Select Volume"))]
         try:
-            volumes = [v for v in api.nova.volume_list(self.request)
-                       if v.status == api.VOLUME_STATE_AVAILABLE]
+            volumes = [v for v in nova.volume_list(self.request)
+                       if v.status == nova.VOLUME_STATE_AVAILABLE]
             volume_options.extend([self._get_volume_display_name(vol)
                                    for vol in volumes])
         except:
@@ -127,9 +129,9 @@
     def populate_volume_snapshot_id_choices(self, request, context):
         volume_options = [("", _("Select Volume Snapshot"))]
         try:
-            snapshots = api.nova.volume_snapshot_list(self.request)
+            snapshots = nova.volume_snapshot_list(self.request)
             snapshots = [s for s in snapshots
-                         if s.status == api.VOLUME_STATE_AVAILABLE]
+                         if s.status == nova.VOLUME_STATE_AVAILABLE]
             volume_options.extend([self._get_volume_display_name(snap)
                                    for snap in snapshots])
         except:
@@ -220,7 +222,7 @@
             public = {"is_public": True,
                       "status": "active"}
             try:
-                public_images, _more = api.glance.image_list_detailed(request,
+                public_images, _more = glanceclient.image_list_detailed(request,
                                                            filters=public)
             except:
                 public_images = []
@@ -236,7 +238,7 @@
             owner = {"property-owner_id": project_id,
                      "status": "active"}
             try:
-                owned_images, _more = api.glance.image_list_detailed(request,
+                owned_images, _more = glanceclient.image_list_detailed(request,
                                                           filters=owner)
             except:
                 exceptions.handle(request,
@@ -281,7 +283,7 @@

     def populate_flavor_choices(self, request, context):
         try:
-            flavors = api.nova.flavor_list(request)
+            flavors = nova.flavor_list(request)
             flavor_list = [(flavor.id, "%s" % flavor.name)
                            for flavor in flavors]
         except:
@@ -293,10 +295,10 @@
     def get_help_text(self):
         extra = {}
         try:
-            extra['usages'] = api.nova.tenant_quota_usages(self.request)
+            extra['usages'] = nova.tenant_quota_usages(self.request)
             extra['usages_json'] = jsonutils.dumps(extra['usages'])
             flavors = jsonutils.dumps([f._info for f in
-                                       api.nova.flavor_list(self.request)])
+                                       nova.flavor_list(self.request)])
             extra['flavors'] = flavors
         except:
             exceptions.handle(self.request,
@@ -350,7 +352,7 @@

     def populate_keypair_choices(self, request, context):
         try:
-            keypairs = api.nova.keypair_list(request)
+            keypairs = nova.keypair_list(request)
             keypair_list = [(kp.name, kp.name) for kp in keypairs]
         except:
             keypair_list = []
@@ -364,7 +366,7 @@

     def populate_groups_choices(self, request, context):
         try:
-            groups = api.nova.security_group_list(request)
+            groups = nova.security_group_list(request)
             security_group_list = [(sg.name, sg.name) for sg in groups]
         except:
             exceptions.handle(request,
@@ -422,7 +424,7 @@
     def populate_network_choices(self, request, context):
         try:
             tenant_id = self.request.user.tenant_id
-            networks = api.quantum.network_list_for_tenant(request, tenant_id)
+            networks = quantum.network_list_for_tenant(request, tenant_id)
             for n in networks:
                 n.set_id_as_name_if_empty()
             network_list = [(network.id, network.name) for network in networks]
@@ -494,7 +496,7 @@
             nics = None

         try:
-            api.nova.server_create(request,
+            nova.server_create(request,
                                    context['name'],
                                    context['source_id'],
                                    context['flavor'],
_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to