fixing vmcreate
This commit is contained in:
parent
1bcda20659
commit
92e91aa631
2 changed files with 26 additions and 22 deletions
2
grid.py
2
grid.py
|
@ -50,7 +50,7 @@ def writedb(src_data):
|
|||
json.dump(src_data, dbf)
|
||||
dbf.close()
|
||||
#TODO: send mail
|
||||
logger.info('grid> {} <-- {}'.format(dbfile, src_data))
|
||||
logger.info('grid> {} --> {}'.format(src_data, dbfile))
|
||||
except Exception as e:
|
||||
logger.critical('grid> {}'.format(e))
|
||||
pass
|
||||
|
|
44
plugin.py
44
plugin.py
|
@ -26,14 +26,13 @@ def auth(slave_name):
|
|||
slavetype = ioconfig.parser.get(str(slave_name), 'type')
|
||||
|
||||
#vendor specific
|
||||
if slavetype == 'proxmoxia':
|
||||
connection = lib_proxmoxia.Connector(slaveip)
|
||||
auth_token = connection.get_auth_token(adminuser, slavepass)
|
||||
proxobject = lib_proxmoxia.Proxmox(connection)
|
||||
#if slavetype == 'proxmoxia':
|
||||
# connection = lib_proxmoxia.Connector(slaveip)
|
||||
# auth_token = connection.get_auth_token(adminuser, slavepass)
|
||||
# proxobject = lib_proxmoxia.Proxmox(connection)
|
||||
|
||||
if slavetype == 'proxmox':
|
||||
proxobject = ProxmoxAPI(slaveip, user=adminuser, password=slavepass, verify_ssl=False)
|
||||
|
||||
return proxobject
|
||||
|
||||
|
||||
|
@ -76,8 +75,15 @@ def vmcreate(req):
|
|||
#vmid = str(grid.generate_vmid()) #TODO: this should be between 100 and 65000
|
||||
vm_id = random.randint(1000, 9999)
|
||||
cubeid = int(time.time() * 10000 * 10000)
|
||||
|
||||
### ipv4
|
||||
ipv4_list = grid.generate_ipv4(req['region'], req['vps_ipv4'])
|
||||
ipv4_dict = {}
|
||||
ipidx = 0
|
||||
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'
|
||||
|
||||
#metadata
|
||||
deploy = { 'cube': int(cubeid),
|
||||
|
@ -90,20 +96,16 @@ def vmcreate(req):
|
|||
'clientid': req['clientid'],
|
||||
'clientname': req['clientname'],
|
||||
'clientemail': req['clientemail'],
|
||||
'os': req['vps_os'],
|
||||
'ipv4': ipv4_list }
|
||||
'recipe': req['vps_recipe'],
|
||||
'iso9660': req['vps_iso9660'],
|
||||
'ipv4': ipv4_list,
|
||||
'macaddr': macaddr }
|
||||
|
||||
proxobject = auth(slave_name)
|
||||
#slave_name = proxobject.cluster.status.get()[0]['name']
|
||||
real_slave_name = proxobject.cluster.status.get()[0]['name']
|
||||
#ioconfig.logger.info('slave[' + slave_name + ']> deploying %s on %s (%s) at %s with %s and %s', cubeid, slave_name, vm_id, region_id, ipv4_list, req)
|
||||
grid.writedb(deploy)
|
||||
|
||||
ipv4_dict = {}
|
||||
ipidx = 0
|
||||
for ip in ipv4_list:
|
||||
ipv4_dict[str(ipidx)] = str(ip)
|
||||
ipidx += 1
|
||||
|
||||
response = { 'status':'CREATE', 'cube':cubeid, 'name':vm_name, 'password':vm_pass, 'ipv4_0':ipv4_list[0] }
|
||||
description = vm_name + ' (' + str(cubeid) + '/' + str(vm_id) + ')\n' + 'owned by ' + req['clientname'] + ' (' + req['clientid'] + ')\n' + 'master ip: ' + ipv4_list[0]
|
||||
|
||||
|
@ -115,19 +117,19 @@ def vmcreate(req):
|
|||
size=req['vps_hdd'] + 'G')
|
||||
|
||||
if req['vps_type'] == 'kvm':
|
||||
create_result = proxobject.nodes(slave_name).qemu.post(vmid=vm_id,
|
||||
create_result = proxobject.nodes(real_slave_name).qemu.post(vmid=str(vm_id),
|
||||
name=vm_name,
|
||||
sockets=1,
|
||||
cores=req['vps_cpu'],
|
||||
memory=req['vps_mem'],
|
||||
virtio0='lvm:' + image_name,
|
||||
ide1='skyblue:iso/' + req['vps_os'] + ',media=cdrom',
|
||||
net0='VirtIO,bridge=vmbr0',
|
||||
virtio0='vm:' + image_name,
|
||||
ide1='skyblue:iso/' + req['vps_iso9660'] + ',media=cdrom',
|
||||
net0='virtio=' + macaddr + ' ,bridge=vmbr0',
|
||||
onboot=1,
|
||||
description=description)
|
||||
|
||||
if req['vps_type'] == 'lxc':
|
||||
create_result = proxobject.nodes(slave_name).lxc.post(vmid=vm_id,
|
||||
create_result = proxobject.nodes(real_slave_name).lxc.post(vmid=str(vm_id),
|
||||
hostname=vm_name,
|
||||
password=vm_pass,
|
||||
sockets=1,
|
||||
|
@ -138,6 +140,8 @@ def vmcreate(req):
|
|||
onboot=1,
|
||||
description=description)
|
||||
|
||||
|
||||
#TODO: setup based onreq['vps_recipe']
|
||||
#start the machihe
|
||||
#time.sleep(7) #wait few seconds for the slave to prepare the machine for initial run
|
||||
#vmstart(cubeid)
|
||||
|
|
Loading…
Reference in a new issue