From 4bf41157e659bcee0525e4a7ea49120167f31940 Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Mon, 8 Jan 2024 17:49:19 +0530 Subject: [PATCH 1/9] feat: request payload converted to json & added json threat protection policy --- .../policies/AM-Set-Json-Response.xml | 7 +- .../policies/JSON-Threat-Protection.xml | 7 + .../apiproxy/proxies/default.xml | 3 + .../resources/java/javax.json-1.1.4.jar | Bin 0 -> 128770 bytes .../resources/java/javax.json-api-1.1.4.jar | Bin 0 -> 31095 bytes tools/target-server-validator/callout/pom.xml | 13 +- .../callout/src/main/java/PortOpenCheck.java | 61 +++++- .../com/google/apigee/json/JavaxJson.java | 190 ++++++++++++++++++ tools/target-server-validator/main.py | 156 +++++++------- tools/target-server-validator/utilities.py | 17 +- 10 files changed, 357 insertions(+), 97 deletions(-) create mode 100644 tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml create mode 100644 tools/target-server-validator/apiproxy/resources/java/javax.json-1.1.4.jar create mode 100644 tools/target-server-validator/apiproxy/resources/java/javax.json-api-1.1.4.jar create mode 100644 tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java diff --git a/tools/target-server-validator/apiproxy/policies/AM-Set-Json-Response.xml b/tools/target-server-validator/apiproxy/policies/AM-Set-Json-Response.xml index df4a122b..9a7f1d46 100644 --- a/tools/target-server-validator/apiproxy/policies/AM-Set-Json-Response.xml +++ b/tools/target-server-validator/apiproxy/policies/AM-Set-Json-Response.xml @@ -13,11 +13,6 @@ --> - { - "host":"{request.header.host_name}", - "port": "{request.header.port_number}", - "status":"{flow.reachableStatus}" -} - + {flow.result} \ No newline at end of file diff --git a/tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml b/tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml new file mode 100644 index 00000000..fdcca6c6 --- /dev/null +++ b/tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml @@ -0,0 +1,7 @@ + + + JSON Threat Protection + + 5 + request + \ No newline at end of file diff --git a/tools/target-server-validator/apiproxy/proxies/default.xml b/tools/target-server-validator/apiproxy/proxies/default.xml index 10d49b91..9a78d185 100644 --- a/tools/target-server-validator/apiproxy/proxies/default.xml +++ b/tools/target-server-validator/apiproxy/proxies/default.xml @@ -14,6 +14,9 @@ + + JSON-Threat-Protection + JC-Port-Open-Check diff --git a/tools/target-server-validator/apiproxy/resources/java/javax.json-1.1.4.jar b/tools/target-server-validator/apiproxy/resources/java/javax.json-1.1.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6ca0cc43160ad18658db0a449d3e5ac77107f69 GIT binary patch literal 128770 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%0Ak_5dk)=vjB-yN!Vp?LZjH#Fc6d5SmW`UC&9d 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Π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 literal 0 HcmV?d00001 diff --git a/tools/target-server-validator/callout/pom.xml b/tools/target-server-validator/callout/pom.xml index 90b66584..d74ccf4f 100644 --- a/tools/target-server-validator/callout/pom.xml +++ b/tools/target-server-validator/callout/pom.xml @@ -24,7 +24,8 @@ UTF-8 UTF-8 - 1.7 + 1.1.4 + 1.8 ../apiproxy/resources/java 6.8.7 1.7 @@ -70,6 +71,12 @@ do it manually by running these commands: expressions 1.0.0 + + + javax.json + javax.json-api + 1.1.4 + @@ -134,7 +141,7 @@ do it manually by running these commands: package - + @@ -145,7 +152,7 @@ do it manually by running these commands: - + run diff --git a/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java b/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java index a31b6da8..182b6648 100644 --- a/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java +++ b/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java @@ -15,6 +15,7 @@ package com.apigee.devrel.apigee_target_server_validator; +import com.google.apigee.json.JavaxJson; import com.apigee.flow.execution.ExecutionContext; import com.apigee.flow.execution.ExecutionResult; import com.apigee.flow.execution.spi.Execution; @@ -25,7 +26,13 @@ import java.net.SocketTimeoutException; import java.net.UnknownHostException; import com.apigee.flow.execution.Action; - +import java.util.Map; +import java.util.List; +import java.util.ArrayList; +import java.util.HashMap; +import javax.json.JsonArrayBuilder; +import javax.json.JsonObjectBuilder; +import javax.json.Json; /** * A callout that checks if a particular port is open on a specified host. @@ -61,7 +68,23 @@ private static String available(final String host, final int port) { } } } + private static String convertMapToJson(Map>> result) { + JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder(); + + List> listMap = result.get("hostname_portnumbers_status"); + for (Map map : listMap) { + JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder(); + for (Map.Entry entry : map.entrySet()) { + jsonObjectBuilder.add(entry.getKey(), entry.getValue()); + } + jsonArrayBuilder.add(jsonObjectBuilder); + } + return Json.createObjectBuilder() + .add("hostname_portnumbers_status", jsonArrayBuilder) + .build() + .toString(); + } /** * Executes the callout. * @@ -72,12 +95,34 @@ private static String available(final String host, final int port) { public ExecutionResult execute(final MessageContext messageContext, final ExecutionContext executionContext) { try { - String hostname = messageContext.getMessage().getHeader("host_name"); - String port = messageContext.getMessage().getHeader("port_number"); - int portnumber = Integer.parseInt(port); - String status = available(hostname, portnumber); - messageContext.setVariable("flow.reachableStatus", status); - return ExecutionResult.SUCCESS; + String payload = (String) messageContext.getVariable("request.content"); + if (payload != null) { + Map>> result = new HashMap<>(); + result.put("hostname_portnumbers_status", new ArrayList<>()); + Map>> outerMap = JavaxJson.fromJson(payload,Map.class); + for (Map.Entry>> entry : outerMap.entrySet()) { + String hostname_portnumbers = entry.getKey(); + List> list_map_host_port = entry.getValue(); + + for (Map host_port : list_map_host_port) { + String hostName = (String) host_port.get("host"); + String portNumber = (String) host_port.get("port"); + Integer portNumberint = Integer.parseInt(portNumber); + String status = available(hostName, portNumberint); + Map newEntry = new HashMap<>(); + newEntry.put("status",status); + newEntry.putAll(host_port); + + result.get("hostname_portnumbers_status").add(newEntry); + } + } + String jsonResult = convertMapToJson(result); + messageContext.setVariable("flow.result", jsonResult); + return ExecutionResult.SUCCESS; + } else { + messageContext.setVariable("ERROR", "set payload"); + return ExecutionResult.ABORT; + } } catch (Exception e) { ExecutionResult executionResult = new ExecutionResult(false, Action.ABORT); @@ -89,5 +134,5 @@ public ExecutionResult execute(final MessageContext messageContext, messageContext.setVariable("JAVA_ERROR", e.getMessage()); return executionResult; } - } +} } diff --git a/tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java b/tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java new file mode 100644 index 00000000..2909ba6e --- /dev/null +++ b/tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java @@ -0,0 +1,190 @@ +// JavaxJson.java + +package com.google.apigee.json; + +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.io.StringReader; +import java.lang.reflect.Array; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import javax.json.Json; +import javax.json.JsonArray; +import javax.json.JsonNumber; +import javax.json.JsonObject; +import javax.json.JsonString; +import javax.json.JsonValue; +import javax.json.JsonValue.ValueType; + +public class JavaxJson { + @SuppressWarnings("unchecked") + public static T fromJson(String json, Class beanClass) { + JsonValue value = Json.createReader(new StringReader(json)).read(); + return (T) decode(value, beanClass); + } + + private static Object decode(JsonValue jsonValue, Type targetType) { + if (jsonValue.getValueType() == ValueType.NULL) { + return null; + } else if (jsonValue.getValueType() == ValueType.TRUE + || jsonValue.getValueType() == ValueType.FALSE) { + return decodeBoolean(jsonValue, targetType); + } else if (jsonValue instanceof JsonNumber) { + return decodeNumber((JsonNumber) jsonValue, targetType); + } else if (jsonValue instanceof JsonString) { + return decodeString((JsonString) jsonValue, targetType); + } else if (jsonValue instanceof JsonArray) { + return decodeArray((JsonArray) jsonValue, targetType); + } else if (jsonValue instanceof JsonObject) { + return decodeObject((JsonObject) jsonValue, targetType); + } else { + throw new UnsupportedOperationException("Unsupported json value: " + jsonValue); + } + } + + private static Object decode(JsonValue jsonValue) { + if (jsonValue.getValueType() == ValueType.NULL) { + return null; + } else if (jsonValue.getValueType() == ValueType.TRUE + || jsonValue.getValueType() == ValueType.FALSE) { + return decodeBoolean(jsonValue, java.lang.Boolean.class); + } else if (jsonValue instanceof JsonNumber) { + return decodeNumber((JsonNumber) jsonValue, java.lang.Double.class); + } else if (jsonValue instanceof JsonString) { + return decodeString((JsonString) jsonValue, java.lang.String.class); + } else if (jsonValue instanceof JsonArray) { + return decodeArray((JsonArray) jsonValue, java.util.ArrayList.class); + } else if (jsonValue instanceof JsonObject) { + return decodeObject((JsonObject) jsonValue, java.util.Map.class); + } else { + throw new UnsupportedOperationException("Unsupported json value: " + jsonValue); + } + } + + private static Object decodeBoolean(JsonValue jsonValue, Type targetType) { + if (targetType == boolean.class || targetType == Boolean.class) { + return Boolean.valueOf(jsonValue.toString()); + } else { + throw new UnsupportedOperationException("Unsupported boolean type: " + targetType); + } + } + + private static Object decodeNumber(JsonNumber jsonNumber, Type targetType) { + if (targetType == int.class || targetType == Integer.class) { + return jsonNumber.intValue(); + } else if (targetType == long.class || targetType == Long.class) { + return jsonNumber.longValue(); + } else if (targetType == long.class || targetType == Double.class) { + return jsonNumber.doubleValue(); + } else { + throw new UnsupportedOperationException("Unsupported number type: " + targetType); + } + } + + private static Object decodeString(JsonString jsonString, Type targetType) { + if (targetType == String.class) { + return jsonString.getString(); + } else if (targetType == Date.class) { + try { + return new SimpleDateFormat("MMM dd, yyyy H:mm:ss a", Locale.ENGLISH) + .parse(jsonString.getString()); // This is default Gson format. Alter if necessary. + } catch (ParseException e) { + throw new UnsupportedOperationException( + "Unsupported date format: " + jsonString.getString()); + } + } else { + throw new UnsupportedOperationException("Unsupported string type: " + targetType); + } + } + + private static Object decodeArray(JsonArray jsonArray, Type targetType) { + boolean isBean = targetType instanceof ParameterizedType; + Class targetClass = + (Class) + ((isBean) + ? ((ParameterizedType) targetType).getRawType() + : targetType); + + if (List.class.isAssignableFrom(targetClass)) { + List list = new ArrayList<>(); + if (isBean) { + Class elementClass = + (Class) ((ParameterizedType) targetType).getActualTypeArguments()[0]; + + for (JsonValue item : jsonArray) { + list.add(decode(item, elementClass)); + } + } + else { + for (JsonValue item : jsonArray) { + list.add(decode(item)); + } + } + + return list; + } else if (targetClass.isArray()) { + Class elementClass = targetClass.getComponentType(); + Object array = Array.newInstance(elementClass, jsonArray.size()); + + for (int i = 0; i < jsonArray.size(); i++) { + Array.set(array, i, decode(jsonArray.get(i), elementClass)); + } + + return array; + } else { + throw new UnsupportedOperationException("Unsupported array type: " + targetClass); + } + } + + private static Object decodeObject(JsonObject object, Type targetType) { + boolean isBean = targetType instanceof ParameterizedType; + //System.out.printf("\n** is ParameterizedType: %s\n", isBean); + + Class targetClass = + (Class) ((isBean) ? ((ParameterizedType) targetType).getRawType() : targetType); + + if (Map.class.isAssignableFrom(targetClass)) { + Map map = new LinkedHashMap<>(); + if (isBean) { + Class valueClass = + (Class) ((ParameterizedType) targetType).getActualTypeArguments()[1]; + for (Map.Entry entry : object.entrySet()) { + map.put(entry.getKey(), decode(entry.getValue(), valueClass)); + } + } else { + for (Map.Entry entry : object.entrySet()) { + map.put(entry.getKey(), decode(entry.getValue())); + } + } + return map; + } else + try { + Object bean = targetClass.newInstance(); + + for (PropertyDescriptor property : + Introspector.getBeanInfo(targetClass).getPropertyDescriptors()) { + if (property.getWriteMethod() != null && object.containsKey(property.getName())) { + property + .getWriteMethod() + .invoke( + bean, + decode( + object.get(property.getName()), + property.getWriteMethod().getGenericParameterTypes()[0])); + } + } + + return bean; + } catch (Exception e) { + throw new UnsupportedOperationException("Unsupported object type: " + targetClass, e); + } + } +} diff --git a/tools/target-server-validator/main.py b/tools/target-server-validator/main.py index ba94ee12..6cbe8143 100644 --- a/tools/target-server-validator/main.py +++ b/tools/target-server-validator/main.py @@ -17,6 +17,7 @@ import os import sys +import json from utilities import ( # pylint: disable=import-error parse_config, create_proxy_bundle, @@ -69,6 +70,7 @@ def main(): for each_ts in target_servers: ts_info = SourceApigee.get_target_server(each_env, each_ts) ts_info["env"] = each_env + ts_info["extracted_from"] = "TargetServer" all_target_servers.append(ts_info) # Fetch Targets in APIs & Shared Flows from Source Apigee @@ -165,28 +167,6 @@ def main(): final_report = [] _cached_hosts = {} - # Run Target Server Validation - print("INFO: Running validation against All Target Servers") - for each_ts in all_target_servers: - status = run_validator_proxy( - api_url, vhost_domain_name, vhost_ip, each_ts["host"], each_ts["port"], allow_insecure # noqa - ) - final_report.append( - [ - each_ts["name"], - "TargetServer", - each_ts["host"], - str(each_ts["port"]), - each_ts["env"], - status, - " & ".join(list(set(proxy_targets[each_ts["name"]]))) - if each_ts["name"] in proxy_targets - else "No References in any API", - ] - ) - - # Run Validation on Targets configured in Proxies - print("INFO: Running validation against All Targets discovered in Proxies") for each_api_type, apis in proxy_hosts.items(): for each_api, each_targets in apis.items(): for each_target in each_targets: @@ -194,66 +174,96 @@ def main(): not has_templating(each_target["host"]) and not each_target["target_server"] ): - if ( - f"{each_target['host']}:{each_target['port']}" in _cached_hosts # noqa - ): - print( - "INFO: Fetching validation status from cached hosts" # noqa - ) - status = _cached_hosts[ - f"{each_target['host']}:{each_target['port']}" # noqa - ] + each_target["env"] = "_ORG_API_" + if each_api_type == "apis": + each_target["extracted_from"] = "APIProxy" else: - status = run_validator_proxy( - api_url, - vhost_domain_name, - vhost_ip, - each_target["host"], - each_target["port"], - allow_insecure, - ) - _cached_hosts[ - f"{each_target['host']}:{each_target['port']}" - ] = status - final_report.append( - [ - each_api, - "APIProxy" - if each_api_type == "apis" - else "SharedFlow", - each_target["host"], - str(each_target["port"]), - "_ORG_API_", - status, - each_target["source"], - ] - ) + each_target["extracted_from"] = "SharedFlow" + each_target["name"] = each_api + each_target["info"] = each_target["source"] + all_target_servers.append(each_target) + if cfg["validation"].getboolean("check_csv"): csv_file = cfg["csv"]["file"] default_port = cfg["csv"]["default_port"] csv_rows = read_csv(csv_file) for each_row in csv_rows: each_host, each_port = get_row_host_port(each_row, default_port) - if f"{each_host}:{each_port}" in _cached_hosts: - print("INFO: Fetching validation status from cached hosts") - status = _cached_hosts[f"{each_host}:{each_port}"] - else: - status = run_validator_proxy( - api_url, vhost_domain_name, vhost_ip, each_host, each_port, allow_insecure # noqa + ts_csv_info = {} + ts_csv_info["host"] = each_host + ts_csv_info["port"] = each_port + ts_csv_info["name"] = each_host + ts_csv_info["info"] = "_NA_" + ts_csv_info["env"] = "_NA_" + ts_csv_info["extracted_from"] = "Input CSV" + all_target_servers.append(ts_csv_info) + + batch_size = 5 + batches = [] + new_structure = {"host_port": []} + + for entry in all_target_servers: + host = entry.get('host', '') + port = entry.get('port', '') + + if host and port: + new_entry = {'host': host, 'port': str(port), 'name': entry.get('name', ''), 'env': entry.get('env', ''), 'extracted_from': entry.get('extracted_from', ''),'info': entry.get('info', '')} # noqa + entry['port'] = str(port) + new_structure.get('host_port', []).append(new_entry) + + if len(new_structure['host_port']) == batch_size: + batches.append(new_structure) + new_structure = {'host_port': []} + + if new_structure: + batches.append(new_structure) + + for batch in batches: + updated_batch = {'host_port': []} + host_ports = batch.get('host_port', []) + for host_port in host_ports: + if f"{host_port.get('host','')}:{host_port.get('port','')}" in _cached_hosts: # noqa + status = _cached_hosts[f"{host_port.get('host','')} : {host_port.get('port','')}"] # noqa + final_report.append( + [ + host_port.get('name', ''), + host_port.get('extracted_from', ''), + host_port.get('host', ''), + host_port.get('port', ''), + host_port.get('env', ''), + status, + host_port["info"] if host_port.get("info") else " & ".join( # noqa + list(set(proxy_targets[host_port["name"]]))) + if host_port["name"] in proxy_targets + else "No References in any API", + ] ) - _cached_hosts[f"{each_host}:{each_port}"] = status - final_report.append( - [ - each_host, - "Input CSV", - each_host, - each_port, - "_NA_", - status, - "_NA_", - ] - ) + else: + updated_batch.get('host_port', []).append(host_port) + response = run_validator_proxy( + api_url, vhost_domain_name, vhost_ip, json.dumps(updated_batch), allow_insecure # noqa + ) + if response.get("error"): + print(response["error"]) + else: + outputs = response.get("hostname_portnumbers_status", []) + for output in outputs: + _cached_hosts[f'{output["host"]}:{output["port"]}'] = output["status"] # noqa + final_report.append( + [ + output["name"], + output["extracted_from"], + output["host"], + output["port"], + output["env"], + output["status"], + output["info"] if output.get("info") else " & ".join( + list(set(proxy_targets[output["name"]]))) + if output["name"] in proxy_targets + else "No References in any API", + ] + ) # Write CSV Report # TODO: support relative report path if report_format == "csv": diff --git a/tools/target-server-validator/utilities.py b/tools/target-server-validator/utilities.py index c96feb16..fafff5fc 100644 --- a/tools/target-server-validator/utilities.py +++ b/tools/target-server-validator/utilities.py @@ -53,11 +53,10 @@ def create_proxy_bundle(proxy_bundle_directory, api_name, target_dir): # noqa def run_validator_proxy( - url, dns_host, vhost_ip, target_host, target_port="443", allow_insecure=False): # noqa + url, dns_host, vhost_ip, batch, allow_insecure=False): # noqa headers = { - "host_name": target_host, - "port_number": str(target_port), "Host": dns_host, + "Content-Type": "application/json" } if allow_insecure: print("INFO: Skipping Certificate Verification & disabling warnings because 'allow_insecure' is set to true") # noqa @@ -67,10 +66,14 @@ def run_validator_proxy( session.mount( f"https://{dns_host}", ForcedIPHTTPSAdapter(dest_ip=vhost_ip) ) # noqa - r = session.get(url, headers=headers, verify=(not allow_insecure)) - if r.status_code == 200: - return r.json()["status"] - return "STATUS_UNKNOWN" + try: + response = session.post(url, data=batch, verify=(not allow_insecure), headers=headers) # noqa + if response.status_code == 200: + return response.json() + else: + return {"error": f"An error occurred: {response.text}"} + except Exception as e: + return {"error": f"An error occurred: {e}"} def delete_file(file_name): From 0131a3446db32c334a77e471d5b2e3d6b303170e Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Tue, 9 Jan 2024 12:13:51 +0530 Subject: [PATCH 2/9] fix: fixed _cached_hosts issue --- tools/target-server-validator/main.py | 4 ++-- tools/target-server-validator/utilities.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/target-server-validator/main.py b/tools/target-server-validator/main.py index 6cbe8143..a2c427a7 100644 --- a/tools/target-server-validator/main.py +++ b/tools/target-server-validator/main.py @@ -222,7 +222,7 @@ def main(): updated_batch = {'host_port': []} host_ports = batch.get('host_port', []) for host_port in host_ports: - if f"{host_port.get('host','')}:{host_port.get('port','')}" in _cached_hosts: # noqa + if f"{host_port.get('host','')} : {host_port.get('port','')}" in _cached_hosts: # noqa status = _cached_hosts[f"{host_port.get('host','')} : {host_port.get('port','')}"] # noqa final_report.append( [ @@ -249,7 +249,7 @@ def main(): else: outputs = response.get("hostname_portnumbers_status", []) for output in outputs: - _cached_hosts[f'{output["host"]}:{output["port"]}'] = output["status"] # noqa + _cached_hosts[f'{output["host"]} : {output["port"]}'] = output["status"] # noqa final_report.append( [ output["name"], diff --git a/tools/target-server-validator/utilities.py b/tools/target-server-validator/utilities.py index fafff5fc..10c89180 100644 --- a/tools/target-server-validator/utilities.py +++ b/tools/target-server-validator/utilities.py @@ -71,7 +71,7 @@ def run_validator_proxy( if response.status_code == 200: return response.json() else: - return {"error": f"An error occurred: {response.text}"} + return {"error": f"An error occurred: {response.json().get('error','')}"} # noqa except Exception as e: return {"error": f"An error occurred: {e}"} From 75ad51c6c24c1fb8d669c72e87e99c2ce458ad78 Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Tue, 16 Jan 2024 09:37:19 +0530 Subject: [PATCH 3/9] feat: added run_parallel functions and logger for logging --- tools/target-server-validator/apigee_utils.py | 101 +++++++----- tools/target-server-validator/base_logger.py | 49 ++++++ tools/target-server-validator/main.py | 151 ++++++------------ tools/target-server-validator/utilities.py | 35 +++- 4 files changed, 193 insertions(+), 143 deletions(-) create mode 100644 tools/target-server-validator/base_logger.py diff --git a/tools/target-server-validator/apigee_utils.py b/tools/target-server-validator/apigee_utils.py index eb8069d5..2ddb30bd 100644 --- a/tools/target-server-validator/apigee_utils.py +++ b/tools/target-server-validator/apigee_utils.py @@ -20,6 +20,13 @@ import requests import shutil from time import sleep +from utilities import ( # pylint: disable=import-error + run_validator_proxy, + unzip_file, + parse_proxy_hosts, + get_tes, +) +from base_logger import logger class Apigee: @@ -45,7 +52,7 @@ def is_token_valid(self, token): url = f"https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={token}" # noqa response = requests.get(url) if response.status_code == 200: - print(f"Token Validated for user {response.json()['email']}") + logger.info(f"Token Validated for user {response.json()['email']}") return True return False @@ -60,19 +67,15 @@ def get_access_token(self): if self.is_token_valid(token): return token else: - print( - 'please run "export APIGEE_ACCESS_TOKEN=$(gcloud auth print-access-token)" first !! ' # noqa type: ignore - ) + logger.error('please run "export APIGEE_ACCESS_TOKEN=$(gcloud auth print-access-token)" first !! ') # noqa sys.exit(1) else: return token else: if self.apigee_type == "x": - print( - 'please run "export APIGEE_ACCESS_TOKEN=$(gcloud auth print-access-token)" first !! ' # noqa - ) + logger.error('please run "export APIGEE_ACCESS_TOKEN=$(gcloud auth print-access-token)" first !! ') # noqa else: - print("please export APIGEE_OPDK_ACCESS_TOKEN") + logger.error('please export APIGEE_OPDK_ACCESS_TOKEN') sys.exit(1) def set_auth_header(self): @@ -136,7 +139,7 @@ def create_api(self, api_name, proxy_bundle_path): if response.status_code == 200: revision = response.json().get('revision', "1") return True, revision - print(response.text) + logger.debug(f"{response.text}") return False, None def get_api_revisions_deployment(self, env, api_name, api_rev): # noqa @@ -154,10 +157,10 @@ def get_api_revisions_deployment(self, env, api_name, api_rev): # noqa if self.apigee_type == "opdk": if api_deployment_status == "deployed": return True - print(f"API {api_name} is in Status: {api_deployment_status} !") # noqa + logger.debug(f"API {api_name} is in Status: {api_deployment_status} !") # noqa return False else: - print(response.text) + logger.debug(f"{response.text}") return False def deploy_api(self, env, api_name, api_rev): @@ -171,9 +174,9 @@ def deploy_api(self, env, api_name, api_rev): else: resp = response.json() if "already deployed" in resp["error"]["message"]: - print("Proxy {} is already Deployed".format(api_name)) + logger.info(f"Proxy {api_name} is already Deployed") return True - print(response.text) + logger.debug(f"{response.text}") return False def deploy_api_bundle(self, env, api_name, proxy_bundle_path, api_force_redeploy=False): # noqa @@ -185,50 +188,38 @@ def deploy_api_bundle(self, env, api_name, proxy_bundle_path, api_force_redeploy if get_api_status: api_exists = True api_rev = api_revs[-1] - print( - f"Proxy with name {api_name} with revision {api_rev} already exists in Apigee Org {self.org}" # noqa - ) + logger.warning(f"Proxy with name {api_name} with revision {api_rev} already exists in Apigee Org {self.org}") # noqa if api_force_redeploy: api_exists = False if not api_exists: api_created, api_rev = self.create_api(api_name, proxy_bundle_path) if api_created: - print( - f"Proxy has been imported with name {api_name} in Apigee Org {self.org}" # noqa - ) + logger.info(f"Proxy has been imported with name {api_name} in Apigee Org {self.org}") # noqa api_exists = True else: - print(f"ERROR : Proxy {api_name} import failed !!! ") + logger.error(f"ERROR : Proxy {api_name} import failed !!! ") return False if api_exists: if self.get_api_revisions_deployment( env, api_name, api_rev ): - print(f"INFO : Proxy {api_name} already active in to {env} in Apigee Org {self.org} !") # noqa + logger.info(f"Proxy {api_name} already active in to {env} in Apigee Org {self.org} !") # noqa return True else: if self.deploy_api(env, api_name, api_rev): - print( - f"Proxy with name {api_name} has been deployed to {env} in Apigee Org {self.org}" # noqa - ) + logger.info(f"Proxy with name {api_name} has been deployed to {env} in Apigee Org {self.org}") # noqa while api_deployment_retry_count < api_deployment_retry: if self.get_api_revisions_deployment( env, api_name, api_rev ): - print( - f"Proxy {api_name} active in runtime after {api_deployment_retry_count*api_deployment_sleep} seconds " # noqa - ) + logger.debug(f"Proxy {api_name} active in runtime after {api_deployment_retry_count*api_deployment_sleep} seconds ") # noqa return True else: - print( - f"Checking API deployment status in {api_deployment_sleep} seconds" # noqa - ) + logger.debug(f"Checking API deployment status in {api_deployment_sleep} seconds") # noqa sleep(api_deployment_sleep) api_deployment_retry_count += 1 else: - print( - f"ERROR : Proxy deployment to {env} in Apigee Org {self.org} Failed !!" # noqa - ) + logger.error(f"ERROR : Proxy deployment to {env} in Apigee Org {self.org} Failed !!") # noqa return False def get_api_vhost(self, vhost_name, env): @@ -244,13 +235,11 @@ def get_api_vhost(self, vhost_name, env): else: hosts = response.json()["hostnames"] if len(hosts) == 0: - print( - f"ERROR: Vhost/Env Group {vhost_name} contains no domains" # noqa - ) + logger.error(f"Vhost/Env Group {vhost_name} contains no domains") # noqa return None return hosts else: - print(f"ERROR: Vhost/Env Group {vhost_name} contains no domains") # noqa + logger.error(f"Vhost/Env Group {vhost_name} contains no domains") return None def list_apis(self, api_type): @@ -289,6 +278,44 @@ def fetch_api_revision(self, api_type, api_name, revision, export_dir): # noqa return True return False + def fetch_api_proxy_ts_parallel(self, arg_tuple): + self.fetch_api_revision(arg_tuple[0], arg_tuple[1], arg_tuple[2], arg_tuple[3]) # noqa + unzip_file( + f"{arg_tuple[3]}/{arg_tuple[1]}.zip", # noqa + f"{arg_tuple[3]}/{arg_tuple[1]}", # noqa + ) + parsed_proxy_hosts = parse_proxy_hosts(f"{arg_tuple[3]}/{arg_tuple[1]}/apiproxy") # noqa + proxy_tes = get_tes(parsed_proxy_hosts) + return arg_tuple[0], arg_tuple[1], parsed_proxy_hosts, proxy_tes + + def fetch_env_target_servers_parallel(self, arg_tuple): + ts_info = self.get_target_server(arg_tuple[0], arg_tuple[1]) + return arg_tuple[1], ts_info + + def call_validator_proxy_parallel(self, arg_tuple): + response = run_validator_proxy(arg_tuple[0], arg_tuple[1], arg_tuple[2], arg_tuple[3], arg_tuple[4]) # noqa + if response.get("error"): + logger.error(f"Error while calling the validator proxy - {response['error']}") # noqa + else: + report = [] + outputs = response.get("hostname_portnumbers_status", []) + for output in outputs: + report.append( + [ + output["name"], + output["extracted_from"], + output["host"], + output["port"], + output["env"], + output["status"], + output["info"] if output.get("info") else " & ".join( + list(set(arg_tuple[5][output["name"]]))) + if output["name"] in arg_tuple[5] + else "No References in any API", + ] + ) + return report + def write_proxy_bundle(self, export_dir, file_name, data): file_path = f"./{export_dir}/{file_name}.zip" with open(file_path, "wb") as fl: diff --git a/tools/target-server-validator/base_logger.py b/tools/target-server-validator/base_logger.py new file mode 100644 index 00000000..d28d4045 --- /dev/null +++ b/tools/target-server-validator/base_logger.py @@ -0,0 +1,49 @@ +import os +import logging + +EXEC_INFO = True if os.getenv("EXEC_INFO") == "True" else False +LOG_HANDLER = os.getenv("LOG_HANDLER", "Stream") +LOG_FILE_PATH = os.getenv("LOG_FILE_PATH", "app.log") +LOGLEVEL = os.getenv('LOGLEVEL', 'INFO').upper() + +if LOG_HANDLER not in {"File", "Stream"}: + LOG_HANDLER = "Stream" + +if LOGLEVEL not in {"CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG", "NOTSET"}: + LOGLEVEL = "INFO" + + +class CustomFormatter(logging.Formatter): + + grey = "\x1b[38;20m" + yellow = "\x1b[33;20m" + red = "\x1b[31;20m" + bold_red = "\x1b[31;1m" + reset = "\x1b[0m" + format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)" # noqa + + FORMATS = { + logging.DEBUG: grey + format + reset, + logging.INFO: grey + format + reset, + logging.WARNING: yellow + format + reset, + logging.ERROR: red + format + reset, + logging.CRITICAL: bold_red + format + reset + } + + def format(self, record): + log_fmt = self.FORMATS.get(record.levelno) + formatter = logging.Formatter(log_fmt) + return formatter.format(record) + + +logger = logging.getLogger("TargetServerValidator") +logger.setLevel(getattr(logging, LOGLEVEL)) # Add this line + +if LOG_HANDLER == "File": + ch = logging.FileHandler(LOG_FILE_PATH, mode="a") +else: + ch = logging.StreamHandler() + +ch.setFormatter(CustomFormatter()) + +logger.addHandler(ch) diff --git a/tools/target-server-validator/main.py b/tools/target-server-validator/main.py index a2c427a7..af9fe70b 100644 --- a/tools/target-server-validator/main.py +++ b/tools/target-server-validator/main.py @@ -21,19 +21,17 @@ from utilities import ( # pylint: disable=import-error parse_config, create_proxy_bundle, - run_validator_proxy, delete_file, read_csv, write_csv_report, write_md_report, create_dir, - unzip_file, - parse_proxy_hosts, has_templating, - get_tes, get_row_host_port, + run_parallel, ) from apigee_utils import Apigee # pylint: disable=import-error +from base_logger import logger def main(): @@ -63,12 +61,15 @@ def main(): environments = SourceApigee.list_environments() all_target_servers = [] + # Fetch Target Servers from Source Apigee@ - print("INFO: exporting Target Servers !") + logger.info("exporting Target Servers !") for each_env in environments: target_servers = SourceApigee.list_target_servers(each_env) - for each_ts in target_servers: - ts_info = SourceApigee.get_target_server(each_env, each_ts) + args = ((each_env, each_ts) for each_ts in target_servers) + results = run_parallel(SourceApigee.fetch_env_target_servers_parallel, args) # noqa + for result in results: + ts, ts_info = result ts_info["env"] = each_env ts_info["extracted_from"] = "TargetServer" all_target_servers.append(ts_info) @@ -80,9 +81,7 @@ def main(): skip_proxy_list = ( cfg["validation"].get("skip_proxy_list", "").split(",") ) - print( - "INFO: exporting proxies to be analyzed ! this may take a while !" - ) + logger.info("exporting proxies to be analyzed ! this may take a while !") # noqa api_types = ["apis", "sharedflows"] api_revision_map = {} for each_api_type in api_types: @@ -101,71 +100,66 @@ def main(): -1 ] else: - print(f"INFO : Skipping API {each_api}") - for each_api_type, each_api_type_data in api_revision_map.items(): - proxy_hosts[each_api_type] = {} - for each_api, each_api_rev in each_api_type_data["proxies"].items(): # noqa - print( - f"Exporting API : {each_api} with revision : {each_api_rev} " # noqa - ) - SourceApigee.fetch_api_revision( - each_api_type, - each_api, - each_api_rev, - api_revision_map[each_api_type]["export_dir"], - ) - print( - f"Unzipping API : {each_api} with revision : {each_api_rev} " # noqa - ) - unzip_file( - f"{api_revision_map[each_api_type]['export_dir']}/{each_api}.zip", # noqa - f"{api_revision_map[each_api_type]['export_dir']}/{each_api}", # noqa - ) - parsed_proxy_hosts = parse_proxy_hosts( - f"{api_revision_map[each_api_type]['export_dir']}/{each_api}/apiproxy" # noqa - ) + logger.info(f"Skipping API {each_api}") + + args = ( + ( + each_api_type, + each_api, + each_api_rev, + api_revision_map[each_api_type]["export_dir"] + ) + for each_api_type, each_api_type_data in api_revision_map.items() + for each_api, each_api_rev in each_api_type_data["proxies"].items() + ) + logger.debug("Exporting proxy target servers") + results = run_parallel(SourceApigee.fetch_api_proxy_ts_parallel, args) + + for result in results: + each_api_type, each_api, parsed_proxy_hosts, proxy_ts = result + if proxy_hosts.get(each_api_type): + proxy_hosts[each_api_type][each_api] = parsed_proxy_hosts + else: + proxy_hosts[each_api_type] = {} proxy_hosts[each_api_type][each_api] = parsed_proxy_hosts - proxy_tes = get_tes(parsed_proxy_hosts) - for each_te in proxy_tes: - if each_te in proxy_targets: - proxy_targets[each_te].append( - f"{each_api_type} - {each_api}" - ) - else: - proxy_targets[each_te] = [ - f"{each_api_type} - {each_api}" - ] - # Validate Targets against Target Apigee + + for each_te in proxy_ts: + if each_te in proxy_targets: + proxy_targets[each_te].append( + f"{each_api_type} - {each_api}" + ) + else: + proxy_targets[each_te] = [ + f"{each_api_type} - {each_api}" + ] + logger.debug("Exporting proxy target servers done") bundle_path = os.path.dirname(os.path.abspath(__file__)) # Create Validation Proxy Bundle - print("INFO: Creating proxy bundle !") + logger.info("Creating proxy bundle !") create_proxy_bundle(bundle_path, cfg["validation"]["api_name"], "apiproxy") # Deploy Validation Proxy Bundle - print("INFO: Deploying proxy bundle !") + logger.info("Deploying proxy bundle !") if not TargetApigee.deploy_api_bundle( cfg["validation"]["api_env"], cfg["validation"]["api_name"], f"{bundle_path}/{cfg['validation']['api_name']}.zip", cfg["validation"].getboolean("api_force_redeploy", False) ): - print(f"Proxy: {cfg['validation']['api_name']} deployment failed.") + logger.error(f"Proxy: {cfg['validation']['api_name']} deployment failed.") # noqa sys.exit(1) # CleanUp Validation Proxy Bundle - print("INFO: Cleaning Up local proxy bundle !") + logger.info(f"Cleaning Up local proxy bundle !") # noqa delete_file(f"{bundle_path}/{cfg['validation']['api_name']}.zip") # Fetch API Northbound Endpoint - print( - f"INFO: Fetching VHost with name {cfg['validation']['api_hostname']} !" # noqa - ) + logger.info(f"Fetching VHost with name {cfg['validation']['api_hostname']} !") # noqa vhost_domain_name = cfg["validation"]["api_hostname"] vhost_ip = cfg["validation"].get("api_ip", "").strip() api_url = f"https://{vhost_domain_name}/validate-target-server" final_report = [] - _cached_hosts = {} for each_api_type, apis in proxy_hosts.items(): for each_api, each_targets in apis.items(): @@ -218,62 +212,21 @@ def main(): if new_structure: batches.append(new_structure) - for batch in batches: - updated_batch = {'host_port': []} - host_ports = batch.get('host_port', []) - for host_port in host_ports: - if f"{host_port.get('host','')} : {host_port.get('port','')}" in _cached_hosts: # noqa - status = _cached_hosts[f"{host_port.get('host','')} : {host_port.get('port','')}"] # noqa - final_report.append( - [ - host_port.get('name', ''), - host_port.get('extracted_from', ''), - host_port.get('host', ''), - host_port.get('port', ''), - host_port.get('env', ''), - status, - host_port["info"] if host_port.get("info") else " & ".join( # noqa - list(set(proxy_targets[host_port["name"]]))) - if host_port["name"] in proxy_targets - else "No References in any API", - ] - ) - else: - updated_batch.get('host_port', []).append(host_port) + args = ((api_url,vhost_domain_name,vhost_ip, json.dumps(batch),allow_insecure, proxy_targets) for batch in batches) # noqa + output_reports = run_parallel(SourceApigee.call_validator_proxy_parallel, args) # noqa + for output in output_reports: + final_report.extend(output) - response = run_validator_proxy( - api_url, vhost_domain_name, vhost_ip, json.dumps(updated_batch), allow_insecure # noqa - ) - if response.get("error"): - print(response["error"]) - else: - outputs = response.get("hostname_portnumbers_status", []) - for output in outputs: - _cached_hosts[f'{output["host"]} : {output["port"]}'] = output["status"] # noqa - final_report.append( - [ - output["name"], - output["extracted_from"], - output["host"], - output["port"], - output["env"], - output["status"], - output["info"] if output.get("info") else " & ".join( - list(set(proxy_targets[output["name"]]))) - if output["name"] in proxy_targets - else "No References in any API", - ] - ) # Write CSV Report # TODO: support relative report path if report_format == "csv": report_file = "report.csv" - print(f"INFO: Dumping report to file {report_file}") + logger.info(f"Dumping report to file {report_file}") write_csv_report(report_file, final_report) if report_format == "md": report_file = "report.md" - print(f"INFO: Dumping report to file {report_file}") + logger.info(f"Dumping report to file {report_file}") write_md_report(report_file, final_report) diff --git a/tools/target-server-validator/utilities.py b/tools/target-server-validator/utilities.py index 10c89180..7a629fd7 100644 --- a/tools/target-server-validator/utilities.py +++ b/tools/target-server-validator/utilities.py @@ -25,6 +25,8 @@ import xmltodict import urllib3 from forcediphttpsadapter.adapters import ForcedIPHTTPSAdapter +import concurrent.futures +from base_logger import logger def parse_config(config_file): @@ -59,7 +61,7 @@ def run_validator_proxy( "Content-Type": "application/json" } if allow_insecure: - print("INFO: Skipping Certificate Verification & disabling warnings because 'allow_insecure' is set to true") # noqa + logger.info("Skipping Certificate Verification & disabling warnings because 'allow_insecure' is set to true") # noqa urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) session = requests.Session() if len(vhost_ip) > 0: @@ -80,7 +82,7 @@ def delete_file(file_name): try: os.remove(file_name) except FileNotFoundError: - print(f"File {file_name} doesnt exist") + logger.warning(f"File {file_name} doesnt exist") def write_csv_report( @@ -103,7 +105,7 @@ def read_csv(file_name): for each_row in rows: read_rows.append(each_row) except FileNotFoundError: - print(f"WARN: {file_name} not found ! ") + logger.warning(f"File {file_name} not found ! ") return read_rows @@ -131,7 +133,7 @@ def create_dir(dir): try: os.makedirs(dir) except FileExistsError: - print(f"INFO: {dir} already exists") + logger.info(f"{dir} already exists") def list_dir(dir, soft=False): @@ -140,7 +142,7 @@ def list_dir(dir, soft=False): except FileNotFoundError: if soft: return [] - print(f'ERROR: Directory "{dir}" not found') + logger.error(f"Directory '{dir}' not found") sys.exit(1) @@ -155,7 +157,7 @@ def parse_xml(file): doc = xmltodict.parse(fl.read()) return doc except FileNotFoundError: - print(f'ERROR: File "{file}" not found') + logger.error(f"File '{file}' not found") return {} @@ -239,9 +241,28 @@ def get_tes(data): def get_row_host_port(row, default_port=443): host, port = None, None if len(row) == 0: - print("WARN: Input row has no host ") + logger.warning("Input row has no host.") if len(row) == 1: host, port = row[0], default_port if len(row) > 1: host, port = row[0], row[1] return host, port + + +def run_parallel(func, args, workers=10): + with concurrent.futures.ProcessPoolExecutor(max_workers=workers) as executor: # noqa + future_list = {executor.submit(func, arg) for arg in args} + + data = [] + for future in concurrent.futures.as_completed(future_list): + try: + data.append(future.result()) + except Exception: + exception_info = future.exception() + if exception_info is not None: + error_message = str(exception_info) + logger.error(f"Error message: {error_message}") + else: + logger.info("No exception information available.") + logger.error(f"{future} generated an exception") + return data From 3b0dcc5b3a5751a048537a0d2830724afc028127 Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Wed, 17 Jan 2024 12:38:10 +0530 Subject: [PATCH 4/9] fix: fixed the target proxy Apigee type --- tools/target-server-validator/main.py | 2 +- tools/target-server-validator/utilities.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/target-server-validator/main.py b/tools/target-server-validator/main.py index af9fe70b..0b8ee8dd 100644 --- a/tools/target-server-validator/main.py +++ b/tools/target-server-validator/main.py @@ -53,7 +53,7 @@ def main(): ) TargetApigee = Apigee( - "x" if "apigee.googleapis.com" in cfg["source"]["baseurl"] else "opdk", + "x" if "apigee.googleapis.com" in cfg["target"]["baseurl"] else "opdk", cfg["target"]["baseurl"], cfg["target"]["auth_type"], cfg["target"]["org"], diff --git a/tools/target-server-validator/utilities.py b/tools/target-server-validator/utilities.py index 7a629fd7..37f9aabc 100644 --- a/tools/target-server-validator/utilities.py +++ b/tools/target-server-validator/utilities.py @@ -73,9 +73,9 @@ def run_validator_proxy( if response.status_code == 200: return response.json() else: - return {"error": f"An error occurred: {response.json().get('error','')}"} # noqa + return {"error": f"{response.json().get('error','')}"} # noqa except Exception as e: - return {"error": f"An error occurred: {e}"} + return {"error": f"{e}"} def delete_file(file_name): From 5b5b4e5212cb8a6bddd98494227b9b6bde2df9e9 Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Wed, 17 Jan 2024 20:38:38 +0530 Subject: [PATCH 5/9] fix: deleted jar files and updated dependencies --- .../resources/java/javax.json-1.1.4.jar | Bin 128770 -> 0 bytes .../resources/java/javax.json-api-1.1.4.jar | Bin 31095 -> 0 bytes tools/target-server-validator/callout/pom.xml | 19 +++++++++++++----- 3 files changed, 14 insertions(+), 5 deletions(-) delete mode 100644 tools/target-server-validator/apiproxy/resources/java/javax.json-1.1.4.jar delete mode 100644 tools/target-server-validator/apiproxy/resources/java/javax.json-api-1.1.4.jar diff --git a/tools/target-server-validator/apiproxy/resources/java/javax.json-1.1.4.jar b/tools/target-server-validator/apiproxy/resources/java/javax.json-1.1.4.jar deleted file mode 100644 index f6ca0cc43160ad18658db0a449d3e5ac77107f69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128770 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%0Ak_5dk)=vjB-yN!Vp?LZjH#Fc6d5SmW`UC&9d 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Π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 diff --git a/tools/target-server-validator/callout/pom.xml b/tools/target-server-validator/callout/pom.xml index d74ccf4f..ede4c656 100644 --- a/tools/target-server-validator/callout/pom.xml +++ b/tools/target-server-validator/callout/pom.xml @@ -71,7 +71,11 @@ do it manually by running these commands: expressions 1.0.0 - + + org.glassfish + javax.json + 1.1.4 + javax.json javax.json-api @@ -145,10 +149,15 @@ do it manually by running these commands: - - - + + + + + + + + + From 4f0be35687e5bdb89ab6e5f3f4043dd5345cd9c5 Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Tue, 23 Jan 2024 15:50:31 +0530 Subject: [PATCH 6/9] fix: updated library to gson --- tools/target-server-validator/README.md | 33 +++ tools/target-server-validator/apigee_utils.py | 17 +- tools/target-server-validator/base_logger.py | 14 +- tools/target-server-validator/callout/pom.xml | 17 +- .../callout/src/main/java/PortOpenCheck.java | 68 ++----- .../com/google/apigee/json/JavaxJson.java | 190 ------------------ tools/target-server-validator/main.py | 60 ++++-- 7 files changed, 111 insertions(+), 288 deletions(-) delete mode 100644 tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java diff --git a/tools/target-server-validator/README.md b/tools/target-server-validator/README.md index 8b7b24b0..41078b12 100644 --- a/tools/target-server-validator/README.md +++ b/tools/target-server-validator/README.md @@ -85,6 +85,39 @@ Run the script as below python3 main.py ``` +This script deploys an API proxy to validate if the target servers are reachable or not. To use the API proxy, make sure your payloads adhere to the following format: + +```json +[ + { + "host": "example.com", + "port": 443 + }, + { + "host": "example2.com", + "port": 443 + }, + // Add up to 8 more host-port combinations as needed +] +``` + +The response will look like this - +```json +[ + { + "host": "example.com", + "port": 443, + "status" : "REACHABLE" + }, + { + "host": "example2.com", + "port": 443, + "status" : "UNKNOWN_HOST" + }, + // and so on +] +``` + ## Report Validation Report: `report.md` OR `report.csv` can be found in the same directory as the script. diff --git a/tools/target-server-validator/apigee_utils.py b/tools/target-server-validator/apigee_utils.py index 2ddb30bd..0fdb2e31 100644 --- a/tools/target-server-validator/apigee_utils.py +++ b/tools/target-server-validator/apigee_utils.py @@ -43,9 +43,9 @@ def __init__( self.auth_type = auth_type access_token = self.get_access_token() self.auth_header = { - "Authorization": "Bearer {}".format(access_token) + "Authorization": f"Bearer {access_token}" if self.auth_type == "oauth" - else "Basic {}".format(access_token) # noqa + else f"Basic {access_token}" # noqa } def is_token_valid(self, token): @@ -139,7 +139,7 @@ def create_api(self, api_name, proxy_bundle_path): if response.status_code == 200: revision = response.json().get('revision', "1") return True, revision - logger.debug(f"{response.text}") + logger.debug(response.text) return False, None def get_api_revisions_deployment(self, env, api_name, api_rev): # noqa @@ -160,7 +160,7 @@ def get_api_revisions_deployment(self, env, api_name, api_rev): # noqa logger.debug(f"API {api_name} is in Status: {api_deployment_status} !") # noqa return False else: - logger.debug(f"{response.text}") + logger.debug(response.text) return False def deploy_api(self, env, api_name, api_rev): @@ -294,12 +294,9 @@ def fetch_env_target_servers_parallel(self, arg_tuple): def call_validator_proxy_parallel(self, arg_tuple): response = run_validator_proxy(arg_tuple[0], arg_tuple[1], arg_tuple[2], arg_tuple[3], arg_tuple[4]) # noqa - if response.get("error"): - logger.error(f"Error while calling the validator proxy - {response['error']}") # noqa - else: + if isinstance(response, list): report = [] - outputs = response.get("hostname_portnumbers_status", []) - for output in outputs: + for output in response: report.append( [ output["name"], @@ -315,6 +312,8 @@ def call_validator_proxy_parallel(self, arg_tuple): ] ) return report + else: + logger.error(f"Error while calling the validator proxy - {response.get('error','unknown error')}") # noqa def write_proxy_bundle(self, export_dir, file_name, data): file_path = f"./{export_dir}/{file_name}.zip" diff --git a/tools/target-server-validator/base_logger.py b/tools/target-server-validator/base_logger.py index d28d4045..b31f579b 100644 --- a/tools/target-server-validator/base_logger.py +++ b/tools/target-server-validator/base_logger.py @@ -20,14 +20,14 @@ class CustomFormatter(logging.Formatter): red = "\x1b[31;20m" bold_red = "\x1b[31;1m" reset = "\x1b[0m" - format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)" # noqa + logging_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)" # noqa FORMATS = { - logging.DEBUG: grey + format + reset, - logging.INFO: grey + format + reset, - logging.WARNING: yellow + format + reset, - logging.ERROR: red + format + reset, - logging.CRITICAL: bold_red + format + reset + logging.DEBUG: grey + logging_format + reset, + logging.INFO: grey + logging_format + reset, + logging.WARNING: yellow + logging_format + reset, + logging.ERROR: red + logging_format + reset, + logging.CRITICAL: bold_red + logging_format + reset } def format(self, record): @@ -37,7 +37,7 @@ def format(self, record): logger = logging.getLogger("TargetServerValidator") -logger.setLevel(getattr(logging, LOGLEVEL)) # Add this line +logger.setLevel(getattr(logging, LOGLEVEL)) if LOG_HANDLER == "File": ch = logging.FileHandler(LOG_FILE_PATH, mode="a") diff --git a/tools/target-server-validator/callout/pom.xml b/tools/target-server-validator/callout/pom.xml index ede4c656..fb10d7d4 100644 --- a/tools/target-server-validator/callout/pom.xml +++ b/tools/target-server-validator/callout/pom.xml @@ -24,7 +24,6 @@ UTF-8 UTF-8 - 1.1.4 1.8 ../apiproxy/resources/java 6.8.7 @@ -72,16 +71,10 @@ do it manually by running these commands: 1.0.0 - org.glassfish - javax.json - 1.1.4 + com.google.code.gson + gson + 2.10.1 - - javax.json - javax.json-api - 1.1.4 - - @@ -153,11 +146,9 @@ do it manually by running these commands: - - - + diff --git a/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java b/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java index 182b6648..a519a4d0 100644 --- a/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java +++ b/tools/target-server-validator/callout/src/main/java/PortOpenCheck.java @@ -15,7 +15,6 @@ package com.apigee.devrel.apigee_target_server_validator; -import com.google.apigee.json.JavaxJson; import com.apigee.flow.execution.ExecutionContext; import com.apigee.flow.execution.ExecutionResult; import com.apigee.flow.execution.spi.Execution; @@ -26,13 +25,10 @@ import java.net.SocketTimeoutException; import java.net.UnknownHostException; import com.apigee.flow.execution.Action; -import java.util.Map; -import java.util.List; -import java.util.ArrayList; -import java.util.HashMap; -import javax.json.JsonArrayBuilder; -import javax.json.JsonObjectBuilder; -import javax.json.Json; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonElement; /** * A callout that checks if a particular port is open on a specified host. @@ -68,23 +64,7 @@ private static String available(final String host, final int port) { } } } - private static String convertMapToJson(Map>> result) { - JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder(); - List> listMap = result.get("hostname_portnumbers_status"); - for (Map map : listMap) { - JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder(); - for (Map.Entry entry : map.entrySet()) { - jsonObjectBuilder.add(entry.getKey(), entry.getValue()); - } - jsonArrayBuilder.add(jsonObjectBuilder); - } - - return Json.createObjectBuilder() - .add("hostname_portnumbers_status", jsonArrayBuilder) - .build() - .toString(); - } /** * Executes the callout. * @@ -97,31 +77,23 @@ public ExecutionResult execute(final MessageContext messageContext, try { String payload = (String) messageContext.getVariable("request.content"); if (payload != null) { - Map>> result = new HashMap<>(); - result.put("hostname_portnumbers_status", new ArrayList<>()); - Map>> outerMap = JavaxJson.fromJson(payload,Map.class); - for (Map.Entry>> entry : outerMap.entrySet()) { - String hostname_portnumbers = entry.getKey(); - List> list_map_host_port = entry.getValue(); - - for (Map host_port : list_map_host_port) { - String hostName = (String) host_port.get("host"); - String portNumber = (String) host_port.get("port"); - Integer portNumberint = Integer.parseInt(portNumber); - String status = available(hostName, portNumberint); - Map newEntry = new HashMap<>(); - newEntry.put("status",status); - newEntry.putAll(host_port); - - result.get("hostname_portnumbers_status").add(newEntry); - } + Gson gson = new Gson(); + JsonArray hostPortArray = gson.fromJson(payload, JsonArray.class); + for (JsonElement jsonElement : hostPortArray) { + JsonObject hostPortEntry = jsonElement.getAsJsonObject(); + String host = hostPortEntry.get("host").getAsString(); + Integer port = hostPortEntry.get("port").getAsInt(); + String status = available(host, port); + hostPortEntry.addProperty("status", status); } - String jsonResult = convertMapToJson(result); - messageContext.setVariable("flow.result", jsonResult); + String results = gson.toJson(hostPortArray); + messageContext.setVariable("flow.result", results); return ExecutionResult.SUCCESS; } else { - messageContext.setVariable("ERROR", "set payload"); - return ExecutionResult.ABORT; + ExecutionResult executionResult = new ExecutionResult(false, + Action.ABORT); + executionResult.setErrorResponse("No payload received"); + return executionResult; } } catch (Exception e) { ExecutionResult executionResult = new ExecutionResult(false, @@ -132,7 +104,7 @@ public ExecutionResult execute(final MessageContext messageContext, e.getClass().getName()); //--Set flow variables -- may be useful for debugging. messageContext.setVariable("JAVA_ERROR", e.getMessage()); - return executionResult; + return executionResult; } -} + } } diff --git a/tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java b/tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java deleted file mode 100644 index 2909ba6e..00000000 --- a/tools/target-server-validator/callout/src/main/java/com/google/apigee/json/JavaxJson.java +++ /dev/null @@ -1,190 +0,0 @@ -// JavaxJson.java - -package com.google.apigee.json; - -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.io.StringReader; -import java.lang.reflect.Array; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import javax.json.Json; -import javax.json.JsonArray; -import javax.json.JsonNumber; -import javax.json.JsonObject; -import javax.json.JsonString; -import javax.json.JsonValue; -import javax.json.JsonValue.ValueType; - -public class JavaxJson { - @SuppressWarnings("unchecked") - public static T fromJson(String json, Class beanClass) { - JsonValue value = Json.createReader(new StringReader(json)).read(); - return (T) decode(value, beanClass); - } - - private static Object decode(JsonValue jsonValue, Type targetType) { - if (jsonValue.getValueType() == ValueType.NULL) { - return null; - } else if (jsonValue.getValueType() == ValueType.TRUE - || jsonValue.getValueType() == ValueType.FALSE) { - return decodeBoolean(jsonValue, targetType); - } else if (jsonValue instanceof JsonNumber) { - return decodeNumber((JsonNumber) jsonValue, targetType); - } else if (jsonValue instanceof JsonString) { - return decodeString((JsonString) jsonValue, targetType); - } else if (jsonValue instanceof JsonArray) { - return decodeArray((JsonArray) jsonValue, targetType); - } else if (jsonValue instanceof JsonObject) { - return decodeObject((JsonObject) jsonValue, targetType); - } else { - throw new UnsupportedOperationException("Unsupported json value: " + jsonValue); - } - } - - private static Object decode(JsonValue jsonValue) { - if (jsonValue.getValueType() == ValueType.NULL) { - return null; - } else if (jsonValue.getValueType() == ValueType.TRUE - || jsonValue.getValueType() == ValueType.FALSE) { - return decodeBoolean(jsonValue, java.lang.Boolean.class); - } else if (jsonValue instanceof JsonNumber) { - return decodeNumber((JsonNumber) jsonValue, java.lang.Double.class); - } else if (jsonValue instanceof JsonString) { - return decodeString((JsonString) jsonValue, java.lang.String.class); - } else if (jsonValue instanceof JsonArray) { - return decodeArray((JsonArray) jsonValue, java.util.ArrayList.class); - } else if (jsonValue instanceof JsonObject) { - return decodeObject((JsonObject) jsonValue, java.util.Map.class); - } else { - throw new UnsupportedOperationException("Unsupported json value: " + jsonValue); - } - } - - private static Object decodeBoolean(JsonValue jsonValue, Type targetType) { - if (targetType == boolean.class || targetType == Boolean.class) { - return Boolean.valueOf(jsonValue.toString()); - } else { - throw new UnsupportedOperationException("Unsupported boolean type: " + targetType); - } - } - - private static Object decodeNumber(JsonNumber jsonNumber, Type targetType) { - if (targetType == int.class || targetType == Integer.class) { - return jsonNumber.intValue(); - } else if (targetType == long.class || targetType == Long.class) { - return jsonNumber.longValue(); - } else if (targetType == long.class || targetType == Double.class) { - return jsonNumber.doubleValue(); - } else { - throw new UnsupportedOperationException("Unsupported number type: " + targetType); - } - } - - private static Object decodeString(JsonString jsonString, Type targetType) { - if (targetType == String.class) { - return jsonString.getString(); - } else if (targetType == Date.class) { - try { - return new SimpleDateFormat("MMM dd, yyyy H:mm:ss a", Locale.ENGLISH) - .parse(jsonString.getString()); // This is default Gson format. Alter if necessary. - } catch (ParseException e) { - throw new UnsupportedOperationException( - "Unsupported date format: " + jsonString.getString()); - } - } else { - throw new UnsupportedOperationException("Unsupported string type: " + targetType); - } - } - - private static Object decodeArray(JsonArray jsonArray, Type targetType) { - boolean isBean = targetType instanceof ParameterizedType; - Class targetClass = - (Class) - ((isBean) - ? ((ParameterizedType) targetType).getRawType() - : targetType); - - if (List.class.isAssignableFrom(targetClass)) { - List list = new ArrayList<>(); - if (isBean) { - Class elementClass = - (Class) ((ParameterizedType) targetType).getActualTypeArguments()[0]; - - for (JsonValue item : jsonArray) { - list.add(decode(item, elementClass)); - } - } - else { - for (JsonValue item : jsonArray) { - list.add(decode(item)); - } - } - - return list; - } else if (targetClass.isArray()) { - Class elementClass = targetClass.getComponentType(); - Object array = Array.newInstance(elementClass, jsonArray.size()); - - for (int i = 0; i < jsonArray.size(); i++) { - Array.set(array, i, decode(jsonArray.get(i), elementClass)); - } - - return array; - } else { - throw new UnsupportedOperationException("Unsupported array type: " + targetClass); - } - } - - private static Object decodeObject(JsonObject object, Type targetType) { - boolean isBean = targetType instanceof ParameterizedType; - //System.out.printf("\n** is ParameterizedType: %s\n", isBean); - - Class targetClass = - (Class) ((isBean) ? ((ParameterizedType) targetType).getRawType() : targetType); - - if (Map.class.isAssignableFrom(targetClass)) { - Map map = new LinkedHashMap<>(); - if (isBean) { - Class valueClass = - (Class) ((ParameterizedType) targetType).getActualTypeArguments()[1]; - for (Map.Entry entry : object.entrySet()) { - map.put(entry.getKey(), decode(entry.getValue(), valueClass)); - } - } else { - for (Map.Entry entry : object.entrySet()) { - map.put(entry.getKey(), decode(entry.getValue())); - } - } - return map; - } else - try { - Object bean = targetClass.newInstance(); - - for (PropertyDescriptor property : - Introspector.getBeanInfo(targetClass).getPropertyDescriptors()) { - if (property.getWriteMethod() != null && object.containsKey(property.getName())) { - property - .getWriteMethod() - .invoke( - bean, - decode( - object.get(property.getName()), - property.getWriteMethod().getGenericParameterTypes()[0])); - } - } - - return bean; - } catch (Exception e) { - throw new UnsupportedOperationException("Unsupported object type: " + targetClass, e); - } - } -} diff --git a/tools/target-server-validator/main.py b/tools/target-server-validator/main.py index 0b8ee8dd..ba1f40aa 100644 --- a/tools/target-server-validator/main.py +++ b/tools/target-server-validator/main.py @@ -45,31 +45,31 @@ def main(): report_format = "md" # Intialize Source & Target Apigee - SourceApigee = Apigee( + source_apigee = Apigee( "x" if "apigee.googleapis.com" in cfg["source"]["baseurl"] else "opdk", cfg["source"]["baseurl"], cfg["source"]["auth_type"], cfg["source"]["org"], ) - TargetApigee = Apigee( + target_apigee = Apigee( "x" if "apigee.googleapis.com" in cfg["target"]["baseurl"] else "opdk", cfg["target"]["baseurl"], cfg["target"]["auth_type"], cfg["target"]["org"], ) - environments = SourceApigee.list_environments() + environments = source_apigee.list_environments() all_target_servers = [] # Fetch Target Servers from Source Apigee@ logger.info("exporting Target Servers !") for each_env in environments: - target_servers = SourceApigee.list_target_servers(each_env) + target_servers = source_apigee.list_target_servers(each_env) args = ((each_env, each_ts) for each_ts in target_servers) - results = run_parallel(SourceApigee.fetch_env_target_servers_parallel, args) # noqa + results = run_parallel(source_apigee.fetch_env_target_servers_parallel, args) # noqa for result in results: - ts, ts_info = result + _, ts_info = result ts_info["env"] = each_env ts_info["extracted_from"] = "TargetServer" all_target_servers.append(ts_info) @@ -92,11 +92,11 @@ def main(): ) create_dir(proxy_export_dir + f"/{each_api_type}") - for each_api in SourceApigee.list_apis(each_api_type): + for each_api in source_apigee.list_apis(each_api_type): if each_api not in skip_proxy_list: api_revision_map[each_api_type]["proxies"][ each_api - ] = SourceApigee.list_api_revisions(each_api_type, each_api)[ # noqa + ] = source_apigee.list_api_revisions(each_api_type, each_api)[ # noqa -1 ] else: @@ -107,13 +107,13 @@ def main(): each_api_type, each_api, each_api_rev, - api_revision_map[each_api_type]["export_dir"] + each_api_type_data["export_dir"] ) for each_api_type, each_api_type_data in api_revision_map.items() for each_api, each_api_rev in each_api_type_data["proxies"].items() ) logger.debug("Exporting proxy target servers") - results = run_parallel(SourceApigee.fetch_api_proxy_ts_parallel, args) + results = run_parallel(source_apigee.fetch_api_proxy_ts_parallel, args) for result in results: each_api_type, each_api, parsed_proxy_hosts, proxy_ts = result @@ -142,7 +142,7 @@ def main(): # Deploy Validation Proxy Bundle logger.info("Deploying proxy bundle !") - if not TargetApigee.deploy_api_bundle( + if not target_apigee.deploy_api_bundle( cfg["validation"]["api_env"], cfg["validation"]["api_name"], f"{bundle_path}/{cfg['validation']['api_name']}.zip", @@ -151,7 +151,7 @@ def main(): logger.error(f"Proxy: {cfg['validation']['api_name']} deployment failed.") # noqa sys.exit(1) # CleanUp Validation Proxy Bundle - logger.info(f"Cleaning Up local proxy bundle !") # noqa + logger.info("Cleaning Up local proxy bundle !") # noqa delete_file(f"{bundle_path}/{cfg['validation']['api_name']}.zip") # Fetch API Northbound Endpoint @@ -194,26 +194,44 @@ def main(): batch_size = 5 batches = [] - new_structure = {"host_port": []} + new_structure = [] for entry in all_target_servers: host = entry.get('host', '') port = entry.get('port', '') if host and port: - new_entry = {'host': host, 'port': str(port), 'name': entry.get('name', ''), 'env': entry.get('env', ''), 'extracted_from': entry.get('extracted_from', ''),'info': entry.get('info', '')} # noqa - entry['port'] = str(port) - new_structure.get('host_port', []).append(new_entry) - - if len(new_structure['host_port']) == batch_size: + new_entry = { + 'host': host, + 'port': str(port), + 'name': entry.get('name', ''), + 'env': entry.get('env', ''), + 'extracted_from': entry.get('extracted_from', ''), + 'info': entry.get('info', '') + } + + new_structure.append(new_entry) + + if len(new_structure) == batch_size: batches.append(new_structure) - new_structure = {'host_port': []} + new_structure = [] if new_structure: batches.append(new_structure) - args = ((api_url,vhost_domain_name,vhost_ip, json.dumps(batch),allow_insecure, proxy_targets) for batch in batches) # noqa - output_reports = run_parallel(SourceApigee.call_validator_proxy_parallel, args) # noqa + args = ( + ( + api_url, + vhost_domain_name, + vhost_ip, + json.dumps(batch), + allow_insecure, + proxy_targets + ) + for batch in batches + ) + + output_reports = run_parallel(source_apigee.call_validator_proxy_parallel, args) # noqa for output in output_reports: final_report.extend(output) From 4420b1521f60b8544416c2b4e9665861e00b277b Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Tue, 23 Jan 2024 18:15:30 +0530 Subject: [PATCH 7/9] chore: added licenseheaders --- .../policies/JSON-Threat-Protection.xml | 12 ++++++++++++ tools/target-server-validator/base_logger.py | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml b/tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml index fdcca6c6..37454c5b 100644 --- a/tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml +++ b/tools/target-server-validator/apiproxy/policies/JSON-Threat-Protection.xml @@ -1,4 +1,16 @@ + JSON Threat Protection diff --git a/tools/target-server-validator/base_logger.py b/tools/target-server-validator/base_logger.py index b31f579b..400299fe 100644 --- a/tools/target-server-validator/base_logger.py +++ b/tools/target-server-validator/base_logger.py @@ -1,3 +1,20 @@ +#!/usr/bin/python + +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + import os import logging From 1db14cc9f33fa94d500f96ea44c8f111d09fc3e0 Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Tue, 23 Jan 2024 18:24:14 +0530 Subject: [PATCH 8/9] fix: added venv in pipeline.sh --- tools/target-server-validator/pipeline.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/target-server-validator/pipeline.sh b/tools/target-server-validator/pipeline.sh index 2e1fe792..3f65ba59 100755 --- a/tools/target-server-validator/pipeline.sh +++ b/tools/target-server-validator/pipeline.sh @@ -65,7 +65,11 @@ smtp.gmail.com,465 EOF # Install Dependencies -python3 -m pip install -r "$SCRIPTPATH/requirements.txt" +VENV_PATH="$SCRIPTPATH/venv" +python3 -m venv "$VENV_PATH" +# shellcheck source=/dev/null +. "$VENV_PATH/bin/activate" +pip install -r "$SCRIPTPATH/requirements.txt" # Generate Gcloud Acccess Token APIGEE_ACCESS_TOKEN="$(gcloud config config-helper --force-auth-refresh --format json | jq -r '.credential.access_token')" @@ -78,3 +82,7 @@ python3 main.py # Display Report cat "$SCRIPTPATH/report.md" + +# deactivate venv & cleanup +deactivate +rm -rf "$VENV_PATH" \ No newline at end of file From 83f4c9865ee8ce496251d47a967229503f798791 Mon Sep 17 00:00:00 2001 From: Payal Jindal Date: Tue, 23 Jan 2024 23:53:12 +0530 Subject: [PATCH 9/9] fix: removed csv headers from read rows --- tools/target-server-validator/apigee_utils.py | 2 +- tools/target-server-validator/main.py | 5 ++++- tools/target-server-validator/utilities.py | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/target-server-validator/apigee_utils.py b/tools/target-server-validator/apigee_utils.py index 0fdb2e31..133cf5c8 100644 --- a/tools/target-server-validator/apigee_utils.py +++ b/tools/target-server-validator/apigee_utils.py @@ -313,7 +313,7 @@ def call_validator_proxy_parallel(self, arg_tuple): ) return report else: - logger.error(f"Error while calling the validator proxy - {response.get('error','unknown error')}") # noqa + return {"error": f"Error while calling the validator proxy - {response.get('error','unknown error')} with payload {arg_tuple[3]}"} # noqa def write_proxy_bundle(self, export_dir, file_name, data): file_path = f"./{export_dir}/{file_name}.zip" diff --git a/tools/target-server-validator/main.py b/tools/target-server-validator/main.py index ba1f40aa..ccc6eb47 100644 --- a/tools/target-server-validator/main.py +++ b/tools/target-server-validator/main.py @@ -233,7 +233,10 @@ def main(): output_reports = run_parallel(source_apigee.call_validator_proxy_parallel, args) # noqa for output in output_reports: - final_report.extend(output) + if isinstance(output, list): + final_report.extend(output) + else: + logger.error(output.get("error", "Unknown Error occured while calling proxy")) # noqa # Write CSV Report # TODO: support relative report path diff --git a/tools/target-server-validator/utilities.py b/tools/target-server-validator/utilities.py index 37f9aabc..f0bf56bc 100644 --- a/tools/target-server-validator/utilities.py +++ b/tools/target-server-validator/utilities.py @@ -104,6 +104,8 @@ def read_csv(file_name): rows = csv.reader(file) for each_row in rows: read_rows.append(each_row) + if len(read_rows) != 0: + read_rows.pop(0) except FileNotFoundError: logger.warning(f"File {file_name} not found ! ") return read_rows