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): | ||||||
|  |             if wait_sec and (wait_sec > 0): | ||||||
|  |                 time.sleep(wait_sec) | ||||||
|  |             responses = [self.get(url=url, | ||||||
|                                   debug=debug, |                                   debug=debug, | ||||||
|                                   die_on_error=die_on_error, |                                   die_on_error=die_on_error, | ||||||
|                      connection_timeout_sec=timeout_sec, |                                   connection_timeout_sec=request_timeout_sec, | ||||||
|                      method_=method_) |                                   method_=method_)] | ||||||
|         responses.append(j) |             if (len(responses) > 0) and responses[0]: | ||||||
|         if len(responses) < 1: |                 break | ||||||
|             if debug and self.has_errors(): |  | ||||||
|                 self.print_errors() |  | ||||||
|             return None |  | ||||||
|  |  | ||||||
|         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
	 Jed Reynolds
					Jed Reynolds