2008-06-17 20:27:32 +04:00
/* -------------------------------------------------------------------------- */
2020-04-30 16:00:02 +03:00
/* Copyright 2002-2020, OpenNebula Project, OpenNebula Systems */
2008-06-17 20:27:32 +04:00
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
/* not use this file except in compliance with the License. You may obtain */
/* a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
# ifndef DISPATCH_MANAGER_H_
# define DISPATCH_MANAGER_H_
2020-07-24 17:00:59 +03:00
# include "Listener.h"
2008-06-17 20:27:32 +04:00
2015-04-27 00:34:26 +03:00
//Forward definitions
class TransferManager ;
class LifeCycleManager ;
class VirtualMachineManager ;
class ImageManager ;
2020-07-02 23:42:10 +03:00
class ClusterPool ;
class HostPool ;
2020-07-24 17:00:59 +03:00
class VirtualMachinePool ;
2020-07-02 23:42:10 +03:00
class VirtualRouterPool ;
class UserPool ;
2020-07-24 17:00:59 +03:00
class VirtualMachine ;
class VirtualMachineTemplate ;
2015-04-27 00:34:26 +03:00
2017-02-07 19:26:23 +03:00
struct RequestAttributes ;
2017-02-03 16:19:15 +03:00
2020-07-24 17:00:59 +03:00
class DispatchManager : public Listener
2017-02-03 16:19:15 +03:00
{
public :
2020-07-24 17:00:59 +03:00
DispatchManager ( )
: Listener ( " Dispatch Manager " )
2017-02-03 16:19:15 +03:00
{
}
2019-07-26 14:45:26 +03:00
~ DispatchManager ( ) = default ;
2015-04-27 00:34:26 +03:00
/**
2015-07-01 22:15:40 +03:00
* Initializes internal pointers to other managers . Must be called when
* all the other managers exist in Nebula : : instance
*/
2015-04-27 00:34:26 +03:00
void init_managers ( ) ;
2008-06-17 20:27:32 +04:00
/**
2010-07-14 20:11:29 +04:00
* This functions creates a new thread for the Dispatch Manager . This
2008-06-17 20:27:32 +04:00
* thread will wait in an action loop till it receives ACTION_FINALIZE .
* @ return 0 on success .
*/
int start ( ) ;
2010-07-14 20:11:29 +04:00
2008-06-17 20:27:32 +04:00
//--------------------------------------------------------------------------
// DM Actions, the RM and the Scheduler will invoke this methods
//--------------------------------------------------------------------------
/**
* Deploys a VM . A new history record MUST be added before calling this
* function . Also the VM MUST have its mutex locked . If the function fails
* the calling funtion is responsible for recovering from the error .
* @ param vm pointer to a VirtualMachine with its mutex locked .
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success
2008-06-17 20:27:32 +04:00
*/
2017-02-07 19:26:23 +03:00
int deploy ( VirtualMachine * vm , const RequestAttributes & request ) ;
2008-06-17 20:27:32 +04:00
2015-02-06 00:49:33 +03:00
/**
* Sets an imported VM to RUNNING state , a history record MUST be added ,
* and the VM MUST be locked .
* @ param vm pointer to a VirtualMachine with its mutex locked .
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2015-02-06 00:49:33 +03:00
* @ return 0 on success
*/
2017-02-07 19:26:23 +03:00
int import ( VirtualMachine * vm , const RequestAttributes & ra ) ;
2015-02-06 00:49:33 +03:00
2008-06-17 20:27:32 +04:00
/**
2010-07-14 20:11:29 +04:00
* Migrates a VM . The following actions must be performed before calling
* this function :
2008-06-17 20:27:32 +04:00
* - Lock the VM mutex .
* - Update the History statistics of the current host .
2010-07-14 20:11:29 +04:00
* - Add a new History record with the new host .
* If the function fails the calling funtion is responsible for recovering
2008-06-17 20:27:32 +04:00
* from the error .
* @ param vm pointer to a VirtualMachine with its mutex locked .
2018-12-04 14:00:13 +03:00
* @ param poff migration type : 0 ( save ) , 1 ( poff ) , 2 ( poff - hard )
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success
2008-06-17 20:27:32 +04:00
*/
2018-12-04 14:00:13 +03:00
int migrate ( VirtualMachine * vm , int poff , const RequestAttributes & request ) ;
2008-06-17 20:27:32 +04:00
/**
2010-07-14 20:11:29 +04:00
* Migrates a VM . The following actions must be performed before calling
* this function :
2008-06-17 20:27:32 +04:00
* - Lock the VM mutex .
* - Update the History statistics of the current host .
2010-07-14 20:11:29 +04:00
* - Add a new History record with the new host .
* If the function fails the calling funtion is responsible for recovering
2008-06-17 20:27:32 +04:00
* from the error .
* @ param vm pointer to a VirtualMachine with its mutex locked .
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success
2008-06-17 20:27:32 +04:00
*/
2017-02-07 19:26:23 +03:00
int live_migrate ( VirtualMachine * vm , const RequestAttributes & request ) ;
2010-07-14 20:11:29 +04:00
2008-06-17 20:27:32 +04:00
/**
2016-05-02 19:34:42 +03:00
* Terminates a VM .
2008-06-17 20:27:32 +04:00
* @ param vid VirtualMachine identification
2015-04-24 16:25:47 +03:00
* @ param hard True to force the shutdown ( cancel instead of shutdown )
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2017-02-07 19:26:23 +03:00
int terminate ( int vid , bool hard , const RequestAttributes & request ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2008-06-17 20:27:32 +04:00
2013-03-27 21:15:53 +04:00
/**
* Shuts down a VM , but it is saved in the system DS instead of destroyed .
* @ param vid VirtualMachine identification
* @ param hard True to force the shutdown ( cancel instead of shutdown )
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2013-03-27 21:15:53 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2019-07-26 14:45:26 +03:00
int undeploy ( int vid , bool hard , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2013-03-27 21:15:53 +04:00
2012-09-04 20:30:53 +04:00
/**
* Powers off a VM .
* @ param vid VirtualMachine identification
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2013-03-27 16:48:06 +04:00
* @ param hard True to force the poweroff ( cancel instead of shutdown )
2012-09-04 20:30:53 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2019-07-26 14:45:26 +03:00
int poweroff ( int vid , bool hard , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2012-09-04 20:30:53 +04:00
2008-06-17 20:27:32 +04:00
/**
* Holds a VM .
* @ param vid VirtualMachine identification
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2020-07-02 23:42:10 +03:00
int hold ( int vid , const RequestAttributes & ra , std : : string & error_str ) ;
2008-06-17 20:27:32 +04:00
/**
* Releases a VM .
* @ param vid VirtualMachine identification
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2020-07-02 23:42:10 +03:00
int release ( int vid , const RequestAttributes & ra , std : : string & error_str ) ;
2008-06-17 20:27:32 +04:00
/**
* Stops a VM .
* @ param vid VirtualMachine identification
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2020-07-02 23:42:10 +03:00
int stop ( int vid , const RequestAttributes & ra , std : : string & error_str ) ;
2008-06-17 20:27:32 +04:00
/**
* Suspends a VM .
* @ param vid VirtualMachine identification
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2020-07-02 23:42:10 +03:00
int suspend ( int vid , const RequestAttributes & ra , std : : string & error_str ) ;
2008-06-17 20:27:32 +04:00
/**
* Resumes a VM .
* @ param vid VirtualMachine identification
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2010-07-14 20:11:29 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2020-07-02 23:42:10 +03:00
int resume ( int vid , const RequestAttributes & ra , std : : string & error_str ) ;
2010-07-14 20:11:29 +04:00
2008-06-17 20:27:32 +04:00
/**
* Ends a VM life cycle inside ONE .
2016-05-02 19:34:42 +03:00
* @ param vm VirtualMachine object
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2016-05-02 19:34:42 +03:00
* @ return 0 on success , the VM mutex is unlocked
2010-07-14 20:11:29 +04:00
*/
2017-02-07 19:26:23 +03:00
int delete_vm ( VirtualMachine * vm , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2016-05-02 19:34:42 +03:00
/**
* VM ID interface
*/
2020-07-24 17:00:59 +03:00
int delete_vm ( int vid , const RequestAttributes & ra , std : : string & error_str ) ;
2008-06-17 20:27:32 +04:00
2010-12-31 19:48:50 +03:00
/**
* Moves a VM to PENDING state preserving any resource ( i . e . leases ) and id
2016-05-02 19:34:42 +03:00
* @ param vm VirtualMachine object
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2016-05-02 19:34:42 +03:00
* @ return 0 on success
2010-12-31 19:48:50 +03:00
*/
2017-02-07 19:26:23 +03:00
int delete_recreate ( VirtualMachine * vm , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2016-05-02 19:34:42 +03:00
2018-10-15 16:34:40 +03:00
/**
* Ends a VM life cycle inside ONE but let the VM running at the Hipervisor .
* @ param vm VirtualMachine object
* @ param ra information about the API call request
* @ return 0 on success , the VM mutex is unlocked
*/
int delete_vm_db ( VirtualMachine * vm , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2018-10-15 16:34:40 +03:00
2016-05-02 19:34:42 +03:00
/**
* Recover the last operation on the VM
* @ param vm VirtualMachine object
* @ param success if the operation is assumed to succeed or not
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2016-05-02 19:34:42 +03:00
* @ return 0 on success
*/
2017-02-07 19:26:23 +03:00
int recover ( VirtualMachine * vm , bool success , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2016-05-02 19:34:42 +03:00
/**
* Retry the last operation on the VM
* @ param vm VirtualMachine object
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2016-05-02 19:34:42 +03:00
* @ return 0 on success
*/
2017-02-07 19:26:23 +03:00
int retry ( VirtualMachine * vm , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2010-12-31 19:48:50 +03:00
2011-12-26 02:46:19 +04:00
/**
* Reboots a VM preserving any resource and RUNNING state
* @ param vid VirtualMachine identification
2015-04-24 16:45:54 +03:00
* @ param hard True to force the shutdown ( cancel instead of shutdown )
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2011-12-26 02:46:19 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2017-02-07 19:26:23 +03:00
int reboot ( int vid , bool hard , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2012-05-09 00:33:59 +04:00
2012-04-26 21:06:49 +04:00
/**
* Set the re - scheduling flag for the VM ( must be in RUNNING state )
* @ param vid VirtualMachine identification
* @ param do_resched set or unset the flag
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2012-06-15 14:28:20 +04:00
*
2012-04-26 21:06:49 +04:00
* @ return 0 on success , - 1 if the VM does not exits or - 2 if the VM is
* in a wrong a state
*/
2017-02-07 19:26:23 +03:00
int resched ( int vid , bool do_resched , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2012-04-26 21:06:49 +04:00
2012-06-13 20:47:04 +04:00
/**
2012-06-15 14:28:20 +04:00
* Starts the attach disk action .
* @ param vid VirtualMachine identification
* @ param tmpl Template containing the new DISK attribute .
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2012-06-15 14:28:20 +04:00
* @ param error_str Error reason , if any
2012-06-13 20:47:04 +04:00
*
2012-06-15 14:28:20 +04:00
* @ return 0 on success , - 1 otherwise
2012-06-13 20:47:04 +04:00
*/
2017-02-07 19:26:23 +03:00
int attach ( int vid , VirtualMachineTemplate * tmpl ,
2020-07-02 23:42:10 +03:00
const RequestAttributes & ra , std : : string & error_str ) ;
2012-06-13 20:47:04 +04:00
2012-06-14 19:45:41 +04:00
/**
* Starts the detach disk action .
2012-06-15 18:28:30 +04:00
* @ param vid VirtualMachine identification
* @ param disk_id Disk to detach
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2012-06-15 18:28:30 +04:00
* @ param error_str Error reason , if any
2012-06-14 19:45:41 +04:00
*
2012-06-15 18:28:30 +04:00
* @ return 0 on success , - 1 otherwise
2012-06-14 19:45:41 +04:00
*/
2017-02-07 19:26:23 +03:00
int detach ( int id , int disk_id , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2012-06-14 19:45:41 +04:00
2012-12-12 21:31:27 +04:00
/**
* Starts the attach NIC action .
* @ param vid VirtualMachine identification
* @ param tmpl Template containing the new NIC attribute .
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2012-12-12 21:31:27 +04:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2017-02-07 19:26:23 +03:00
int attach_nic ( int vid , VirtualMachineTemplate * tmpl ,
2020-07-02 23:42:10 +03:00
const RequestAttributes & ra , std : : string & error_str ) ;
2012-12-12 21:31:27 +04:00
/**
* Starts the detach NIC action .
* @ param vid VirtualMachine identification
* @ param nic_id NIC to detach
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2012-12-12 21:31:27 +04:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2017-02-07 19:26:23 +03:00
int detach_nic ( int id , int nic_id , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2016-12-15 23:12:33 +03:00
2013-02-19 18:21:33 +04:00
/**
* Starts the snapshot create action
*
* @ param vid VirtualMachine identification
* @ param name Name for the new snapshot
2013-02-20 21:11:58 +04:00
* @ param snap_id Will contain the new snapshot ID
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2013-02-19 18:21:33 +04:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2020-07-02 23:42:10 +03:00
int snapshot_create ( int vid , std : : string & name , int & snap_id ,
const RequestAttributes & ra , std : : string & error_str ) ;
2013-02-19 18:21:33 +04:00
2013-02-20 19:04:09 +04:00
/**
* Starts the snapshot revert action
*
* @ param vid VirtualMachine identification
* @ param snap_id Snapshot to be restored
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2013-02-20 19:04:09 +04:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2017-02-07 19:26:23 +03:00
int snapshot_revert ( int vid , int snap_id , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2013-02-20 19:04:09 +04:00
2013-02-21 18:01:48 +04:00
/**
* Starts the snapshot delete action
*
* @ param vid VirtualMachine identification
* @ param snap_id Snapshot to be deleted
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2013-02-21 18:01:48 +04:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2017-02-07 19:26:23 +03:00
int snapshot_delete ( int vid , int snap_id , const RequestAttributes & ra ,
2020-07-02 23:42:10 +03:00
std : : string & error_str ) ;
2012-12-12 21:31:27 +04:00
2015-05-19 19:41:23 +03:00
/**
* Starts the disk snapshot create action
*
* @ param vid VirtualMachine identification
* @ param did DISK identification
2015-07-09 14:13:07 +03:00
* @ param name Description for the new snapshot
2015-05-19 19:41:23 +03:00
* @ param snap_id Will contain the new snapshot ID
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2015-05-19 19:41:23 +03:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2020-07-02 23:42:10 +03:00
int disk_snapshot_create ( int vid , int did , const std : : string & name ,
int & snap_id , const RequestAttributes & ra , std : : string & error_str ) ;
2015-05-19 19:41:23 +03:00
/**
* Reverts the disk state to a previous snapshot
*
* @ param vid VirtualMachine identification
* @ param did DISK identification
* @ param snap_id Snapshot to be restored
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2015-05-19 19:41:23 +03:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2017-02-07 19:26:23 +03:00
int disk_snapshot_revert ( int vid , int did , int snap_id ,
2020-07-02 23:42:10 +03:00
const RequestAttributes & ra , std : : string & error_str ) ;
2015-05-27 17:29:41 +03:00
/**
* Deletes a disk snapshot
*
* @ param vid VirtualMachine identification
* @ param did DISK identification
* @ param snap_id Snapshot to be restored
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2015-05-27 17:29:41 +03:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2017-02-07 19:26:23 +03:00
int disk_snapshot_delete ( int vid , int did , int snap_id ,
2020-07-02 23:42:10 +03:00
const RequestAttributes & ra , std : : string & error_str ) ;
2015-05-27 17:29:41 +03:00
2016-12-15 23:12:33 +03:00
/**
* Starts the disk resize create action
*
* @ param vid VirtualMachine identification
* @ param did DISK identification
* @ param size new size for the disk
2017-02-07 19:26:23 +03:00
* @ param ra information about the API call request
2016-12-15 23:12:33 +03:00
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2017-02-07 19:26:23 +03:00
int disk_resize ( int vid , int did , long long new_size ,
2020-07-02 23:42:10 +03:00
const RequestAttributes & ra , std : : string & error_str ) ;
2019-07-26 14:45:26 +03:00
/**
* Update virtual machine context
*
* @ param vid VirtualMachine identification
* @ param ra information about the API call request
* @ param error_str Error reason , if any
*
* @ return 0 on success , - 1 otherwise
*/
2020-07-02 23:42:10 +03:00
int live_updateconf ( int vid , const RequestAttributes & ra ,
std : : string & error_str ) ;
2019-07-26 14:45:26 +03:00
2020-07-24 17:00:59 +03:00
//--------------------------------------------------------------------------
// DM Actions associated with a VM state transition
//--------------------------------------------------------------------------
void trigger_suspend_success ( int vid ) ;
void trigger_stop_success ( int vid ) ;
void trigger_undeploy_success ( int vid ) ;
void trigger_poweroff_success ( int vid ) ;
2008-06-17 20:27:32 +04:00
2020-07-24 17:00:59 +03:00
void trigger_done ( int vid ) ;
void trigger_resubmit ( int vid ) ;
private :
2008-06-17 20:27:32 +04:00
/**
* Pointer to the Host Pool , to access hosts
*/
2020-07-24 17:00:59 +03:00
HostPool * hpool = nullptr ;
2008-06-17 20:27:32 +04:00
/**
2018-09-05 16:14:39 +03:00
* Pointer to the Virtual Machine Pool , to access VMs
2008-06-17 20:27:32 +04:00
*/
2020-07-24 17:00:59 +03:00
VirtualMachinePool * vmpool = nullptr ;
2008-06-17 20:27:32 +04:00
2018-09-05 16:14:39 +03:00
/**
* Pointer to the User Pool , to access user
*/
2020-07-24 17:00:59 +03:00
UserPool * upool = nullptr ;
2018-09-05 16:14:39 +03:00
2016-07-08 12:20:39 +03:00
/**
2017-09-26 19:30:13 +03:00
* Pointer to the Cluster Pool
*/
2020-07-24 17:00:59 +03:00
ClusterPool * clpool = nullptr ;
2017-09-26 19:30:13 +03:00
/**
* Pointer to the Virtual Router Pool
2016-07-08 12:20:39 +03:00
*/
2020-07-24 17:00:59 +03:00
VirtualRouterPool * vrouterpool = nullptr ;
2016-07-08 12:20:39 +03:00
2015-07-01 22:15:40 +03:00
/**
2015-04-27 00:34:26 +03:00
* Pointer to TransferManager
*/
2020-07-24 17:00:59 +03:00
TransferManager * tm = nullptr ;
2015-04-27 00:34:26 +03:00
2015-07-01 22:15:40 +03:00
/**
* Pointer to VirtualMachineManager
*/
2020-07-24 17:00:59 +03:00
VirtualMachineManager * vmm = nullptr ;
2015-04-27 00:34:26 +03:00
2015-07-01 22:15:40 +03:00
/**
* Pointer to LifeCycleManager
*/
2020-07-24 17:00:59 +03:00
LifeCycleManager * lcm = nullptr ;
2015-04-27 00:34:26 +03:00
2015-07-01 22:15:40 +03:00
/**
* Pointer to ImageManager
*/
2020-07-24 17:00:59 +03:00
ImageManager * imagem = nullptr ;
2008-06-17 20:27:32 +04:00
2012-06-27 20:50:19 +04:00
/**
2016-05-02 19:34:42 +03:00
* Frees the resources associated to a VM : disks , ip addresses and Quotas
2012-06-27 20:50:19 +04:00
*/
2018-10-15 16:34:40 +03:00
void free_vm_resources ( VirtualMachine * vm , bool check_images ) ;
2008-06-17 20:27:32 +04:00
} ;
# endif /*DISPATCH_MANAGER_H*/