2016-03-08 18:38:51 +03:00
/* -------------------------------------------------------------------------- */
2020-04-30 16:00:02 +03:00
/* Copyright 2002-2020, OpenNebula Project, OpenNebula Systems */
2016-03-08 18:38:51 +03:00
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
/* not use this file except in compliance with the License. You may obtain */
/* a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
# ifndef REQUEST_MANAGER_DROP_DB_H
# define REQUEST_MANAGER_DROP_DB_H
# include "Request.h"
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
class RequestManagerDropDB : public Request
{
protected :
2017-05-07 22:52:34 +03:00
RequestManagerDropDB ( const string & name ) : Request ( name , " A:si " ,
2016-03-08 18:38:51 +03:00
" Drops an object from DB " )
{
auth_op = AuthRequest : : MANAGE ;
} ;
virtual ~ RequestManagerDropDB ( ) { } ;
/* -------------------------------------------------------------------- */
2019-07-05 18:23:21 +03:00
void request_execute ( xmlrpc_c : : paramList const & pl , RequestAttributes & att ) override
2016-03-08 18:38:51 +03:00
{
std : : string error ;
int oid = xmlrpc_c : : value_int ( pl . getInt ( 1 ) ) ;
2018-05-23 15:42:57 +03:00
if ( ! att . is_oneadmin ( ) )
2016-03-08 18:38:51 +03:00
{
failure_response ( AUTHORIZATION , att ) ;
return ;
}
2018-03-18 01:31:52 +03:00
PoolObjectSQL * object = pool - > get ( oid ) ;
2016-03-08 18:38:51 +03:00
if ( object = = 0 )
{
att . resp_id = oid ;
failure_response ( NO_EXISTS , att ) ;
return ;
}
if ( pool - > drop ( object , error ) ! = 0 )
{
att . resp_msg = error ;
failure_response ( ACTION , att ) ;
}
else
{
success_response ( oid , att ) ;
}
object - > unlock ( ) ;
return ;
}
} ;
class MarketPlaceAppDropDB : public RequestManagerDropDB
{
public :
2017-05-07 22:52:34 +03:00
MarketPlaceAppDropDB ( ) : RequestManagerDropDB ( " one.marketapp.dropdb " )
2016-03-08 18:38:51 +03:00
{
auth_object = PoolObjectSQL : : MARKETPLACEAPP ;
pool = Nebula : : instance ( ) . get_apppool ( ) ;
}
~ MarketPlaceAppDropDB ( ) { } ;
} ;
# endif /* REQUEST_MANAGER_DROP_DB_H */