mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-11 04:58:16 +03:00
feature #3782: Quotas for one.image snapshots actions
This commit is contained in:
parent
f9bec6a019
commit
dfdbc516d1
@ -498,6 +498,8 @@ int ImageManager::delete_image(int iid, string& error_str)
|
||||
ipool->update(img);
|
||||
}
|
||||
|
||||
unsigned int snap_size = (img->get_snapshots()).get_total_size();
|
||||
|
||||
img->unlock();
|
||||
|
||||
delete drv_msg;
|
||||
@ -507,7 +509,7 @@ int ImageManager::delete_image(int iid, string& error_str)
|
||||
Template img_usage;
|
||||
|
||||
img_usage.add("DATASTORE", ds_id);
|
||||
img_usage.add("SIZE", size);
|
||||
img_usage.add("SIZE", size + snap_size);
|
||||
|
||||
Quotas::ds_del(uid, gid, &img_usage);
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "ImagePool.h"
|
||||
|
||||
#include "NebulaLog.h"
|
||||
#include "Quotas.h"
|
||||
|
||||
#include "Nebula.h"
|
||||
#include <sstream>
|
||||
@ -692,6 +693,9 @@ static void snap_delete_action(istringstream& is,
|
||||
ostringstream oss;
|
||||
string info;
|
||||
|
||||
unsigned int snap_size;
|
||||
int ds_id, uid, gid;
|
||||
|
||||
Image * image = ipool->get(id, true);
|
||||
|
||||
if ( image == 0 )
|
||||
@ -715,6 +719,11 @@ static void snap_delete_action(istringstream& is,
|
||||
|
||||
if ( result == "SUCCESS")
|
||||
{
|
||||
ds_id = image->get_ds_id();
|
||||
uid = image->get_uid();
|
||||
gid = image->get_gid();
|
||||
snap_size = (image->get_snapshots()).get_snapshot_size(snap_id);
|
||||
|
||||
image->delete_snapshot(snap_id);
|
||||
}
|
||||
else
|
||||
@ -738,6 +747,17 @@ static void snap_delete_action(istringstream& is,
|
||||
ipool->update(image);
|
||||
|
||||
image->unlock();
|
||||
|
||||
if (result == "SUCCESS")
|
||||
{
|
||||
Template quotas;
|
||||
|
||||
quotas.add("DATASTORE", ds_id);
|
||||
quotas.add("SIZE", (long long) snap_size);
|
||||
quotas.add("IMAGES",0 );
|
||||
|
||||
Quotas::ds_del(uid, gid, "as);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
@ -808,6 +828,9 @@ static void snap_flatten_action(istringstream& is,
|
||||
ostringstream oss;
|
||||
string info;
|
||||
|
||||
unsigned int snap_size;
|
||||
int ds_id, uid, gid;
|
||||
|
||||
Image * image = ipool->get(id, true);
|
||||
|
||||
if ( image == 0 )
|
||||
@ -817,6 +840,11 @@ static void snap_flatten_action(istringstream& is,
|
||||
|
||||
if ( result == "SUCCESS")
|
||||
{
|
||||
ds_id = image->get_ds_id();
|
||||
uid = image->get_uid();
|
||||
gid = image->get_gid();
|
||||
snap_size = (image->get_snapshots()).get_total_size();
|
||||
|
||||
image->clear_snapshots();
|
||||
}
|
||||
else
|
||||
@ -842,6 +870,17 @@ static void snap_flatten_action(istringstream& is,
|
||||
ipool->update(image);
|
||||
|
||||
image->unlock();
|
||||
|
||||
if (result == "SUCCESS")
|
||||
{
|
||||
Template quotas;
|
||||
|
||||
quotas.add("DATASTORE", ds_id);
|
||||
quotas.add("SIZE", (long long) snap_size);
|
||||
quotas.add("IMAGES",0 );
|
||||
|
||||
Quotas::ds_del(uid, gid, "as);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
@ -60,7 +60,7 @@ PoolObjectSQL * RequestManagerChown::get_and_quota(
|
||||
tmpl = new Template;
|
||||
|
||||
tmpl->add("DATASTORE", img->get_ds_id());
|
||||
tmpl->add("SIZE", img->get_size());
|
||||
tmpl->add("SIZE",img->get_size()+img->get_snapshots().get_total_size());
|
||||
|
||||
qtype = Quotas::DATASTORE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user