def listUpdatableResources(self, updates):

    # Print header
    print("The following organisms have new releases available. (Aliases in parentheses)", file=sys.stdout)
    print("Update using: 'gkno update-resource <organism>'", file=sys.stdout)
    print("", file=sys.stdout)

    # Lookup all possible resource names (& store corresponding aliases)
    allResources = {}
    for resource in conf.resources:
      allResources[resource.name] = resource.aliases

    # Determine padding based on longest updatable resource name
    maxNameLength = 0
    updatableResourceNames = updates.keys()
    for name in updatableResourceNames:
      currentNameLength = len(name)
      if currentNameLength > maxNameLength:
        maxNameLength = currentNameLength
    maxNameLength += 4

    # Print resource list
    updatableResourceNames.sort()
    for name in updatableResourceNames:
      print("    "+name, end="", file=sys.stdout)
      print(" "*(maxNameLength-len(name)), end="", file=sys.stdout)
      aliases = allResources[name]
      numAliases = len(aliases)
      if numAliases > 0:
        print("(", end="", file=sys.stdout)
        i = 1
        for alias in aliases:
          if i < numAliases:
            print(alias+", ", end="", file=sys.stdout)
          else:
            print(alias, end="", file=sys.stdout)
          i += 1
        print(")", end="")
      print("", file=sys.stdout)
    print("", file=sys.stdout)

  # -------------------------------------------
  # Settings file & build status methods
  # -------------------------------------------

  # Import settings data from file, or 
  # initialize settings object if the file has not been created yet
dataset/ETHPy150Open gkno/gkno_launcher/src/gkno/adminUtils.py/adminUtils.listUpdatableResources/original