def create_volume_from_image(destination, volume, single=False): cinder = get_cinder(destination) try: from_tenant = volume.__dict__['os-vol-tenant-attr:tenant_id'] tenant = keystone_common.find_opposite_tenant_id(from_tenant) except Exception, e: tenant = None
def create_volume(destination, volume): cinder = get_cinder(destination) from_tenant = volume.__dict__['os-vol-tenant-attr:tenant_id'] tenant = keystone_common.find_opposite_tenant_id(from_tenant) if volume.volume_type == 'None': myvol = cinder.volumes.create(size=volume.size, snapshot_id=volume.snapshot_id, name=volume.name, description=volume.description, #volume_type=volume.volume_type, #user_id=volume.user_id, todo:fixthis project_id=tenant, availability_zone=volume.availability_zone, metadata=volume.metadata, #imageRef=volume.imageRef, source_volid=volume.source_volid ) else: myvol = cinder.volumes.create(size=volume.size, snapshot_id=volume.snapshot_id, name=volume.name, description=volume.description, volume_type=volume.volume_type, #user_id=volume.user_id, todo:fixthis project_id=tenant, availability_zone=volume.availability_zone, metadata=volume.metadata, #imageRef=volume.imageRef, source_volid=volume.source_volid ) print "Volume", myvol.name, "created" if volume.attachments: for att in volume.attachments: print att print att['server_id'] device = att['device'] print device vm = nova_common.get_vm_by_original_id('to', att['server_id']) if vm: #myvol.attach(vm.id, device) # Followed this advice: http://www.florentflament.com/blog/openstack-volume-in-use-although-vm-doesnt-exist.html nova = nova_common.get_nova(destination) nova.volumes.create_server_volume(vm.id, myvol.id, device) print "Volume", myvol.name, "attached to VM", vm.name else: print "Original Volume", volume.name, "was attached to a VM with ID", att['server_id'], \ "but this VM was not found in the current VM list" return myvol