From 9c9a0306db8fe52d92d0f0353c8e85bbd4886fab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 21 Nov 2013 13:18:31 +0100 Subject: [PATCH] Feature #2435 #2092: Do not allow migrations to/from a public cloud host --- src/rm/RequestManagerVirtualMachine.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/rm/RequestManagerVirtualMachine.cc b/src/rm/RequestManagerVirtualMachine.cc index 2ef38eee6c..2301a5d01a 100644 --- a/src/rm/RequestManagerVirtualMachine.cc +++ b/src/rm/RequestManagerVirtualMachine.cc @@ -846,6 +846,7 @@ void VirtualMachineMigrate::request_execute(xmlrpc_c::paramList const& paramList int c_cluster_id; int c_ds_id; string c_tm_mad; + bool c_is_public_cloud; bool auth = false; @@ -876,8 +877,6 @@ void VirtualMachineMigrate::request_execute(xmlrpc_c::paramList const& paramList return; } - // TODO: return error for public cloud hosts? - // ------------------------------------------------------------------------ // Authorize request // ------------------------------------------------------------------------ @@ -895,6 +894,7 @@ void VirtualMachineMigrate::request_execute(xmlrpc_c::paramList const& paramList // - New host is not the current one // - Host capacity if required // - New host and current one are in the same cluster + // - New or old host are not public cloud // ------------------------------------------------------------------------ if ((vm = get_vm(id, att)) == 0) @@ -974,6 +974,8 @@ void VirtualMachineMigrate::request_execute(xmlrpc_c::paramList const& paramList c_cluster_id = host->get_cluster_id(); + c_is_public_cloud = host->is_public_cloud(); + host->unlock(); if ( c_cluster_id != cluster_id ) @@ -992,6 +994,15 @@ void VirtualMachineMigrate::request_execute(xmlrpc_c::paramList const& paramList return; } + if ( is_public_cloud || c_is_public_cloud ) + { + failure_response(ACTION, + request_error("Cannot migrate to or from a Public Cloud Host",""), + att); + + return; + } + // ------------------------------------------------------------------------ // Add a new history record and migrate the VM // ------------------------------------------------------------------------