Create VM from template on a different storage

Hi, this is my first question, so: I’m playing with python sdk and i can manage the CRUD and some other options, but im stuck in this one, when I create a VM from template this new machine is created in the same storage than template is. If i want to move the machine I create it, wait to reach down status and then, move their disks to a new storage. What I want is create a new machine from scratch on a new storage. ############################ CURRENT SCRIPT def create_virtual_machine(cnn, vm_name, cluster_name, create_from='Blank'): MB = 1024*1024 GB = 1024*MB try: vm_created = cnn.vms.add(params.VM( name=vm_name, memory=1*GB, cluster=cnn.clusters.get(cluster_name), template=cnn.templates.get(create_from), disks=params.Disks(clone=True)) ) print 'Waiting for VM to reach Down status' while cnn.vms.get(id=vm_created.id).status.state != 'down': sys.stdout.write( dot ) sys.stdout.flush() time.sleep(1) print "" response = (True, vm_created.id) except Exception as e: print 'Failed to create VM\n%s' % str(e) response = (False, str(e)) return response def migrate_disks(cnn, vm_name, sd_name, vm_guid=None): storage = cnn.storagedomains.get(name=sd_name) for index, disco in enumerate(get_vm(cnn, vm_name, vm_guid=vm_guid).disks.list()): disco.set_alias("{0}_Disk{1}".format(vm_name, (index+1))) disco = disco.update() if storage.disks.get(disco.alias) is None: disco.move(params.Action(storage_domain=storage)) print 'Waiting for migrate Disk {0}'.format(disco.alias) time.sleep(2) while get_vm(cnn, vm_name, vm_guid=vm_guid).disks.get(name=disco.name).status.state != 'ok': sys.stdout.write( dot ) sys.stdout.flush() time.sleep(1) time.sleep(4) print "" print "Disk '{0}' From '{1}' was moved to {2}".format(disco.alias, vm_name, sd_name) else: print "Disk '{0}' From '{1}' is already in {2}".format(disco.alias, vm_name, sd_name) ############################ WHAT I WANT IS SOMETHING LIKE THIS discos = params.Disks() for index, tmp_disk in enumerate(template.disks.list()): disk = params.Disk( name = "{0}_{1}".format(vm_name, (index+1)), storage_domains=params.StorageDomains( storage_domain = [api.storagedomains.get(sd.name)] ), ) discos.add_disk(disk) vm_created_dos = cnn.vms.add(params.VM( name=vm_name, memory=1*GB, cluster=cnn.clusters.get(cluster_name), template=cnn.templates.get(create_from), disks=discos ) ) Thank you all from Perú!!
participants (1)
-
Claudio Yacarini