mirror of
https://github.com/OpenNebula/one.git
synced 2026-11-14 16:53:12 +09:00
F #5204: Support for restricted attributes of type Vector
(cherry picked from commit 59b5ee8dd1ccb91161ce1ee83e99f11cbe9f1b95)
This commit is contained in:
1 parent
71fe08ec94
commit
c9d22b8b40
17 files changed
+396
-497
No files matched your search
+27
-16
@@ -172,6 +172,8 @@ void PoolObjectSQL::clear_template_error_message()
|
||||
int PoolObjectSQL::replace_template(
|
||||
const string& tmpl_str, bool keep_restricted, string& error)
|
||||
{
|
||||
string ra;
|
||||
|
||||
Template * old_tmpl = 0;
|
||||
Template * new_tmpl = get_new_template();
|
||||
|
||||
@@ -189,19 +191,22 @@ int PoolObjectSQL::replace_template(
|
||||
|
||||
if (obj_template != 0)
|
||||
{
|
||||
if ( keep_restricted && new_tmpl->check_restricted(ra, obj_template) )
|
||||
{
|
||||
error = "Tried to change restricted attribute: " + ra;
|
||||
|
||||
delete new_tmpl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
old_tmpl = new Template(*obj_template);
|
||||
}
|
||||
|
||||
if (keep_restricted && new_tmpl->has_restricted())
|
||||
else if ( keep_restricted && new_tmpl->check_restricted(ra) )
|
||||
{
|
||||
new_tmpl->remove_restricted();
|
||||
error = "Tried to set restricted attribute: " + ra;
|
||||
|
||||
if (obj_template != 0)
|
||||
{
|
||||
obj_template->remove_all_except_restricted();
|
||||
|
||||
new_tmpl->merge(obj_template);
|
||||
}
|
||||
delete new_tmpl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
delete obj_template;
|
||||
@@ -237,6 +242,7 @@ int PoolObjectSQL::append_template(
|
||||
{
|
||||
Template * old_tmpl = 0;
|
||||
Template * new_tmpl = get_new_template();
|
||||
string rname;
|
||||
|
||||
if ( new_tmpl == 0 )
|
||||
{
|
||||
@@ -250,21 +256,26 @@ int PoolObjectSQL::append_template(
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (keep_restricted)
|
||||
{
|
||||
new_tmpl->remove_restricted();
|
||||
}
|
||||
|
||||
if ( obj_template != 0 )
|
||||
{
|
||||
old_tmpl = new Template(*obj_template);
|
||||
|
||||
if (keep_restricted && new_tmpl->check_restricted(rname, obj_template))
|
||||
{
|
||||
error ="User Template includes a restricted attribute " + rname;
|
||||
delete new_tmpl;
|
||||
return -1;
|
||||
}
|
||||
obj_template->merge(new_tmpl);
|
||||
|
||||
delete new_tmpl;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (keep_restricted && new_tmpl->check_restricted(rname))
|
||||
{
|
||||
error ="User Template includes a restricted attribute " + rname;
|
||||
delete new_tmpl;
|
||||
return -1;
|
||||
}
|
||||
obj_template = new_tmpl;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user