You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.3 KiB
Python

#!/usr/bin/env python
from collections import OrderedDict
import csv
reader = csv.reader(open("input.csv", "r"))
sorted_list = {}
locations = {
"IL": ["64.79.106.219", "64.79.106.220", "64.79.106.221"],
"CA": ["nitrogen.bluevm.com", "oxygen.bluevm.com", "phosphorus.bluevm.com", "carbon.bluevm.com", "helium.bluevm.com", "lithium.bluevm.com", "neon.bluevm.com", "argon.bluevm.com"],
"ATL": ["calcium.bluevm.com", "magnesium.bluevm.com", "silicon.bluevm.com", "sodium.bluevm.com"],
"TX": ["nickel.bluevm.com"]
}
new_servers = {
"IL": OrderedDict({12: 1, 34: 1, 56: 1}),
"CA": OrderedDict({12: 2, 34: 3, 56: 1}),
"ATL": OrderedDict({12: 1, 34: 2, 56: 1}),
"TX": OrderedDict({12: 1, 34: 1, 56: 1})
}
new = {}
for location, x in new_servers.iteritems():
sorted_list[location] = OrderedDict({})
sorted_list[location][12] = []
sorted_list[location][34] = []
sorted_list[location][56] = []
for vps in reader:
username, vpsid, current, plan = vps
location = ""
for loc, hosts in locations.iteritems():
if current in hosts:
location = loc
if location == "":
print "No location specified for %s" % (repr(vps))
continue
if "blue1" in plan or "blue2" in plan or "lebletspecial" in plan or "vps1" in plan or "vps2" in plan:
sorted_list[location][12].append((username, vpsid))
elif "blue3" in plan or "blue4" in plan or "vps3" in plan or "vps4" in plan:
sorted_list[location][34].append((username, vpsid))
elif "blue5" in plan or "blue6" in plan or "presale" in plan or "vps5" in plan or "vps6" in plan:
sorted_list[location][56].append((username, vpsid))
for location, items in new_servers.iteritems():
new[location] = OrderedDict({})
for category, count in items.iteritems():
for i in xrange(0, count):
new[location][i] = []
for location, items in sorted_list.iteritems():
current_server = 0
for category, vpses in items.iteritems():
total_vpses = len(vpses)
total_servers = new_servers[location][category]
per_server = total_vpses / total_servers
for i in xrange(0, total_servers):
start = per_server * i
end = (per_server * (i + 1)) - 1
if end + 2 >= total_vpses:
end = total_vpses - 1
current_server += 1
hostname = "s%d.c%d.%s.bluevm.com" % (current_server, category, location.lower())
for s in xrange(start, end + 1):
print "%s,%s,%s" % (vpses[s][0], vpses[s][1], hostname)