1
0
mirror of https://github.com/OpenNebula/one.git synced 2024-12-22 13:33:52 +03:00
one/include/RequestManagerDelete.h
Ruben S. Montero 5ce49ed404
F #4936: Refactor pools to use unique_ptr
co-authored-by: Pavel Czerný <pczerny@opennebula.systems>
2020-09-10 09:08:29 +02:00

407 lines
11 KiB
C++

/* -------------------------------------------------------------------------- */
/* Copyright 2002-2020, OpenNebula Project, OpenNebula Systems */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
/* not use this file except in compliance with the License. You may obtain */
/* a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
#ifndef REQUEST_MANAGER_DELETE_H_
#define REQUEST_MANAGER_DELETE_H_
#include "Request.h"
#include "ClusterPool.h"
#include "Datastore.h"
#include "Host.h"
#include "VirtualNetwork.h"
class AclManager;
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class RequestManagerDelete: public Request
{
protected:
RequestManagerDelete(const std::string& method_name,
const std::string& params,
const std::string& help);
RequestManagerDelete(const std::string& method_name,
const std::string& help);
~RequestManagerDelete() = default;
void request_execute(xmlrpc_c::paramList const& paramList,
RequestAttributes& att) override;
ErrorCode delete_object(int oid, bool recursive, RequestAttributes& att);
/* -------------------------------------------------------------------- */
virtual int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att);
virtual std::set<int> get_cluster_ids(PoolObjectSQL * object) const
{
std::set<int> empty;
return empty;
};
virtual int del_from_cluster(Cluster* cluster, int id, std::string& error_msg)
{
return -1;
};
/* -------------------------------------------------------------------- */
ClusterPool * clpool;
AclManager * aclm;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class TemplateDelete : public RequestManagerDelete
{
public:
TemplateDelete();
~TemplateDelete() = default;
ErrorCode request_execute(int oid, bool recursive, RequestAttributes& att)
{
return delete_object(oid, recursive, att);
}
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class VirtualNetworkTemplateDelete : public RequestManagerDelete
{
public:
VirtualNetworkTemplateDelete();
~VirtualNetworkTemplateDelete() = default;
ErrorCode request_execute(int oid, bool recursive, RequestAttributes& att)
{
return delete_object(oid, false, att);
}
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class VirtualNetworkDelete: public RequestManagerDelete
{
public:
VirtualNetworkDelete();
~VirtualNetworkDelete() = default;
protected:
std::set<int> get_cluster_ids(PoolObjectSQL * object) const override
{
return static_cast<VirtualNetwork*>(object)->get_cluster_ids();
};
int del_from_cluster(Cluster* cluster, int id, std::string& error_msg) override
{
return clpool->del_from_cluster(PoolObjectSQL::NET, cluster, id, error_msg);
};
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class ImageDelete: public RequestManagerDelete
{
public:
ImageDelete();
~ImageDelete() = default;
ErrorCode request_execute(int oid, RequestAttributes& att)
{
return delete_object(oid, false, att);
};
void request_execute(xmlrpc_c::paramList const& paramList,
RequestAttributes& att) override;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class HostDelete : public RequestManagerDelete
{
public:
HostDelete();
~HostDelete() = default;
protected:
std::set<int> get_cluster_ids(PoolObjectSQL * object) const override
{
std::set<int> ids;
ids.insert( static_cast<Host*>(object)->get_cluster_id() );
return ids;
};
int del_from_cluster(Cluster* cluster, int id, std::string& error_msg) override
{
return clpool->del_from_cluster(PoolObjectSQL::HOST, cluster, id, error_msg);
};
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class GroupDelete: public RequestManagerDelete
{
public:
GroupDelete();
~GroupDelete() = default;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class UserDelete: public RequestManagerDelete
{
public:
UserDelete();
~UserDelete() = default;
protected:
GroupPool * gpool;
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class DatastoreDelete: public RequestManagerDelete
{
public:
DatastoreDelete();
~DatastoreDelete() = default;
/* -------------------------------------------------------------------- */
std::set<int> get_cluster_ids(PoolObjectSQL * object) const override
{
return static_cast<Datastore*>(object)->get_cluster_ids();
};
int del_from_cluster(Cluster* cluster, int id, std::string& error_msg) override
{
return clpool->del_from_cluster(PoolObjectSQL::DATASTORE, cluster, id, error_msg);
};
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class ClusterDelete: public RequestManagerDelete
{
public:
ClusterDelete();
~ClusterDelete() = default;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class DocumentDelete : public RequestManagerDelete
{
public:
DocumentDelete();
~DocumentDelete() = default;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class ZoneDelete: public RequestManagerDelete
{
public:
ZoneDelete();
~ZoneDelete() = default;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class SecurityGroupDelete : public RequestManagerDelete
{
public:
SecurityGroupDelete();
~SecurityGroupDelete() = default;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class VdcDelete: public RequestManagerDelete
{
public:
VdcDelete();
~VdcDelete() = default;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class VirtualRouterDelete : public RequestManagerDelete
{
public:
VirtualRouterDelete();
~VirtualRouterDelete() = default;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class MarketPlaceDelete : public RequestManagerDelete
{
public:
MarketPlaceDelete();
~MarketPlaceDelete() = default;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class MarketPlaceAppDelete : public RequestManagerDelete
{
public:
MarketPlaceAppDelete();
~MarketPlaceAppDelete() = default;
protected:
int drop(std::unique_ptr<PoolObjectSQL> obj,
bool recursive,
RequestAttributes& att) override;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class VMGroupDelete : public RequestManagerDelete
{
public:
VMGroupDelete();
~VMGroupDelete() = default;
};
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
class HookDelete : public RequestManagerDelete
{
public:
HookDelete();
~HookDelete() = default;
};
#endif