netutils: use correct syntax of iproute2 when getting ip address (#26)
authorArnd Hannemann <arnd@arndnet.de>
Wed, 9 Aug 2017 09:44:19 +0000 (11:44 +0200)
committerMorg <morg@google.com>
Wed, 9 Aug 2017 09:44:19 +0000 (10:44 +0100)
commitea0ef6bd56fc0097b17fd6aac6844ab7bc0e595e
tree5177e690a20973d694fc3c16dfe6fe8ff43b6eb3
parent041ed56d979cb4a2e4b67d1e650a694a08b5cc3f
netutils: use correct syntax of iproute2 when getting ip address (#26)

Before this patch there was a bug when the interface name was actually "dev":

2016-10-11 19:45:05,025: ganeti-noded pid=15175 INFO RunCmd /sbin/ip -o addr show dev
2016-10-11 19:45:05,027: ganeti-noded pid=15175 ERROR Error running the ip command while getting the IP addresses of dev
2016-10-11 19:45:05,027: ganeti-noded pid=15175 ERROR Error in RPC call
Traceback (most recent call last):
  File "/usr/share/ganeti/2.12/ganeti/server/noded.py", line 191, in HandleRequest
    result = (True, method(serializer.LoadJson(req.request_body)))
  File "/usr/share/ganeti/2.12/ganeti/server/noded.py", line 627, in perspective_instance_start
    return backend.StartInstance(instance, startup_paused, trail)
  File "/usr/share/ganeti/2.12/ganeti/backend.py", line 1892, in StartInstance
    hyper.StartInstance(instance, block_devices, startup_paused)
  File "/usr/share/ganeti/2.12/ganeti/hypervisor/hv_kvm/__init__.py", line 1775, in StartInstance
    startup_paused, kvmhelp)
  File "/usr/share/ganeti/2.12/ganeti/hypervisor/hv_kvm/__init__.py", line 1269, in _GenerateKVMRuntime
    elif (addresses[constants.IP4_VERSION] and
TypeError: 'NoneType' object has no attribute '__getitem__'

The previous code only worked, because iproute2 is liberate in what it
excepts. However the correct syntax is:
ip address { show | save | flush } [ dev IFNAME ]

This patch fixes the bug by using the correct syntax.

Signed-off-by: Arnd Hannemann <arnd@arndnet.de>
Reviewed-by: Federico Morg Pareschi <morg@google.com>
lib/netutils.py