From 75ce8a30560c5ce0713d7c69f01300757cc69e30 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Mon, 25 Jun 2018 16:15:56 +0200 Subject: [PATCH] Development: Fix intantiate as persistent with locked disks --- src/image/Image.cc | 11 +++++++++++ src/image/ImagePool.cc | 6 ------ src/rm/RequestManagerVMTemplate.cc | 10 +++++----- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/image/Image.cc b/src/image/Image.cc index 968a3391bc..aacd2d5305 100644 --- a/src/image/Image.cc +++ b/src/image/Image.cc @@ -598,6 +598,17 @@ void Image::disk_attribute(VirtualMachineDisk * disk, } } + //Image is being copied/cloned + if ( state == Image::LOCKED_USED || state == Image::LOCKED_USED_PERS + || state == Image::LOCKED ) + { + disk->replace("CLONING", "YES"); + } + else + { + disk->remove("CLONING"); + } + //-------------------------------------------------------------------------- // TYPE attribute //-------------------------------------------------------------------------- diff --git a/src/image/ImagePool.cc b/src/image/ImagePool.cc index 133adeca5c..9738d8b5d2 100644 --- a/src/image/ImagePool.cc +++ b/src/image/ImagePool.cc @@ -400,12 +400,6 @@ int ImagePool::acquire_disk(int vm_id, (*snap)->set_disk_id(disk_id); } - if ( img->get_state() == Image::LOCKED_USED || - img->get_state() == Image::LOCKED_USED_PERS ) - { - disk->replace("CLONING", "YES"); - } - img->unlock(); if ( ds_pool->disk_attribute(datastore_id, disk) == -1 ) diff --git a/src/rm/RequestManagerVMTemplate.cc b/src/rm/RequestManagerVMTemplate.cc index a0087b0aef..54b48f04fc 100644 --- a/src/rm/RequestManagerVMTemplate.cc +++ b/src/rm/RequestManagerVMTemplate.cc @@ -215,7 +215,11 @@ Request::ErrorCode VMTemplateInstantiate::request_execute(int id, string name, tmpl_str); } - VirtualMachine::set_auth_request(att.uid, ar, tmpl, true); + extended_tmpl = *tmpl; + + VirtualMachineDisks::extended_info(att.uid, &extended_tmpl); + + VirtualMachine::set_auth_request(att.uid, ar, &extended_tmpl, true); if (UserPool::authorize(ar) == -1) { @@ -225,10 +229,6 @@ Request::ErrorCode VMTemplateInstantiate::request_execute(int id, string name, return AUTHORIZATION; } - extended_tmpl = *tmpl; - - VirtualMachineDisks::extended_info(att.uid, &extended_tmpl); - if (quota_authorization(&extended_tmpl, Quotas::VIRTUALMACHINE, att, att.resp_msg) == false) {