Getting OneView resources by their uuid
Until now, the python-oneviewclient didn't have any function to get Server Hardwares and Server Profile Templates by it's uuids. It will make it easy to fix the bug 1541861 Change-Id: I7988e85df0c7bc2aee722b6bd8cd7c2f2d21dd73 Partial-Bug: 1541861
This commit is contained in:
parent
efd42351fa
commit
2b6b15a15a
|
@ -39,6 +39,9 @@ DELETE_REQUEST_TYPE = 'DELETE'
|
||||||
MOMENTARY_PRESS = 'MomentaryPress'
|
MOMENTARY_PRESS = 'MomentaryPress'
|
||||||
PRESS_AND_HOLD = 'PressAndHold'
|
PRESS_AND_HOLD = 'PressAndHold'
|
||||||
|
|
||||||
|
SERVER_HARDWARE_PREFIX_URI = '/rest/server-hardware/'
|
||||||
|
SERVER_PROFILE_TEMPLATE_PREFIX_URI = '/rest/server-profile-template/'
|
||||||
|
|
||||||
|
|
||||||
class Client(object):
|
class Client(object):
|
||||||
|
|
||||||
|
@ -176,13 +179,21 @@ class Client(object):
|
||||||
|
|
||||||
# --- ManagementDriver ---
|
# --- ManagementDriver ---
|
||||||
def get_server_hardware(self, node_info):
|
def get_server_hardware(self, node_info):
|
||||||
server_hardware_uri = node_info.get('server_hardware_uri')
|
INDEX_BEGIN_UUID = len(SERVER_HARDWARE_PREFIX_URI) - 1
|
||||||
|
server_hardware_uri = node_info['server_hardware_uri']
|
||||||
|
uuid = server_hardware_uri[INDEX_BEGIN_UUID:]
|
||||||
|
|
||||||
|
return self.get_server_hardware_by_uuid(uuid)
|
||||||
|
|
||||||
|
def get_server_hardware_by_uuid(self, uuid):
|
||||||
|
server_hardware_uri = SERVER_HARDWARE_PREFIX_URI + str(uuid)
|
||||||
server_hardware_json = self._prepare_and_do_request(
|
server_hardware_json = self._prepare_and_do_request(
|
||||||
uri=server_hardware_uri
|
uri=server_hardware_uri
|
||||||
)
|
)
|
||||||
if server_hardware_json.get("uri") is None:
|
if server_hardware_json.get("uri") is None:
|
||||||
message = "OneView Server Hardware resource not found."
|
message = "OneView Server Hardware resource not found."
|
||||||
raise exceptions.OneViewResourceNotFoundError(message)
|
raise exceptions.OneViewResourceNotFoundError(message)
|
||||||
|
|
||||||
return ServerHardware.from_json(server_hardware_json)
|
return ServerHardware.from_json(server_hardware_json)
|
||||||
|
|
||||||
def get_server_profile_from_hardware(self, node_info):
|
def get_server_profile_from_hardware(self, node_info):
|
||||||
|
@ -208,9 +219,16 @@ class Client(object):
|
||||||
return ServerProfile.from_json(server_profile_json)
|
return ServerProfile.from_json(server_profile_json)
|
||||||
|
|
||||||
def get_server_profile_template(self, node_info):
|
def get_server_profile_template(self, node_info):
|
||||||
server_profile_template_uri = (
|
INDEX_BEGIN_UUID = len(SERVER_PROFILE_TEMPLATE_PREFIX_URI) - 1
|
||||||
node_info.get('server_profile_template_uri')
|
server_hardware_uri = node_info['server_profile_template_uri']
|
||||||
)
|
uuid = server_hardware_uri[INDEX_BEGIN_UUID:]
|
||||||
|
|
||||||
|
return self.get_server_profile_template_by_uuid(uuid)
|
||||||
|
|
||||||
|
def get_server_profile_template_by_uuid(self, uuid):
|
||||||
|
server_profile_template_uri = SERVER_PROFILE_TEMPLATE_PREFIX_URI \
|
||||||
|
+ str(uuid)
|
||||||
|
|
||||||
spt_json = self._prepare_and_do_request(
|
spt_json = self._prepare_and_do_request(
|
||||||
uri=server_profile_template_uri
|
uri=server_profile_template_uri
|
||||||
)
|
)
|
||||||
|
|
|
@ -378,10 +378,12 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||||
oneview_client.set_node_power_state, driver_info, target_state
|
oneview_client.set_node_power_state, driver_info, target_state
|
||||||
)
|
)
|
||||||
|
|
||||||
@mock.patch.object(client.Client, '_prepare_and_do_request', autospec=True)
|
@mock.patch.object(requests, 'get')
|
||||||
def test_get_server_hardware_nonexistent(self, mock__prepare_do_request,
|
def test_get_server_hardware_nonexistent(self, mock_get,
|
||||||
mock__authenticate):
|
mock__authenticate):
|
||||||
mock__prepare_do_request.return_value = {"error": "resource not found"}
|
response = mock_get.return_value
|
||||||
|
response.status_code = http_client.NOT_FOUND
|
||||||
|
mock_get.return_value = response
|
||||||
driver_info = {"server_hardware_uri": ""}
|
driver_info = {"server_hardware_uri": ""}
|
||||||
|
|
||||||
oneview_client = client.Client(self.manager_url,
|
oneview_client = client.Client(self.manager_url,
|
||||||
|
@ -394,6 +396,39 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||||
driver_info
|
driver_info
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(requests, 'get')
|
||||||
|
def test_get_server_hardware_nonexistent_by_uuid(
|
||||||
|
self, mock_get, mock__authenticate
|
||||||
|
):
|
||||||
|
response = mock_get.return_value
|
||||||
|
response.status_code = http_client.NOT_FOUND
|
||||||
|
mock_get.return_value = response
|
||||||
|
uuid = 0
|
||||||
|
oneview_client = client.Client(self.manager_url,
|
||||||
|
self.username,
|
||||||
|
self.password)
|
||||||
|
self.assertRaises(
|
||||||
|
exceptions.OneViewResourceNotFoundError,
|
||||||
|
oneview_client.get_server_hardware_by_uuid,
|
||||||
|
uuid
|
||||||
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(client.Client, '_prepare_and_do_request', autospec=True)
|
||||||
|
def test_get_server_hardware_by_uuid(
|
||||||
|
self, mock__prepare_do_request, mock__authenticate
|
||||||
|
):
|
||||||
|
mock__prepare_do_request.return_value = {
|
||||||
|
"uri": "/rest/server-hardware/555"
|
||||||
|
}
|
||||||
|
uuid = 555
|
||||||
|
oneview_client = client.Client(self.manager_url,
|
||||||
|
self.username,
|
||||||
|
self.password)
|
||||||
|
oneview_client.get_server_hardware_by_uuid(uuid)
|
||||||
|
mock__prepare_do_request.assert_called_once_with(
|
||||||
|
oneview_client, uri="/rest/server-hardware/555"
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch.object(client.Client, '_prepare_and_do_request', autospec=True)
|
@mock.patch.object(client.Client, '_prepare_and_do_request', autospec=True)
|
||||||
@mock.patch.object(client.Client, 'get_server_profile_from_hardware',
|
@mock.patch.object(client.Client, 'get_server_profile_from_hardware',
|
||||||
autospec=True)
|
autospec=True)
|
||||||
|
@ -477,6 +512,39 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||||
new_first_boot_device
|
new_first_boot_device
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(requests, 'get')
|
||||||
|
def test_get_server_profile_template_nonexistent_by_uuid(
|
||||||
|
self, mock_get, mock__authenticate
|
||||||
|
):
|
||||||
|
response = mock_get.return_value
|
||||||
|
response.status_code = http_client.NOT_FOUND
|
||||||
|
mock_get.return_value = response
|
||||||
|
uuid = 0
|
||||||
|
oneview_client = client.Client(self.manager_url,
|
||||||
|
self.username,
|
||||||
|
self.password)
|
||||||
|
self.assertRaises(
|
||||||
|
exceptions.OneViewResourceNotFoundError,
|
||||||
|
oneview_client.get_server_profile_template_by_uuid,
|
||||||
|
uuid
|
||||||
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(client.Client, '_prepare_and_do_request', autospec=True)
|
||||||
|
def test_get_server_profile_template_by_uuid(
|
||||||
|
self, mock__prepare_do_request, mock__authenticate
|
||||||
|
):
|
||||||
|
mock__prepare_do_request.return_value = {
|
||||||
|
"uri": "/rest/server-profile-template/123"
|
||||||
|
}
|
||||||
|
uuid = 123
|
||||||
|
oneview_client = client.Client(self.manager_url,
|
||||||
|
self.username,
|
||||||
|
self.password)
|
||||||
|
oneview_client.get_server_profile_template_by_uuid(uuid)
|
||||||
|
mock__prepare_do_request.assert_called_once_with(
|
||||||
|
oneview_client, uri="/rest/server-profile-template/123"
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch.object(client.Client, '_prepare_and_do_request', autospec=True)
|
@mock.patch.object(client.Client, '_prepare_and_do_request', autospec=True)
|
||||||
def test__wait_for_task_to_complete(self, mock__prepare_do_request,
|
def test__wait_for_task_to_complete(self, mock__prepare_do_request,
|
||||||
mock__authenticate):
|
mock__authenticate):
|
||||||
|
@ -524,17 +592,18 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||||
oneview_client = client.Client(self.manager_url,
|
oneview_client = client.Client(self.manager_url,
|
||||||
self.username,
|
self.username,
|
||||||
self.password,
|
self.password,
|
||||||
max_polling_attempts=3)
|
max_polling_attempts=2)
|
||||||
|
|
||||||
response = mock_get.return_value
|
response = mock_get.return_value
|
||||||
response.status_code = http_client.REQUEST_TIMEOUT
|
response.status_code = http_client.REQUEST_TIMEOUT
|
||||||
mock_get.return_value = response
|
mock_get.return_value = response
|
||||||
|
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
retrying.RetryError,
|
retrying.RetryError,
|
||||||
oneview_client._wait_for_task_to_complete,
|
oneview_client._wait_for_task_to_complete,
|
||||||
task,
|
task,
|
||||||
)
|
)
|
||||||
self.assertEqual(mock_get.call_count, 3)
|
self.assertEqual(mock_get.call_count, 2)
|
||||||
|
|
||||||
@mock.patch.object(client.Client, 'get_server_hardware', autospec=True)
|
@mock.patch.object(client.Client, 'get_server_hardware', autospec=True)
|
||||||
def test_validate_node_server_hardware_inconsistent_memorymb_value(
|
def test_validate_node_server_hardware_inconsistent_memorymb_value(
|
||||||
|
@ -956,7 +1025,8 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||||
|
|
||||||
@mock.patch.object(client.Client, 'get_server_profile_from_hardware')
|
@mock.patch.object(client.Client, 'get_server_profile_from_hardware')
|
||||||
def test_is_mac_compatible_with_server_profile(
|
def test_is_mac_compatible_with_server_profile(
|
||||||
self, mock_get_server_profile_from_hardware, mock__authenticate):
|
self, mock_get_server_profile_from_hardware, mock__authenticate
|
||||||
|
):
|
||||||
oneview_client = client.Client(self.manager_url,
|
oneview_client = client.Client(self.manager_url,
|
||||||
self.username,
|
self.username,
|
||||||
self.password)
|
self.password)
|
||||||
|
|
Loading…
Reference in New Issue