Commit e590bd4f authored by dasharatha.vamshi's avatar dasharatha.vamshi

init

parent 05093f69
# Default ignored files
/shelf/
/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="pytest" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyChainedComparisonsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoreConstantInTheMiddle" value="true" />
</inspection_tool>
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="55">
<item index="0" class="java.lang.String" itemvalue="scikit-image" />
<item index="1" class="java.lang.String" itemvalue="scipy" />
<item index="2" class="java.lang.String" itemvalue="opencv-python" />
<item index="3" class="java.lang.String" itemvalue="torch" />
<item index="4" class="java.lang.String" itemvalue="torchvision" />
<item index="5" class="java.lang.String" itemvalue="absl-py" />
<item index="6" class="java.lang.String" itemvalue="protobuf" />
<item index="7" class="java.lang.String" itemvalue="rsa" />
<item index="8" class="java.lang.String" itemvalue="tensorflow-estimator" />
<item index="9" class="java.lang.String" itemvalue="opt-einsum" />
<item index="10" class="java.lang.String" itemvalue="python-dateutil" />
<item index="11" class="java.lang.String" itemvalue="cycler" />
<item index="12" class="java.lang.String" itemvalue="gast" />
<item index="13" class="java.lang.String" itemvalue="numpy" />
<item index="14" class="java.lang.String" itemvalue="pyasn1" />
<item index="15" class="java.lang.String" itemvalue="requests" />
<item index="16" class="java.lang.String" itemvalue="importlib-metadata" />
<item index="17" class="java.lang.String" itemvalue="pyasn1-modules" />
<item index="18" class="java.lang.String" itemvalue="requests-oauthlib" />
<item index="19" class="java.lang.String" itemvalue="tensorflow" />
<item index="20" class="java.lang.String" itemvalue="tensorboard-plugin-wit" />
<item index="21" class="java.lang.String" itemvalue="zipp" />
<item index="22" class="java.lang.String" itemvalue="oauthlib" />
<item index="23" class="java.lang.String" itemvalue="astunparse" />
<item index="24" class="java.lang.String" itemvalue="urllib3" />
<item index="25" class="java.lang.String" itemvalue="pyparsing" />
<item index="26" class="java.lang.String" itemvalue="Cython" />
<item index="27" class="java.lang.String" itemvalue="Markdown" />
<item index="28" class="java.lang.String" itemvalue="google-auth-oauthlib" />
<item index="29" class="java.lang.String" itemvalue="Werkzeug" />
<item index="30" class="java.lang.String" itemvalue="kiwisolver" />
<item index="31" class="java.lang.String" itemvalue="tqdm" />
<item index="32" class="java.lang.String" itemvalue="yolov5processor" />
<item index="33" class="java.lang.String" itemvalue="tensorboard" />
<item index="34" class="java.lang.String" itemvalue="future" />
<item index="35" class="java.lang.String" itemvalue="matplotlib" />
<item index="36" class="java.lang.String" itemvalue="cachetools" />
<item index="37" class="java.lang.String" itemvalue="grpcio" />
<item index="38" class="java.lang.String" itemvalue="Keras" />
<item index="39" class="java.lang.String" itemvalue="google-auth" />
<item index="40" class="java.lang.String" itemvalue="idna" />
<item index="41" class="java.lang.String" itemvalue="Pillow" />
<item index="42" class="java.lang.String" itemvalue="cython" />
<item index="43" class="java.lang.String" itemvalue="keras" />
<item index="44" class="java.lang.String" itemvalue="imgaug" />
<item index="45" class="java.lang.String" itemvalue="opencv-contrib-python" />
<item index="46" class="java.lang.String" itemvalue="paho-mqtt" />
<item index="47" class="java.lang.String" itemvalue="pymongo" />
<item index="48" class="java.lang.String" itemvalue="fbprophet" />
<item index="49" class="java.lang.String" itemvalue="scikit-learn" />
<item index="50" class="java.lang.String" itemvalue="sklearn" />
<item index="51" class="java.lang.String" itemvalue="statsmodels" />
<item index="52" class="java.lang.String" itemvalue="python-dotenv" />
<item index="53" class="java.lang.String" itemvalue="pystan" />
<item index="54" class="java.lang.String" itemvalue="Cerberus" />
</list>
</value>
</option>
</inspection_tool>
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N802" />
<option value="N806" />
<option value="N801" />
</list>
</option>
</inspection_tool>
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="cv2.imresize" />
<option value="detectron2.model_zoo.get_config_file" />
<option value="detectron2.model_zoo.get_checkpoint_url" />
</list>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/http-request-component.iml" filepath="$PROJECT_DIR$/.idea/http-request-component.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
#---------------Service Configurations----------------#
SERVICE_CONFIG:
LOG_LEVEL: info
LOG_HANDLER_NAME: HttpRequestComponent
2021-02-19 18:14:36,154 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:14:58,402 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:15:36,424 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:16:22,287 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:16:58,063 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:18:16,848 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:18:18,877 INFO HttpRequestComponent Receiving data...
2021-02-19 18:19:26,923 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:20:08,859 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:20:45,748 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:20:47,807 INFO HttpRequestComponent Receiving data...
2021-02-19 18:21:46,009 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:21:48,054 INFO HttpRequestComponent Receiving data...
2021-02-19 18:22:29,393 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:22:31,428 INFO HttpRequestComponent Receiving data...
2021-02-19 18:25:07,876 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:25:09,918 INFO HttpRequestComponent Receiving data...
2021-02-19 18:26:33,798 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:27:20,259 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:28:08,566 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:29:14,841 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:29:16,874 INFO HttpRequestComponent Receiving data...
2021-02-19 18:29:57,496 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:29:59,551 INFO HttpRequestComponent Receiving data...
2021-02-19 18:31:24,752 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:32:05,996 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:32:08,026 INFO HttpRequestComponent Receiving data...
2021-02-19 18:32:39,425 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:32:54,645 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:32:56,676 INFO HttpRequestComponent Receiving data...
2021-02-19 18:33:37,144 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:33:39,174 INFO HttpRequestComponent Receiving data...
2021-02-19 18:33:39,175 INFO HttpRequestComponent Writing data to response.json file
2021-02-19 18:33:52,119 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:33:54,155 INFO HttpRequestComponent Receiving data...
2021-02-19 18:33:54,156 INFO HttpRequestComponent Writing data to response.json file
2021-02-19 18:38:10,826 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:54:15,288 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:54:17,319 INFO HttpRequestComponent Receiving data...
2021-02-19 18:54:17,319 INFO HttpRequestComponent Writing data to response.json file
2021-02-19 18:54:32,901 INFO HttpRequestComponent Parsing user requests
2021-02-19 18:54:34,955 INFO HttpRequestComponent Receiving data...
2021-02-19 18:54:34,956 INFO HttpRequestComponent Writing data to response.json file
import requests
from scripts.common.logsetup import logger
from scripts.common.constants import RequestConstants, ComponentExceptions
from scripts.common.config_parser import *
from requests.adapters import HTTPAdapter
class RequestComponent:
def __init__(self):
self.s = requests.Session()
def execute_request(self, query):
logger.info("Parsing user requests")
# ---------------------- Validating URL ------------------------------------------------------------------------
if RequestConstants.Request_URL in query.keys():
request_url = query[RequestConstants.Request_URL]
else:
raise Exception(ComponentExceptions.INVALID_REQUEST_URL_EXCEPTION)
# ---------------------- Validating Request Method -------------------------------------------------------------
if RequestConstants.Request_method in query.keys():
request_method = query[RequestConstants.Request_method]
else:
raise Exception(ComponentExceptions.INVALID_REQUEST_METHOD_EXCEPTION)
# ---------------------- Validating Headers --------------------------------------------------------------------
if RequestConstants.Request_headers in query.keys():
request_headers = query[RequestConstants.Request_headers]
else:
request_headers = RequestConstants.Default_headers
# ---------------------- Validating Headers --------------------------------------------------------------------
if RequestConstants.Request_payload in query.keys():
request_payload = query[RequestConstants.Request_payload]
else:
request_payload = {}
# ---------------------- Validating Max retries ----------------------------------------------------------------
if RequestConstants.Request_payload in query.keys() and query[RequestConstants.Request_max_retries] != 0:
request_max_reties = query[RequestConstants.Request_max_retries]
adapter = HTTPAdapter(max_retries=request_max_reties)
self.s.mount('http://', adapter)
else:
request_max_reties = RequestConstants.Default_retries
adapter = HTTPAdapter(max_retries=request_max_reties)
self.s.mount('http://', adapter)
# ---------------------- Sending Request -----------------------------------------------------------------------
print(query)
try:
if query[RequestConstants.Request_method].upper() == RequestConstants.Method_get:
# response = requests.request(RequestConstants.Method_get, url=request_url, headers=request_headers,
# data=request_payload)
response = self.s.get(url=request_url, headers=request_headers, data=json.dumps(request_payload))
if response.status_code == RequestConstants.REQUEST_SUCCESS_CODE:
logger.info("Receiving data...")
return response.json()
else:
raise Exception(response.json()[RequestConstants.ERRORS_KEY])
elif query[RequestConstants.Request_method].upper() == RequestConstants.Method_post:
if RequestConstants.Request_headers in query.keys() and len(request_headers) != 0:
request_headers = query[RequestConstants.Request_headers]
else:
raise Exception(ComponentExceptions.INVALID_HEADERS_EXCEPTION)
# response = requests.request(RequestConstants.Method_post, url=request_url, headers=request_headers,
# data=json.dumps(request_payload))
response = self.s.post(url=request_url, headers=request_headers, data=json.dumps(request_payload))
if response.status_code == RequestConstants.REQUEST_SUCCESS_CODE:
logger.info("Receiving data...")
return response.json()
else:
raise Exception(response.json()[RequestConstants.ERRORS_KEY])
except Exception as e:
raise Exception(e)
if __name__ == '__main__':
obj = RequestComponent()
data = obj.execute_request(config)
logger.info("Writing data to response.json file")
json_object = json.dumps(data, indent=4)
with open(os.path.join(config['shared_volume'], 'response.json'), "w") as outfile:
outfile.write(json_object)
#!/usr/bin/env python
import os
import sys
import yaml
import json
config_path = os.path.join(os.getcwd(), "conf", "configuration.yml")
if os.path.exists(config_path):
sys.stderr.write("Reading config from --> {}".format(config_path))
sys.stderr.write("\n")
with open(config_path, 'r') as stream:
_config = yaml.safe_load(stream)
else:
sys.stderr.write("Configuration not found...")
sys.stderr.write("Exiting....")
sys.exit(1)
BASE_LOG_PATH = os.path.join(os.getcwd(), "logs")
if not os.path.exists(os.path.join(os.getcwd(), 'logs')):
os.mkdir(os.path.join(os.getcwd(), 'logs'))
LOG_LEVEL = os.environ.get("LOG_LEVEL", _config.get('SERVICE_CONFIG', {}).get("LOG_LEVEL", "INFO")).upper()
LOG_HANDLER_NAME = _config.get('SERVICE_CONFIG', {}).get("LOG_HANDLER_NAME", "HttpRequestComponent")
os.environ['shared_volume'] = 'test'
os.environ['method'] = 'POST'
os.environ['url'] = 'http://localhost:5000/get'
os.environ['headers'] = '{"content-type":"application/json"}'
os.environ['payload'] = '{"name": "vamshi", "gender": "male"}'
os.environ['max_retries'] = '1'
config = {
"shared_volume": os.environ.get("shared_volume"),
"method": os.environ.get("method", "post"),
"url": os.environ.get("url"),
"headers": json.loads(os.environ.get("headers")),
"payload": json.loads(os.environ.get("payload")),
"max_retries": int(os.environ.get("max_retries"))
}
if not os.path.exists(config['shared_volume']):
sys.stderr.write("Shared path does not exist!")
sys.stderr.write("Creating path --> {}".format(config['shared_volume']))
os.makedirs(config['shared_volume'])
#!/usr/bin/env python
class RequestConstants:
Request_URL = "url"
Request_method = "method"
Request_headers = "headers"
Request_payload = "payload"
Shared_volume = "shared_volume"
Method_get = "GET"
Method_post = "POST"
Request_max_retries = "max_retries"
Default_retries = 1
REQUEST_SUCCESS_CODE = 200
ERRORS_KEY = "errors"
Default_headers = {'content-type': 'application/json'}
LOG_VAR_MESSAGE = "\n" + "#" * 25 + "\n" + "{}" + "\n" + "#" * 25 + "\n" + "{}\n"
class ComponentExceptions:
INVALID_REQUEST_URL_EXCEPTION = "Request url should be required"
INVALID_REQUEST_METHOD_EXCEPTION = "Request Method should be required"
INVALID_KAIROS_URL_EXCEPTION = "Kairos url should be required"
INVALID_TAG_HIERARCHY_EXCEPTION = "Tag Hierarchy values should not be null"
INVALID_METRIC_NAME_EXCEPTION = "metric_name key is not there"
INVALID_START_TIME_FORMAT_EXCEPTION = "start time should be dd/mm/yyyy hh/MM/SS"
INVALID_END_TIME_FORMAT_EXCEPTION = "end time should be dd/mm/yyyy hh/MM/SS"
INVALID_START_TIME_VALUE_EXCEPTION = "start time should be greater than zero"
MISSING_START_TIME_VALUE_EXCEPTION = "need start date for querying"
MISSING_TAG_HIERARCHY_EXCEPTION = "required tag hierarchy"
INVALID_START_END_VALUE_EXCEPTION = "end time should be greater than zero and less than start time"
INVALID_HEADERS_EXCEPTION = "Need Headers for POST request"
import os
import logging
from logging.handlers import RotatingFileHandler
from scripts.common.config_parser import LOG_LEVEL, LOG_HANDLER_NAME, BASE_LOG_PATH
DEFAULT_FORMAT = '%(asctime)s %(levelname)5s %(name)s %(message)s'
DEBUG_FORMAT = '%(asctime)s %(levelname)5s %(name)s [%(threadName)5s:%(filename)5s:%(funcName)5s():%(lineno)s] %(' \
'message)s '
EXTRA = {}
FORMATTER = DEFAULT_FORMAT
if LOG_LEVEL.strip() == "DEBUG":
FORMATTER = DEBUG_FORMAT
logging.trace = logging.DEBUG - 5
logging.addLevelName(logging.DEBUG - 5, 'TRACE')
class ILensLogger(logging.getLoggerClass()):
def __init__(self, name):
super().__init__(name)
def trace(self, msg, *args, **kwargs):
if self.isEnabledFor(logging.trace):
self._log(logging.trace, msg, args, **kwargs)
def get_logger(log_handler_name):
"""
Purpose : To create logger .
:param log_handler_name: Name of the log handler.
:return: logger object.
"""
log_path = os.path.join(BASE_LOG_PATH, log_handler_name + ".log")
logging.setLoggerClass(ILensLogger)
_logger = logging.getLogger(log_handler_name)
_logger.setLevel(LOG_LEVEL.strip().upper())
log_handler = logging.StreamHandler()
log_handler.setLevel(LOG_LEVEL)
formatter = logging.Formatter(FORMATTER)
log_handler.setFormatter(formatter)
handler = RotatingFileHandler(log_path, maxBytes=10485760,
backupCount=5)
handler.setFormatter(formatter)
_logger.addHandler(log_handler)
_logger.addHandler(handler)
return _logger
logger = get_logger(LOG_HANDLER_NAME)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment