import sys, java
lineSeparator = java.lang.System.getProperty('line.separator')

#
# Stolen from some other random augmentation script, this makes a list from
# the sort of thing that AdminConfig.list() and so on return.
#
def convertToList(inlist):
     outlist=[]
     if (len(inlist)>0 and inlist[0]=='[' and inlist[len(inlist)-1]==']'):
        inlist = inlist[1:len(inlist)-1]
        clist = inlist.split(" ")
     else:
        clist = inlist.split(lineSeparator)
     for elem in clist:
        elem=elem.rstrip();
        if (len(elem)>0):
           outlist.append(elem)
     return outlist

#
# Removes named endpoints with any of the given names from all serverentries
# on the given node
#
def removeNeps(node,targetNames):
  serverEntries = convertToList(AdminConfig.list("ServerEntry",node))
  for serverEntry in serverEntries:
    serverType = AdminConfig.showAttribute(serverEntry,"serverType")
    if (serverType != "XDAGENT"):
        serverName = AdminConfig.showAttribute(serverEntry,"serverName")
        print "Processing server",serverName
        namedEndPoints = convertToList(AdminConfig.list("NamedEndPoint",serverEntry))
        for namedEndPoint in namedEndPoints:
                endPointName = AdminConfig.showAttribute(namedEndPoint,"endPointName")
                if endPointName in targetNames:
                        print "Removing "+endPointName
                        try:
                           AdminConfig.remove(namedEndPoint)
                        except:
                           print "Exception removing " + endPointName + " from " + serverName
                           continue

# Do it for all nodes and all serverentries, because why not

nodes = convertToList(AdminConfig.list("Node"))
for node in nodes:
  nodeName = AdminConfig.showAttribute(node,"name")
  print "Processing node",nodeName
  removeNeps(node,["XDAGENT_PORT"])
AdminConfig.save()