diff --git a/include/AclManager.h b/include/AclManager.h index 9fd449febe..88f4258866 100644 --- a/include/AclManager.h +++ b/include/AclManager.h @@ -23,11 +23,10 @@ #include "AclRule.h" #include "NebulaLog.h" -#include "SqlDB.h" - using namespace std; class PoolObjectAuth; +class SqlDB; extern "C" void * acl_action_loop(void *arg); diff --git a/include/Callbackable.h b/include/Callbackable.h index cfee00d833..cba2e69d12 100644 --- a/include/Callbackable.h +++ b/include/Callbackable.h @@ -22,7 +22,7 @@ #include #include -#include +#include using namespace std; diff --git a/include/Client.h b/include/Client.h index ad34dcb826..498bfc26c3 100644 --- a/include/Client.h +++ b/include/Client.h @@ -21,11 +21,7 @@ #include #include -#include #include -#include - -#include "NebulaLog.h" using namespace std; diff --git a/include/Cluster.h b/include/Cluster.h index 01ff3bb8a6..de92fa3fb1 100644 --- a/include/Cluster.h +++ b/include/Cluster.h @@ -17,7 +17,7 @@ #ifndef CLUSTER_H_ #define CLUSTER_H_ -#include "PoolSQL.h" +#include "PoolObjectSQL.h" #include "ObjectCollection.h" #include "DatastorePool.h" #include "ClusterTemplate.h" diff --git a/include/ClusterPool.h b/include/ClusterPool.h index f6a441e6a0..9a375abf2f 100644 --- a/include/ClusterPool.h +++ b/include/ClusterPool.h @@ -18,7 +18,7 @@ #define CLUSTER_POOL_H_ #include "Cluster.h" -#include "SqlDB.h" +#include "PoolSQL.h" using namespace std; diff --git a/include/Datastore.h b/include/Datastore.h index 2b31509f7c..d589176363 100644 --- a/include/Datastore.h +++ b/include/Datastore.h @@ -17,7 +17,7 @@ #ifndef DATASTORE_H_ #define DATASTORE_H_ -#include "PoolSQL.h" +#include "PoolObjectSQL.h" #include "ObjectCollection.h" #include "DatastoreTemplate.h" #include "Clusterable.h" diff --git a/include/DatastorePool.h b/include/DatastorePool.h index 4c76021cfa..97e47dca0e 100644 --- a/include/DatastorePool.h +++ b/include/DatastorePool.h @@ -18,7 +18,7 @@ #define DATASTORE_POOL_H_ #include "Datastore.h" -#include "SqlDB.h" +#include "PoolSQL.h" using namespace std; diff --git a/include/DefaultQuotas.h b/include/DefaultQuotas.h index a9d47de2c3..4fd7846660 100644 --- a/include/DefaultQuotas.h +++ b/include/DefaultQuotas.h @@ -18,8 +18,6 @@ #define DEFAULT_QUOTAS_H_ #include "Quotas.h" -#include "SqlDB.h" -#include "ObjectSQL.h" class DefaultQuotas : public Quotas { diff --git a/include/Group.h b/include/Group.h index 2425b9570f..0bada65a6c 100644 --- a/include/Group.h +++ b/include/Group.h @@ -17,10 +17,9 @@ #ifndef GROUP_H_ #define GROUP_H_ -#include "PoolSQL.h" +#include "PoolObjectSQL.h" #include "GroupTemplate.h" #include "ObjectCollection.h" -#include "User.h" #include "QuotasSQL.h" #include "Template.h" #include "VMActions.h" diff --git a/include/GroupPool.h b/include/GroupPool.h index cd7dbdbb0c..a24302aff1 100644 --- a/include/GroupPool.h +++ b/include/GroupPool.h @@ -18,7 +18,7 @@ #define GROUP_POOL_H_ #include "Group.h" -#include "SqlDB.h" +#include "PoolSQL.h" using namespace std; diff --git a/include/Host.h b/include/Host.h index 96bfd90bac..ae4a7cb029 100644 --- a/include/Host.h +++ b/include/Host.h @@ -17,7 +17,7 @@ #ifndef HOST_H_ #define HOST_H_ -#include "PoolSQL.h" +#include "PoolObjectSQL.h" #include "HostTemplate.h" #include "HostShare.h" #include "ClusterableSingle.h" diff --git a/include/HostPool.h b/include/HostPool.h index f369d98f16..b3199e7990 100644 --- a/include/HostPool.h +++ b/include/HostPool.h @@ -24,8 +24,6 @@ #include #include -#include - #include using namespace std; @@ -56,7 +54,7 @@ public: string& error_str); /** - * Updates a Host in the data base. It also updates the previous state + * Updates a Host in the data base. It also updates the previous state * after executing the hooks. * @param objsql a pointer to the Host * @@ -373,12 +371,12 @@ private: struct HostVM { /** - * Tmp set of lost VM IDs. + * Tmp set of lost VM IDs. */ set tmp_lost_vms; /** - * Tmp set of zombie VM IDs. + * Tmp set of zombie VM IDs. */ set tmp_zombie_vms; diff --git a/include/MarketPlaceManagerDriver.h b/include/MarketPlaceManagerDriver.h index 6a1d610fd8..a0908c342f 100644 --- a/include/MarketPlaceManagerDriver.h +++ b/include/MarketPlaceManagerDriver.h @@ -19,7 +19,6 @@ #include #include -#include #include "Mad.h" diff --git a/include/MarketPlacePool.h b/include/MarketPlacePool.h index bffc5cf1a3..b499aed634 100644 --- a/include/MarketPlacePool.h +++ b/include/MarketPlacePool.h @@ -18,10 +18,8 @@ #define MARKETPLACE_POOL_H_ #include "MarketPlace.h" -#include "NebulaLog.h" -#include "SqlDB.h" +#include "PoolSQL.h" -class SqlDB; class MarketPlaceApp; class MarketPlacePool : public PoolSQL diff --git a/include/Nebula.h b/include/Nebula.h index 3c128091cb..6e8ad8eca0 100644 --- a/include/Nebula.h +++ b/include/Nebula.h @@ -17,50 +17,50 @@ #ifndef NEBULA_H_ #define NEBULA_H_ -#include "LogDB.h" +#include "NebulaTemplate.h" #include "SystemDB.h" -#include "NebulaTemplate.h" - -#include "VirtualMachinePool.h" -#include "VirtualNetworkPool.h" -#include "HostPool.h" -#include "UserPool.h" -#include "VMTemplatePool.h" -#include "GroupPool.h" -#include "DatastorePool.h" -#include "ClusterPool.h" -#include "DocumentPool.h" -#include "ZonePool.h" -#include "SecurityGroupPool.h" -#include "VdcPool.h" -#include "VirtualRouterPool.h" -#include "MarketPlacePool.h" -#include "MarketPlaceAppPool.h" -#include "VMGroupPool.h" -#include "VNTemplatePool.h" -#include "HookPool.h" - -#include "VirtualMachineManager.h" -#include "LifeCycleManager.h" -#include "InformationManager.h" -#include "TransferManager.h" -#include "DispatchManager.h" -#include "RequestManager.h" -#include "HookManager.h" -#include "HookLog.h" -#include "AuthManager.h" -#include "AclManager.h" -#include "ImageManager.h" -#include "MarketPlaceManager.h" -#include "IPAMManager.h" -#include "RaftManager.h" -#include "FedReplicaManager.h" - #include "DefaultQuotas.h" +#include "UserPool.h" -#include "Callbackable.h" +class LogDB; +class FedLogDB; +class User; +class ClusterPool; +class DatastorePool; +class DocumentPool; +class GroupPool; +class HookPool; +class HostPool; +class ImagePool; +class MarketPlacePool; +class MarketPlaceAppPool; +class SecurityGroupPool; +class VdcPool; +class VMGroupPool; +class VMTemplatePool; +class VNTemplatePool; +class VirtualMachinePool; +class VirtualNetworkPool; +class VirtualRouterPool; +class ZonePool; + +class AclManager; +class AuthManager; +class DispatchManager; +class FedReplicaManager; +class HookLog; +class HookManager; +class ImageManager; +class InformationManager; +class IPAMManager; +class LifeCycleManager; +class MarketPlaceManager; +class RaftManager; +class RequestManager; +class TransferManager; +class VirtualMachineManager; /** * This is the main class for the OpenNebula daemon oned. It stores references @@ -768,47 +768,7 @@ private: } }; - ~Nebula() - { - delete vmpool; - delete vnpool; - delete hpool; - delete upool; - delete ipool; - delete gpool; - delete tpool; - delete dspool; - delete clpool; - delete docpool; - delete zonepool; - delete secgrouppool; - delete vdcpool; - delete vrouterpool; - delete marketpool; - delete apppool; - delete vmgrouppool; - delete vmm; - delete lcm; - delete im; - delete tm; - delete dm; - delete rm; - delete hm; - delete hl; - delete authm; - delete aclm; - delete imagem; - delete marketm; - delete ipamm; - delete raftm; - delete frm; - delete nebula_configuration; - delete logdb; - delete fed_logdb; - delete system_db; - delete vntpool; - delete hkpool; - }; + ~Nebula(); Nebula& operator=(Nebula const&){return *this;}; diff --git a/include/NebulaLog.h b/include/NebulaLog.h index ac251b66ac..b19d4b25bf 100644 --- a/include/NebulaLog.h +++ b/include/NebulaLog.h @@ -18,7 +18,6 @@ #define _NEBULA_LOG_H_ #include "Log.h" -#include "NebulaUtil.h" #include #include diff --git a/include/PoolObjectSQL.h b/include/PoolObjectSQL.h index d700ad6192..113c2d3b37 100644 --- a/include/PoolObjectSQL.h +++ b/include/PoolObjectSQL.h @@ -22,7 +22,7 @@ #include "Template.h" #include -#include +#include using namespace std; diff --git a/include/PoolSQL.h b/include/PoolSQL.h index d317efcd48..5033f99a90 100644 --- a/include/PoolSQL.h +++ b/include/PoolSQL.h @@ -22,7 +22,6 @@ #include "SqlDB.h" #include "PoolObjectSQL.h" #include "PoolSQLCache.h" -#include "Log.h" using namespace std; diff --git a/include/RaftManager.h b/include/RaftManager.h index 74253e7344..77672ad71c 100644 --- a/include/RaftManager.h +++ b/include/RaftManager.h @@ -27,6 +27,8 @@ extern "C" void * raft_manager_loop(void *arg); extern "C" void * reconciling_thread(void *arg); +class LogDBRecord; + /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/include/Request.h b/include/Request.h index ff811f5032..0b5266d8d4 100644 --- a/include/Request.h +++ b/include/Request.h @@ -24,7 +24,7 @@ #include "AuthRequest.h" #include "PoolObjectSQL.h" #include "Quotas.h" -#include "History.h" +#include "UserPool.h" using namespace std; diff --git a/include/RequestManager.h b/include/RequestManager.h index e7e6527eb2..71601bef2d 100644 --- a/include/RequestManager.h +++ b/include/RequestManager.h @@ -18,20 +18,13 @@ #define REQUEST_MANAGER_H_ #include "ActionManager.h" -#include "VirtualMachinePool.h" -#include "HostPool.h" -#include "UserPool.h" -#include "VirtualNetworkPool.h" -#include "ImagePool.h" -#include "VMTemplatePool.h" -#include "GroupPool.h" - -#include "AuthManager.h" #include #include #include +#include + using namespace std; extern "C" void * rm_action_loop(void *arg); @@ -193,21 +186,7 @@ private: // ------------------------------------------------------------------------ // ActioListener Interface // ------------------------------------------------------------------------ - virtual void finalize_action(const ActionRequest& ar) - { - NebulaLog::log("ReM",Log::INFO,"Stopping Request Manager..."); - - pthread_cancel(rm_xml_server_thread); - - pthread_join(rm_xml_server_thread,0); - - NebulaLog::log("ReM",Log::INFO,"XML-RPC server stopped."); - - if ( socket_fd != -1 ) - { - close(socket_fd); - } - }; + void finalize_action(const ActionRequest& ar) override; }; #endif diff --git a/include/RequestManagerAllocate.h b/include/RequestManagerAllocate.h index 0505281328..4e3647ac8c 100644 --- a/include/RequestManagerAllocate.h +++ b/include/RequestManagerAllocate.h @@ -24,6 +24,24 @@ #include "ImageTemplate.h" #include "VirtualMachineTemplate.h" #include "DatastoreTemplate.h" +#include "MarketPlaceTemplate.h" + +#include "ClusterPool.h" +#include "DocumentPool.h" +#include "HookPool.h" +#include "HostPool.h" +#include "ImagePool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "VdcPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" +#include "ZonePool.h" using namespace std; diff --git a/include/RequestManagerChmod.h b/include/RequestManagerChmod.h index 925a5a2a2d..107b89fb24 100644 --- a/include/RequestManagerChmod.h +++ b/include/RequestManagerChmod.h @@ -20,6 +20,19 @@ #include "Request.h" #include "Nebula.h" +#include "DatastorePool.h" +#include "DocumentPool.h" +#include "ImagePool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" + using namespace std; /* ------------------------------------------------------------------------- */ diff --git a/include/RequestManagerChown.h b/include/RequestManagerChown.h index 43f358b008..1dc93bf876 100644 --- a/include/RequestManagerChown.h +++ b/include/RequestManagerChown.h @@ -20,6 +20,19 @@ #include "Request.h" #include "Nebula.h" +#include "DatastorePool.h" +#include "DocumentPool.h" +#include "ImagePool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" + using namespace std; /* ------------------------------------------------------------------------- */ diff --git a/include/RequestManagerClone.h b/include/RequestManagerClone.h index ce6dbecac1..9d0607c386 100644 --- a/include/RequestManagerClone.h +++ b/include/RequestManagerClone.h @@ -21,6 +21,10 @@ #include "RequestManagerVMTemplate.h" #include "Nebula.h" +#include "DocumentPool.h" +#include "SecurityGroupPool.h" +#include "VNTemplatePool.h" + using namespace std; /* ------------------------------------------------------------------------- */ diff --git a/include/RequestManagerCluster.h b/include/RequestManagerCluster.h index 4ca1fadc82..7dd2eb927e 100644 --- a/include/RequestManagerCluster.h +++ b/include/RequestManagerCluster.h @@ -19,6 +19,9 @@ #include "Request.h" #include "Nebula.h" +#include "ClusterPool.h" +#include "DatastorePool.h" +#include "VirtualNetworkPool.h" using namespace std; diff --git a/include/RequestManagerDatastore.h b/include/RequestManagerDatastore.h index c35052e567..0dbdca66bf 100644 --- a/include/RequestManagerDatastore.h +++ b/include/RequestManagerDatastore.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "DatastorePool.h" using namespace std; @@ -40,8 +41,7 @@ protected: auth_object = PoolObjectSQL::DATASTORE; auth_op = AuthRequest::MANAGE; }; - - ~RequestManagerDatastore(){}; + ~RequestManagerDatastore() = default; /* --------------------------------------------------------------------- */ @@ -58,7 +58,7 @@ public: DatastoreEnable(): RequestManagerDatastore("one.datastore.enable", "Enables or disables an datastore", "A:sib"){}; - ~DatastoreEnable(){}; + ~DatastoreEnable() = default; void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) override; diff --git a/include/RequestManagerDelete.h b/include/RequestManagerDelete.h index ca89f60f6a..fc9c765ef4 100644 --- a/include/RequestManagerDelete.h +++ b/include/RequestManagerDelete.h @@ -18,8 +18,11 @@ #define REQUEST_MANAGER_DELETE_H_ #include "Request.h" -#include "Nebula.h" -#include "AuthManager.h" +#include "ClusterPool.h" +#include "Host.h" +#include "VirtualNetwork.h" + +class AclManager; using namespace std; @@ -32,28 +35,12 @@ class RequestManagerDelete: public Request protected: RequestManagerDelete(const string& method_name, const string& params, - const string& help) - :Request(method_name, params, help) - { - auth_op = AuthRequest::MANAGE; - - Nebula& nd = Nebula::instance(); - clpool = nd.get_clpool(); - aclm = nd.get_aclm(); - }; + const string& help); RequestManagerDelete(const string& method_name, - const string& help) - :Request(method_name, "A:si", help) - { - auth_op = AuthRequest::MANAGE; + const string& help); - Nebula& nd = Nebula::instance(); - clpool = nd.get_clpool(); - aclm = nd.get_aclm(); - }; - - ~RequestManagerDelete(){}; + ~RequestManagerDelete() = default; void request_execute(xmlrpc_c::paramList const& paramList, @@ -90,17 +77,9 @@ protected: class TemplateDelete : public RequestManagerDelete { public: - TemplateDelete(): - RequestManagerDelete("one.template.delete", - "A:sib" - "Deletes a virtual machine template") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_tpool(); - auth_object = PoolObjectSQL::TEMPLATE; - }; + TemplateDelete(); - ~TemplateDelete(){}; + ~TemplateDelete() = default; ErrorCode request_execute(int oid, bool recursive, RequestAttributes& att) { @@ -118,17 +97,9 @@ protected: class VirtualNetworkTemplateDelete : public RequestManagerDelete { public: - VirtualNetworkTemplateDelete(): - RequestManagerDelete("one.vntemplate.delete", - "A:si", - "Deletes a virtual network template") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vntpool(); - auth_object = PoolObjectSQL::VNTEMPLATE; - }; + VirtualNetworkTemplateDelete(); - ~VirtualNetworkTemplateDelete(){}; + ~VirtualNetworkTemplateDelete() = default; ErrorCode request_execute(int oid, bool recursive, RequestAttributes& att) { @@ -143,16 +114,9 @@ public: class VirtualNetworkDelete: public RequestManagerDelete { public: - VirtualNetworkDelete(): - RequestManagerDelete("one.vn.delete", - "Deletes a virtual network") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vnpool(); - auth_object = PoolObjectSQL::NET; - }; + VirtualNetworkDelete(); - ~VirtualNetworkDelete(){}; + ~VirtualNetworkDelete() = default; protected: @@ -175,15 +139,9 @@ protected: class ImageDelete: public RequestManagerDelete { public: - ImageDelete(): - RequestManagerDelete("one.image.delete", "Deletes an image") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_ipool(); - auth_object = PoolObjectSQL::IMAGE; - }; + ImageDelete(); - ~ImageDelete(){}; + ~ImageDelete() = default; ErrorCode request_execute(int oid, RequestAttributes& att) { @@ -204,16 +162,9 @@ protected: class HostDelete : public RequestManagerDelete { public: - HostDelete(): - RequestManagerDelete("one.host.delete", "Deletes a host") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_hpool(); - auth_object = PoolObjectSQL::HOST; - auth_op = AuthRequest::ADMIN; - }; + HostDelete(); - ~HostDelete(){}; + ~HostDelete() = default; protected: @@ -240,17 +191,9 @@ protected: class GroupDelete: public RequestManagerDelete { public: - GroupDelete(): - RequestManagerDelete("one.group.delete", "Deletes a group") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_gpool(); + GroupDelete(); - auth_object = PoolObjectSQL::GROUP; - auth_op = AuthRequest::ADMIN; - }; - - ~GroupDelete(){}; + ~GroupDelete() = default; protected: @@ -263,18 +206,9 @@ protected: class UserDelete: public RequestManagerDelete { public: - UserDelete(): - RequestManagerDelete("one.user.delete", "Deletes a user") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_upool(); - gpool = nd.get_gpool(); + UserDelete(); - auth_object = PoolObjectSQL::USER; - auth_op = AuthRequest::ADMIN; - }; - - ~UserDelete(){}; + ~UserDelete() = default; protected: @@ -289,16 +223,9 @@ protected: class DatastoreDelete: public RequestManagerDelete { public: - DatastoreDelete(): - RequestManagerDelete("one.datastore.delete", "Deletes a datastore") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_dspool(); - auth_object = PoolObjectSQL::DATASTORE; - auth_op = AuthRequest::ADMIN; - }; + DatastoreDelete(); - ~DatastoreDelete(){}; + ~DatastoreDelete() = default; /* -------------------------------------------------------------------- */ @@ -321,17 +248,9 @@ public: class ClusterDelete: public RequestManagerDelete { public: - ClusterDelete(): - RequestManagerDelete("one.cluster.delete", "Deletes a cluster") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_clpool(); + ClusterDelete(); - auth_object = PoolObjectSQL::CLUSTER; - auth_op = AuthRequest::ADMIN; - }; - - ~ClusterDelete(){}; + ~ClusterDelete() = default; protected: @@ -344,16 +263,9 @@ protected: class DocumentDelete : public RequestManagerDelete { public: - DocumentDelete(): - RequestManagerDelete("one.document.delete", - "Deletes a generic document") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_docpool(); - auth_object = PoolObjectSQL::DOCUMENT; - }; + DocumentDelete(); - ~DocumentDelete(){}; + ~DocumentDelete() = default; }; /* ------------------------------------------------------------------------- */ @@ -362,16 +274,9 @@ public: class ZoneDelete: public RequestManagerDelete { public: - ZoneDelete(): - RequestManagerDelete("one.zone.delete", "Deletes a zone") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_zonepool(); - auth_object = PoolObjectSQL::ZONE; - auth_op = AuthRequest::ADMIN; - }; + ZoneDelete(); - ~ZoneDelete(){}; + ~ZoneDelete() = default; protected: @@ -384,16 +289,9 @@ protected: class SecurityGroupDelete : public RequestManagerDelete { public: - SecurityGroupDelete(): - RequestManagerDelete("one.secgroup.delete", - "Deletes a security group") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_secgrouppool(); - auth_object = PoolObjectSQL::SECGROUP; - }; + SecurityGroupDelete(); - ~SecurityGroupDelete(){}; + ~SecurityGroupDelete() = default; protected: @@ -406,16 +304,9 @@ protected: class VdcDelete: public RequestManagerDelete { public: - VdcDelete(): - RequestManagerDelete("one.vdc.delete", "Deletes a VDC") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vdcpool(); - auth_object = PoolObjectSQL::VDC; - auth_op = AuthRequest::ADMIN; - }; + VdcDelete(); - ~VdcDelete(){}; + ~VdcDelete() = default; }; /* ------------------------------------------------------------------------- */ @@ -424,16 +315,9 @@ public: class VirtualRouterDelete : public RequestManagerDelete { public: - VirtualRouterDelete(): - RequestManagerDelete("one.vrouter.delete", - "Deletes a virtual router") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vrouterpool(); - auth_object = PoolObjectSQL::VROUTER; - }; + VirtualRouterDelete(); - ~VirtualRouterDelete(){}; + ~VirtualRouterDelete() = default; protected: int drop(PoolObjectSQL * obj, bool resive, RequestAttributes& att) override; @@ -445,16 +329,9 @@ protected: class MarketPlaceDelete : public RequestManagerDelete { public: - MarketPlaceDelete(): - RequestManagerDelete("one.market.delete", - "Deletes a marketplace") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_marketpool(); - auth_object = PoolObjectSQL::MARKETPLACE; - }; + MarketPlaceDelete(); - ~MarketPlaceDelete(){}; + ~MarketPlaceDelete() = default; protected: @@ -467,16 +344,9 @@ protected: class MarketPlaceAppDelete : public RequestManagerDelete { public: - MarketPlaceAppDelete(): - RequestManagerDelete("one.marketapp.delete", - "Deletes a marketplace app") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_apppool(); - auth_object = PoolObjectSQL::MARKETPLACEAPP; - }; + MarketPlaceAppDelete(); - ~MarketPlaceAppDelete(){}; + ~MarketPlaceAppDelete() = default; protected: @@ -489,16 +359,9 @@ protected: class VMGroupDelete : public RequestManagerDelete { public: - VMGroupDelete(): - RequestManagerDelete("one.vmgroup.delete", - "Deletes a vm group") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vmgrouppool(); - auth_object = PoolObjectSQL::VMGROUP; - }; + VMGroupDelete(); - ~VMGroupDelete(){}; + ~VMGroupDelete() = default; }; /* ------------------------------------------------------------------------- */ @@ -507,16 +370,9 @@ public: class HookDelete : public RequestManagerDelete { public: - HookDelete(): - RequestManagerDelete("one.hook.delete", - "Deletes a hook") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_hkpool(); - auth_object = PoolObjectSQL::HOOK; - }; + HookDelete(); - ~HookDelete(){}; + ~HookDelete() = default; }; #endif diff --git a/include/RequestManagerHook.h b/include/RequestManagerHook.h index b83e83af13..47b2266d94 100644 --- a/include/RequestManagerHook.h +++ b/include/RequestManagerHook.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "HookPool.h" using namespace std; @@ -40,7 +41,7 @@ protected: auth_object = PoolObjectSQL::HOOK; }; - ~RequestManagerHook(){}; + ~RequestManagerHook() = default; /* -------------------------------------------------------------------- */ @@ -60,7 +61,7 @@ public: auth_op = AuthRequest::MANAGE; }; - ~HookRetry(){}; + ~HookRetry() = default; void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att); diff --git a/include/RequestManagerHost.h b/include/RequestManagerHost.h index 5edcc7b121..4b83935f67 100644 --- a/include/RequestManagerHost.h +++ b/include/RequestManagerHost.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "HostPool.h" using namespace std; diff --git a/include/RequestManagerImage.h b/include/RequestManagerImage.h index 979bf14b48..9dec61902d 100644 --- a/include/RequestManagerImage.h +++ b/include/RequestManagerImage.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "ImagePool.h" using namespace std; diff --git a/include/RequestManagerInfo.h b/include/RequestManagerInfo.h index e84284f527..d39b667dbb 100644 --- a/include/RequestManagerInfo.h +++ b/include/RequestManagerInfo.h @@ -19,6 +19,24 @@ #include "Request.h" #include "Nebula.h" +#include "ClusterPool.h" +#include "DatastorePool.h" +#include "DocumentPool.h" +#include "HookPool.h" +#include "HostPool.h" +#include "ImagePool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "VdcPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" +#include "ZonePool.h" + using namespace std; diff --git a/include/RequestManagerLock.h b/include/RequestManagerLock.h index 8e46eaeaf6..4452baf18c 100644 --- a/include/RequestManagerLock.h +++ b/include/RequestManagerLock.h @@ -18,7 +18,6 @@ #define REQUEST_MANAGER_LOCK_H_ #include "Request.h" -#include "Nebula.h" using namespace std; @@ -36,7 +35,7 @@ protected: auth_op = AuthRequest::MANAGE_NO_LCK; }; - ~RequestManagerLock(){}; + ~RequestManagerLock() = default; /* -------------------------------------------------------------------- */ @@ -62,7 +61,7 @@ protected: auth_op = AuthRequest::MANAGE_NO_LCK; }; - ~RequestManagerUnlock(){}; + ~RequestManagerUnlock() = default; /* -------------------------------------------------------------------- */ @@ -81,16 +80,9 @@ protected: class DocumentLock : public RequestManagerLock { public: - DocumentLock(): - RequestManagerLock("one.document.lock", - "Tries to acquire the object's lock") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_docpool(); - auth_object = PoolObjectSQL::DOCUMENT; - }; + DocumentLock(); - ~DocumentLock(){}; + ~DocumentLock() = default; }; /* ------------------------------------------------------------------------- */ @@ -99,16 +91,9 @@ public: class DocumentUnlock : public RequestManagerUnlock { public: - DocumentUnlock(): - RequestManagerUnlock("one.document.unlock", - "Unlocks the object") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_docpool(); - auth_object = PoolObjectSQL::DOCUMENT; - }; + DocumentUnlock(); - ~DocumentUnlock(){}; + ~DocumentUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -117,15 +102,9 @@ public: class VirtualMachineLock: public RequestManagerLock { public: - VirtualMachineLock(): - RequestManagerLock("one.vm.lock", - "Lock a VM"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VM; - pool = nd.get_vmpool(); - }; + VirtualMachineLock(); - ~VirtualMachineLock(){}; + ~VirtualMachineLock() = default; }; /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ @@ -133,15 +112,9 @@ public: class VirtualMachineUnlock: public RequestManagerUnlock { public: - VirtualMachineUnlock(): - RequestManagerUnlock("one.vm.unlock", - "Unlock a VM"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VM; - pool = nd.get_vmpool(); - }; + VirtualMachineUnlock(); - ~VirtualMachineUnlock(){}; + ~VirtualMachineUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -150,15 +123,9 @@ public: class VMTemplateLock: public RequestManagerLock { public: - VMTemplateLock(): - RequestManagerLock("one.template.lock", - "Lock a Template"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::TEMPLATE; - pool = nd.get_tpool(); - }; + VMTemplateLock(); - ~VMTemplateLock(){}; + ~VMTemplateLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -167,15 +134,9 @@ public: class VMTemplateUnlock: public RequestManagerUnlock { public: - VMTemplateUnlock(): - RequestManagerUnlock("one.template.unlock", - "Unlock a Template"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::TEMPLATE; - pool = nd.get_tpool(); - }; + VMTemplateUnlock(); - ~VMTemplateUnlock(){}; + ~VMTemplateUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -184,15 +145,9 @@ public: class VNTemplateLock: public RequestManagerLock { public: - VNTemplateLock(): - RequestManagerLock("one.vntemplate.lock", - "Lock a VN Template"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VNTEMPLATE; - pool = nd.get_vntpool(); - }; + VNTemplateLock(); - ~VNTemplateLock(){}; + ~VNTemplateLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -201,15 +156,9 @@ public: class VNTemplateUnlock: public RequestManagerUnlock { public: - VNTemplateUnlock(): - RequestManagerUnlock("one.vntemplate.unlock", - "Unlock a VN Template"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VNTEMPLATE; - pool = nd.get_vntpool(); - }; + VNTemplateUnlock(); - ~VNTemplateUnlock(){}; + ~VNTemplateUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -218,15 +167,9 @@ public: class VirtualNetworkLock: public RequestManagerLock { public: - VirtualNetworkLock(): - RequestManagerLock("one.vn.lock", - "Lock a VNet"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::NET; - pool = nd.get_vnpool(); - }; + VirtualNetworkLock(); - ~VirtualNetworkLock(){}; + ~VirtualNetworkLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -235,15 +178,9 @@ public: class VirtualNetworkUnlock: public RequestManagerUnlock { public: - VirtualNetworkUnlock(): - RequestManagerUnlock("one.vn.unlock", - "Unlock a VNet"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::NET; - pool = nd.get_vnpool(); - }; + VirtualNetworkUnlock(); - ~VirtualNetworkUnlock(){}; + ~VirtualNetworkUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -252,15 +189,9 @@ public: class ImageLock: public RequestManagerLock { public: - ImageLock(): - RequestManagerLock("one.image.lock", - "Lock a Image"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::IMAGE; - pool = nd.get_ipool(); - }; + ImageLock(); - ~ImageLock(){}; + ~ImageLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -269,15 +200,9 @@ public: class ImageUnlock: public RequestManagerUnlock { public: - ImageUnlock(): - RequestManagerUnlock("one.image.unlock", - "Unlock a Image"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::IMAGE; - pool = nd.get_ipool(); - }; + ImageUnlock(); - ~ImageUnlock(){}; + ~ImageUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -286,15 +211,9 @@ public: class MarketPlaceAppLock: public RequestManagerLock { public: - MarketPlaceAppLock(): - RequestManagerLock("one.marketapp.lock", - "Lock a MarketPlaceApp"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::MARKETPLACEAPP; - pool = nd.get_apppool(); - }; + MarketPlaceAppLock(); - ~MarketPlaceAppLock(){}; + ~MarketPlaceAppLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -303,15 +222,9 @@ public: class MarketPlaceAppUnlock: public RequestManagerUnlock { public: - MarketPlaceAppUnlock(): - RequestManagerUnlock("one.marketapp.unlock", - "Unlock a MarketPlaceApp"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::MARKETPLACEAPP; - pool = nd.get_apppool(); - }; + MarketPlaceAppUnlock(); - ~MarketPlaceAppUnlock(){}; + ~MarketPlaceAppUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -320,15 +233,9 @@ public: class VirtualRouterLock: public RequestManagerLock { public: - VirtualRouterLock(): - RequestManagerLock("one.vrouter.lock", - "Lock a VirtualRouter"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VROUTER; - pool = nd.get_vrouterpool(); - }; + VirtualRouterLock(); - ~VirtualRouterLock(){}; + ~VirtualRouterLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -337,15 +244,9 @@ public: class VirtualRouterUnlock: public RequestManagerUnlock { public: - VirtualRouterUnlock(): - RequestManagerUnlock("one.vrouter.unlock", - "Unlock a VirtualRouter"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VROUTER; - pool = nd.get_vrouterpool(); - }; + VirtualRouterUnlock(); - ~VirtualRouterUnlock(){}; + ~VirtualRouterUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -354,15 +255,9 @@ public: class VMGroupLock: public RequestManagerLock { public: - VMGroupLock(): - RequestManagerLock("one.vmgroup.lock", - "Lock a VMGroup"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VMGROUP; - pool = nd.get_vmgrouppool(); - }; + VMGroupLock(); - ~VMGroupLock(){}; + ~VMGroupLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -371,15 +266,9 @@ public: class VMGroupUnlock: public RequestManagerUnlock { public: - VMGroupUnlock(): - RequestManagerUnlock("one.vmgroup.unlock", - "Unlock a VMGroup"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::VMGROUP; - pool = nd.get_vmgrouppool(); - }; + VMGroupUnlock(); - ~VMGroupUnlock(){}; + ~VMGroupUnlock() = default; }; /* -------------------------------------------------------------------------- */ @@ -388,15 +277,9 @@ public: class HookLock: public RequestManagerLock { public: - HookLock(): - RequestManagerLock("one.hook.lock", - "Lock a Hook"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::HOOK; - pool = nd.get_hkpool(); - }; + HookLock(); - ~HookLock(){}; + ~HookLock() = default; }; /* -------------------------------------------------------------------------- */ @@ -405,15 +288,9 @@ public: class HookUnlock: public RequestManagerUnlock { public: - HookUnlock(): - RequestManagerUnlock("one.hook.unlock", - "Unlock a Hook"){ - Nebula& nd = Nebula::instance(); - auth_object = PoolObjectSQL::HOOK; - pool = nd.get_hkpool(); - }; + HookUnlock(); - ~HookUnlock(){}; + ~HookUnlock() = default; }; #endif diff --git a/include/RequestManagerMarketPlaceApp.h b/include/RequestManagerMarketPlaceApp.h index a04e66569a..e7db2ac10d 100644 --- a/include/RequestManagerMarketPlaceApp.h +++ b/include/RequestManagerMarketPlaceApp.h @@ -18,7 +18,6 @@ #define REQUEST_MANAGER_MARKETPLACEAPP_H #include "Request.h" -#include "Nebula.h" /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ @@ -27,17 +26,9 @@ class RequestManagerMarketPlaceApp: public Request { protected: RequestManagerMarketPlaceApp(const std::string& method_name, - const std::string& help, const std::string& params) : - Request(method_name, params, help) - { - Nebula& nd = Nebula::instance(); - pool = nd.get_apppool(); + const std::string& help, const std::string& params); - auth_object = PoolObjectSQL::MARKETPLACEAPP; - auth_op = AuthRequest::MANAGE; - }; - - ~RequestManagerMarketPlaceApp(){}; + ~RequestManagerMarketPlaceApp() = default; /* --------------------------------------------------------------------- */ @@ -51,10 +42,13 @@ protected: class MarketPlaceAppEnable : public RequestManagerMarketPlaceApp { public: - MarketPlaceAppEnable(): RequestManagerMarketPlaceApp("one.marketapp.enable", - "Enables or disables a marketplace app", "A:sib"){}; + MarketPlaceAppEnable() + : RequestManagerMarketPlaceApp("one.marketapp.enable", + "Enables or disables a marketplace app", "A:sib") + { + } - ~MarketPlaceAppEnable(){}; + ~MarketPlaceAppEnable() = default; void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) override; diff --git a/include/RequestManagerPoolInfoFilter.h b/include/RequestManagerPoolInfoFilter.h index ad62a93283..84bd496595 100644 --- a/include/RequestManagerPoolInfoFilter.h +++ b/include/RequestManagerPoolInfoFilter.h @@ -18,8 +18,6 @@ #define REQUEST_MANAGER_POOL_INFO_FILTER_H_ #include "Request.h" -#include "Nebula.h" -#include "AuthManager.h" using namespace std; @@ -73,13 +71,9 @@ protected: extended = false; }; - /* -------------------------------------------------------------------- */ - void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; - /* -------------------------------------------------------------------- */ - void where_filter(RequestAttributes& att, int filter_flag, int start_id, @@ -91,8 +85,6 @@ protected: bool disable_group_acl, string& where_string); - /* -------------------------------------------------------------------- */ - void dump(RequestAttributes& att, int filter_flag, int start_id, @@ -114,28 +106,11 @@ public: /* -------------------------------------------------------------------- */ - VirtualMachinePoolInfo(): - RequestManagerPoolInfoFilter("one.vmpool.info", - "Returns the virtual machine instances pool", - "A:siiiis") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vmpool(); - auth_object = PoolObjectSQL::VM; - }; + VirtualMachinePoolInfo(); VirtualMachinePoolInfo(const string& method_name, const string& help, - const string& signature) - :RequestManagerPoolInfoFilter(method_name, help, signature) - { - - Nebula& nd = Nebula::instance(); - pool = nd.get_vmpool(); - auth_object = PoolObjectSQL::VM; - }; - - /* -------------------------------------------------------------------- */ + const string& signature); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -147,7 +122,6 @@ public: class VirtualMachinePoolInfoExtended : public VirtualMachinePoolInfo { public: - VirtualMachinePoolInfoExtended(): VirtualMachinePoolInfo("one.vmpool.infoextended", "Returns the virtual machine instances pool in extended format", @@ -164,18 +138,7 @@ public: class VirtualMachinePoolAccounting : public RequestManagerPoolInfoFilter { public: - - VirtualMachinePoolAccounting(): - RequestManagerPoolInfoFilter("one.vmpool.accounting", - "Returns the virtual machine history records", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vmpool(); - auth_object = PoolObjectSQL::VM; - }; - - /* -------------------------------------------------------------------- */ + VirtualMachinePoolAccounting(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -187,18 +150,7 @@ public: class VirtualMachinePoolShowback : public RequestManagerPoolInfoFilter { public: - - VirtualMachinePoolShowback(): - RequestManagerPoolInfoFilter("one.vmpool.showback", - "Returns the virtual machine showback records", - "A:siiiii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vmpool(); - auth_object = PoolObjectSQL::VM; - }; - - /* -------------------------------------------------------------------- */ + VirtualMachinePoolShowback(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -210,18 +162,7 @@ public: class VirtualMachinePoolMonitoring : public RequestManagerPoolInfoFilter { public: - - VirtualMachinePoolMonitoring(): - RequestManagerPoolInfoFilter("one.vmpool.monitoring", - "Returns the virtual machine monitoring records", - "A:si") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vmpool(); - auth_object = PoolObjectSQL::VM; - }; - - /* -------------------------------------------------------------------- */ + VirtualMachinePoolMonitoring(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -233,15 +174,7 @@ public: class TemplatePoolInfo : public RequestManagerPoolInfoFilter { public: - TemplatePoolInfo(): - RequestManagerPoolInfoFilter("one.templatepool.info", - "Returns the virtual machine template pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_tpool(); - auth_object = PoolObjectSQL::TEMPLATE; - }; + TemplatePoolInfo(); }; /* ------------------------------------------------------------------------- */ @@ -250,15 +183,7 @@ public: class VirtualNetworkPoolInfo: public RequestManagerPoolInfoFilter { public: - VirtualNetworkPoolInfo(): - RequestManagerPoolInfoFilter("one.vnpool.info", - "Returns the virtual network pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vnpool(); - auth_object = PoolObjectSQL::NET; - }; + VirtualNetworkPoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -270,15 +195,7 @@ public: class VirtualNetworkTemplatePoolInfo: public RequestManagerPoolInfoFilter { public: - VirtualNetworkTemplatePoolInfo(): - RequestManagerPoolInfoFilter("one.vntemplatepool.info", - "Returns the virtual network template pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vntpool(); - auth_object = PoolObjectSQL::VNTEMPLATE; - }; + VirtualNetworkTemplatePoolInfo(); }; /* ------------------------------------------------------------------------- */ @@ -287,15 +204,7 @@ public: class ImagePoolInfo: public RequestManagerPoolInfoFilter { public: - ImagePoolInfo(): - RequestManagerPoolInfoFilter("one.imagepool.info", - "Returns the image pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_ipool(); - auth_object = PoolObjectSQL::IMAGE; - }; + ImagePoolInfo(); }; /* ------------------------------------------------------------------------- */ @@ -304,17 +213,7 @@ public: class HostPoolInfo : public RequestManagerPoolInfoFilter { public: - HostPoolInfo(): - RequestManagerPoolInfoFilter("one.hostpool.info", - "Returns the host pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_hpool(); - auth_object = PoolObjectSQL::HOST; - }; - - /* -------------------------------------------------------------------- */ + HostPoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -326,18 +225,7 @@ public: class HostPoolMonitoring : public RequestManagerPoolInfoFilter { public: - - HostPoolMonitoring(): - RequestManagerPoolInfoFilter("one.hostpool.monitoring", - "Returns the host monitoring records", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_hpool(); - auth_object = PoolObjectSQL::HOST; - }; - - /* -------------------------------------------------------------------- */ + HostPoolMonitoring(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -349,17 +237,7 @@ public: class GroupPoolInfo: public RequestManagerPoolInfoFilter { public: - GroupPoolInfo(): - RequestManagerPoolInfoFilter("one.grouppool.info", - "Returns the group pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_gpool(); - auth_object = PoolObjectSQL::GROUP; - }; - - /* -------------------------------------------------------------------- */ + GroupPoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -371,17 +249,7 @@ public: class UserPoolInfo: public RequestManagerPoolInfoFilter { public: - UserPoolInfo(): - RequestManagerPoolInfoFilter("one.userpool.info", - "Returns the user pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_upool(); - auth_object = PoolObjectSQL::USER; - }; - - /* -------------------------------------------------------------------- */ + UserPoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -393,17 +261,7 @@ public: class DatastorePoolInfo: public RequestManagerPoolInfoFilter { public: - DatastorePoolInfo(): - RequestManagerPoolInfoFilter("one.datastorepool.info", - "Returns the datastore pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_dspool(); - auth_object = PoolObjectSQL::DATASTORE; - }; - - /* -------------------------------------------------------------------- */ + DatastorePoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -415,17 +273,7 @@ public: class ClusterPoolInfo: public RequestManagerPoolInfoFilter { public: - ClusterPoolInfo(): - RequestManagerPoolInfoFilter("one.clusterpool.info", - "Returns the cluster pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_clpool(); - auth_object = PoolObjectSQL::CLUSTER; - }; - - /* -------------------------------------------------------------------- */ + ClusterPoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -437,17 +285,7 @@ public: class DocumentPoolInfo : public RequestManagerPoolInfoFilter { public: - DocumentPoolInfo(): - RequestManagerPoolInfoFilter("one.documentpool.info", - "Returns the generic document pool", - "A:siiii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_docpool(); - auth_object = PoolObjectSQL::DOCUMENT; - }; - - /* -------------------------------------------------------------------- */ + DocumentPoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -459,17 +297,7 @@ public: class ZonePoolInfo : public RequestManagerPoolInfoFilter { public: - ZonePoolInfo(): - RequestManagerPoolInfoFilter("one.zonepool.info", - "Returns the zone pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_zonepool(); - auth_object = PoolObjectSQL::ZONE; - }; - - /* -------------------------------------------------------------------- */ + ZonePoolInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; @@ -481,15 +309,7 @@ public: class SecurityGroupPoolInfo : public RequestManagerPoolInfoFilter { public: - SecurityGroupPoolInfo(): - RequestManagerPoolInfoFilter("one.secgrouppool.info", - "Returns the security group pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_secgrouppool(); - auth_object = PoolObjectSQL::SECGROUP; - }; + SecurityGroupPoolInfo(); }; /* ------------------------------------------------------------------------- */ @@ -498,15 +318,7 @@ public: class VdcPoolInfo : public RequestManagerPoolInfoFilter { public: - VdcPoolInfo(): - RequestManagerPoolInfoFilter("one.vdcpool.info", - "Returns the VDC pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vdcpool(); - auth_object = PoolObjectSQL::VDC; - }; + VdcPoolInfo(); void request_execute(xmlrpc_c::paramList const& pl, RequestAttributes& att) override; }; @@ -517,15 +329,7 @@ public: class VirtualRouterPoolInfo : public RequestManagerPoolInfoFilter { public: - VirtualRouterPoolInfo(): - RequestManagerPoolInfoFilter("one.vrouterpool.info", - "Returns the virtual router pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vrouterpool(); - auth_object = PoolObjectSQL::VROUTER; - }; + VirtualRouterPoolInfo(); }; /* -------------------------------------------------------------------------- */ @@ -534,15 +338,7 @@ public: class MarketPlacePoolInfo : public RequestManagerPoolInfoFilter { public: - MarketPlacePoolInfo(): - RequestManagerPoolInfoFilter("one.marketpool.info", - "Returns the marketplace pool", - "A:s") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_marketpool(); - auth_object = PoolObjectSQL::MARKETPLACE; - }; + MarketPlacePoolInfo(); void request_execute(xmlrpc_c::paramList const& pl, RequestAttributes& att) override; }; @@ -553,15 +349,7 @@ public: class MarketPlaceAppPoolInfo : public RequestManagerPoolInfoFilter { public: - MarketPlaceAppPoolInfo(): - RequestManagerPoolInfoFilter("one.marketapppool.info", - "Returns the market place pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_apppool(); - auth_object = PoolObjectSQL::MARKETPLACEAPP; - }; + MarketPlaceAppPoolInfo(); }; /* ------------------------------------------------------------------------- */ @@ -570,15 +358,7 @@ public: class VMGroupPoolInfo : public RequestManagerPoolInfoFilter { public: - VMGroupPoolInfo(): - RequestManagerPoolInfoFilter("one.vmgrouppool.info", - "Returns the vm group pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vmgrouppool(); - auth_object = PoolObjectSQL::VMGROUP; - }; + VMGroupPoolInfo(); }; /* ------------------------------------------------------------------------- */ @@ -587,17 +367,7 @@ public: class HookPoolInfo : public RequestManagerPoolInfoFilter { public: - HookPoolInfo(): - RequestManagerPoolInfoFilter("one.hookpool.info", - "Returns the hook pool", - "A:siii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_hkpool(); - auth_object = PoolObjectSQL::HOOK; - }; - - ~HookPoolInfo(){}; + HookPoolInfo(); }; /* ------------------------------------------------------------------------- */ @@ -606,17 +376,7 @@ public: class HookLogInfo : public RequestManagerPoolInfoFilter { public: - HookLogInfo(): - RequestManagerPoolInfoFilter("one.hooklog.info", - "Returns the hook pool log info", - "A:siiii") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_hkpool(); - auth_object = PoolObjectSQL::HOOK; - }; - - ~HookLogInfo(){}; + HookLogInfo(); void request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) override; diff --git a/include/RequestManagerRename.h b/include/RequestManagerRename.h index e45fda3c8f..ecaa6432f6 100644 --- a/include/RequestManagerRename.h +++ b/include/RequestManagerRename.h @@ -19,6 +19,24 @@ #include "Request.h" #include "Nebula.h" +#include "ClusterPool.h" +#include "DatastorePool.h" +#include "DocumentPool.h" +#include "HookPool.h" +#include "HostPool.h" +#include "ImagePool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "VdcPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" +#include "ZonePool.h" + using namespace std; @@ -39,7 +57,7 @@ protected: auth_op = AuthRequest::MANAGE; }; - ~RequestManagerRename(){}; + ~RequestManagerRename() = default; /* -------------------------------------------------------------------- */ @@ -164,7 +182,7 @@ public: auth_object = PoolObjectSQL::TEMPLATE; }; - ~TemplateRename(){}; + ~TemplateRename() = default; int exist(const string& name, int uid) override { @@ -187,7 +205,7 @@ public: auth_object = PoolObjectSQL::VNTEMPLATE; }; - ~VirtualNetworkTemplateRename(){}; + ~VirtualNetworkTemplateRename() = default; int exist(const string& name, int uid) override { @@ -210,7 +228,7 @@ public: auth_object = PoolObjectSQL::NET; }; - ~VirtualNetworkRename(){}; + ~VirtualNetworkRename() = default; int exist(const string& name, int uid) override { @@ -232,7 +250,7 @@ public: auth_object = PoolObjectSQL::IMAGE; }; - ~ImageRename(){}; + ~ImageRename() = default; int exist(const string& name, int uid) override { @@ -254,7 +272,7 @@ public: auth_object = PoolObjectSQL::DOCUMENT; }; - ~DocumentRename(){}; + ~DocumentRename() = default; int exist(const string& name, int uid) override { @@ -276,7 +294,7 @@ public: auth_object = PoolObjectSQL::CLUSTER; }; - ~ClusterRename(){}; + ~ClusterRename() = default; int exist(const string& name, int uid) override { @@ -300,7 +318,7 @@ public: auth_object = PoolObjectSQL::DATASTORE; }; - ~DatastoreRename(){}; + ~DatastoreRename() = default; int exist(const string& name, int uid) override { @@ -325,8 +343,7 @@ public: auth_op = AuthRequest::ADMIN; }; - - ~HostRename(){}; + ~HostRename() = default; int exist(const string& name, int uid) override { @@ -350,7 +367,7 @@ public: auth_object = PoolObjectSQL::ZONE; }; - ~ZoneRename(){}; + ~ZoneRename() = default; int exist(const string& name, int uid) override { @@ -372,7 +389,7 @@ public: auth_object = PoolObjectSQL::SECGROUP; }; - ~SecurityGroupRename(){}; + ~SecurityGroupRename() = default; int exist(const string& name, int uid) override { @@ -394,7 +411,7 @@ public: auth_object = PoolObjectSQL::VDC; }; - ~VdcRename(){}; + ~VdcRename() = default; int exist(const string& name, int uid) override { @@ -416,7 +433,7 @@ public: auth_object = PoolObjectSQL::VROUTER; }; - ~VirtualRouterRename(){}; + ~VirtualRouterRename() = default; int exist(const string& name, int uid) override { @@ -438,7 +455,7 @@ public: auth_object = PoolObjectSQL::MARKETPLACE; }; - ~MarketPlaceRename(){}; + ~MarketPlaceRename() = default; int exist(const string& name, int uid) override { @@ -462,7 +479,7 @@ public: auth_object = PoolObjectSQL::MARKETPLACEAPP; }; - ~MarketPlaceAppRename(){}; + ~MarketPlaceAppRename() = default; int exist(const string& name, int uid) override { @@ -484,7 +501,7 @@ public: auth_object = PoolObjectSQL::VMGROUP; }; - ~VMGroupRename(){}; + ~VMGroupRename() = default; int exist(const string& name, int uid) override { @@ -506,7 +523,7 @@ public: auth_object = PoolObjectSQL::HOOK; }; - ~HookRename(){}; + ~HookRename() = default; int exist(const string& name, int uid) { diff --git a/include/RequestManagerSecurityGroup.h b/include/RequestManagerSecurityGroup.h index dbb28bdeca..3c55127739 100644 --- a/include/RequestManagerSecurityGroup.h +++ b/include/RequestManagerSecurityGroup.h @@ -18,22 +18,13 @@ #define REQUEST_MANAGER_SECURITY_GROUP_H_ #include "Request.h" -#include "Nebula.h" class SecurityGroupCommit : public Request { public: - SecurityGroupCommit() : Request("one.secgroup.commit", "A:sib", - "Commit security group changes to VMs") - { - Nebula& nd = Nebula::instance(); - pool = nd.get_secgrouppool(); + SecurityGroupCommit(); - auth_object = PoolObjectSQL::SECGROUP; - auth_op = AuthRequest::MANAGE; - }; - - ~SecurityGroupCommit(){}; + ~SecurityGroupCommit() = default; void request_execute(xmlrpc_c::paramList const& pl, RequestAttributes& att) override; }; diff --git a/include/RequestManagerUpdateTemplate.h b/include/RequestManagerUpdateTemplate.h index 6f622c1cc2..10fbf77440 100644 --- a/include/RequestManagerUpdateTemplate.h +++ b/include/RequestManagerUpdateTemplate.h @@ -20,6 +20,24 @@ #include "Request.h" #include "Nebula.h" +#include "ClusterPool.h" +#include "DatastorePool.h" +#include "DocumentPool.h" +#include "HookPool.h" +#include "HostPool.h" +#include "ImagePool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "VdcPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" +#include "ZonePool.h" + using namespace std; /* ------------------------------------------------------------------------- */ diff --git a/include/RequestManagerVMTemplate.h b/include/RequestManagerVMTemplate.h index 4964ccb3a7..8477e913d4 100644 --- a/include/RequestManagerVMTemplate.h +++ b/include/RequestManagerVMTemplate.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "VMTemplatePool.h" using namespace std; diff --git a/include/RequestManagerVNTemplate.h b/include/RequestManagerVNTemplate.h index b3b1b372d7..c5d227c35a 100644 --- a/include/RequestManagerVNTemplate.h +++ b/include/RequestManagerVNTemplate.h @@ -18,7 +18,6 @@ #define REQUEST_MANAGER_VN_TEMPLATE_H #include "Request.h" -#include "Nebula.h" using namespace std; @@ -31,18 +30,9 @@ class RequestManagerVNTemplate: public Request protected: RequestManagerVNTemplate(const string& method_name, const string& help, - const string& params) - :Request(method_name,params,help) - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vntpool(); + const string& params); - auth_object = PoolObjectSQL::VNTEMPLATE; - }; - - ~RequestManagerVNTemplate(){}; - - /* -------------------------------------------------------------------- */ + ~RequestManagerVNTemplate() = default; virtual void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) = 0; @@ -61,7 +51,7 @@ public: auth_op = AuthRequest::USE; }; - ~VNTemplateInstantiate(){}; + ~VNTemplateInstantiate() = default; /** * Instantiates the VN Template, checking permissions, quotas, etc diff --git a/include/RequestManagerVdc.h b/include/RequestManagerVdc.h index 06b77b4c9b..2c8716ddf8 100644 --- a/include/RequestManagerVdc.h +++ b/include/RequestManagerVdc.h @@ -19,6 +19,11 @@ #include "Request.h" #include "Nebula.h" +#include "ClusterPool.h" +#include "HostPool.h" +#include "VdcPool.h" +#include "VirtualNetworkPool.h" +#include "ZonePool.h" using namespace std; @@ -67,7 +72,7 @@ public: VdcAddGroup():VdcEditGroup("one.vdc.addgroup", "Adds a group to the VDC", "A:sii", true){}; - ~VdcAddGroup(){}; + ~VdcAddGroup() = default; int edit_group( Vdc* vdc, int group_id, string& error_msg) override; @@ -82,7 +87,7 @@ public: VdcDelGroup():VdcEditGroup("one.vdc.delgroup","Deletes a group from the VDC", "A:sii", false){}; - ~VdcDelGroup(){}; + ~VdcDelGroup() = default; int edit_group( Vdc* vdc, int group_id, string& error_msg) override; @@ -141,7 +146,7 @@ public: "Adds a cluster to the VDC", "A:siii", true, Nebula::instance().get_clpool(), PoolObjectSQL::CLUSTER){}; - ~VdcAddCluster(){}; + ~VdcAddCluster() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; @@ -156,7 +161,7 @@ public: "Deletes a cluster from the VDC", "A:siii", false, Nebula::instance().get_clpool(), PoolObjectSQL::CLUSTER){}; - ~VdcDelCluster(){}; + ~VdcDelCluster() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; @@ -170,7 +175,7 @@ public: VdcAddHost(): VdcEditResource("one.vdc.addhost", "Adds a host to the VDC", "A:siii", true, Nebula::instance().get_hpool(), PoolObjectSQL::HOST){}; - ~VdcAddHost(){}; + ~VdcAddHost() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; @@ -184,7 +189,7 @@ public: VdcDelHost():VdcEditResource("one.vdc.delhost", "Deletes a host from the VDC", "A:siii", false, Nebula::instance().get_hpool(), PoolObjectSQL::HOST){}; - ~VdcDelHost(){}; + ~VdcDelHost() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; @@ -199,7 +204,7 @@ public: "Adds a datastore to the VDC", "A:siii", true, Nebula::instance().get_dspool(), PoolObjectSQL::DATASTORE){}; - ~VdcAddDatastore(){}; + ~VdcAddDatastore() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; @@ -214,7 +219,7 @@ public: "Deletes a datastore from the VDC", "A:siii", false, Nebula::instance().get_dspool(), PoolObjectSQL::DATASTORE){}; - ~VdcDelDatastore(){}; + ~VdcDelDatastore() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; @@ -229,7 +234,7 @@ public: "Adds a virtual network to the VDC", "A:siii", true, Nebula::instance().get_vnpool(), PoolObjectSQL::NET){}; - ~VdcAddVNet(){}; + ~VdcAddVNet() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; @@ -244,7 +249,7 @@ public: "Deletes a virtual network from the VDC", "A:siii", false, Nebula::instance().get_vnpool(), PoolObjectSQL::NET){}; - ~VdcDelVNet(){}; + ~VdcDelVNet() = default; int edit_resource(Vdc* vdc, int zone_id, int res_id, string& error_msg) override; }; diff --git a/include/RequestManagerVirtualMachine.h b/include/RequestManagerVirtualMachine.h index 4bfd600aa1..6299945646 100644 --- a/include/RequestManagerVirtualMachine.h +++ b/include/RequestManagerVirtualMachine.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "VirtualMachinePool.h" using namespace std; @@ -535,7 +536,7 @@ public: VirtualMachineDiskSnapshotRename(): RequestManagerVirtualMachine("one.vm.disksnapshotrename", "Rename a disk snapshot", - "A:siiis") + "A:siiis") { vm_action = VMActions::DISK_SNAPSHOT_RENAME_ACTION; } diff --git a/include/RequestManagerVirtualNetwork.h b/include/RequestManagerVirtualNetwork.h index a524fa471f..2b3cd75aa0 100644 --- a/include/RequestManagerVirtualNetwork.h +++ b/include/RequestManagerVirtualNetwork.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "VirtualNetworkPool.h" using namespace std; diff --git a/include/RequestManagerVirtualRouter.h b/include/RequestManagerVirtualRouter.h index abb97a2584..f2d707f808 100644 --- a/include/RequestManagerVirtualRouter.h +++ b/include/RequestManagerVirtualRouter.h @@ -18,7 +18,6 @@ #define REQUEST_MANAGER_VIRTUAL_ROUTER_H #include "Request.h" -#include "Nebula.h" using namespace std; @@ -30,20 +29,10 @@ class RequestManagerVirtualRouter: public Request { protected: RequestManagerVirtualRouter(const string& method_name, - const string& help, - const string& params) - :Request(method_name,params,help) - { - Nebula& nd = Nebula::instance(); - pool = nd.get_vrouterpool(); + const string& help, + const string& params); - auth_object = PoolObjectSQL::VROUTER; - auth_op = AuthRequest::MANAGE; - }; - - ~RequestManagerVirtualRouter(){}; - - /* -------------------------------------------------------------------- */ + ~RequestManagerVirtualRouter() = default; virtual void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) = 0; @@ -59,7 +48,7 @@ public: "one.vrouter.instantiate", "Instantiates a new virtual machine " "associated to a virtual router", "A:siiisbs") { } - ~VirtualRouterInstantiate(){}; + ~VirtualRouterInstantiate() = default; void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) override; @@ -76,7 +65,7 @@ public: "Attaches a new NIC to the virtual router, and its virtual machines", "A:sis") { } - ~VirtualRouterAttachNic(){}; + ~VirtualRouterAttachNic() = default; void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) override; @@ -92,7 +81,7 @@ public: VirtualRouterDetachNic():RequestManagerVirtualRouter("one.vrouter.detachnic", "Detaches a NIC from a virtual router, and its virtual machines","A:sii") { } - ~VirtualRouterDetachNic(){}; + ~VirtualRouterDetachNic() = default; void request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) override; diff --git a/include/RequestManagerZone.h b/include/RequestManagerZone.h index e4b9bf10d8..3d064cbb9f 100644 --- a/include/RequestManagerZone.h +++ b/include/RequestManagerZone.h @@ -19,6 +19,7 @@ #include "Request.h" #include "Nebula.h" +#include "ZonePool.h" using namespace std; diff --git a/include/SystemDB.h b/include/SystemDB.h index 02580da3b2..2ee639f70e 100644 --- a/include/SystemDB.h +++ b/include/SystemDB.h @@ -17,10 +17,10 @@ #ifndef SYSTEM_DB_H_ #define SYSTEM_DB_H_ -#include "SqlDB.h" #include "Callbackable.h" class Nebula; +class SqlDB; /** * This class represents the OpenNebula core system data tables: diff --git a/include/Template.h b/include/Template.h index 49e48fc92f..2667f718c2 100644 --- a/include/Template.h +++ b/include/Template.h @@ -17,7 +17,6 @@ #ifndef TEMPLATE_H_ #define TEMPLATE_H_ -#include #include #include #include diff --git a/include/User.h b/include/User.h index e536dd00c6..1a18919cc9 100644 --- a/include/User.h +++ b/include/User.h @@ -17,7 +17,7 @@ #ifndef USER_H_ #define USER_H_ -#include "PoolSQL.h" +#include "PoolObjectSQL.h" #include "UserTemplate.h" #include "ObjectCollection.h" #include "QuotasSQL.h" diff --git a/include/VNTemplatePool.h b/include/VNTemplatePool.h index d152d51ae8..8650ccc62e 100644 --- a/include/VNTemplatePool.h +++ b/include/VNTemplatePool.h @@ -14,7 +14,7 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#ifndef VNetTEMPLATE_POOL_H_ +#ifndef VNTEMPLATE_POOL_H_ #define VNTEMPLATE_POOL_H_ #include "PoolSQL.h" diff --git a/include/VirtualMachine.h b/include/VirtualMachine.h index 13f050425e..e3b62e360e 100644 --- a/include/VirtualMachine.h +++ b/include/VirtualMachine.h @@ -21,13 +21,10 @@ #include "VirtualMachineDisk.h" #include "VirtualMachineNic.h" #include "VirtualMachineMonitorInfo.h" -#include "PoolSQL.h" +#include "PoolObjectSQL.h" #include "History.h" #include "Image.h" -#include "Log.h" #include "NebulaLog.h" -#include "NebulaUtil.h" -#include "Quotas.h" #include #include @@ -1447,22 +1444,7 @@ public: /** * Deletes the alias of the NIC that was in the process of being attached/detached */ - void delete_attach_alias(VirtualMachineNic *nic) - { - std::set a_ids; - - one_util::split_unique(nic->vector_value("ALIAS_IDS"), ',', a_ids); - - for (std::set::iterator it = a_ids.begin(); it != a_ids.end(); it++) - { - VirtualMachineNic * nic_a = nics.delete_nic(*it); - - if ( nic_a != 0) - { - obj_template->remove(nic_a->vector_attribute()); - } - } - } + void delete_attach_alias(VirtualMachineNic *nic); // ------------------------------------------------------------------------ // Disk Snapshot related functions diff --git a/include/VirtualMachineMonitorInfo.h b/include/VirtualMachineMonitorInfo.h index aa50c1a05c..fc5ae28462 100644 --- a/include/VirtualMachineMonitorInfo.h +++ b/include/VirtualMachineMonitorInfo.h @@ -19,7 +19,7 @@ #include "Template.h" -#include +#include using namespace std; diff --git a/include/VirtualMachineTemplate.h b/include/VirtualMachineTemplate.h index b32f6c955e..e7f7d9093a 100644 --- a/include/VirtualMachineTemplate.h +++ b/include/VirtualMachineTemplate.h @@ -19,7 +19,7 @@ #include "Template.h" -#include +#include using namespace std; diff --git a/src/acl/AclManager.cc b/src/acl/AclManager.cc index 77a9c5d487..0818657ce7 100644 --- a/src/acl/AclManager.cc +++ b/src/acl/AclManager.cc @@ -18,6 +18,7 @@ #include "AclManager.h" #include "PoolObjectAuth.h" +#include "SqlDB.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/authm/AuthManager.cc b/src/authm/AuthManager.cc index e62a5e2fbf..22f6b364f0 100644 --- a/src/authm/AuthManager.cc +++ b/src/authm/AuthManager.cc @@ -16,6 +16,7 @@ #include "AuthManager.h" #include "AuthRequest.h" +#include "AclManager.h" #include "NebulaUtil.h" #include "PoolObjectAuth.h" #include "Nebula.h" diff --git a/src/client/Client.cc b/src/client/Client.cc index 86c63a2897..3f321b90fb 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -15,16 +15,13 @@ /* -------------------------------------------------------------------------- */ #include "Client.h" +#include "NebulaLog.h" #include #include #include #include - -#include -#include -#include - +#include #include #include diff --git a/src/cluster/Cluster.cc b/src/cluster/Cluster.cc index ee87bdd6e4..6ffb5e5d26 100644 --- a/src/cluster/Cluster.cc +++ b/src/cluster/Cluster.cc @@ -14,16 +14,12 @@ /* limitations under the License. */ /* ------------------------------------------------------------------------ */ -#include -#include - -#include -#include - #include "Cluster.h" #include "GroupPool.h" #include "Nebula.h" +#include + const char * Cluster::table = "cluster_pool"; const char * Cluster::db_names = diff --git a/src/datastore/Datastore.cc b/src/datastore/Datastore.cc index 05edd2f003..dcd7f86a03 100644 --- a/src/datastore/Datastore.cc +++ b/src/datastore/Datastore.cc @@ -15,9 +15,11 @@ /* ------------------------------------------------------------------------ */ #include "Datastore.h" +#include "DatastorePool.h" #include "GroupPool.h" #include "NebulaLog.h" #include "Nebula.h" +#include "VirtualMachineDisk.h" const char * Datastore::table = "datastore_pool"; diff --git a/src/datastore/DatastorePool.cc b/src/datastore/DatastorePool.cc index 94feb1db25..5ffceb8c93 100644 --- a/src/datastore/DatastorePool.cc +++ b/src/datastore/DatastorePool.cc @@ -18,6 +18,8 @@ #include "Nebula.h" #include "NebulaLog.h" #include "DatastoreTemplate.h" +#include "ClusterPool.h" +#include "ImageManager.h" #include diff --git a/src/group/Group.cc b/src/group/Group.cc index 039d93343a..4bd63b3502 100644 --- a/src/group/Group.cc +++ b/src/group/Group.cc @@ -14,14 +14,11 @@ /* limitations under the License. */ /* ------------------------------------------------------------------------ */ -#include -#include - -#include -#include - #include "Group.h" #include "Nebula.h" +#include "AclManager.h" + +#include const char * Group::table = "group_pool"; diff --git a/src/hm/Hook.cc b/src/hm/Hook.cc index 822c4c9ee9..5a7539cc08 100644 --- a/src/hm/Hook.cc +++ b/src/hm/Hook.cc @@ -16,6 +16,7 @@ #include "Hook.h" #include "Nebula.h" +#include "HookAPI.h" #include "HookImplementation.h" #include "HookStateHost.h" #include "HookStateVM.h" diff --git a/src/host/Host.cc b/src/host/Host.cc index fa95688fc0..4ebe494905 100644 --- a/src/host/Host.cc +++ b/src/host/Host.cc @@ -14,14 +14,13 @@ /* limitations under the License. */ /* ------------------------------------------------------------------------ */ -#include -#include - -#include -#include - #include "Host.h" #include "Nebula.h" +#include "ClusterPool.h" +#include "InformationManager.h" +#include "VirtualMachinePool.h" + +#include /* ************************************************************************ */ /* Host :: Constructor/Destructor */ diff --git a/src/host/HostPool.cc b/src/host/HostPool.cc index 4cce71463d..28fc6c85ce 100644 --- a/src/host/HostPool.cc +++ b/src/host/HostPool.cc @@ -24,6 +24,7 @@ #include "Nebula.h" #include "HostPool.h" #include "HookStateHost.h" +#include "HookManager.h" #include "NebulaLog.h" #include "GroupPool.h" #include "ClusterPool.h" diff --git a/src/im/InformationManager.cc b/src/im/InformationManager.cc index 88a5fa6af8..c4f896c77b 100644 --- a/src/im/InformationManager.cc +++ b/src/im/InformationManager.cc @@ -17,6 +17,8 @@ #include "InformationManager.h" #include "Cluster.h" #include "Nebula.h" +#include "HostPool.h" +#include "RaftManager.h" #include #include diff --git a/src/im/MonitorThread.cc b/src/im/MonitorThread.cc index b943a9557e..dfaa4f87b0 100644 --- a/src/im/MonitorThread.cc +++ b/src/im/MonitorThread.cc @@ -22,6 +22,10 @@ #include "Nebula.h" #include "NebulaUtil.h" +#include "DatastorePool.h" +#include "HostPool.h" +#include "LifeCycleManager.h" +#include "VirtualMachineManager.h" using namespace std; diff --git a/src/im_mad/collectd/OpenNebulaDriver.cc b/src/im_mad/collectd/OpenNebulaDriver.cc index 29645860c3..cdfd646183 100644 --- a/src/im_mad/collectd/OpenNebulaDriver.cc +++ b/src/im_mad/collectd/OpenNebulaDriver.cc @@ -14,6 +14,9 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ +#include "OpenNebulaDriver.h" +#include "ListenerThread.h" + #include #include @@ -23,10 +26,7 @@ #include #include #include -#include - -#include "OpenNebulaDriver.h" -#include "ListenerThread.h" +#include /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/image/Image.cc b/src/image/Image.cc index 76b88b498c..4d9b181c61 100644 --- a/src/image/Image.cc +++ b/src/image/Image.cc @@ -14,14 +14,6 @@ /* limitations under the License. */ /* ------------------------------------------------------------------------ */ -#include -#include - -#include -#include -#include -#include - #include "Image.h" #include "ImagePool.h" @@ -31,6 +23,11 @@ #include "LifeCycleManager.h" #include "Nebula.h" +#include +#include +#include + + #define TO_UPPER(S) transform(S.begin(),S.end(),S.begin(),(int(*)(int))toupper) /* ************************************************************************ */ diff --git a/src/image/ImageManager.cc b/src/image/ImageManager.cc index 1671b4cabd..34d96ba8a9 100644 --- a/src/image/ImageManager.cc +++ b/src/image/ImageManager.cc @@ -17,6 +17,8 @@ #include "ImageManager.h" #include "ImagePool.h" #include "Nebula.h" +#include "DatastorePool.h" +#include "RaftManager.h" const char * ImageManager::image_driver_name = "image_exe"; diff --git a/src/image/ImageManagerActions.cc b/src/image/ImageManagerActions.cc index d8e14ae89d..9aa84270f2 100644 --- a/src/image/ImageManagerActions.cc +++ b/src/image/ImageManagerActions.cc @@ -20,7 +20,8 @@ #include "SyncRequest.h" #include "Template.h" #include "Nebula.h" - +#include "DatastorePool.h" +#include "VirtualMachinePool.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ @@ -844,7 +845,7 @@ int ImageManager::register_image(int iid, oss << "Using source " << source << " from template for image " << img->get_name(); } - else if ( img->is_saving() || img->get_type() == Image::DATABLOCK + else if ( img->is_saving() || img->get_type() == Image::DATABLOCK || img->get_type() == Image::OS) { imd->mkfs(img->get_oid(), *drv_msg); @@ -929,7 +930,7 @@ int ImageManager::stat_image(Template* img_tmpl, << one_util::xml_escape(res) << ""; break; - + case Image::OS: img_tmpl->get("SOURCE", res); diff --git a/src/image/ImageManagerDriver.cc b/src/image/ImageManagerDriver.cc index 0c844a0ece..ec90a61323 100644 --- a/src/image/ImageManagerDriver.cc +++ b/src/image/ImageManagerDriver.cc @@ -15,10 +15,14 @@ /* -------------------------------------------------------------------------- */ #include "ImageManagerDriver.h" +#include "ImageManager.h" #include "ImagePool.h" #include "NebulaLog.h" #include "Quotas.h" +#include "VirtualMachinePool.h" +#include "VirtualMachineManagerDriver.h" +#include "TransferManager.h" #include "Nebula.h" #include diff --git a/src/image/ImagePool.cc b/src/image/ImagePool.cc index ab87e0432f..21ec4fb447 100644 --- a/src/image/ImagePool.cc +++ b/src/image/ImagePool.cc @@ -23,6 +23,9 @@ #include "AuthManager.h" #include "Nebula.h" #include "PoolObjectAuth.h" +#include "ImageManager.h" +#include "VirtualMachineDisk.h" +#include "DatastorePool.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/log/Log.cc b/src/log/Log.cc index 4e280c2fe1..d89062ffc1 100644 --- a/src/log/Log.cc +++ b/src/log/Log.cc @@ -16,7 +16,6 @@ #include "Log.h" -#include #include #include #include diff --git a/src/mad/Mad.cc b/src/mad/Mad.cc index adf6e48898..5761e379b1 100644 --- a/src/mad/Mad.cc +++ b/src/mad/Mad.cc @@ -14,20 +14,18 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include +#include "Mad.h" +#include "NebulaLog.h" + +#include "Nebula.h" + #include #include #include #include #include -#include - -#include "Mad.h" -#include "NebulaLog.h" - -#include "Nebula.h" - +#include #include diff --git a/src/market/MarketPlaceManager.cc b/src/market/MarketPlaceManager.cc index 4e4d952ff2..6d952fa9f3 100644 --- a/src/market/MarketPlaceManager.cc +++ b/src/market/MarketPlaceManager.cc @@ -20,6 +20,7 @@ #include "MarketPlaceManagerDriver.h" #include "Nebula.h" +#include "RaftManager.h" const char * MarketPlaceManager::market_driver_name = "market_exe"; diff --git a/src/market/MarketPlaceManagerActions.cc b/src/market/MarketPlaceManagerActions.cc index 24a5d4ba16..97909fcb97 100644 --- a/src/market/MarketPlaceManagerActions.cc +++ b/src/market/MarketPlaceManagerActions.cc @@ -19,8 +19,8 @@ #include "MarketPlaceAppPool.h" #include "MarketPlaceManagerDriver.h" -#include "Image.h" -#include "Datastore.h" +#include "ImagePool.h" +#include "DatastorePool.h" #include "ImageManager.h" #include "NebulaLog.h" diff --git a/src/market/MarketPlaceManagerDriver.cc b/src/market/MarketPlaceManagerDriver.cc index a8756e91d9..00a1c62068 100644 --- a/src/market/MarketPlaceManagerDriver.cc +++ b/src/market/MarketPlaceManagerDriver.cc @@ -15,7 +15,11 @@ /* -------------------------------------------------------------------------- */ #include "MarketPlaceManagerDriver.h" -#include "Nebula.h" +#include "MarketPlace.h" +#include "MarketPlaceAppPool.h" +#include "MarketPlaceManager.h" +#include "MarketPlacePool.h" +#include "NebulaLog.h" #include /* ************************************************************************** */ @@ -169,7 +173,7 @@ static void monitor_action( apps_mp.erase(app_id); } - if (num > 0) // num = 0 when no APP information in monitor data + if (num > 0) // num = 0 when no APP information in monitor data { for (set::iterator i = apps_mp.begin(); i != apps_mp.end(); ++i) { diff --git a/src/nebula/Nebula.cc b/src/nebula/Nebula.cc index f07fbd90eb..1c0d2942b4 100644 --- a/src/nebula/Nebula.cc +++ b/src/nebula/Nebula.cc @@ -20,6 +20,43 @@ #include "SqliteDB.h" #include "MySqlDB.h" #include "Client.h" +#include "LogDB.h" +#include "SystemDB.h" + +#include "ClusterPool.h" +#include "DatastorePool.h" +#include "DocumentPool.h" +#include "GroupPool.h" +#include "HookPool.h" +#include "HostPool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "UserPool.h" +#include "VdcPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" +#include "ZonePool.h" + +#include "AclManager.h" +#include "AuthManager.h" +#include "DispatchManager.h" +#include "FedReplicaManager.h" +#include "HookManager.h" +#include "HookLog.h" +#include "ImageManager.h" +#include "InformationManager.h" +#include "IPAMManager.h" +#include "LifeCycleManager.h" +#include "MarketPlaceManager.h" +#include "RaftManager.h" +#include "RequestManager.h" +#include "TransferManager.h" +#include "VirtualMachineManager.h" #include #include @@ -41,6 +78,51 @@ using namespace std; /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ +Nebula::~Nebula() +{ + delete vmpool; + delete vnpool; + delete hpool; + delete upool; + delete ipool; + delete gpool; + delete tpool; + delete dspool; + delete clpool; + delete docpool; + delete zonepool; + delete secgrouppool; + delete vdcpool; + delete vrouterpool; + delete marketpool; + delete apppool; + delete vmgrouppool; + delete vmm; + delete lcm; + delete im; + delete tm; + delete dm; + delete rm; + delete hm; + delete hl; + delete authm; + delete aclm; + delete imagem; + delete marketm; + delete ipamm; + delete raftm; + delete frm; + delete nebula_configuration; + delete logdb; + delete fed_logdb; + delete system_db; + delete vntpool; + delete hkpool; +}; + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + void Nebula::start(bool bootstrap_only) { int rc; diff --git a/src/nebula/NebulaTemplate.cc b/src/nebula/NebulaTemplate.cc index 31d9af7727..35213b148b 100644 --- a/src/nebula/NebulaTemplate.cc +++ b/src/nebula/NebulaTemplate.cc @@ -21,6 +21,7 @@ #include #include +#include using namespace std; diff --git a/src/parsers/vm_var_syntax.h b/src/parsers/vm_var_syntax.h index 694f8e506c..894d92b455 100644 --- a/src/parsers/vm_var_syntax.h +++ b/src/parsers/vm_var_syntax.h @@ -57,6 +57,8 @@ extern int vm_var_debug; #include "VirtualMachinePool.h" #include "VirtualMachine.h" +#include "VirtualNetworkPool.h" +#include "ImagePool.h" #include "Nebula.h" #include "mem_collector.h" diff --git a/src/pool/PoolObjectSQL.cc b/src/pool/PoolObjectSQL.cc index c8aa9e74b3..8e2e69953f 100644 --- a/src/pool/PoolObjectSQL.cc +++ b/src/pool/PoolObjectSQL.cc @@ -19,6 +19,7 @@ #include "NebulaUtil.h" #include "Nebula.h" #include "Clusterable.h" +#include "ClusterableSingle.h" const string PoolObjectSQL::INVALID_NAME_CHARS = "&|:\\\";/'#{}$<>"; diff --git a/src/pool/PoolSQL.cc b/src/pool/PoolSQL.cc index 9148834baa..4d30bc1736 100644 --- a/src/pool/PoolSQL.cc +++ b/src/pool/PoolSQL.cc @@ -14,16 +14,14 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include - #include "PoolSQL.h" #include "RequestManagerPoolInfoFilter.h" +#include "AclManager.h" +#include "Nebula.h" +#include "ClusterPool.h" -#include +#include +#include /* ************************************************************************** */ /* PoolSQL constructor/destructor */ @@ -313,7 +311,7 @@ int PoolSQL::dump(string& oss, const string& root_elem_name, string_cb cb(1); - ostringstream oelem; + ostringstream oelem; oelem << "<" << root_elem_name << ">"; diff --git a/src/raft/FedReplicaManager.cc b/src/raft/FedReplicaManager.cc index 2f807304e6..b221cad007 100644 --- a/src/raft/FedReplicaManager.cc +++ b/src/raft/FedReplicaManager.cc @@ -18,6 +18,8 @@ #include "ReplicaThread.h" #include "Nebula.h" #include "Client.h" +#include "ZonePool.h" +#include "LogDB.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/raft/RaftManager.cc b/src/raft/RaftManager.cc index 275da4d5cc..df5436dd9a 100644 --- a/src/raft/RaftManager.cc +++ b/src/raft/RaftManager.cc @@ -14,12 +14,14 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include "Nebula.h" - #include "RaftManager.h" #include "FedReplicaManager.h" #include "ZoneServer.h" #include "Client.h" +#include "ZonePool.h" +#include "LogDB.h" +#include "AclManager.h" +#include "Nebula.h" #include diff --git a/src/raft/ReplicaThread.cc b/src/raft/ReplicaThread.cc index 8ead67a053..c1f9f2c8aa 100644 --- a/src/raft/ReplicaThread.cc +++ b/src/raft/ReplicaThread.cc @@ -14,14 +14,15 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include -#include - +#include "ReplicaThread.h" #include "LogDB.h" #include "RaftManager.h" -#include "ReplicaThread.h" #include "Nebula.h" #include "NebulaLog.h" +#include "FedReplicaManager.h" + +#include +#include // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- diff --git a/src/rm/Request.cc b/src/rm/Request.cc index bc5af147d7..14fd0aeb96 100644 --- a/src/rm/Request.cc +++ b/src/rm/Request.cc @@ -19,6 +19,9 @@ #include "Client.h" #include "PoolObjectAuth.h" +#include "HookAPI.h" +#include "HookManager.h" +#include "RaftManager.h" #include diff --git a/src/rm/RequestManager.cc b/src/rm/RequestManager.cc index 8c624d4bbb..1ad02bd241 100644 --- a/src/rm/RequestManager.cc +++ b/src/rm/RequestManager.cc @@ -64,7 +64,6 @@ #include #include #include -#include #include @@ -1240,3 +1239,19 @@ void RequestManager::register_xml_methods() /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ + +void RequestManager::finalize_action(const ActionRequest& ar) +{ + NebulaLog::log("ReM",Log::INFO,"Stopping Request Manager..."); + + pthread_cancel(rm_xml_server_thread); + + pthread_join(rm_xml_server_thread,0); + + NebulaLog::log("ReM",Log::INFO,"XML-RPC server stopped."); + + if (socket_fd != -1) + { + close(socket_fd); + } +} diff --git a/src/rm/RequestManagerAcl.cc b/src/rm/RequestManagerAcl.cc index 042579e249..7693093241 100644 --- a/src/rm/RequestManagerAcl.cc +++ b/src/rm/RequestManagerAcl.cc @@ -15,6 +15,7 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerAcl.h" +#include "AclManager.h" using namespace std; diff --git a/src/rm/RequestManagerAllocate.cc b/src/rm/RequestManagerAllocate.cc index 929ca3a6e9..f4628da2a6 100644 --- a/src/rm/RequestManagerAllocate.cc +++ b/src/rm/RequestManagerAllocate.cc @@ -22,6 +22,9 @@ #include "MarketPlaceAppPool.h" #include "VirtualMachineDisk.h" #include "HookPool.h" +#include "FedReplicaManager.h" +#include "ImageManager.h" +#include "MarketPlaceManager.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerChown.cc b/src/rm/RequestManagerChown.cc index 5330efaf74..4192445b89 100644 --- a/src/rm/RequestManagerChown.cc +++ b/src/rm/RequestManagerChown.cc @@ -17,8 +17,8 @@ #include "RequestManagerChown.h" #include "PoolObjectSQL.h" -#include "NebulaLog.h" #include "Nebula.h" +#include "VirtualMachinePool.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerClone.cc b/src/rm/RequestManagerClone.cc index 6d1fb0d7b5..5fd93e7ba8 100644 --- a/src/rm/RequestManagerClone.cc +++ b/src/rm/RequestManagerClone.cc @@ -20,6 +20,7 @@ #include "RequestManagerVMTemplate.h" #include "PoolObjectAuth.h" #include "Nebula.h" +#include "VirtualMachineDisk.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerCluster.cc b/src/rm/RequestManagerCluster.cc index 5027938256..23ef8af441 100644 --- a/src/rm/RequestManagerCluster.cc +++ b/src/rm/RequestManagerCluster.cc @@ -15,6 +15,7 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerCluster.h" +#include "HostPool.h" using namespace std; diff --git a/src/rm/RequestManagerDelete.cc b/src/rm/RequestManagerDelete.cc index 692c092022..a73479eb18 100644 --- a/src/rm/RequestManagerDelete.cc +++ b/src/rm/RequestManagerDelete.cc @@ -15,7 +15,31 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerDelete.h" +#include "Nebula.h" #include "NebulaUtil.h" +#include "VirtualMachineDisk.h" +#include "AclManager.h" +#include "AuthManager.h" +#include "FedReplicaManager.h" +#include "ImageManager.h" +#include "InformationManager.h" +#include "MarketPlaceManager.h" + +#include "ClusterPool.h" +#include "DocumentPool.h" +#include "HookPool.h" +#include "HostPool.h" +#include "ImagePool.h" +#include "MarketPlacePool.h" +#include "MarketPlaceAppPool.h" +#include "SecurityGroupPool.h" +#include "VdcPool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" +#include "ZonePool.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ @@ -50,6 +74,35 @@ static Request::ErrorCode delete_authorization(PoolSQL* pool, int oid, return Request::SUCCESS; } +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +RequestManagerDelete::RequestManagerDelete(const string& method_name, + const string& params, + const string& help) + : Request(method_name, params, help) +{ + auth_op = AuthRequest::MANAGE; + + Nebula& nd = Nebula::instance(); + clpool = nd.get_clpool(); + aclm = nd.get_aclm(); +}; + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +RequestManagerDelete::RequestManagerDelete(const string& method_name, + const string& help) + : Request(method_name, "A:si", help) +{ + auth_op = AuthRequest::MANAGE; + + Nebula& nd = Nebula::instance(); + clpool = nd.get_clpool(); + aclm = nd.get_aclm(); +}; + /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ @@ -86,44 +139,6 @@ void RequestManagerDelete::request_execute(xmlrpc_c::paramList const& paramList, } } -void ImageDelete::request_execute(xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - int oid = xmlrpc_c::value_int(paramList.getInt(1)); - - Image* img = static_cast(pool)->get_ro(oid); - - if (img == 0) - { - att.resp_id = oid; - failure_response(NO_EXISTS, att); - return; - } - - if (img->is_locked()) - { - att.auth_op = AuthRequest::ADMIN; - } - - //Save body before deleting for hooks. - img->to_xml(att.extra_xml); - - - img->unlock(); - - ErrorCode ec = delete_object(oid, false, att); - - if ( ec == SUCCESS ) - { - success_response(oid, att); - } - else - { - failure_response(ec, att); - } -} - - /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ @@ -208,6 +223,19 @@ int RequestManagerDelete::drop(PoolObjectSQL * object, bool recursive, /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ +TemplateDelete::TemplateDelete() + : RequestManagerDelete("one.template.delete", + "A:sib" + "Deletes a virtual machine template") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_tpool(); + auth_object = PoolObjectSQL::TEMPLATE; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + int TemplateDelete::drop(PoolObjectSQL * object, bool recursive, RequestAttributes& att) { @@ -267,280 +295,27 @@ int TemplateDelete::drop(PoolObjectSQL * object, bool recursive, /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ -int HostDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +VirtualNetworkTemplateDelete::VirtualNetworkTemplateDelete() + : RequestManagerDelete("one.vntemplate.delete", + "A:si", + "Deletes a virtual network template") { - Nebula& nd = Nebula::instance(); - InformationManager * im = nd.get_im(); - - std::string error; - - Host* host = static_cast(object); - - if ( host->get_share_running_vms() > 0 ) - { - att.resp_msg = "Can not remove a host with running VMs"; - - host->unlock(); - - return -1; - } - - string im_mad = host->get_im_mad(); - string name = host->get_name(); - int oid = host->get_oid(); - - int rc = RequestManagerDelete::drop(object, false, att); - - im->stop_monitor(oid, name, im_mad); - - if (rc != 0) - { - return rc; - } - - // Remove host from VDC - int zone_id = nd.get_zone_id(); - VdcPool * vdcpool = nd.get_vdcpool(); - - std::vector vdcs; - - vdcpool->list(vdcs); - - for (int vdcId : vdcs) - { - Vdc * vdc = vdcpool->get(vdcId); - - if ( vdc == 0 ) - { - continue; - } - - if ( vdc->del_host(zone_id, oid, error) == 0 ) - { - vdcpool->update(vdc); - } - - vdc->unlock(); - } - - return rc; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -int ImageDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) -{ - Nebula& nd = Nebula::instance(); - ImageManager * imagem = nd.get_imagem(); - - int oid = object->get_oid(); - - object->unlock(); - - return imagem->delete_image(oid, att.resp_msg); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -int GroupDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) -{ - int oid = object->get_oid(); - int rc = RequestManagerDelete::drop(object, false, att); - - if ( rc != 0 ) - { - return rc; - } - - aclm->del_gid_rules(oid); - - Nebula& nd = Nebula::instance(); - VdcPool * vdcpool = nd.get_vdcpool(); - - std::string error; - std::vector vdcs; - - vdcpool->list(vdcs); - - for (int vdcId : vdcs) - { - Vdc * vdc = vdcpool->get(vdcId); - - if ( vdc == 0 ) - { - continue; - } - - if ( vdc->del_group(oid, error) == 0 ) - { - vdcpool->update(vdc); - } - - vdc->unlock(); - } - - return rc; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -int DatastoreDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) -{ - int oid = object->get_oid(); - - int rc = RequestManagerDelete::drop(object, r, att); - - if (rc != 0) - { - return rc; - } - - // Remove datastore from vdc Nebula& nd = Nebula::instance(); - int zone_id = nd.get_zone_id(); - - VdcPool * vdcpool = nd.get_vdcpool(); - - std::string error; - std::vector vdcs; - - vdcpool->list(vdcs); - - for (int vdcId : vdcs) - { - Vdc * vdc = vdcpool->get(vdcId); - - if ( vdc == 0 ) - { - continue; - } - - if ( vdc->del_datastore(zone_id, oid, error) == 0 ) - { - vdcpool->update(vdc); - } - - vdc->unlock(); - } - - return rc; -} + pool = nd.get_vntpool(); + auth_object = PoolObjectSQL::VNTEMPLATE; +}; /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ -int ClusterDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +VirtualNetworkDelete::VirtualNetworkDelete() + : RequestManagerDelete("one.vn.delete", + "Deletes a virtual network") { - int oid = object->get_oid(); - int rc = RequestManagerDelete::drop(object, false, att); - - if (rc != 0) - { - return rc; - } - - aclm->del_cid_rules(oid); - - // Remove cluster from VDC Nebula& nd = Nebula::instance(); - int zone_id = nd.get_zone_id(); - - VdcPool * vdcpool = nd.get_vdcpool(); - - std::string error; - std::vector vdcs; - - vdcpool->list(vdcs); - - for (int vdcId : vdcs) - { - Vdc * vdc = vdcpool->get(vdcId); - - if ( vdc == 0 ) - { - continue; - } - - if ( vdc->del_cluster(zone_id, oid, error) == 0 ) - { - vdcpool->update(vdc); - } - - vdc->unlock(); - } - - return rc; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -int UserDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) -{ - User * user = static_cast(object); - - set group_set = user->get_groups(); - set::iterator it; - - int oid = user->get_oid(); - - if (oid == 0) - { - att.resp_msg = "oneadmin cannot be deleted."; - - object->unlock(); - return -1; - } - - int rc = pool->drop(object, att.resp_msg); - - object->unlock(); - - if ( rc == 0 ) - { - Group * group; - - for ( it = group_set.begin(); it != group_set.end(); it++ ) - { - group = gpool->get(*it); - - if( group == 0 ) - { - continue; - } - - group->del_user(oid); - gpool->update(group); - - group->unlock(); - } - - aclm->del_uid_rules(oid); - } - - return rc; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -int ZoneDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) -{ - int oid= object->get_oid(); - int rc = RequestManagerDelete::drop(object, false, att); - - if ( rc == 0 ) - { - aclm->del_zid_rules(oid); - } - - Nebula::instance().get_frm()->delete_zone(oid); - - return rc; -} + pool = nd.get_vnpool(); + auth_object = PoolObjectSQL::NET; +}; /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ @@ -649,6 +424,435 @@ int VirtualNetworkDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ +ImageDelete::ImageDelete() + : RequestManagerDelete("one.image.delete", "Deletes an image") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_ipool(); + auth_object = PoolObjectSQL::IMAGE; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void ImageDelete::request_execute(xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + int oid = xmlrpc_c::value_int(paramList.getInt(1)); + + Image* img = static_cast(pool)->get_ro(oid); + + if (img == 0) + { + att.resp_id = oid; + failure_response(NO_EXISTS, att); + return; + } + + if (img->is_locked()) + { + att.auth_op = AuthRequest::ADMIN; + } + + //Save body before deleting for hooks. + img->to_xml(att.extra_xml); + + + img->unlock(); + + ErrorCode ec = delete_object(oid, false, att); + + if ( ec == SUCCESS ) + { + success_response(oid, att); + } + else + { + failure_response(ec, att); + } +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int ImageDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + Nebula& nd = Nebula::instance(); + ImageManager * imagem = nd.get_imagem(); + + int oid = object->get_oid(); + + object->unlock(); + + return imagem->delete_image(oid, att.resp_msg); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +HostDelete::HostDelete() + : RequestManagerDelete("one.host.delete", "Deletes a host") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_hpool(); + auth_object = PoolObjectSQL::HOST; + auth_op = AuthRequest::ADMIN; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int HostDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + Nebula& nd = Nebula::instance(); + InformationManager * im = nd.get_im(); + + std::string error; + + Host* host = static_cast(object); + + if ( host->get_share_running_vms() > 0 ) + { + att.resp_msg = "Can not remove a host with running VMs"; + + host->unlock(); + + return -1; + } + + string im_mad = host->get_im_mad(); + string name = host->get_name(); + int oid = host->get_oid(); + + int rc = RequestManagerDelete::drop(object, false, att); + + im->stop_monitor(oid, name, im_mad); + + if (rc != 0) + { + return rc; + } + + // Remove host from VDC + int zone_id = nd.get_zone_id(); + VdcPool * vdcpool = nd.get_vdcpool(); + + std::vector vdcs; + + vdcpool->list(vdcs); + + for (int vdcId : vdcs) + { + Vdc * vdc = vdcpool->get(vdcId); + + if ( vdc == 0 ) + { + continue; + } + + if ( vdc->del_host(zone_id, oid, error) == 0 ) + { + vdcpool->update(vdc); + } + + vdc->unlock(); + } + + return rc; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +GroupDelete::GroupDelete() + : RequestManagerDelete("one.group.delete", "Deletes a group") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_gpool(); + + auth_object = PoolObjectSQL::GROUP; + auth_op = AuthRequest::ADMIN; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int GroupDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + int oid = object->get_oid(); + int rc = RequestManagerDelete::drop(object, false, att); + + if ( rc != 0 ) + { + return rc; + } + + aclm->del_gid_rules(oid); + + Nebula& nd = Nebula::instance(); + VdcPool * vdcpool = nd.get_vdcpool(); + + std::string error; + std::vector vdcs; + + vdcpool->list(vdcs); + + for (int vdcId : vdcs) + { + Vdc * vdc = vdcpool->get(vdcId); + + if ( vdc == 0 ) + { + continue; + } + + if ( vdc->del_group(oid, error) == 0 ) + { + vdcpool->update(vdc); + } + + vdc->unlock(); + } + + return rc; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +UserDelete::UserDelete() + : RequestManagerDelete("one.user.delete", "Deletes a user") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_upool(); + gpool = nd.get_gpool(); + + auth_object = PoolObjectSQL::USER; + auth_op = AuthRequest::ADMIN; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int UserDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + User * user = static_cast(object); + + set group_set = user->get_groups(); + set::iterator it; + + int oid = user->get_oid(); + + if (oid == 0) + { + att.resp_msg = "oneadmin cannot be deleted."; + + object->unlock(); + return -1; + } + + int rc = pool->drop(object, att.resp_msg); + + object->unlock(); + + if ( rc == 0 ) + { + Group * group; + + for ( it = group_set.begin(); it != group_set.end(); it++ ) + { + group = gpool->get(*it); + + if( group == 0 ) + { + continue; + } + + group->del_user(oid); + gpool->update(group); + + group->unlock(); + } + + aclm->del_uid_rules(oid); + } + + return rc; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +DatastoreDelete::DatastoreDelete() + : RequestManagerDelete("one.datastore.delete", "Deletes a datastore") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_dspool(); + auth_object = PoolObjectSQL::DATASTORE; + auth_op = AuthRequest::ADMIN; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int DatastoreDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + int oid = object->get_oid(); + + int rc = RequestManagerDelete::drop(object, r, att); + + if (rc != 0) + { + return rc; + } + + // Remove datastore from vdc + Nebula& nd = Nebula::instance(); + int zone_id = nd.get_zone_id(); + + VdcPool * vdcpool = nd.get_vdcpool(); + + std::string error; + std::vector vdcs; + + vdcpool->list(vdcs); + + for (int vdcId : vdcs) + { + Vdc * vdc = vdcpool->get(vdcId); + + if ( vdc == 0 ) + { + continue; + } + + if ( vdc->del_datastore(zone_id, oid, error) == 0 ) + { + vdcpool->update(vdc); + } + + vdc->unlock(); + } + + return rc; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +ClusterDelete::ClusterDelete() + : RequestManagerDelete("one.cluster.delete", "Deletes a cluster") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_clpool(); + + auth_object = PoolObjectSQL::CLUSTER; + auth_op = AuthRequest::ADMIN; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int ClusterDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + int oid = object->get_oid(); + int rc = RequestManagerDelete::drop(object, false, att); + + if (rc != 0) + { + return rc; + } + + aclm->del_cid_rules(oid); + + // Remove cluster from VDC + Nebula& nd = Nebula::instance(); + int zone_id = nd.get_zone_id(); + + VdcPool * vdcpool = nd.get_vdcpool(); + + std::string error; + std::vector vdcs; + + vdcpool->list(vdcs); + + for (int vdcId : vdcs) + { + Vdc * vdc = vdcpool->get(vdcId); + + if ( vdc == 0 ) + { + continue; + } + + if ( vdc->del_cluster(zone_id, oid, error) == 0 ) + { + vdcpool->update(vdc); + } + + vdc->unlock(); + } + + return rc; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +DocumentDelete::DocumentDelete() + : RequestManagerDelete("one.document.delete", + "Deletes a generic document") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_docpool(); + auth_object = PoolObjectSQL::DOCUMENT; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +ZoneDelete::ZoneDelete() + : RequestManagerDelete("one.zone.delete", "Deletes a zone") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_zonepool(); + auth_object = PoolObjectSQL::ZONE; + auth_op = AuthRequest::ADMIN; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int ZoneDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + int oid= object->get_oid(); + int rc = RequestManagerDelete::drop(object, false, att); + + if ( rc == 0 ) + { + aclm->del_zid_rules(oid); + } + + Nebula::instance().get_frm()->delete_zone(oid); + + return rc; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +SecurityGroupDelete::SecurityGroupDelete(): + RequestManagerDelete("one.secgroup.delete", + "Deletes a security group") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_secgrouppool(); + auth_object = PoolObjectSQL::SECGROUP; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + int SecurityGroupDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) { if (object->get_oid() == 0) @@ -677,6 +881,30 @@ int SecurityGroupDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ +VdcDelete::VdcDelete() + : RequestManagerDelete("one.vdc.delete", "Deletes a VDC") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vdcpool(); + auth_object = PoolObjectSQL::VDC; + auth_op = AuthRequest::ADMIN; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualRouterDelete::VirtualRouterDelete() + : RequestManagerDelete("one.vrouter.delete", + "Deletes a virtual router") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vrouterpool(); + auth_object = PoolObjectSQL::VROUTER; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + int VirtualRouterDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) { VirtualRouter * vr = static_cast(object); @@ -696,56 +924,14 @@ int VirtualRouterDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ -int MarketPlaceAppDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +MarketPlaceDelete::MarketPlaceDelete() + : RequestManagerDelete("one.market.delete", + "Deletes a marketplace") { - Nebula& nd = Nebula::instance(); - - MarketPlaceManager * marketm = nd.get_marketm(); - MarketPlacePool * marketpool = nd.get_marketpool(); - - MarketPlaceApp * app = static_cast(object); - - int mp_id = app->get_market_id(); - int zone_id = app->get_zone_id(); - int oid = app->get_oid(); - - app->unlock(); - - if ( zone_id != nd.get_zone_id() ) - { - std::ostringstream oss; - - oss << "Marketapp can only be deleted from zone " << zone_id; - att.resp_msg = oss.str(); - - return -1; - } - - MarketPlace * mp = marketpool->get_ro(mp_id); - - if ( mp == 0 ) - { - att.resp_msg = "Cannot find associated MARKETPLACE"; - return -1; - } - - std::string mp_name = mp->get_name(); - std::string mp_data; - - if ( !mp->is_action_supported(MarketPlaceApp::DELETE) ) - { - att.resp_msg = "Delete disabled for market: " + mp_name; - mp->unlock(); - - return -1; - } - - mp->to_xml(mp_data); - - mp->unlock(); - - return marketm->delete_app(oid, mp_data, att.resp_msg); -} + Nebula& nd = Nebula::instance(); + pool = nd.get_marketpool(); + auth_object = PoolObjectSQL::MARKETPLACE; +}; /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ @@ -835,3 +1021,92 @@ int MarketPlaceDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& a /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ +MarketPlaceAppDelete::MarketPlaceAppDelete() + : RequestManagerDelete("one.marketapp.delete", + "Deletes a marketplace app") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_apppool(); + auth_object = PoolObjectSQL::MARKETPLACEAPP; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +int MarketPlaceAppDelete::drop(PoolObjectSQL * object, bool r, RequestAttributes& att) +{ + Nebula& nd = Nebula::instance(); + + MarketPlaceManager * marketm = nd.get_marketm(); + MarketPlacePool * marketpool = nd.get_marketpool(); + + MarketPlaceApp * app = static_cast(object); + + int mp_id = app->get_market_id(); + int zone_id = app->get_zone_id(); + int oid = app->get_oid(); + + app->unlock(); + + if ( zone_id != nd.get_zone_id() ) + { + std::ostringstream oss; + + oss << "Marketapp can only be deleted from zone " << zone_id; + att.resp_msg = oss.str(); + + return -1; + } + + MarketPlace * mp = marketpool->get_ro(mp_id); + + if ( mp == 0 ) + { + att.resp_msg = "Cannot find associated MARKETPLACE"; + return -1; + } + + std::string mp_name = mp->get_name(); + std::string mp_data; + + if ( !mp->is_action_supported(MarketPlaceApp::DELETE) ) + { + att.resp_msg = "Delete disabled for market: " + mp_name; + mp->unlock(); + + return -1; + } + + mp->to_xml(mp_data); + + mp->unlock(); + + return marketm->delete_app(oid, mp_data, att.resp_msg); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VMGroupDelete::VMGroupDelete() + : RequestManagerDelete("one.vmgroup.delete", + "Deletes a vm group") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vmgrouppool(); + auth_object = PoolObjectSQL::VMGROUP; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +HookDelete::HookDelete(): + RequestManagerDelete("one.hook.delete", + "Deletes a hook") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_hkpool(); + auth_object = PoolObjectSQL::HOOK; +}; + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerHook.cc b/src/rm/RequestManagerHook.cc index e8801795ad..b03fea6d2f 100644 --- a/src/rm/RequestManagerHook.cc +++ b/src/rm/RequestManagerHook.cc @@ -14,9 +14,10 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ +#include "RequestManagerHook.h" #include "PoolObjectAuth.h" #include "Nebula.h" -#include "RequestManagerHook.h" +#include "HookLog.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerImage.cc b/src/rm/RequestManagerImage.cc index c8b9ecf39f..5cce0d8882 100644 --- a/src/rm/RequestManagerImage.cc +++ b/src/rm/RequestManagerImage.cc @@ -15,6 +15,8 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerImage.h" +#include "ImageManager.h" +#include "DatastorePool.h" using namespace std; diff --git a/src/rm/RequestManagerInfo.cc b/src/rm/RequestManagerInfo.cc index 7ce0445e63..b5a73747ef 100644 --- a/src/rm/RequestManagerInfo.cc +++ b/src/rm/RequestManagerInfo.cc @@ -18,6 +18,7 @@ #include "RequestManagerPoolInfoFilter.h" #include "VirtualMachineDisk.h" #include "Nebula.h" +#include "VirtualRouterPool.h" using namespace std; diff --git a/src/rm/RequestManagerLock.cc b/src/rm/RequestManagerLock.cc index 039efc1ba9..9c483bc111 100644 --- a/src/rm/RequestManagerLock.cc +++ b/src/rm/RequestManagerLock.cc @@ -15,6 +15,17 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerLock.h" +#include "Nebula.h" +#include "DocumentPool.h" +#include "HookPool.h" +#include "ImagePool.h" +#include "MarketPlaceAppPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" using namespace std; @@ -124,3 +135,243 @@ void RequestManagerUnlock::request_execute(xmlrpc_c::paramList const& paramList, return; } + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +DocumentLock::DocumentLock() + : RequestManagerLock("one.document.lock", + "Tries to acquire the object's lock") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_docpool(); + auth_object = PoolObjectSQL::DOCUMENT; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +DocumentUnlock::DocumentUnlock(): + RequestManagerUnlock("one.document.unlock", + "Unlocks the object") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_docpool(); + auth_object = PoolObjectSQL::DOCUMENT; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualMachineLock::VirtualMachineLock() + : RequestManagerLock("one.vm.lock", + "Lock a VM") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VM; + pool = nd.get_vmpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualMachineUnlock::VirtualMachineUnlock() + : RequestManagerUnlock("one.vm.unlock", + "Unlock a VM") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VM; + pool = nd.get_vmpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VMTemplateLock::VMTemplateLock() + : RequestManagerLock("one.template.lock", + "Lock a Template") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::TEMPLATE; + pool = nd.get_tpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VMTemplateUnlock::VMTemplateUnlock() + : RequestManagerUnlock("one.template.unlock", + "Unlock a Template") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::TEMPLATE; + pool = nd.get_tpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VNTemplateLock::VNTemplateLock() + : RequestManagerLock("one.vntemplate.lock", + "Lock a VN Template") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VNTEMPLATE; + pool = nd.get_vntpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VNTemplateUnlock::VNTemplateUnlock() + : RequestManagerUnlock("one.vntemplate.unlock", + "Unlock a VN Template") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VNTEMPLATE; + pool = nd.get_vntpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualNetworkLock::VirtualNetworkLock() + : RequestManagerLock("one.vn.lock", + "Lock a VNet") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::NET; + pool = nd.get_vnpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualNetworkUnlock::VirtualNetworkUnlock() + : RequestManagerUnlock("one.vn.unlock", + "Unlock a VNet") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::NET; + pool = nd.get_vnpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +ImageLock::ImageLock() + : RequestManagerLock("one.image.lock", + "Lock a Image") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::IMAGE; + pool = nd.get_ipool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +ImageUnlock::ImageUnlock() + : RequestManagerUnlock("one.image.unlock", + "Unlock a Image") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::IMAGE; + pool = nd.get_ipool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +MarketPlaceAppLock::MarketPlaceAppLock() + : RequestManagerLock("one.marketapp.lock", + "Lock a MarketPlaceApp") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::MARKETPLACEAPP; + pool = nd.get_apppool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +MarketPlaceAppUnlock::MarketPlaceAppUnlock() + : RequestManagerUnlock("one.marketapp.unlock", + "Unlock a MarketPlaceApp") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::MARKETPLACEAPP; + pool = nd.get_apppool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualRouterLock::VirtualRouterLock() + : RequestManagerLock("one.vrouter.lock", + "Lock a VirtualRouter") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VROUTER; + pool = nd.get_vrouterpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualRouterUnlock::VirtualRouterUnlock() + : RequestManagerUnlock("one.vrouter.unlock", + "Unlock a VirtualRouter") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VROUTER; + pool = nd.get_vrouterpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VMGroupLock::VMGroupLock() + : RequestManagerLock("one.vmgroup.lock", + "Lock a VMGroup") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VMGROUP; + pool = nd.get_vmgrouppool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VMGroupUnlock::VMGroupUnlock() + : RequestManagerUnlock("one.vmgroup.unlock", + "Unlock a VMGroup") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::VMGROUP; + pool = nd.get_vmgrouppool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +HookLock::HookLock() + : RequestManagerLock("one.hook.lock", + "Lock a Hook") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::HOOK; + pool = nd.get_hkpool(); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +HookUnlock::HookUnlock() + : RequestManagerUnlock("one.hook.unlock", + "Unlock a Hook") +{ + Nebula& nd = Nebula::instance(); + auth_object = PoolObjectSQL::HOOK; + pool = nd.get_hkpool(); +} diff --git a/src/rm/RequestManagerMarketPlaceApp.cc b/src/rm/RequestManagerMarketPlaceApp.cc index fc06727045..4d8cedd235 100644 --- a/src/rm/RequestManagerMarketPlaceApp.cc +++ b/src/rm/RequestManagerMarketPlaceApp.cc @@ -15,6 +15,22 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerMarketPlaceApp.h" +#include "Nebula.h" +#include "MarketPlaceAppPool.h" + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +RequestManagerMarketPlaceApp::RequestManagerMarketPlaceApp(const std::string& method_name, + const std::string& help, const std::string& params) : + Request(method_name, params, help) +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_apppool(); + + auth_object = PoolObjectSQL::MARKETPLACEAPP; + auth_op = AuthRequest::MANAGE; +}; /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerPoolInfoFilter.cc b/src/rm/RequestManagerPoolInfoFilter.cc index 5211a28e74..44fb61bf63 100644 --- a/src/rm/RequestManagerPoolInfoFilter.cc +++ b/src/rm/RequestManagerPoolInfoFilter.cc @@ -15,6 +15,26 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerPoolInfoFilter.h" +#include "HookLog.h" +#include "Nebula.h" +#include "AuthManager.h" +#include "ClusterPool.h" +#include "DatastorePool.h" +#include "DocumentPool.h" +#include "HookPool.h" +#include "HostPool.h" +#include "ImagePool.h" +#include "MarketPlaceAppPool.h" +#include "MarketPlacePool.h" +#include "SecurityGroupPool.h" +#include "VdcPool.h" +#include "VirtualMachinePool.h" +#include "VirtualNetworkPool.h" +#include "VirtualRouterPool.h" +#include "VMGroupPool.h" +#include "VMTemplatePool.h" +#include "VNTemplatePool.h" +#include "ZonePool.h" using namespace std; @@ -82,311 +102,6 @@ bool RequestManagerPoolInfoFilter::use_filter(RequestAttributes& att, } return all; -}; - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void VirtualMachinePoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); - int start_id = xmlrpc_c::value_int(paramList.getInt(2)); - int end_id = xmlrpc_c::value_int(paramList.getInt(3)); - int state = xmlrpc_c::value_int(paramList.getInt(4)); - - std::string fts_query; - - if (paramList.size() > 5) - { - fts_query = xmlrpc_c::value_string(paramList.getString(5)); - - if (!fts_query.empty() && !pool->is_fts_available()) - { - att.resp_msg = "Full text search is not supported by the SQL backend"; - - failure_response(INTERNAL, att); - return; - } - } - - ostringstream and_filter; - - if (( state < VirtualMachinePoolInfo::ALL_VM ) || - ( state > VirtualMachine::CLONING_FAILURE )) - { - att.resp_msg = "Incorrect filter_flag, state"; - - failure_response(XML_RPC_API, att); - return; - } - - switch (state) - { - case VirtualMachinePoolInfo::ALL_VM: - break; - - case VirtualMachinePoolInfo::NOT_DONE: - and_filter << "state <> " << VirtualMachine::DONE; - break; - - default: - and_filter << "state = " << state; - break; - } - - if (!fts_query.empty()) - { - char * _fts_query = pool->escape_str(fts_query); - - if ( _fts_query == 0 ) - { - att.resp_msg = "Error building search query"; - - failure_response(INTERNAL, att); - return; - } - - if (!and_filter.str().empty()) - { - and_filter << " AND "; - } - - and_filter << "MATCH(search_token) AGAINST ('+\""; - one_util::escape_token(_fts_query, and_filter); - and_filter << "\"' in boolean mode)"; - - pool->free_str(_fts_query); - } - - dump(att, filter_flag, start_id, end_id, and_filter.str(), ""); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void VirtualMachinePoolAccounting::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); - int time_start = xmlrpc_c::value_int(paramList.getInt(2)); - int time_end = xmlrpc_c::value_int(paramList.getInt(3)); - - string oss; - string where; - int rc; - - if ( filter_flag < GROUP ) - { - att.resp_msg = "Incorrect filter_flag"; - failure_response(XML_RPC_API, att); - return; - } - - where_filter(att, filter_flag, -1, -1, "", "", false, false, false, where); - - rc = (static_cast(pool))->dump_acct(oss, - where, - time_start, - time_end); - if ( rc != 0 ) - { - att.resp_msg = "Internal error"; - failure_response(INTERNAL, att); - return; - } - - success_response(oss, att); - - return; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void VirtualMachinePoolShowback::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); - int start_month = xmlrpc_c::value_int(paramList.getInt(2)); - int start_year = xmlrpc_c::value_int(paramList.getInt(3)); - int end_month = xmlrpc_c::value_int(paramList.getInt(4)); - int end_year = xmlrpc_c::value_int(paramList.getInt(5)); - - string oss; - string where; - int rc; - - if ( filter_flag < GROUP ) - { - att.resp_msg = "Incorrect filter_flag"; - failure_response(XML_RPC_API, att); - return; - } - - where_filter(att, filter_flag, -1, -1, "", "", false, false, false, where); - - rc = (static_cast(pool))->dump_showback(oss, - where, - start_month, - start_year, - end_month, - end_year); - if ( rc != 0 ) - { - att.resp_msg = "Internal error"; - failure_response(INTERNAL, att); - return; - } - - success_response(oss, att); - - return; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void VirtualMachinePoolMonitoring::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); - - string oss; - string where; - int rc; - - if ( filter_flag < GROUP ) - { - att.resp_msg = "Incorrect filter_flag"; - failure_response(XML_RPC_API, att); - return; - } - - where_filter(att, filter_flag, -1, -1, "", "", false, false, false, where); - - rc = (static_cast(pool))->dump_monitoring(oss, where); - - if ( rc != 0 ) - { - att.resp_msg = "Internal error"; - failure_response(INTERNAL, att); - return; - } - - success_response(oss, att); - - return; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void HostPoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - dump(att, ALL, -1, -1, "", ""); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void HostPoolMonitoring::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - string oss; - string where; - - int rc; - - where_filter(att, ALL, -1, -1, "", "", false, false, false, where); - - rc = (static_cast(pool))->dump_monitoring(oss, where); - - if ( rc != 0 ) - { - att.resp_msg = "Internal error"; - failure_response(INTERNAL, att); - return; - } - - success_response(oss, att); - - return; -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void GroupPoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - dump(att, ALL, -1, -1, "", ""); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void UserPoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - dump(att, ALL, -1, -1, "", ""); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void DatastorePoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - dump(att, ALL, -1, -1, "", ""); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void ClusterPoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - dump(att, ALL, -1, -1, "", ""); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void DocumentPoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); - int start_id = xmlrpc_c::value_int(paramList.getInt(2)); - int end_id = xmlrpc_c::value_int(paramList.getInt(3)); - int type = xmlrpc_c::value_int(paramList.getInt(4)); - - ostringstream oss; - oss << "type = " << type; - - dump(att, filter_flag, start_id, end_id, oss.str(), ""); -} - -/* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - -void ZonePoolInfo::request_execute( - xmlrpc_c::paramList const& paramList, - RequestAttributes& att) -{ - dump(att, ALL, -1, -1, "", ""); } /* ------------------------------------------------------------------------- */ @@ -544,6 +259,296 @@ void RequestManagerPoolInfoFilter::dump( /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ +VirtualMachinePoolInfo::VirtualMachinePoolInfo() + : RequestManagerPoolInfoFilter("one.vmpool.info", + "Returns the virtual machine instances pool", + "A:siiiis") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vmpool(); + auth_object = PoolObjectSQL::VM; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualMachinePoolInfo::VirtualMachinePoolInfo(const string& method_name, + const string& help, + const string& signature) + : RequestManagerPoolInfoFilter(method_name, help, signature) +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vmpool(); + auth_object = PoolObjectSQL::VM; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void VirtualMachinePoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); + int start_id = xmlrpc_c::value_int(paramList.getInt(2)); + int end_id = xmlrpc_c::value_int(paramList.getInt(3)); + int state = xmlrpc_c::value_int(paramList.getInt(4)); + + std::string fts_query; + + if (paramList.size() > 5) + { + fts_query = xmlrpc_c::value_string(paramList.getString(5)); + + if (!fts_query.empty() && !pool->is_fts_available()) + { + att.resp_msg = "Full text search is not supported by the SQL backend"; + + failure_response(INTERNAL, att); + return; + } + } + + ostringstream and_filter; + + if (( state < VirtualMachinePoolInfo::ALL_VM ) || + ( state > VirtualMachine::CLONING_FAILURE )) + { + att.resp_msg = "Incorrect filter_flag, state"; + + failure_response(XML_RPC_API, att); + return; + } + + switch (state) + { + case VirtualMachinePoolInfo::ALL_VM: + break; + + case VirtualMachinePoolInfo::NOT_DONE: + and_filter << "state <> " << VirtualMachine::DONE; + break; + + default: + and_filter << "state = " << state; + break; + } + + if (!fts_query.empty()) + { + char * _fts_query = pool->escape_str(fts_query); + + if ( _fts_query == 0 ) + { + att.resp_msg = "Error building search query"; + + failure_response(INTERNAL, att); + return; + } + + if (!and_filter.str().empty()) + { + and_filter << " AND "; + } + + and_filter << "MATCH(search_token) AGAINST ('+\""; + one_util::escape_token(_fts_query, and_filter); + and_filter << "\"' in boolean mode)"; + + pool->free_str(_fts_query); + } + + dump(att, filter_flag, start_id, end_id, and_filter.str(), ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualMachinePoolAccounting::VirtualMachinePoolAccounting() + : RequestManagerPoolInfoFilter("one.vmpool.accounting", + "Returns the virtual machine history records", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vmpool(); + auth_object = PoolObjectSQL::VM; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void VirtualMachinePoolAccounting::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); + int time_start = xmlrpc_c::value_int(paramList.getInt(2)); + int time_end = xmlrpc_c::value_int(paramList.getInt(3)); + + string oss; + string where; + int rc; + + if ( filter_flag < GROUP ) + { + att.resp_msg = "Incorrect filter_flag"; + failure_response(XML_RPC_API, att); + return; + } + + where_filter(att, filter_flag, -1, -1, "", "", false, false, false, where); + + rc = (static_cast(pool))->dump_acct(oss, + where, + time_start, + time_end); + if ( rc != 0 ) + { + att.resp_msg = "Internal error"; + failure_response(INTERNAL, att); + return; + } + + success_response(oss, att); + + return; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualMachinePoolShowback::VirtualMachinePoolShowback() + : RequestManagerPoolInfoFilter("one.vmpool.showback", + "Returns the virtual machine showback records", + "A:siiiii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vmpool(); + auth_object = PoolObjectSQL::VM; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void VirtualMachinePoolShowback::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); + int start_month = xmlrpc_c::value_int(paramList.getInt(2)); + int start_year = xmlrpc_c::value_int(paramList.getInt(3)); + int end_month = xmlrpc_c::value_int(paramList.getInt(4)); + int end_year = xmlrpc_c::value_int(paramList.getInt(5)); + + string oss; + string where; + int rc; + + if ( filter_flag < GROUP ) + { + att.resp_msg = "Incorrect filter_flag"; + failure_response(XML_RPC_API, att); + return; + } + + where_filter(att, filter_flag, -1, -1, "", "", false, false, false, where); + + rc = (static_cast(pool))->dump_showback(oss, + where, + start_month, + start_year, + end_month, + end_year); + if ( rc != 0 ) + { + att.resp_msg = "Internal error"; + failure_response(INTERNAL, att); + return; + } + + success_response(oss, att); + + return; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualMachinePoolMonitoring::VirtualMachinePoolMonitoring() + : RequestManagerPoolInfoFilter("one.vmpool.monitoring", + "Returns the virtual machine monitoring records", + "A:si") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vmpool(); + auth_object = PoolObjectSQL::VM; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void VirtualMachinePoolMonitoring::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); + + string oss; + string where; + int rc; + + if ( filter_flag < GROUP ) + { + att.resp_msg = "Incorrect filter_flag"; + failure_response(XML_RPC_API, att); + return; + } + + where_filter(att, filter_flag, -1, -1, "", "", false, false, false, where); + + rc = (static_cast(pool))->dump_monitoring(oss, where); + + if ( rc != 0 ) + { + att.resp_msg = "Internal error"; + failure_response(INTERNAL, att); + return; + } + + success_response(oss, att); + + return; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +TemplatePoolInfo::TemplatePoolInfo() + : RequestManagerPoolInfoFilter("one.templatepool.info", + "Returns the virtual machine template pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_tpool(); + auth_object = PoolObjectSQL::TEMPLATE; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VirtualNetworkPoolInfo::VirtualNetworkPoolInfo() + : RequestManagerPoolInfoFilter("one.vnpool.info", + "Returns the virtual network pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vnpool(); + auth_object = PoolObjectSQL::NET; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + void VirtualNetworkPoolInfo::request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) { @@ -613,6 +618,268 @@ void VirtualNetworkPoolInfo::request_execute( /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ +VirtualNetworkTemplatePoolInfo::VirtualNetworkTemplatePoolInfo() + : RequestManagerPoolInfoFilter("one.vntemplatepool.info", + "Returns the virtual network template pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vntpool(); + auth_object = PoolObjectSQL::VNTEMPLATE; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +ImagePoolInfo::ImagePoolInfo() + : RequestManagerPoolInfoFilter("one.imagepool.info", + "Returns the image pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_ipool(); + auth_object = PoolObjectSQL::IMAGE; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +HostPoolInfo::HostPoolInfo() + : RequestManagerPoolInfoFilter("one.hostpool.info", + "Returns the host pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_hpool(); + auth_object = PoolObjectSQL::HOST; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void HostPoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + dump(att, ALL, -1, -1, "", ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +HostPoolMonitoring::HostPoolMonitoring() + : RequestManagerPoolInfoFilter("one.hostpool.monitoring", + "Returns the host monitoring records", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_hpool(); + auth_object = PoolObjectSQL::HOST; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void HostPoolMonitoring::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + string oss; + string where; + + int rc; + + where_filter(att, ALL, -1, -1, "", "", false, false, false, where); + + rc = (static_cast(pool))->dump_monitoring(oss, where); + + if ( rc != 0 ) + { + att.resp_msg = "Internal error"; + failure_response(INTERNAL, att); + return; + } + + success_response(oss, att); + + return; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +GroupPoolInfo::GroupPoolInfo() + : RequestManagerPoolInfoFilter("one.grouppool.info", + "Returns the group pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_gpool(); + auth_object = PoolObjectSQL::GROUP; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void GroupPoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + dump(att, ALL, -1, -1, "", ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +UserPoolInfo::UserPoolInfo() + : RequestManagerPoolInfoFilter("one.userpool.info", + "Returns the user pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_upool(); + auth_object = PoolObjectSQL::USER; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void UserPoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + dump(att, ALL, -1, -1, "", ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +DatastorePoolInfo::DatastorePoolInfo() + : RequestManagerPoolInfoFilter("one.datastorepool.info", + "Returns the datastore pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_dspool(); + auth_object = PoolObjectSQL::DATASTORE; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void DatastorePoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + dump(att, ALL, -1, -1, "", ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +ClusterPoolInfo::ClusterPoolInfo() + : RequestManagerPoolInfoFilter("one.clusterpool.info", + "Returns the cluster pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_clpool(); + auth_object = PoolObjectSQL::CLUSTER; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void ClusterPoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + dump(att, ALL, -1, -1, "", ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +DocumentPoolInfo::DocumentPoolInfo() + : RequestManagerPoolInfoFilter("one.documentpool.info", + "Returns the generic document pool", + "A:siiii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_docpool(); + auth_object = PoolObjectSQL::DOCUMENT; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void DocumentPoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + int filter_flag = xmlrpc_c::value_int(paramList.getInt(1)); + int start_id = xmlrpc_c::value_int(paramList.getInt(2)); + int end_id = xmlrpc_c::value_int(paramList.getInt(3)); + int type = xmlrpc_c::value_int(paramList.getInt(4)); + + ostringstream oss; + oss << "type = " << type; + + dump(att, filter_flag, start_id, end_id, oss.str(), ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +ZonePoolInfo::ZonePoolInfo() + : RequestManagerPoolInfoFilter("one.zonepool.info", + "Returns the zone pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_zonepool(); + auth_object = PoolObjectSQL::ZONE; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +void ZonePoolInfo::request_execute( + xmlrpc_c::paramList const& paramList, + RequestAttributes& att) +{ + dump(att, ALL, -1, -1, "", ""); +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +SecurityGroupPoolInfo::SecurityGroupPoolInfo() + : RequestManagerPoolInfoFilter("one.secgrouppool.info", + "Returns the security group pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_secgrouppool(); + auth_object = PoolObjectSQL::SECGROUP; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +VdcPoolInfo::VdcPoolInfo() + : RequestManagerPoolInfoFilter("one.vdcpool.info", + "Returns the VDC pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vdcpool(); + auth_object = PoolObjectSQL::VDC; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + void VdcPoolInfo::request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) @@ -623,6 +890,32 @@ void VdcPoolInfo::request_execute( /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ +VirtualRouterPoolInfo::VirtualRouterPoolInfo() + : RequestManagerPoolInfoFilter("one.vrouterpool.info", + "Returns the virtual router pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vrouterpool(); + auth_object = PoolObjectSQL::VROUTER; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +MarketPlacePoolInfo::MarketPlacePoolInfo() + : RequestManagerPoolInfoFilter("one.marketpool.info", + "Returns the marketplace pool", + "A:s") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_marketpool(); + auth_object = PoolObjectSQL::MARKETPLACE; +} + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + void MarketPlacePoolInfo::request_execute( xmlrpc_c::paramList const& paramList, RequestAttributes& att) @@ -633,6 +926,58 @@ void MarketPlacePoolInfo::request_execute( /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ +MarketPlaceAppPoolInfo::MarketPlaceAppPoolInfo() + : RequestManagerPoolInfoFilter("one.marketapppool.info", + "Returns the market place pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_apppool(); + auth_object = PoolObjectSQL::MARKETPLACEAPP; +} + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +VMGroupPoolInfo::VMGroupPoolInfo(): + RequestManagerPoolInfoFilter("one.vmgrouppool.info", + "Returns the vm group pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vmgrouppool(); + auth_object = PoolObjectSQL::VMGROUP; +} + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +HookPoolInfo::HookPoolInfo() + : RequestManagerPoolInfoFilter("one.hookpool.info", + "Returns the hook pool", + "A:siii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_hkpool(); + auth_object = PoolObjectSQL::HOOK; +} + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +HookLogInfo::HookLogInfo() + : RequestManagerPoolInfoFilter("one.hooklog.info", + "Returns the hook pool log info", + "A:siiii") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_hkpool(); + auth_object = PoolObjectSQL::HOOK; +} + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + void HookLogInfo::request_execute(xmlrpc_c::paramList const& _paramList, RequestAttributes& att) { diff --git a/src/rm/RequestManagerSecurityGroup.cc b/src/rm/RequestManagerSecurityGroup.cc index 33e2167ea8..a5aba69b32 100644 --- a/src/rm/RequestManagerSecurityGroup.cc +++ b/src/rm/RequestManagerSecurityGroup.cc @@ -15,6 +15,23 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerSecurityGroup.h" +#include "LifeCycleManager.h" +#include "Nebula.h" +#include "SecurityGroupPool.h" + +/* ------------------------------------------------------------------------- */ +/* ------------------------------------------------------------------------- */ + +SecurityGroupCommit::SecurityGroupCommit() + : Request("one.secgroup.commit", "A:sib", + "Commit security group changes to VMs") +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_secgrouppool(); + + auth_object = PoolObjectSQL::SECGROUP; + auth_op = AuthRequest::MANAGE; +} /* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerSystem.cc b/src/rm/RequestManagerSystem.cc index 2b62011407..4341c6b021 100644 --- a/src/rm/RequestManagerSystem.cc +++ b/src/rm/RequestManagerSystem.cc @@ -16,6 +16,7 @@ #include "RequestManagerSystem.h" #include "Nebula.h" +#include "LogDB.h" using namespace std; diff --git a/src/rm/RequestManagerVMTemplate.cc b/src/rm/RequestManagerVMTemplate.cc index c2a1ef9f08..c5b1f2a60c 100644 --- a/src/rm/RequestManagerVMTemplate.cc +++ b/src/rm/RequestManagerVMTemplate.cc @@ -15,7 +15,9 @@ /* -------------------------------------------------------------------------- */ #include "RequestManagerVMTemplate.h" +#include "VirtualMachine.h" #include "VirtualMachineDisk.h" +#include "VirtualMachinePool.h" #include "PoolObjectAuth.h" #include "Nebula.h" #include "RequestManagerClone.h" diff --git a/src/rm/RequestManagerVNTemplate.cc b/src/rm/RequestManagerVNTemplate.cc index 2ebd5aef77..04dd4e832d 100644 --- a/src/rm/RequestManagerVNTemplate.cc +++ b/src/rm/RequestManagerVNTemplate.cc @@ -19,6 +19,23 @@ #include "PoolObjectAuth.h" #include "Nebula.h" #include "RequestManagerClone.h" +#include "ClusterPool.h" +#include "VirtualNetworkPool.h" +#include "VNTemplatePool.h" + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +RequestManagerVNTemplate::RequestManagerVNTemplate(const string& method_name, + const string& help, + const string& params) + : Request(method_name, params, help) +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vntpool(); + + auth_object = PoolObjectSQL::VNTEMPLATE; +}; /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerVirtualMachine.cc b/src/rm/RequestManagerVirtualMachine.cc index 2003035c6c..47d13cc558 100644 --- a/src/rm/RequestManagerVirtualMachine.cc +++ b/src/rm/RequestManagerVirtualMachine.cc @@ -19,6 +19,10 @@ #include "PoolObjectAuth.h" #include "Nebula.h" #include "Quotas.h" +#include "ClusterPool.h" +#include "ImagePool.h" +#include "DispatchManager.h" +#include "VirtualMachineManager.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ @@ -1047,7 +1051,6 @@ void VirtualMachineMigrate::request_execute(xmlrpc_c::paramList const& paramList DispatchManager * dm = nd.get_dm(); DatastorePool * dspool = nd.get_dspool(); - VirtualMachinePool * vmpool = nd.get_vmpool(); VirtualMachine * vm; string hostname; diff --git a/src/rm/RequestManagerVirtualNetwork.cc b/src/rm/RequestManagerVirtualNetwork.cc index f8f48576e7..49147ea03a 100644 --- a/src/rm/RequestManagerVirtualNetwork.cc +++ b/src/rm/RequestManagerVirtualNetwork.cc @@ -16,6 +16,7 @@ #include "RequestManagerVirtualNetwork.h" #include "VirtualNetworkTemplate.h" +#include "ClusterPool.h" using namespace std; diff --git a/src/rm/RequestManagerVirtualRouter.cc b/src/rm/RequestManagerVirtualRouter.cc index bd748c762a..288bc24fb2 100644 --- a/src/rm/RequestManagerVirtualRouter.cc +++ b/src/rm/RequestManagerVirtualRouter.cc @@ -19,6 +19,23 @@ #include "RequestManagerVirtualMachine.h" #include "PoolObjectAuth.h" #include "Nebula.h" +#include "DispatchManager.h" +#include "VirtualRouterPool.h" + +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +RequestManagerVirtualRouter::RequestManagerVirtualRouter(const string& method_name, + const string& help, + const string& params) + : Request(method_name, params, help) +{ + Nebula& nd = Nebula::instance(); + pool = nd.get_vrouterpool(); + + auth_object = PoolObjectSQL::VROUTER; + auth_op = AuthRequest::MANAGE; +} /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/rm/RequestManagerZone.cc b/src/rm/RequestManagerZone.cc index 6ffaeeed56..66465016b1 100644 --- a/src/rm/RequestManagerZone.cc +++ b/src/rm/RequestManagerZone.cc @@ -17,6 +17,9 @@ #include "RequestManagerZone.h" #include "Nebula.h" #include "Client.h" +#include "LogDB.h" +#include "FedReplicaManager.h" +#include "RaftManager.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/secgroup/SecurityGroup.cc b/src/secgroup/SecurityGroup.cc index eb789ab9a4..5d26ac6925 100644 --- a/src/secgroup/SecurityGroup.cc +++ b/src/secgroup/SecurityGroup.cc @@ -17,6 +17,7 @@ #include "SecurityGroup.h" #include "NebulaUtil.h" #include "Nebula.h" +#include "LifeCycleManager.h" #include /* ------------------------------------------------------------------------ */ diff --git a/src/secgroup/SecurityGroupPool.cc b/src/secgroup/SecurityGroupPool.cc index 3bc6116b00..8f859cacee 100644 --- a/src/secgroup/SecurityGroupPool.cc +++ b/src/secgroup/SecurityGroupPool.cc @@ -18,6 +18,7 @@ #include "User.h" #include "Nebula.h" #include "NebulaLog.h" +#include "VirtualNetworkPool.h" /* -------------------------------------------------------------------------- */ diff --git a/src/sql/LogDB.cc b/src/sql/LogDB.cc index 9362a54b61..0478a98156 100644 --- a/src/sql/LogDB.cc +++ b/src/sql/LogDB.cc @@ -19,6 +19,8 @@ #include "NebulaUtil.h" #include "ZoneServer.h" #include "Callbackable.h" +#include "RaftManager.h" +#include "FedReplicaManager.h" /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ diff --git a/src/um/Quotas.cc b/src/um/Quotas.cc index 5ff759051a..edcb718ea7 100644 --- a/src/um/Quotas.cc +++ b/src/um/Quotas.cc @@ -16,7 +16,7 @@ #include "Quotas.h" #include "Nebula.h" - +#include "ImagePool.h" #include "ObjectXML.h" int Quotas::set(Template *tmpl, string& error) diff --git a/src/um/User.cc b/src/um/User.cc index d614344496..33aed9f5a4 100644 --- a/src/um/User.cc +++ b/src/um/User.cc @@ -14,19 +14,13 @@ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include -#include -#include - -#include -#include -#include - #include "User.h" #include "Nebula.h" #include "Group.h" #include "NebulaUtil.h" +#include + const string User::INVALID_NAME_CHARS = " :\t\n\v\f\r"; const string User::INVALID_PASS_CHARS = " \t\n\v\f\r"; diff --git a/src/vdc/Vdc.cc b/src/vdc/Vdc.cc index 83cd71c733..6f14dd9e96 100644 --- a/src/vdc/Vdc.cc +++ b/src/vdc/Vdc.cc @@ -16,6 +16,7 @@ #include "Vdc.h" #include "Nebula.h" +#include "AclManager.h" /* -------------------------------------------------------------------------- */ diff --git a/src/vm/VirtualMachine.cc b/src/vm/VirtualMachine.cc index 4589984ee2..6afc2e3a41 100644 --- a/src/vm/VirtualMachine.cc +++ b/src/vm/VirtualMachine.cc @@ -13,31 +13,26 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - #include "VirtualMachine.h" +#include "VirtualMachineManager.h" #include "VirtualNetworkPool.h" +#include "VMGroupPool.h" #include "ImagePool.h" #include "NebulaLog.h" #include "NebulaUtil.h" #include "Snapshots.h" #include "ScheduledAction.h" +#include "LifeCycleManager.h" +#include "ClusterPool.h" +#include "DatastorePool.h" #include "Nebula.h" #include "vm_file_var_syntax.h" #include "vm_var_syntax.h" +#include + /* ************************************************************************** */ /* Virtual Machine :: Constructor/Destructor */ /* ************************************************************************** */ @@ -3617,6 +3612,26 @@ int VirtualMachine::set_detach_nic(int nic_id) return 0; } +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +void VirtualMachine::delete_attach_alias(VirtualMachineNic *nic) +{ + std::set a_ids; + + one_util::split_unique(nic->vector_value("ALIAS_IDS"), ',', a_ids); + + for (const auto& id : a_ids) + { + VirtualMachineNic * nic_a = nics.delete_nic(id); + + if (nic_a != 0) + { + obj_template->remove(nic_a->vector_attribute()); + } + } +} + /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ /* VirtualMachine VMGroup interface */ diff --git a/src/vm/VirtualMachineContext.cc b/src/vm/VirtualMachineContext.cc index 2b55a0239e..5cb0b4d273 100644 --- a/src/vm/VirtualMachineContext.cc +++ b/src/vm/VirtualMachineContext.cc @@ -13,18 +13,6 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - #include "VirtualMachine.h" #include "VirtualNetworkPool.h" #include "ImagePool.h" @@ -37,6 +25,8 @@ #include "vm_file_var_syntax.h" #include "vm_var_syntax.h" +#include + /* -------------------------------------------------------------------------- */ /* Context constants */ /* -------------------------------------------------------------------------- */ diff --git a/src/vm/VirtualMachineDisk.cc b/src/vm/VirtualMachineDisk.cc index 559a080bf2..d159dea9ca 100644 --- a/src/vm/VirtualMachineDisk.cc +++ b/src/vm/VirtualMachineDisk.cc @@ -17,6 +17,9 @@ #include "VirtualMachineDisk.h" #include "NebulaUtil.h" #include "Nebula.h" +#include "DatastorePool.h" +#include "ImagePool.h" +#include "ImageManager.h" /* -------------------------------------------------------------------------- */ diff --git a/src/vm/VirtualMachineNic.cc b/src/vm/VirtualMachineNic.cc index a1d7970c3f..aded84ddfd 100644 --- a/src/vm/VirtualMachineNic.cc +++ b/src/vm/VirtualMachineNic.cc @@ -17,6 +17,8 @@ #include "VirtualMachineNic.h" #include "NebulaUtil.h" #include "Nebula.h" +#include "SecurityGroupPool.h" +#include "VirtualNetworkPool.h" /* -------------------------------------------------------------------------- */ diff --git a/src/vm/VirtualMachineParser.cc b/src/vm/VirtualMachineParser.cc index bc027e63fe..9ecf9aec3d 100644 --- a/src/vm/VirtualMachineParser.cc +++ b/src/vm/VirtualMachineParser.cc @@ -13,31 +13,22 @@ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* -------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - #include "VirtualMachine.h" #include "VirtualNetworkPool.h" +#include "DatastorePool.h" #include "ImagePool.h" #include "NebulaLog.h" #include "NebulaUtil.h" #include "Snapshots.h" - +#include "HostShare.h" #include "Nebula.h" #include "vm_file_var_syntax.h" #include "vm_var_syntax.h" #include "vm_var_parser.h" +#include + /* -------------------------------------------------------------------------- */ /* Parser constanta */ /* -------------------------------------------------------------------------- */ diff --git a/src/vm/VirtualMachinePool.cc b/src/vm/VirtualMachinePool.cc index 90d28479db..a10761f916 100644 --- a/src/vm/VirtualMachinePool.cc +++ b/src/vm/VirtualMachinePool.cc @@ -19,6 +19,8 @@ #include "NebulaLog.h" #include "Nebula.h" #include "HookStateVM.h" +#include "HookManager.h" +#include "ImageManager.h" #include diff --git a/src/vmm/LibVirtDriverKVM.cc b/src/vmm/LibVirtDriverKVM.cc index 09fbd9bb80..6e5dfb0d67 100644 --- a/src/vmm/LibVirtDriverKVM.cc +++ b/src/vmm/LibVirtDriverKVM.cc @@ -17,6 +17,10 @@ #include "LibVirtDriver.h" #include "Nebula.h" +#include "HostPool.h" +#include "ClusterPool.h" +#include "VirtualNetwork.h" + #include #include #include diff --git a/src/vmm/VirtualMachineManager.cc b/src/vmm/VirtualMachineManager.cc index bb18c4cda3..50aa345d06 100644 --- a/src/vmm/VirtualMachineManager.cc +++ b/src/vmm/VirtualMachineManager.cc @@ -20,6 +20,8 @@ #include "XMLDriver.h" #include "LibVirtDriver.h" #include "NebulaUtil.h" +#include "TransferManager.h" +#include "LifeCycleManager.h" #include "Nebula.h" diff --git a/src/vnm/VirtualNetworkPool.cc b/src/vnm/VirtualNetworkPool.cc index 07c233546d..c40f15f22b 100644 --- a/src/vnm/VirtualNetworkPool.cc +++ b/src/vnm/VirtualNetworkPool.cc @@ -21,6 +21,7 @@ #include "PoolObjectAuth.h" #include "AuthManager.h" #include "AddressRange.h" +#include "VirtualMachineNic.h" #include #include diff --git a/src/vrouter/VirtualRouter.cc b/src/vrouter/VirtualRouter.cc index fc40d54780..222624df06 100644 --- a/src/vrouter/VirtualRouter.cc +++ b/src/vrouter/VirtualRouter.cc @@ -20,6 +20,8 @@ #include "VirtualMachine.h" #include "Request.h" #include "VirtualMachineTemplate.h" +#include "DispatchManager.h" + /* -------------------------------------------------------------------------- */ static void vrouter_prefix(VectorAttribute* nic, const string& attr)