instance_type is still set as a property value of "none" even when flavors cannot be retrieved

Bug #981269 reported by Morgan Fainberg
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Dashboard (Horizon)
Fix Released
Medium
Ke Wu
horizon (Ubuntu)
Fix Released
Medium
Unassigned
Precise
Won't Fix
Medium
Unassigned

Bug Description

[Impact]

 * horizon throw errors when view horizon/syspanel/instances/ page with deleted
   flavor still in use by instances.

 * try to get flavor info through the flavor.get api,this can retrive the deleted
   flavor info.

[Test Case]

 * Launch an instance of flavor m1.tiny
   on controller node do: nova flavor-delete m1.tiny, and wait for it to succeed.
   on horizon look at the state of the machines, http://horizon-system:port/horizon/
   syspanel/instances/ and wait for it to fail because horizon can not find the flavor
   m1.tiny and therefore can not report the status and details of the instance in
   question.

[Regression Potential]

 * This is a backport from upstream.

In Nova dashboard and Syspanel dashboard if the flavor of an instance cannot be retrieved the property .full_flavor will still be set to "None". If there is no error retrieving flavors and a flavor has been deleted, this can cause a large traceback in the table rendering as get_size checks if the instance object hasattr() "full_flavor" instead of for the individual values to display in the "Size" column.

Attached is a potential fix. I have also included an alternate code path that will directly query the API for a flavor's information if it is not present in the full_flavors list(); this can occur if a flavor has been deleted as api.nova.flavors_list() only returns flavors that are not deleted.

Revision history for this message
Morgan Fainberg (mdrnstm) wrote :
Devin Carlen (devcamcar)
Changed in horizon:
status: New → Confirmed
milestone: none → folsom-1
importance: Undecided → Medium
Devin Carlen (devcamcar)
Changed in horizon:
assignee: nobody → Nebula (nebula)
Devin Carlen (devcamcar)
Changed in horizon:
milestone: folsom-1 → folsom-2
Ke Wu (ke-wu)
Changed in horizon:
status: Confirmed → In Progress
Ke Wu (ke-wu)
Changed in horizon:
assignee: Nebula (nebula) → Ke Wu (ke-wu)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to horizon (master)

Fix proposed to branch: master
Review: https://review.openstack.org/8811

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to horizon (master)

Reviewed: https://review.openstack.org/8811
Committed: http://github.com/openstack/horizon/commit/8d63b31204bf55b3cffa2ad882b1819f2162f7b7
Submitter: Jenkins
Branch: master

commit 8d63b31204bf55b3cffa2ad882b1819f2162f7b7
Author: Ke Wu <email address hidden>
Date: Thu Jun 21 10:28:48 2012 -0700

    Fixes Nonetype error of flavor info in intances index view

    Adds unit test for the changes.

    Bug#981269

    Change-Id: I7e3ab027e9c11defcdd9d3d90e41462433666600

Changed in horizon:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in horizon:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in horizon:
milestone: folsom-2 → 2012.2
Revision history for this message
Yaguang Tang (heut2008) wrote :

the essex horizon cann't get the deleted flavor,this because nova api can ony return deleted flavor info by using novaclient.flavors.get() ,novaclient.flavors.list() cann't get the deleted flavor info.

in the essex

     full_flavors = SortedDict([(str(flavor.id), flavor)
                                               for flavor in flavors])
                    for instance in instances:
                        flavor_id = instance.flavor["id"]
                        instance.full_flavor = full_flavors[flavor_id]
                 except:
                    msg = _('Unable to retrieve instance size information.')
                    exceptions.handle(self.request, msg)

folsom

 65
 66 full_flavors = SortedDict([(f.id, f) for f in flavors])
 67 tenant_dict = SortedDict([(t.id, t) for t in tenants])
 68 # Loop through instances to get flavor and tenant info.
 69 for inst in instances:
 70 flavor_id = inst.flavor["id"]
 71 try:
 72 if flavor_id in full_flavors:
 73 inst.full_flavor = full_flavors[flavor_id]
 74 else:
 75 # If the flavor_id is not in full_flavors list,
 76 # gets it via nova api.
 77 inst.full_flavor = api.nova.flavor_get(
 78 self.request, flavor_id)

backport this to stable/horizon

Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "patch for handling deleted flavors" of this bug report has been identified as being a patch. The ubuntu-reviewers team has been subscribed to the bug report so that they can review the patch. In the event that this is in fact not a patch you can resolve this situation by removing the tag 'patch' from the bug report and editing the attachment so that it is not flagged as a patch. Additionally, if you are member of the ubuntu-reviewers team please also unsubscribe the team from this bug report.

[This is an automated message performed by a Launchpad user owned by Brian Murray. Please contact him regarding any issues with the action taken in this bug report.]

tags: added: patch
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to horizon (stable/essex)

Fix proposed to branch: stable/essex
Review: https://review.openstack.org/19282

Revision history for this message
Yaguang Tang (heut2008) wrote :
description: updated
Revision history for this message
Chris J Arges (arges) wrote :

The above patch in #8 is an SRU request for Precise.

Changed in openstack-dashboard (Ubuntu):
assignee: nobody → Yaguang Tang (heut2008)
importance: Undecided → Medium
status: New → In Progress
Yaguang Tang (heut2008)
description: updated
James Page (james-page)
Changed in openstack-dashboard (Ubuntu Precise):
importance: Undecided → Medium
status: New → In Progress
Changed in openstack-dashboard (Ubuntu):
status: In Progress → Fix Released
Changed in openstack-dashboard (Ubuntu Precise):
assignee: nobody → Yaguang Tang (heut2008)
Changed in openstack-dashboard (Ubuntu):
assignee: Yaguang Tang (heut2008) → nobody
Revision history for this message
James Page (james-page) wrote :

Hi Yaguang

Thanks for the patch; right at this moment the latest updates for Openstack Essex are pending processing in the SRU queue so we need to defer uploading this fix for a short while; once 12.04.2 gets out of the door things should free up again.

I've un-subscribed ubuntu-sponsors for the time being and added myself.

Changed in horizon (Ubuntu):
status: New → Fix Released
importance: Undecided → Medium
Changed in horizon (Ubuntu Precise):
importance: Undecided → Medium
no longer affects: openstack-dashboard (Ubuntu)
no longer affects: openstack-dashboard (Ubuntu Precise)
James Page (james-page)
Changed in horizon (Ubuntu Precise):
status: New → In Progress
Chris J Arges (arges)
tags: added: cts-cloud-review
Chris J Arges (arges)
tags: removed: cts-cloud-review
Revision history for this message
James Page (james-page) wrote :

Yaguang/Chris

I took a look at the proposed patch; currently its a partial backport of the fix applied to folsom; would it be possible to make it a more complete cherry pick including unit tests?

This will make things easier in the long run.

Thanks

Revision history for this message
James Page (james-page) wrote :

Un-subscribing sponsors for the time being; when ready for review, please re-subscribed ubuntu-sponsors.

Thanks

Revision history for this message
Steve Langasek (vorlon) wrote :

The Precise Pangolin has reached end of life, so this bug will not be fixed for that release

Changed in horizon (Ubuntu Precise):
status: In Progress → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.