in jobs/eam-integrations/scripts/api/XMatters/XMatters.py [0:0]
def add_site(site):
logger.info("Adding site %s to XMatters" % site)
# TODO: move this to a config file or something?
# fixup "bad" data
if site["country"] == "United States of America":
site["country"] = "United States"
elif site["country"] == "Vietnam":
site["country"] = "Viet Nam"
elif site["country"] == "Czechia":
site["country"] = "Czech Republic"
elif site["country"] == "Tanzania":
site["country"] = "Tanzania, United Republic of"
elif site["country"] == "Korea, Republic of":
site["country"] = "South Korea"
if site["postal_code"] == "CZECH REPUBLIC":
site["postal_code"] = ""
if len(site["postal_code"]) > 10:
site["postal_code"] = site["postal_code"][:10]
if "timezone" not in site or "latitude" not in site or "longitude" not in site:
(coords, tz) = Util.postal_to_coords_and_timezone(
{"country": site["country"], "postal_code": site["postal_code"]}
)
lat = coords[0]
lng = coords[1]
if tz is None:
tz = "America/Los_Angeles" # arbitrary
if lat is None:
lat = 0
if lng is None:
lng = 0
site_data = {
"name": site["name"],
"timezone": str(tz),
# skip address for now as it's mostly bad data (remote sites)
# 'address1': site['address'],
"country": site["country"],
"city": site["city"],
# 'state': site['state'],
"postalCode": site["postal_code"],
"latitude": lat,
"longitude": lng,
"language": "English",
"status": "ACTIVE",
}
sites_url = _config.base_URL_old_api + "sites"
headers = {"Content-Type": "application/json"}
response = requests.post(
sites_url,
auth=(_config.xm_username, _config.xm_password),
headers=headers,
data=json.dumps(site_data),
proxies=_config.proxies,
)
if response.status_code == 200 or response.status_code == 201:
rjson = response.json()
logger.debug(rjson)
return site_data # for the unittests
else:
logger.critical("Could not create site")
logger.critical(response.content)
raise Exception(response.content)