Adding check for missing configuration values
The python-oneviewclient must raise exceptions when 'manager_url' configuration parameter has a null or empty value. Some checks were changed and added to oneview_client.client. Change-Id: I22984cd6757a7816e323bd156eefda086aa06364
This commit is contained in:
parent
ae731b1c16
commit
654fd4db93
@ -55,11 +55,19 @@ class Client(object):
|
||||
|
||||
self.session_id = self.get_session()
|
||||
|
||||
def verify_credentials(self):
|
||||
return self._authenticate()
|
||||
|
||||
def get_session(self):
|
||||
response = self._authenticate()
|
||||
return response.json().get('sessionID')
|
||||
|
||||
def _authenticate(self):
|
||||
if self.manager_url in ("", None):
|
||||
raise exceptions.OneViewConnectionError(
|
||||
"Can't connect to OneView: 'manager_url' configuration"
|
||||
"parameter is blank")
|
||||
|
||||
url = '%s/rest/login-sessions' % self.manager_url
|
||||
body = {
|
||||
'userName': self.username,
|
||||
@ -76,7 +84,7 @@ class Client(object):
|
||||
headers=headers,
|
||||
verify=verify_ssl)
|
||||
|
||||
if r.status_code == 401:
|
||||
if r.status_code == 400:
|
||||
raise exceptions.OneViewNotAuthorizedException()
|
||||
else:
|
||||
return r
|
||||
@ -101,7 +109,7 @@ class Client(object):
|
||||
def _is_oneview_version_compatible(self):
|
||||
versions = self.get_oneview_version()
|
||||
v = SUPPORTED_ONEVIEW_VERSION
|
||||
min_version_compatible = versions.get('minimumVersion') <= v
|
||||
min_version_compatible = versions.get("minimumVersion") <= v
|
||||
max_version_compatible = versions.get("currentVersion") >= v
|
||||
return min_version_compatible and max_version_compatible
|
||||
|
||||
@ -270,15 +278,15 @@ class Client(object):
|
||||
if server_hardware_memorymb != node_memorymb:
|
||||
message = (
|
||||
"Node memory_mb is inconsistent with OneView's"
|
||||
" server hardware %(server_hardware_uri)s memoryMb. Node"
|
||||
" validation failed." % {'server_hardware_uri': node_sh_uri}
|
||||
" server hardware %(server_hardware_uri)s memoryMb."
|
||||
% {'server_hardware_uri': node_sh_uri}
|
||||
)
|
||||
raise exceptions.OneViewInconsistentResource(message)
|
||||
elif server_hardware_cpus != node_cpus:
|
||||
message = (
|
||||
"Node cpus is inconsistent with OneView's"
|
||||
" server hardware %(server_hardware_uri)s cpus. Node"
|
||||
" validation failed." % {'server_hardware_uri': node_sh_uri}
|
||||
" server hardware %(server_hardware_uri)s cpus."
|
||||
% {'server_hardware_uri': node_sh_uri}
|
||||
)
|
||||
raise exceptions.OneViewInconsistentResource(message)
|
||||
|
||||
@ -291,7 +299,7 @@ class Client(object):
|
||||
message = (
|
||||
"Node server_hardware_type_uri is inconsistent"
|
||||
" with OneView's server hardware %(server_hardware_uri)s"
|
||||
" serverHardwareTypeUri. Node validation failed." %
|
||||
" serverHardwareTypeUri." %
|
||||
{'server_hardware_uri': node_info.get('server_hardware_uri')}
|
||||
)
|
||||
raise exceptions.OneViewInconsistentResource(message)
|
||||
@ -309,7 +317,7 @@ class Client(object):
|
||||
message = (
|
||||
"Node enclosure_group_uri is inconsistent"
|
||||
" with OneView's server hardware %(server_hardware_uri)s"
|
||||
" serverGroupUri. Node validation failed." %
|
||||
" serverGroupUri." %
|
||||
{'server_hardware_uri': node_info.
|
||||
get('server_hardware_uri')}
|
||||
)
|
||||
@ -330,7 +338,7 @@ class Client(object):
|
||||
if primary_boot_connection is None:
|
||||
message = (
|
||||
"No primary boot connection configured for server profile"
|
||||
" %s Node validation failed." % server_profile_json.get('uri')
|
||||
" %s." % server_profile_json.get('uri')
|
||||
)
|
||||
raise exceptions.OneViewInconsistentResource(message)
|
||||
|
||||
@ -338,15 +346,17 @@ class Client(object):
|
||||
|
||||
is_mac_address_compatible = True
|
||||
for port in ports:
|
||||
if port.__dict__.get('_obj_address').lower() != \
|
||||
port_address = port.__dict__.get('_obj_address')
|
||||
if port_address is None:
|
||||
port_address = port.__dict__.get('_address')
|
||||
if port_address.lower() != \
|
||||
server_profile_mac.lower():
|
||||
is_mac_address_compatible = False
|
||||
|
||||
if (not is_mac_address_compatible) or len(ports) == 0:
|
||||
message = (
|
||||
"The ports of the node are not compatible with its"
|
||||
" server profile %(server_profile_uri)s. Node validation"
|
||||
" failed." %
|
||||
" server profile %(server_profile_uri)s." %
|
||||
{'server_profile_uri': server_profile_json.get('uri')}
|
||||
)
|
||||
raise exceptions.OneViewInconsistentResource(message)
|
||||
@ -372,7 +382,7 @@ class Client(object):
|
||||
message = (
|
||||
"Server profile template %(spt_uri)s serverHardwareTypeUri is"
|
||||
" inconsistent with server hardware %(server_hardware_uri)s"
|
||||
" serverHardwareTypeUri. Node validation failed." %
|
||||
" serverHardwareTypeUri." %
|
||||
{'spt_uri': node_spt_uri,
|
||||
'server_hardware_uri': node_info.get('server_hardware_uri')}
|
||||
)
|
||||
@ -381,7 +391,7 @@ class Client(object):
|
||||
message = (
|
||||
"Server profile template %(spt_uri)s enclosureGroupUri is"
|
||||
" inconsistent with server hardware %(server_hardware_uri)s"
|
||||
" serverGroupUri. Node validation failed." %
|
||||
" serverGroupUri." %
|
||||
{'spt_uri': node_spt_uri,
|
||||
'server_hardware_uri': node_info.get('server_hardware_uri')}
|
||||
)
|
||||
@ -473,7 +483,9 @@ def _check_request_status(response):
|
||||
repeat = False
|
||||
status = response.status_code
|
||||
|
||||
if status == 404:
|
||||
if status == 401:
|
||||
raise exceptions.OneViewNotAuthorizedException()
|
||||
elif status == 404:
|
||||
raise exceptions.OneViewResourceNotFoundError()
|
||||
elif status in (409,):
|
||||
time.sleep(10)
|
||||
|
@ -75,7 +75,7 @@ class OneViewClientAuthTestCase(unittest.TestCase):
|
||||
@mock.patch.object(requests, 'post')
|
||||
def test_authenticate_invalid_credentials(self, mock_post):
|
||||
response = mock_post.return_value
|
||||
response.status_code = http_client.UNAUTHORIZED
|
||||
response.status_code = http_client.BAD_REQUEST
|
||||
mock_post.return_value = response
|
||||
|
||||
self.assertRaises(
|
||||
@ -391,7 +391,7 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
|
||||
exc_expected_msg = (
|
||||
"Node memory_mb is inconsistent with OneView's server"
|
||||
" hardware /any_uri memoryMb. Node validation failed."
|
||||
" hardware /any_uri memoryMb."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
@ -424,7 +424,7 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
|
||||
exc_expected_msg = (
|
||||
"Node cpus is inconsistent with OneView's server"
|
||||
" hardware /any_uri cpus. Node validation failed."
|
||||
" hardware /any_uri cpus."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
@ -455,7 +455,6 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
exc_expected_msg = (
|
||||
"Node server_hardware_type_uri is inconsistent with"
|
||||
" OneView's server hardware /any_serveruri serverHardwareTypeUri."
|
||||
" Node validation failed."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
@ -481,7 +480,6 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
exc_expected_msg = (
|
||||
"Node enclosure_group_uri is inconsistent with"
|
||||
" OneView's server hardware /any_uri serverGroupUri."
|
||||
" Node validation failed."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
@ -510,7 +508,7 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
|
||||
exc_expected_msg = (
|
||||
"The ports of the node are not compatible with its"
|
||||
" server profile /anyuri. Node validation failed."
|
||||
" server profile /anyuri."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
@ -541,7 +539,7 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
|
||||
exc_expected_msg = (
|
||||
"No primary boot connection configured for server profile"
|
||||
" /anyuri Node validation failed."
|
||||
" /anyuri."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
@ -578,7 +576,7 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
exc_expected_msg = (
|
||||
"Server profile template /profile_uri serverHardwareTypeUri is"
|
||||
" inconsistent with server hardware /any_uri"
|
||||
" serverHardwareTypeUri. Node validation failed."
|
||||
" serverHardwareTypeUri."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
@ -613,7 +611,7 @@ class OneViewClientTestCase(unittest.TestCase):
|
||||
exc_expected_msg = (
|
||||
"Server profile template /profile_uri enclosureGroupUri is"
|
||||
" inconsistent with server hardware /any_uri"
|
||||
" serverGroupUri. Node validation failed."
|
||||
" serverGroupUri."
|
||||
)
|
||||
|
||||
oneview_client = client.Client(self.manager_url,
|
||||
|
Loading…
x
Reference in New Issue
Block a user