#!/usr/bin/python with open("add_virtual_instrument.sql", 'w+') as output: output.write("-- resourceassignment password for testing on mcu005 is the same as the password on the president's luggage +6\n") output.write("-- psql resourceassignment -U resourceassignment -f add_virtual_instrument.sql -W\n") output.write("BEGIN;\n") #----- resource unit ----- output.write("INSERT INTO virtual_instrument.unit VALUES \n") output.write("(0, 'rsp_channel_bit'),(1, 'bytes'),(2, 'rcu_board'),(3, 'bytes/second'),(4, 'cores');\n") #----- resource type ----- output.write("INSERT INTO virtual_instrument.resource_type VALUES \n") rsp_index = 0 tbb_index = 1 rcu_index = 2 bandwidth_index = 3 processor_index = 4 storage_index = 5 output.write("(0, 'rsp', 0), (1, 'tbb', 1), (2, 'rcu', 2), (3, 'bandwidth', 3), (4, 'processor', 4), (5, 'storage', 1);\n") #----- resource_group type ----- output.write("INSERT INTO virtual_instrument.resource_group_type VALUES \n") output.write("(0, 'instrument'),(1, 'cluster'),(2, 'station_group'),(3, 'station'),(4, 'node_group'),(5, 'node');\n") #----- resource groups ----- output.write("INSERT INTO virtual_instrument.resource_group VALUES \n") ##instrument output.write("(0, 'LOFAR', 0),\n") ##cluster clusters = ['CEP2', 'CEP3', 'CEP4', 'Cobalt', 'DragNet'] clusternumbers = range(1, 6) for i, cluster in enumerate(clusters): output.write("(%i, '%s', 1), " % (clusternumbers[i], cluster)) output.write("\n") ##station group stationgroups = ['STATIONS', 'SUPERTERP', 'CORE', 'REMOTE', 'INTERNATIONAL', 'LORA', 'AARTFAAC'] stationgroupnumbers = range(6, 13) for i, stationgroup in enumerate(stationgroups): output.write("(%i, '%s', 2), " % (stationgroupnumbers[i], stationgroup)) output.write("\n") ##station this list should be imported from a central location? ##We might need to switch to CS001HBA1 CS003LBA notation at some point? This could also be a specification vs resource allocation problem. stations = ['CS001', 'CS002', 'CS003', 'CS004', 'CS005', 'CS006', 'CS007', 'CS011', 'CS013', 'CS017', 'CS021', 'CS024', 'CS026', 'CS028', 'CS030', 'CS031', 'CS032', 'CS101', 'CS103', 'CS201', 'CS301', 'CS302', 'CS401', 'CS501', 'RS106', 'RS205', 'RS208', 'RS210', 'RS305', 'RS306', 'RS307', 'RS310', 'RS406', 'RS407', 'RS408', 'RS409', 'RS503', 'RS508', 'RS509', 'DE601', 'DE602', 'DE603', 'DE604', 'DE605', 'FR606', 'SE607', 'UK608','DE609','PL610','PL611','PL612'] stationnumbers = range(13, 64) for i, station in enumerate(stations): output.write("(%i, '%s', 3), " % (stationnumbers[i], station)) output.write("\n") ##node cep4numbers = range(65, 114) for i in cep4numbers: output.write("(%i, 'cep4node', 5), " % (i,)) output.write("\n") ##node_group output.write("(64, 'cep4_gpu', 4);\n") ## unknown which nodes are in here? Last entry for resource groups, to make the syntax work FIXME #----- resource & resource_to_resource_group & resource_capacity & resource_availability ----- resource_count = 0 resources = "" resource_to_resource_group = "" resource_capacity = "" resource_available = "" ## stations for station in stationnumbers: resources += "(%i, 'rsp', %i), " % (resource_count, rsp_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, station) resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 61*16*4, 61*16*4) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 resources += "(%i, 'tbb', %i), " % (resource_count, tbb_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, station) resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 96*8*1024*1024*1024, 96*8*1024*1024*1024) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 resources += "(%i, 'rcu', %i), " % (resource_count, rcu_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, station) resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 96, 96) ##magic numbers FIXME, should be twice as high for INTERNATIONAL resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 resources += "(%i, 'bandwidth', %i), " % (resource_count, bandwidth_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, station) resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 3*1024*1024*1024, 3*1024*1024*1024) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 ## nodes for node in cep4numbers: resources += "(%i, 'bandwidth', %i), " % (resource_count, bandwidth_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, node) resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 50*1024*1024*1024, 50*1024*1024*1024) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 resources += "(%i, 'processor', %i), " % (resource_count, processor_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, node) resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 24, 24) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 resources += "(%i, 'storage', %i), " % (resource_count, storage_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, node) resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 0, 0) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 ## CEP4 bandwidth resources += "(%i, 'cep4bandwidth', %i), " % (resource_count, bandwidth_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, 3) ##magic numbers FIXME resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 80*1024*1024*1024, 80*1024*1024*1024) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 ## CEP4 storage resources += "(%i, 'cep4storage', %i), " % (resource_count, storage_index) resource_to_resource_group += "(DEFAULT, %i, %i), " % (resource_count, 3) ##magic numbers FIXME resource_capacity += "(DEFAULT, %i, %i, %i), " % (resource_count, 2100*1024*1024*1024, 2100*1024*1024*1024) ##magic numbers FIXME resource_available += "(DEFAULT, %i, TRUE), " % (resource_count,) resource_count += 1 output.write("INSERT INTO virtual_instrument.resource VALUES %s;\n" % resources[:-2]) output.write("INSERT INTO virtual_instrument.resource_to_resource_group VALUES %s;\n" % resource_to_resource_group[:-2]) output.write("INSERT INTO resource_monitoring.resource_capacity VALUES %s;\n" % resource_capacity[:-2]) output.write("INSERT INTO resource_monitoring.resource_availability VALUES %s;\n" % resource_available[:-2]) #----- resource_group_to_resource_group ----- resource_group_to_resource_group = "(DEFAULT, 0, NULL), " ##LOFAR does not have parent, magic numbers FIXME for i, station in enumerate(stations): resource_group_to_resource_group += "(DEFAULT, %i, 6), " % (stationnumbers[i],) ## STATIONS if "CS" in station: resource_group_to_resource_group += "(DEFAULT, %i, 8), " % (stationnumbers[i],) ## CORE elif "RS" in station: resource_group_to_resource_group += "(DEFAULT, %i, 9), " % (stationnumbers[i],) ## REMOTE else: resource_group_to_resource_group += "(DEFAULT, %i, 10), " % (stationnumbers[i],) ## INTERNATIONAL for node in cep4numbers: resource_group_to_resource_group += "(DEFAULT, %i, 3), " % (node,) ## CEP4 nodes for cluster in clusternumbers: resource_group_to_resource_group += "(DEFAULT, %i, 0), " % (cluster,) # clusters to LOFAR for stationgroup in stationgroupnumbers: resource_group_to_resource_group += "(DEFAULT, %i, 0), " % (stationgroup,) # station groups to LOFAR output.write("INSERT INTO virtual_instrument.resource_group_to_resource_group VALUES %s;\n" % (resource_group_to_resource_group[:-2],)) output.write("COMMIT;\n")