import requests import os import json import library.migrationlogger as migrationlogger import library.utils as utils logger = migrationlogger.get_logger(os.path.basename(__file__)) ALERT_POLICIES_URL = 'https://api.newrelic.com/v2/alerts_policies.json' DEL_ALERTS_URL = 'https://api.newrelic.com/v2/alerts_policies/' POLICIES = "policies" GET_APP_CONDITIONS_URL = 'https://api.newrelic.com/v2/alerts_conditions.json' APP_CONDITIONS_URL = 'https://api.newrelic.com/v2/alerts_conditions/' CREATE_APP_CONDITION_URL = 'https://api.newrelic.com/v2/alerts_conditions/policies/' CONDITIONS = 'conditions' ENTITIES = 'entities' CONDITION = 'condition' GET_SYNTH_CONDITIONS_URL = 'https://api.newrelic.com/v2/alerts_synthetics_conditions.json' CREATE_SYNTHETICS_CONDITION_URL = 'https://api.newrelic.com/v2/alerts_synthetics_conditions/policies/' SYNTH_CONDITIONS = 'synthetics_conditions' SYNTH_CONDITION = 'synthetics_condition' LOC_FAILURE_CONDITIONS_URL = 'https://api.newrelic.com/v2/alerts_location_failure_conditions/policies/' LOCATION_FAILURE_CONDITIONS = 'location_failure_conditions' LOCATION_FAILURE_CONDITION = 'location_failure_condition' NRQL_CONDITIONS_URL = 'https://api.newrelic.com/v2/alerts_nrql_conditions.json' NRQL_CONDITIONS = 'nrql_conditions'
import os import library.status.conditionstatus as cs import library.migrationlogger as logger import library.clients.alertsclient as ac import library.clients.monitorsclient as mc import library.clients.entityclient as ec logger = logger.get_logger(os.path.basename(__file__)) def migrate(all_alert_status, per_api_key, policy_name, src_api_key, src_policy, tgt_acct_id, tgt_api_key, tgt_policy): logger.info('Loading source synthetic conditions ') synth_conditions = ac.get_synthetic_conditions(src_api_key, src_policy['id'])[ac.SYNTH_CONDITIONS] logger.info('Found synthetic conditions ' + str(len(synth_conditions))) logger.info('Loading target synthetic conditions ' + policy_name) tgt_synth_conds = ac.synth_conditions_by_name_monitor(tgt_api_key, tgt_policy['id']) condition_num = 0 for synth_condition in synth_conditions: condition_num = condition_num + 1 condition_row = policy_name + '-scon' + str(condition_num) src_monitor_id = synth_condition[ac.MONITOR_ID] src_monitor_name = mc.get_monitor(src_api_key, src_monitor_id)['monitor']['name'] all_alert_status[condition_row] = {cs.COND_NAME: synth_condition['name']} all_alert_status[condition_row][cs.SRC_MONITOR] = src_monitor_name result = ec.gql_get_matching_entity_by_name(per_api_key, ec.SYNTH_MONITOR, src_monitor_name, tgt_acct_id) if result['entityFound']: tgt_monitor = result['entity'] all_alert_status[condition_row][cs.TGT_ACCOUNT] = tgt_monitor['accountId'] all_alert_status[condition_row][cs.TGT_MONITOR] = tgt_monitor['name'] logger.info('Found matching target monitor ' + tgt_monitor['name']) tgt_key = synth_condition['name'] + tgt_monitor['monitorId']