[2.2] Failed to get virsh pod storage: cryptic message if no pools are defined
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MAAS |
Fix Released
|
High
|
Alberto Donato | ||
2.2 |
Won't Fix
|
High
|
Alberto Donato |
Bug Description
For some reason a default storage pool for libvirt wasn't created after libvirt-bin package installation.
In this case, adding a pod resulted in a cryptic error:
buntu@maas:~$ maas maas pods create type=virsh power_address=
Jun 6 08:44:46 maas maas.drivers.
ubuntu@maas:~$ ssh <email address hidden> 'virsh pool-list'
Name State Autostart
-------
ubuntu@maas:~$ maas maas pods create type=virsh power_address=
int() argument must be a string, a bytes-like object or a number, not 'NoneType'
Pod creation fails and an error that finally gets to the end user is not very descriptive.
src/provisionin
def get_pod_
"""Gets the total local storage for the pod."""
pools = self.get_
if len(pools) == 0:
return None
return sum(pools.values())
Related branches
- Blake Rouse (community): Approve
- MAAS Lander: Approve
-
Diff: 62 lines (+17/-7)2 files modifiedsrc/provisioningserver/drivers/pod/tests/test_virsh.py (+8/-2)
src/provisioningserver/drivers/pod/virsh.py (+9/-5)
Changed in maas: | |
status: | New → Triaged |
importance: | Undecided → High |
milestone: | none → 2.3.0 |
tags: | added: internal |
Changed in maas: | |
milestone: | 2.3.0 → 2.3.0beta3 |
Changed in maas: | |
milestone: | 2.3.0beta3 → 2.3.0beta4 |
Changed in maas: | |
assignee: | nobody → Alberto Donato (ack) |
Changed in maas: | |
status: | Triaged → In Progress |
Changed in maas: | |
status: | In Progress → Fix Committed |
Changed in maas: | |
milestone: | 2.3.0beta4 → 2.3.0rc1 |
Changed in maas: | |
status: | Fix Committed → Fix Released |
Repeated the test with current packages from maas-next PPA and gathered some logs.
This is printed in the web console:
int() argument must be a string, a bytes-like object or a number, not 'NoneType' is logged in the web console.
==> maas.log <== pod.virsh: [error] Failed to get pod local storage
Aug 8 21:45:44 maas maas.drivers.
==> regiond.log <== ver.rpc. clusterservice. ClusterClientSe rvice) websockets. protocol: [critical] Error on request (31) pod.create: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
2017-08-08 21:45:44 regiond: [info] 127.0.0.1 GET /MAAS/rpc/ HTTP/1.0 --> 200 OK (referrer: -; agent: provisioningser
2017-08-08 21:45:45 maasserver.
Traceback (most recent call last): python3/ dist-packages/ twisted/ internet/ defer.py" , line 588, in _runCallbacks current. result, *args, **kw) python3/ dist-packages/ twisted/ internet/ defer.py" , line 859, in _cbDeferred callback( self.resultList ) python3/ dist-packages/ twisted/ internet/ defer.py" , line 393, in callback _startRunCallba cks(result) python3/ dist-packages/ twisted/ internet/ defer.py" , line 501, in _startRunCallbacks _runCallbacks( ) python3/ dist-packages/ twisted/ internet/ defer.py" , line 588, in _runCallbacks current. result, *args, **kw) python3/ dist-packages/ maasserver/ forms/pods. py", line 249, in wrap_errors str(failure. value)) exceptions. PodProblem: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
File "/usr/lib/
current.result = callback(
File "/usr/lib/
self.
File "/usr/lib/
self.
File "/usr/lib/
self.
--- <exception caught here> ---
File "/usr/lib/
current.result = callback(
File "/usr/lib/
raise PodProblem(
maasserver.