TestNetworkBasicOps:test_subnet_details intermittently fails with "cat: can't open '/var/run/udhcpc..pid': No such file or directory"
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
tempest |
Fix Released
|
High
|
Matt Riedemann |
Bug Description
Seen here:
2019-01-24 18:26:22.886987 | controller | {0} tempest.
2019-01-24 18:26:22.887067 | controller |
2019-01-24 18:26:22.887166 | controller | Captured traceback:
2019-01-24 18:26:22.887251 | controller | ~~~~~~~~~~~~~~~~~~~
2019-01-24 18:26:22.887370 | controller | Traceback (most recent call last):
2019-01-24 18:26:22.887545 | controller | File "tempest/
2019-01-24 18:26:22.887663 | controller | return f(*func_args, **func_kwargs)
2019-01-24 18:26:22.887868 | controller | File "tempest/
2019-01-24 18:26:22.887952 | controller | renew_delay),
2019-01-24 18:26:22.888141 | controller | File "tempest/
2019-01-24 18:26:22.888237 | controller | if func(*args, **kwargs):
2019-01-24 18:26:22.888443 | controller | File "tempest/
2019-01-24 18:26:22.888583 | controller | dhcp_client=
2019-01-24 18:26:22.888776 | controller | File "tempest/
2019-01-24 18:26:22.888957 | controller | return getattr(self, '_renew_lease_' + dhcp_client)
2019-01-24 18:26:22.889161 | controller | File "tempest/
2019-01-24 18:26:22.889279 | controller | format(
2019-01-24 18:26:22.889474 | controller | File "tempest/
2019-01-24 18:26:22.889595 | controller | return function(self, *args, **kwargs)
2019-01-24 18:26:22.889793 | controller | File "tempest/
2019-01-24 18:26:22.890231 | controller | return self.ssh_
2019-01-24 18:26:22.890402 | controller | File "tempest/
2019-01-24 18:26:22.890520 | controller | stderr=err_data, stdout=out_data)
2019-01-24 18:26:22.890848 | controller | tempest.
2019-01-24 18:26:22.891027 | controller | cat: can't open '/var/run/
2019-01-24 18:26:22.891068 | controller |
2019-01-24 18:26:22.891142 | controller | stdout:
Looks like the problem would be in the file name "udchpc..pid" -- too many extension separator dots. Maybe something in this code:
def _renew_
"""Renews DHCP lease via udhcpc client. """
file_path = '/var/run/udhcpc.'
nic_name = self.get_
pid = self.exec_
pid = pid.strip()
cmd = 'sudo /bin/kill -{sig} {pid}'.
The nic_name must be coming back empty and that's how we get /var/run/
Changed in neutron: | |
status: | New → Confirmed |
Changed in neutron: | |
importance: | Undecided → High |
tags: | added: tempest |
Changed in tempest: | |
assignee: | Matt Riedemann (mriedem) → Bence Romsics (bence-romsics) |
importance: | Undecided → High |
no longer affects: | neutron |
Changed in tempest: | |
assignee: | Bence Romsics (bence-romsics) → Matt Riedemann (mriedem) |
That code also looks buggy since _renew_lease_udhcpc takes fixed_ip=None meaning it's optional, but get_nic_name_by_ip assumes fixed_ip is not None.