mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-31 18:58:01 +00:00
lanforge_api.py: updated request handling and now has HttpStatusData GET and POST methods
Signed-off-by: Jed Reynolds <jed@bitratchet.com>
This commit is contained in:
@@ -629,11 +629,20 @@ class BaseLFJsonRequest:
|
|||||||
def json_delete(self,
|
def json_delete(self,
|
||||||
url: str = None,
|
url: str = None,
|
||||||
debug: bool = False,
|
debug: bool = False,
|
||||||
die_on_error: bool = False):
|
die_on_error: bool = False,
|
||||||
|
wait_sec: float = None,
|
||||||
|
request_timeout_sec: float = None,
|
||||||
|
max_timeout_sec: float = None,
|
||||||
|
errors_warnings: list = None):
|
||||||
|
if wait_sec and (wait_sec > 0):
|
||||||
|
time.sleep(wait_sec)
|
||||||
return self.get_as_json(url=url,
|
return self.get_as_json(url=url,
|
||||||
debug=debug | self.debug_on,
|
debug=debug | self.debug_on,
|
||||||
die_on_error=die_on_error,
|
die_on_error=die_on_error,
|
||||||
method_='DELETE')
|
request_timeout_sec=request_timeout_sec,
|
||||||
|
max_timeout_sec=max_timeout_sec,
|
||||||
|
method_='DELETE',
|
||||||
|
errors_warnings=errors_warnings)
|
||||||
|
|
||||||
def get(self,
|
def get(self,
|
||||||
url: str = None,
|
url: str = None,
|
||||||
@@ -704,33 +713,47 @@ class BaseLFJsonRequest:
|
|||||||
url: str = None,
|
url: str = None,
|
||||||
die_on_error: bool = False,
|
die_on_error: bool = False,
|
||||||
debug: bool = False,
|
debug: bool = False,
|
||||||
timeout_sec: float = None,
|
wait_sec: float = None,
|
||||||
method_='GET'):
|
request_timeout_sec: float = None,
|
||||||
|
max_timeout_sec: float = None, # TODO: use if we do retries
|
||||||
|
method_='GET',
|
||||||
|
errors_warnings: list = None):
|
||||||
"""
|
"""
|
||||||
:param url: url to do GET request on
|
:param url: url to do GET request on
|
||||||
:param die_on_error: exit immediate if result status is BAD RESPONSE
|
:param die_on_error: exit immediate if result status is BAD RESPONSE
|
||||||
:param debug: print diagnostic information about query
|
:param debug: print diagnostic information about query
|
||||||
:param timeout_sec: number of seconds to wait for a response
|
:param wait_sec: wait before requesting
|
||||||
|
:param request_timeout_sec: number of seconds to wait for a response
|
||||||
:param method_: Overrides the HTTP method used. Please do not override.
|
:param method_: Overrides the HTTP method used. Please do not override.
|
||||||
|
:param errors_warnings: if present, this list gets populated with errors and warnings from the result
|
||||||
|
:param max_timeout_sec: if there is no response, this request can retry every request_timeout_sec
|
||||||
:return: get request as Json data
|
:return: get request as Json data
|
||||||
"""
|
"""
|
||||||
|
begin_sec = time.time() * 1000
|
||||||
responses = []
|
responses = []
|
||||||
j = self.get(url=url,
|
while (time.time() * 1000) < (begin_sec + max_timeout_sec):
|
||||||
debug=debug,
|
if wait_sec and (wait_sec > 0):
|
||||||
die_on_error=die_on_error,
|
time.sleep(wait_sec)
|
||||||
connection_timeout_sec=timeout_sec,
|
responses = [self.get(url=url,
|
||||||
method_=method_)
|
debug=debug,
|
||||||
responses.append(j)
|
die_on_error=die_on_error,
|
||||||
if len(responses) < 1:
|
connection_timeout_sec=request_timeout_sec,
|
||||||
if debug and self.has_errors():
|
method_=method_)]
|
||||||
self.print_errors()
|
if (len(responses) > 0) and responses[0]:
|
||||||
return None
|
break
|
||||||
|
|
||||||
if responses[0] is None:
|
if responses[0] is None:
|
||||||
if debug:
|
if debug:
|
||||||
self.logger.debug(message="No response from " + url)
|
self.logger.debug(message="No response from " + url)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
json_data = json.loads(responses[0].read().decode('utf-8'))
|
json_data = json.loads(responses[0].read().decode('utf-8'))
|
||||||
|
if errors_warnings is not None:
|
||||||
|
if "errors" in json_data:
|
||||||
|
errors_warnings.extend(json_data["errors"])
|
||||||
|
if "warnings" in responses[0]:
|
||||||
|
errors_warnings.extend(json_data["warnings"])
|
||||||
|
|
||||||
return json_data
|
return json_data
|
||||||
|
|
||||||
def json_get(self,
|
def json_get(self,
|
||||||
@@ -769,7 +792,7 @@ class BaseLFJsonRequest:
|
|||||||
json_response = self.get_as_json(url=url,
|
json_response = self.get_as_json(url=url,
|
||||||
debug=debug,
|
debug=debug,
|
||||||
die_on_error=False,
|
die_on_error=False,
|
||||||
timeout_sec=request_timeout_sec)
|
request_timeout_sec=request_timeout_sec)
|
||||||
if debug:
|
if debug:
|
||||||
self.logger.debug("[%s] json_get: URL[%s]" % (attempt_counter, url))
|
self.logger.debug("[%s] json_get: URL[%s]" % (attempt_counter, url))
|
||||||
self.logger.debug(pformat(json_response))
|
self.logger.debug(pformat(json_response))
|
||||||
@@ -14414,6 +14437,81 @@ class LFJsonQuery(JsonQuery):
|
|||||||
singular_key="sessions/messages",
|
singular_key="sessions/messages",
|
||||||
plural_key="sessions/messages")
|
plural_key="sessions/messages")
|
||||||
#
|
#
|
||||||
|
"""
|
||||||
|
Below are 3 methods defined by LFClient URL Responders
|
||||||
|
"""
|
||||||
|
|
||||||
|
def status_msg_new_session(self,
|
||||||
|
session : str = None,
|
||||||
|
debug : bool = False,
|
||||||
|
wait_sec : float = None,
|
||||||
|
request_timeout_sec : float = None,
|
||||||
|
max_timeout_sec : float = None,
|
||||||
|
errors_warnings : list = None):
|
||||||
|
"""
|
||||||
|
Add a status message
|
||||||
|
:param [R]session: session ID [R]
|
||||||
|
"""
|
||||||
|
response = self.json_put(url="/status-msg/{session}".format(session=session),
|
||||||
|
debug=debug,
|
||||||
|
wait_sec=wait_sec,
|
||||||
|
request_timeout_sec=request_timeout_sec,
|
||||||
|
max_timeout_sec=max_timeout_sec,
|
||||||
|
errors_warnings=errors_warnings)
|
||||||
|
if not response:
|
||||||
|
return None
|
||||||
|
errors_warnings.extend(response['errors'])
|
||||||
|
errors_warnings.extend(response['warnings'])
|
||||||
|
return None
|
||||||
|
|
||||||
|
def status_msg_delete_session(self,
|
||||||
|
session : str = None,
|
||||||
|
debug : bool = False,
|
||||||
|
wait_sec : float = None,
|
||||||
|
request_timeout_sec : float = None,
|
||||||
|
max_timeout_sec : float = None,
|
||||||
|
errors_warnings : list = None):
|
||||||
|
"""
|
||||||
|
Delete a status-msg session
|
||||||
|
:param session: id to delete
|
||||||
|
"""
|
||||||
|
response = self.json_delete(url="/status-msg/{session}".format(session=session),
|
||||||
|
debug=debug,
|
||||||
|
wait_sec=wait_sec,
|
||||||
|
request_timeout_sec=request_timeout_sec,
|
||||||
|
max_timeout_sec=max_timeout_sec,
|
||||||
|
errors_warnings=errors_warnings)
|
||||||
|
if not response:
|
||||||
|
return None
|
||||||
|
errors_warnings.extend(response['errors'])
|
||||||
|
errors_warnings.extend(response['warnings'])
|
||||||
|
return None
|
||||||
|
|
||||||
|
def status_msg_delete_message(self,
|
||||||
|
session : str = None,
|
||||||
|
key : str = None,
|
||||||
|
debug : bool = False,
|
||||||
|
wait_sec : float = None,
|
||||||
|
request_timeout_sec : float = None,
|
||||||
|
max_timeout_sec : float = None,
|
||||||
|
errors_warnings : list = None):
|
||||||
|
"""
|
||||||
|
Delete a status message
|
||||||
|
:param session: session ID
|
||||||
|
:param key: item ID
|
||||||
|
"""
|
||||||
|
response = self.json_delete(url="/status-msg/{session}/{key}".format(session=session, key=key),
|
||||||
|
debug=debug,
|
||||||
|
wait_sec=wait_sec,
|
||||||
|
request_timeout_sec=request_timeout_sec,
|
||||||
|
max_timeout_sec=max_timeout_sec,
|
||||||
|
errors_warnings=errors_warnings)
|
||||||
|
if not response:
|
||||||
|
return None
|
||||||
|
errors_warnings.extend(response['errors'])
|
||||||
|
errors_warnings.extend(response['warnings'])
|
||||||
|
return None
|
||||||
|
|
||||||
"""----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|
"""----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|
||||||
Notes for <TEST-GROUP> type requests
|
Notes for <TEST-GROUP> type requests
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user