mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 02:38:03 +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, | ||||
|                     url: str = None, | ||||
|                     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, | ||||
|                                 debug=debug | self.debug_on, | ||||
|                                 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, | ||||
|             url: str = None, | ||||
| @@ -704,33 +713,47 @@ class BaseLFJsonRequest: | ||||
|                     url: str = None, | ||||
|                     die_on_error: bool = False, | ||||
|                     debug: bool = False, | ||||
|                     timeout_sec: float = None, | ||||
|                     method_='GET'): | ||||
|                     wait_sec: float = None, | ||||
|                     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 die_on_error:  exit immediate if result status is BAD RESPONSE | ||||
|         :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 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 | ||||
|         """ | ||||
|         begin_sec = time.time() * 1000 | ||||
|         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, | ||||
|                                   die_on_error=die_on_error, | ||||
|                      connection_timeout_sec=timeout_sec, | ||||
|                      method_=method_) | ||||
|         responses.append(j) | ||||
|         if len(responses) < 1: | ||||
|             if debug and self.has_errors(): | ||||
|                 self.print_errors() | ||||
|             return None | ||||
|                                   connection_timeout_sec=request_timeout_sec, | ||||
|                                   method_=method_)] | ||||
|             if (len(responses) > 0) and responses[0]: | ||||
|                 break | ||||
|  | ||||
|         if responses[0] is None: | ||||
|             if debug: | ||||
|                 self.logger.debug(message="No response from " + url) | ||||
|             return None | ||||
|  | ||||
|         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 | ||||
|  | ||||
|     def json_get(self, | ||||
| @@ -769,7 +792,7 @@ class BaseLFJsonRequest: | ||||
|                 json_response = self.get_as_json(url=url, | ||||
|                                                  debug=debug, | ||||
|                                                  die_on_error=False, | ||||
|                                                  timeout_sec=request_timeout_sec) | ||||
|                                                  request_timeout_sec=request_timeout_sec) | ||||
|                 if debug: | ||||
|                     self.logger.debug("[%s] json_get: URL[%s]" % (attempt_counter, url)) | ||||
|                     self.logger.debug(pformat(json_response)) | ||||
| @@ -14414,6 +14437,81 @@ class LFJsonQuery(JsonQuery): | ||||
|                                    singular_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 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds