Fix subcloud show --detail command related issues
If the subcloud is offline, the command stalls and eventually returns the "ERROR (app)" output. If the subcloud is online, the oam_floating_ip info is excluded from the output when the subcloud id instead of subcloud name is specified. This commit fixes both of the above issues. Closes-Bug: 1929893 Change-Id: I995591368564539b0e6af185b1adba2db73e0e46 Signed-off-by: Tee Ngo <tee.ngo@windriver.com>
This commit is contained in:
@@ -784,12 +784,13 @@ class SubcloudsController(object):
|
||||
subcloud_dict.update(endpoint_sync_dict)
|
||||
|
||||
if detail is not None:
|
||||
oam_addresses = self._get_oam_addresses(context,
|
||||
subcloud_ref)
|
||||
if oam_addresses is not None:
|
||||
oam_floating_ip = oam_addresses.oam_floating_ip
|
||||
else:
|
||||
oam_floating_ip = "unavailable"
|
||||
oam_floating_ip = "unavailable"
|
||||
if subcloud.availability_status == consts.AVAILABILITY_ONLINE:
|
||||
oam_addresses = self._get_oam_addresses(context,
|
||||
subcloud.name)
|
||||
if oam_addresses is not None:
|
||||
oam_floating_ip = oam_addresses.oam_floating_ip
|
||||
|
||||
floating_ip_dict = {"oam_floating_ip":
|
||||
oam_floating_ip}
|
||||
subcloud_dict.update(floating_ip_dict)
|
||||
|
||||
@@ -784,11 +784,14 @@ class TestSubcloudAPIOther(testroot.DCManagerApiTest):
|
||||
@mock.patch.object(subclouds.SubcloudsController,
|
||||
'_get_oam_addresses')
|
||||
@mock.patch.object(rpc_client, 'ManagerClient')
|
||||
def test_get_subcloud_with_additional_detail(self,
|
||||
mock_rpc_client,
|
||||
mock_get_oam_addresses):
|
||||
def test_get_online_subcloud_with_additional_detail(self,
|
||||
mock_rpc_client,
|
||||
mock_get_oam_addresses):
|
||||
subcloud = fake_subcloud.create_fake_subcloud(self.ctx)
|
||||
get_url = FAKE_URL + '/' + str(subcloud.id) + '/detail'
|
||||
updated_subcloud = db_api.subcloud_update(
|
||||
self.ctx, subcloud.id, availability_status=consts.AVAILABILITY_ONLINE)
|
||||
|
||||
get_url = FAKE_URL + '/' + str(updated_subcloud.id) + '/detail'
|
||||
oam_addresses = FakeOAMAddressPool('10.10.10.254',
|
||||
'10.10.10.1',
|
||||
'10.10.10.254',
|
||||
@@ -802,6 +805,16 @@ class TestSubcloudAPIOther(testroot.DCManagerApiTest):
|
||||
self.assertEqual(response.status_code, http_client.OK)
|
||||
self.assertEqual('10.10.10.2', response.json['oam_floating_ip'])
|
||||
|
||||
@mock.patch.object(rpc_client, 'ManagerClient')
|
||||
def test_get_offline_subcloud_with_additional_detail(self,
|
||||
mock_rpc_client):
|
||||
subcloud = fake_subcloud.create_fake_subcloud(self.ctx)
|
||||
get_url = FAKE_URL + '/' + str(subcloud.id) + '/detail'
|
||||
response = self.app.get(get_url, headers=FAKE_HEADERS)
|
||||
self.assertEqual(response.content_type, 'application/json')
|
||||
self.assertEqual(response.status_code, http_client.OK)
|
||||
self.assertEqual('unavailable', response.json['oam_floating_ip'])
|
||||
|
||||
@mock.patch.object(subclouds.SubcloudsController,
|
||||
'_get_oam_addresses')
|
||||
@mock.patch.object(rpc_client, 'ManagerClient')
|
||||
@@ -809,7 +822,10 @@ class TestSubcloudAPIOther(testroot.DCManagerApiTest):
|
||||
mock_rpc_client,
|
||||
mock_get_oam_addresses):
|
||||
subcloud = fake_subcloud.create_fake_subcloud(self.ctx)
|
||||
get_url = FAKE_URL + '/' + str(subcloud.id) + '/detail'
|
||||
updated_subcloud = db_api.subcloud_update(
|
||||
self.ctx, subcloud.id, availability_status=consts.AVAILABILITY_ONLINE)
|
||||
|
||||
get_url = FAKE_URL + '/' + str(updated_subcloud.id) + '/detail'
|
||||
mock_get_oam_addresses.return_value = None
|
||||
response = self.app.get(get_url, headers=FAKE_HEADERS)
|
||||
self.assertEqual(response.content_type, 'application/json')
|
||||
|
||||
Reference in New Issue
Block a user