Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 124 lines (80 sloc) 3.26 KB
#!/usr/bin/python
import json, csv, os, sys
api_key = "<<insert your API key here>>"
#
# Get all of the hemembers (index and names)
#
# Using the easy way for the moment - there is no error checking
#
#
os.system( 'curl https://internet2-2.deepfield.net/dimension/hemembers/positions?api_key=' + api_key + ' -o current-hemembers.json' )
with open('current-hemembers.json') as data_file:
current_hemembers = json.load(data_file)
data_file.close()
os.remove('current-hemembers.json')
# for position_id in current_hemembers:
# data = current_hemembers[position_id]
# print "name: {0}, id: {1}".format(data['name'], data['position_id'])
#
# Read in source CSV file
#
reader = csv.reader(open('hemembers-data-origin_as.csv'))
source_hemembers = {}
for row in reader:
key = row[0]
if key in source_hemembers:
current_origin_ases = source_hemembers[key]["origin_as"]
current_origin_ases.append(row[2])
source_hemembers[key]["origin_as"] = current_origin_ases
else:
source_hemembers[key] = { "description": row[1], "origin_as": [ row[2] ] }
#
# remove key of 'name' from import - this is from first line of CSV file
#
source_hemembers.pop('name', None)
# for member in hemembers:
# print "name: {0}, origin as: {1}".format(member, hemembers[member])
#
# loop through the current hemembers and then update based upon 'name'
#
# this is the only way I can figure out how to update since the other methods appear to not work
#
for position_id in current_hemembers:
data = current_hemembers[position_id]
member_name = data['name']
# look up member name in source CSV
if member_name in source_hemembers:
print( "\n\nUpdating member: {0}".format( member_name ) )
description = source_hemembers[member_name]["description"]
origin_as = source_hemembers[member_name]["origin_as"]
current_origin_as_file = open("current_origin_as.json", 'w')
current_origin_as_file.truncate()
payload = {"description": description, "match": {"origin_as_is": origin_as } }
#print("name: {0}, payload: {1}".format(member_name, payload))
current_origin_as_file.write(str(json.dumps(payload)))
current_origin_as_file.close()
url = 'https://internet2-2.deepfield.net/dimension/hemembers/position/' + position_id + '?api_key=' + api_key
os.system( 'curl -X PUT --data-binary @current_origin_as.json ' + url )
os.remove( 'current_origin_as.json' )
#
# see if there are any entries in source CSV that needs to be added
#
for name in source_hemembers:
found = False
for position_id in current_hemembers:
data = current_hemembers[position_id]
if data['name'] == name:
found = True
if not found:
print( "\n\nAdding member: {0}".format( name ) )
member = source_hemembers[name]
description = member['description']
origin_as = member['origin_as']
current_origin_as_file = open("new_member.json", 'w')
current_origin_as_file.truncate()
payload = {"name": name, "description": description, "match": {"origin_as_is": origin_as} }
current_origin_as_file.write(str(json.dumps(payload)))
current_origin_as_file.close()
url = 'https://internet2-2.deepfield.net/dimension/hemembers/position/create?api_key=' + api_key
os.system( 'curl -X POST --data-binary @new_member.json ' + url )
os.remove( 'new_member.json' )