def update_alarms_in_udts(root_path): #, enable_tag_path, custom_props):
 """This script will update all the alarms under a base path so that the
 alarm is enabled based on the "Meta/Alarms Enabled" tag, and the Building, EqName,
 Area Served, Location, and Alarms Enabled properties have been set to their Meta tag equivalent."""
 
 def update_alarm_config(base_path, path):
  """This function will take a tag path as an input and update the alarms."""
  
  configs = system.tag.getConfiguration(path, False)
  
  for config in configs:
   if "alarms" in config:
    for alarm in config["alarms"]:
     alarm["ackPipeline"] = {"bindType": "UDTParameter", "value": "{AckPipeline}"}
     alarm["activePipeline"] = {"bindType": "UDTParameter", "value": "{ActivePipeline}"}
     alarm["clearPipeline"] = {"bindType": "UDTParameter", "value": "{ClearPipeline}"}
    system.tag.configure(base_path, config, "o")
    print "The following tag was update: %s" % config["path"]
   else:
    print "\nERROR: The following tag did not have an alarm: %s\n" % config["path"]


 def recurse_tags(base_path):
  """Locate all the alarms underneath a base_path and call update_alarm_config when found."""
  
  tags = system.tag.browse(base_path)
  for tag in tags:
   if str(tag["tagType"]) == "UdtType":
    isUdt = True
   else:
    isUdt = False
    
   if str(tag["tagType"]) == "AtomicTag" and "alarm" in tag["attributes"]:
    update_alarm_config(base_path, tag["fullPath"])
   elif tag["hasChildren"]:
    recurse_tags(tag["fullPath"])
 
 recurse_tags(root_path)