decisionai_plugin/sample/demo_modeless/demo_service.py (40 lines of code) (raw):

from decisionai_plugin.common.plugin_service import PluginService from decisionai_plugin.common.util.constant import STATUS_SUCCESS, STATUS_FAIL from decisionai_plugin.common.util.timeutil import get_time_offset, str_to_dt, dt_to_str from telemetry import log import copy class DemoService(PluginService): def __init__(self): super().__init__(False) def do_verify(self, parameters, context): # Check series set permission for data in parameters['seriesSets']: meta = self.tsanaclient.get_metric_meta(parameters['apiEndpoint'], parameters['apiKey'], data['metricId']) if meta is None: return STATUS_FAIL, 'You have no permission to read Metric {}'.format(data['metricId']) return STATUS_SUCCESS, '' def do_inference(self, model_dir, parameters, context): log.info('Start to inference {}'.format('Demo')) try: amplifier = parameters['instance']['params']['amplifier'] end_time = str_to_dt(parameters['endTime']) if 'startTime' in parameters: start_time = str_to_dt(parameters['startTime']) else: start_time = end_time series = self.tsanaclient.get_timeseries(parameters['apiEndpoint'], parameters['apiKey'], parameters['seriesSets'], start_time, end_time) res = [] for data in series or []: for value in data.value or []: v = { 'dim': data.dim, 'metric_id': data.metric_id, 'series_id': data.series_id, 'value': value['value'] * amplifier, 'timestamp': value['timestamp'] } res.append(v) self.tsanaclient.save_inference_result(parameters, res) return STATUS_SUCCESS, '' except Exception as e: log.error('Exception thrown by inference: ' + repr(e)) return STATUS_FAIL, 'Exception thrown by inference: ' + repr(e)