Commit 093b76aa authored by aakash.bedi's avatar aakash.bedi

latest files

parent 9108c17e
JOB_ID=1011
HIRARCHY_TAGS=site_100$dept_100$line_100$equipment_106,site_100$dept_100$line_100$equipment_107,site_100$dept_100$line_100$equipment_108
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=tag_106,tag_106,tag_106
FILTER_VALUE=0,0,0
FILTER_CONDITION=lte,lte,lte
KAIROS_API_URL=http://ilens:iLens$456@qa.ilens.io/kairos
KAIROS_METRC_NAME=project_132__ilens.live_data.raw
RELATIVE_END=1
\ 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.
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()
IS_API = os.environ.get('IS_API', 'false').strip().lower() # boolean flag stating is the module run from component or an api
if IS_API == 'false':
HIRARCHY_TAGS = os.environ.get('HIRARCHY_TAGS').strip().split(',') # comma separated ilens hirarchy tags
INPUT_TAGS = os.environ.get('INPUT_TAGS').strip().split(',') # comma separated data tags for forecasting
OUTPUT_TAGS = os.environ.get('OUTPUT_TAGS').strip().split(',') # comma separated data tags to push forecasted data
START_TIMESTAMP = os.environ.get('START_TIMESTAMP', '').strip() # absolute or relative timestamp with respect to today plus offset or exact UTC timestamp in sec or use last historical timestamp plus offset Ex: today+1 or 1642703400 or last+1
NUMBER_FORCASTS = int(os.environ.get('NUMBER_FORCASTS').strip()) # number of future datapoints to forecast
FREQUENCY = os.environ.get('FREQUENCY').strip() # frequency of the datapoint in kairos : Available Values [seconds, minutes, hours, days, weeks, months, years]
FILTER_TAG = os.environ.get('FILTER_TAG', '').strip().split(',') # comma separated tag name on which datapoints are to be filtered
FILTER_VALUE = os.environ.get('FILTER_VALUE', "0").strip().split(',') # comma separated value that needs to be filtered out
FILTER_CONDITION = os.environ.get('FILTER_CONDITION', "ne").strip().split(',') # comma separated condition of the filter to be applied : Available Values [equal, ne, lt, lte, gt, gte]
RELATIVE_END = int(os.environ.get('RELATIVE_END', '0').strip()) # relative end datapoint number to consider for historical data default is 1
config = {
"KAIROS_API_URL":KAIROS_API_URL,
"KAIROS_METRC_NAME":KAIROS_METRC_NAME,
"KAIROS_TAG_NAME":KAIROS_TAG_NAME,
"HIRARCHY_TAGS":HIRARCHY_TAGS,
"INPUT_TAGS":INPUT_TAGS,
"OUTPUT_TAGS":OUTPUT_TAGS,
"START_TIMESTAMP":START_TIMESTAMP,
"NUMBER_FORCASTS":NUMBER_FORCASTS,
"FREQUENCY":FREQUENCY,
"FILTER_TAG":FILTER_TAG,
"FILTER_VALUE":FILTER_VALUE,
"FILTER_CONDITION":FILTER_CONDITION,
"RELATIVE_END":RELATIVE_END
}
\ No newline at end of file
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