nova.service does not handle attribute specific exceptions and client hangs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
High
|
Armando Migliaccio | ||
Diablo |
Fix Released
|
Undecided
|
Mark McLoughlin |
Bug Description
when we try to allocate a floating ip to tenant using dashboard or novaclient cli, it just hangs, doesn't return.
The failure is because the network driver is FlatManager which doesn't support allocation of floating ips.
nova-api has casted the message to network service correctly. But while returning the method in __getattr__() of nova.server.
Apart from this specific case, it might happen that some drivers doesn't support some functionality. Service need to ensure return atleast a method that returns "NotImplemented
Changed in nova: | |
importance: | Undecided → High |
status: | New → Confirmed |
Changed in nova: | |
assignee: | nobody → Armando Migliaccio (armando-migliaccio) |
Changed in nova: | |
milestone: | none → essex-3 |
status: | Fix Committed → Fix Released |
Changed in nova: | |
milestone: | essex-3 → 2012.1 |
It looks like this now makes horizon fail to open the Access & Security tab, when you are using Flat networking.
A possible fix looks to be adding extra stubs into the Network manager base class, something like this:
@@ -557,6 +557,21 @@ class NetworkManager( manager. SchedulerDepend entManager) :
self. compute_ api.trigger_ security_ group_members_ refresh( admin_context,
group_ ids)
+ def get_floating_ ip(self, context, id): ip_by_address( self, context, address): ips_by_ project( self, context): ips_by_ fixed_address( self, context, fixed_address):
+ # NOTE(johngarbutt) This is just a stub function. Managers supporting
+ # floating ips MUST override this or use the Mixin
+ return []
+
+ def get_floating_
+ # NOTE(johngarbutt) This is just a stub function. Managers supporting
+ # floating ips MUST override this or use the Mixin
+ return []
+
+ def get_floating_
+ # NOTE(johngarbutt) This is just a stub function. Managers supporting
+ # floating ips MUST override this or use the Mixin
+ return []
+
def get_floating_
# NOTE(jkoelker) This is just a stub function. Managers supporting
# floating ips MUST override this or use the Mixin