From 4cb5d21bad5b941aa4e33da0f8e82ca83510204e Mon Sep 17 00:00:00 2001 From: deflax Date: Sat, 5 Nov 2016 04:07:04 +0200 Subject: [PATCH] mac address string generator --- grid.py | 27 ++++++++++++++++++++++++--- plugin.py | 7 ++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/grid.py b/grid.py index dbae121..03fc880 100644 --- a/grid.py +++ b/grid.py @@ -33,15 +33,14 @@ def querydb(cubeid): dbf = open(dbfile, 'r') data = json.load(dbf) dbf.close() - logger.info('grid> {} --> {}'.format(dbfile, data)) + logger.info('{}> <-- {}'.format(dbfile, data)) return data except Exception as e: - logger.critical('grid> {}'.format(e)) + logger.critical('{}> '.format(e)) pass return None - def writedb(src_data): """ create new metadata file """ try: @@ -139,6 +138,26 @@ def generate_ipv4(region_name, how_many=1): return requested_ips +def genmac(int_value): + """ convert kinda long enough int to MAC string """ + prefix_sum = sum(int(digit) for digit in str(int_value)) + if (prefix_sum > 255): + prefix_hex = 'ff' + else: + prefix_hex = format(prefix_sum, 'x') + + suffix = int(str(int_value)[-12:]) + suffix_hex = format(suffix, 'x') + length = len(suffix_hex) + suffix_hex = suffix_hex.zfill(length+length%2) + + addr = prefix_hex + suffix_hex + #logger.info('grid> mac-string {} genrated from: {} ({}->{}) ({}->{}) '.format(addr, int_value, prefix, prefix_hex, suffix, suffix_hex)) + print('grid> mac-string {} genrated from: {} (sum {}->{}) ({}->{}) '.format(addr, int_value, prefix_sum, prefix_hex, suffix, suffix_hex)) + + return ':'.join(addr[i:i+2] for i in range(0,len(addr),2)) + + def generate_vmid(): """ analyzes cached grid data and return proposed vmid for new machines """ grid_data = readcache() @@ -192,6 +211,8 @@ def findDiff(d1, d2, path=""): + +### DEPRECATED def readreal(): """ read the current state and return its contents """ try: diff --git a/plugin.py b/plugin.py index 9a58e85..ff2c91f 100644 --- a/plugin.py +++ b/plugin.py @@ -82,8 +82,8 @@ def vmcreate(req): for ip in ipv4_list: ipv4_dict[str(ipidx)] = str(ip) ipidx += 1 - #TODO: aa:aa:aa <- generate from slave name to hex bb:bb:bb <- generate from cubeid to hex - macaddr = 'E2:C6:DE:BE:98:F2' + + macaddr = grid.genmac(cubeid) #metadata deploy = { 'cube': int(cubeid), @@ -262,7 +262,7 @@ def vmrrd(cubeid): return response -def vmvnc(vm_id): +def vmvnc(cubeid): """ invoke vnc ticket """ slave_name, vm_type, vm_id = grid.query_vm(cubeid) proxobject = auth(slave_name) @@ -281,6 +281,7 @@ def vmvnc(vm_id): slaveip = ioconfig.parser.get(str(slave_name), 'ipv4') #slaveport = socket['port'] slaveport = ticket['port'] + slave_id = 1 #TODO: fix this listenport = str(int(slaveport) + 1000 + (int(slave_id) * 100)) #TODO: max 100 parallel connections/slave. myip = getmyip()