LB health monitor deletion fails with exception "Server-side error: "'NoneType' object has no attribute 'load_balancer_id'"
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
vmware-nsx |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Failure statement : LB health monitor deletion fails with exception "Server-side error: "'NoneType' object has no attribute 'load_balancer_id'"
Test executed : 1) Create LB, Virtual servers (HTTP & HTTPS), Pool, Members & Health monitors
2) Delete LB objects randomly
3) If there is a dependency to a object while its deleting, then handle exception
Below is the HM tried to delete:
DELETE /v2.0/lbaas/
octavia log trace:
Oct 04 01:29:01 controller-
9c7ab75f-
XOctaviaDriver method __init__ called with arguments () {} wrapper /usr/lib/
Oct 04 01:29:01 controller-
9c7ab75f-
XOctaviaDriver method _init_rpc_messaging called with arguments () {} wrapper /usr/lib/
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
"/usr/lib/
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
, line 94, in _test_lb_
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:01 controller-
Oct 04 01:29:23 controller-
b2a8b23c-
XOctaviaDriver method __init__ called with arguments () {} wrapper /usr/lib/
Test executed:
@pytest.
@pytest.
def test_lb_
''' As part of this test case a LB topology will be brought up.
Different components of the LB will be tried to be deleted
in random order '''
_test_case = inspect.
router, network, subnet =\
lb, lsnr, pool, hm, lbfip, mem1, mem2 =\
# Creating a dictionary of the LB resources
# Format of dictionary is same as clenaup.py since we are going to
# use delete functions of cleanup.py
clean_lb_res = Clean(cloud, _test_case)
clean_
# Below loop will try for 5 mins to randomly delete lb resources.
# After 5 mins the test case will fail.
lb_keys = clean_lb_
start_time = time.time()
while lb_keys and time.time() - start_time < 300:
# Randomly select one lb resource
indx = randrange(0, len(lb_keys))
lb_res = lb_keys[indx]
# Start deleting the resource
try:
# removing element from list since successfully deleted
except AttributeError as e:
assert False, "Function with name %s doesn't exist" % (func_name)
except (exc.BadRequest
assert not lb_keys, "Still some resources left to be cleaned"
Test failure:
getattr(
tests/test_
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cleanup.py:205: in delete_
self.
resources.py:619: in delete_
return self.conn.
systest_
ignore_
systest_
return method(self, expected, actual, *args, **kwargs)
systest_
rv = res.delete(self)
systest_
self.
systest_
exceptions.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response [500]>, error_message = None
def raise_from_
"""Raise an instance of an HTTPException based on keystoneauth response."""
if response.
return
if response.
cls = ConflictException
elif response.
cls = NotFoundException
elif response.
cls = BadRequestException
else:
cls = HttpException
details = None
if response.content and 'application/json' in content_type:
# Iterate over the nested objects to retrieve "message" attribute.
# TODO(shade) Add exception handling for times when the content type
# is lying.
try:
# Join all of the messages together nicely and filter out any
# objects that don't have a "message" attr.
except Exception:
elif response.content and 'text/html' in content_type:
# Split the lines, strip whitespace and inline HTML from the response.
details = [re.sub(r'<.+?>', '', i.strip())
details = list(set([msg for msg in details if msg]))
# Return joined string separated by colons.
details = ': '.join(details)
if not details and response.reason:
details = response.reason
else:
details = response.text
http_status = response.
request_id = response.
raise cls(
http_status=
)
E HttpException: HttpException: 500: Server Error for url: https:/
Reassigned to vmware-nsx as that is probably the place to fix this binding with Octavia. If you think the issue is more in the Octavia space, feel free to submit a bug in storyboard here: https:/ /storyboard. openstack. org/#!/ project/ openstack/ octavia