Commit 1b54f368 authored by aakash.bedi's avatar aakash.bedi

neshap api

parent 3702f467
JOB_ID=1011
HIRARCHY_TAGS=site_100$dept_100$line_100$equipment_106
INPUT_TAGS=tag_107,tag_107,tag_109,tag_109,tag_120,tag_120
OUTPUT_TAGS=tag_107,tag_108,tag_109,tag_110,tag_120,tag_121
START_TIMESTAMP=1642636800
NUMBER_FORCASTS=30
FREQUENCY=days
FILTER_TAG=site_100$dept_100$line_100$equipment_106$tag_106
FILTER_VALUE=0
FILTER_CONDITION=lte
KAIROS_API_URL=http://ilens:iLens$456@qa.ilens.io/kairos/
KAIROS_METRC_NAME=project_132__ilens.live_data.raw
\ No newline at end of file
FROM python:3.7.12-slim
ADD . /code
WORKDIR /code
RUN mkdir -p /code/logs
RUN pip install -r requirements.txt
CMD ["python","main.py"]
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
import os
from dotenv import load_dotenv
load_dotenv() # take environment variables from .env.
JOB_ID=os.environ.get('JOB_ID')
LOG_LEVEL = os.environ.get("LOG_LEVEL", "DEBUG").upper()
LOGSTASH_HOST = os.environ.get("LOGSTASH_HOST", None)
LOGSTASH_PORT = os.environ.get("LOGSTASH_PORT", None)
LOG_HANDLER_NAME = os.environ.get("LOG_HANDLER_NAME", "MovingAverageComponent")
BASE_LOG_PATH = os.path.join(os.getcwd(), "logs".format())
KAIROS_API_URL=os.environ.get("KAIROS_API_URL").strip()
KAIROS_METRC_NAME=os.environ.get("KAIROS_METRC_NAME").strip()
KAIROS_TAG_NAME = os.environ.get('KAIROS_TAG_NAME', 'c3').strip()
HIRARCHY_TAGS = os.environ.get('HIRARCHY_TAGS').strip().split(',') # comma seperated ilens hirarchy tags
INPUT_TAGS = os.environ.get('INPUT_TAGS').strip().split(',') # comma seperated data tags for forecasting
OUTPUT_TAGS = os.environ.get('OUTPUT_TAGS').strip().split(',') # comma seperated data tags to push forecasted data
START_TIMESTAMP = os.environ.get('START_TIMESTAMP').strip() # absolute or relative timestamp with respect to today or exact UTC timestamp in sec Ex: today+1 or 1642703400
NUMBER_FORCASTS = int(os.environ.get('NUMBER_FORCASTS').strip()) # number of future datapoinst to forecast
FREQUENCY = os.environ.get('FREQUENCY').strip() # frequency of the datapoint in kairos : Avalable Values [seconds, minutes, hours, days, weeks, months, years]
FILTER_TAG = os.environ.get('FILTER_TAG', '').strip() # full tag name with hirarchy on which datapoinst are to be filtered
FILTER_VALUE = float(os.environ.get('FILTER_VALUE', "0").strip()) # value that needs to be filtered out
FILTER_CONDITION = os.environ.get('FILTER_CONDITION', "ne").strip() # condition of the filter to be applied : Avalable Values [equal, ne, lt, lte, gt, gte]
RELATIVE_END = int(os.environ.get('RELATIVE_END', '1').strip()) # relative end datapoint number to concider for historical data default is 1
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from scripts.utils.config import LOG_LEVEL, LOG_HANDLER_NAME, BASE_LOG_PATH
import logging
from logging.handlers import RotatingFileHandler
from logging import WARNING,INFO,DEBUG,ERROR
import os
DEFAULT_FORMAT = '%(asctime)s %(levelname)5s %(name)s %(message)s'
DEBUG_FORMAT = '%(asctime)s %(levelname)5s %(name)s [%(threadName)5s] %(message)s'
EXTRA = {}
FORMATTER = DEFAULT_FORMAT
if LOG_LEVEL.strip() == "DEBUG":
FORMATTER = DEBUG_FORMAT
def get_logger(log_handler_name, extra=EXTRA):
"""
Purpose : To create logger .
:param log_handler_name: Name of the log handler.
:param extra: extra args for the logger
:return: logger object.
"""
log_path = os.path.join(BASE_LOG_PATH, log_handler_name + ".log")
logstash_temp = os.path.join(BASE_LOG_PATH, log_handler_name + ".db")
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)
logger = logging.LoggerAdapter(logger, extra)
return logger
logger = get_logger(LOG_HANDLER_NAME)
from scripts.utils.logsetup import logger
def get_kairos_json(metric, forecast_data, tags_json):
temp_json = {
"name": metric,
"datapoints": forecast_data,
"tags": tags_json
}
return temp_json
def tag_na_value_check(tag_value, tag_id):
if logger.restrict_na_value_push and tag_value in [None, 'NA', 'nan', 'Nan', 'NAN']:
logger.info(f"Invalid tag value Tag:{tag_id} Value: {tag_value}")
return True
return False
def tag_none_value_check(tag_value, tag_id):
if tag_value is None:
logger.error(f" Invalid tag value found for the tag ID: {tag_id} and value: {tag_value}")
return True
return False
def get_tags_json(tag_id):
return {
"c3": tag_id,
"c1": tag_id.split("$")[0],
"c5": tag_id.split("$")[-1]
}
\ No newline at end of file
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