44 lines
2.3 KiB
Python
Executable file
44 lines
2.3 KiB
Python
Executable file
#!/usr/bin/python
|
|
# -*- coding: utf-8 -
|
|
#Imports:
|
|
import argparse, json, sys
|
|
from domain_selector import DomainSelector
|
|
from hieraException import HieraException
|
|
|
|
parser = argparse.ArgumentParser(description='This Script generates a hierarchical nodes list for node migration using nginx geo feature.')
|
|
parser.add_argument('--json-path', required=False, default='https://service.freifunk-muensterland.de/maps/data/', help='Path of nodes.json and graph.json (can be local folder or remote URL).')
|
|
parser.add_argument('--targets-file', required=False, help='Json file of targets for nominatim geocoder.', default='./targets.json')
|
|
parser.add_argument('-t', '--targets', nargs='*', required=False, help='List of target names from target-file which should be proceeded. Example: -t citya -t cityb ...')
|
|
parser.add_argument('-a', '--all', '--all-targets', required=False, help='Proceed all targets from targets file.', action='store_true')
|
|
parser.add_argument('--out-path', required=False, help='Directory where the generated Output should stored.', default='./webserver-configuration/')
|
|
parser.add_argument('--only-specific-branch', required=False, help='Only attend nodes from specific branch.', default=None)
|
|
parser.add_argument('-p', '--print-status', required=False, action='store_true', help='Print Status (like geocoder tasks).')
|
|
args = parser.parse_args()
|
|
|
|
def prepareTargets(args):
|
|
|
|
resource = open(args.targets_file)
|
|
targets = json.loads(resource.read())
|
|
resource.close()
|
|
|
|
if len(targets) == 0:
|
|
print "\033[91mError:\033[0m No targets were found in targets file."
|
|
sys.exit(1)
|
|
if args.all == True:
|
|
return targets
|
|
elif args.targets == None or len(args.targets) == 0:
|
|
print "\033[91mError:\033[0m No target was given as argument and even --all switch was not enabled."
|
|
sys.exit(1)
|
|
else:
|
|
specific_targets = {}
|
|
for k, v in targets.iteritems():
|
|
if k in args.targets:
|
|
specific_targets[k] = v
|
|
return specific_targets
|
|
|
|
targets = prepareTargets(args)
|
|
|
|
try:
|
|
ds = DomainSelector(nodesFile = args.json_path.rstrip('/')+'/nodes.json', graphFile = args.json_path.rstrip('/')+'/graph.json', printStatus = args.print_status, dataPath = args.out_path, targets = targets, branch = args.only_specific_branch)
|
|
except HieraException:
|
|
print "\033[93mFailed:\033[0m Process was interrupted by HieraException-Exception (see error messages above)." |