1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-28 14:50:08 +03:00

B #5916: Fix onevm instantiate --persistent (#2428)

This commit is contained in:
Pavel Czerný 2023-01-04 16:10:03 +01:00 committed by GitHub
parent 82d2191dfd
commit 0fe9eac8b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 26 deletions

View File

@ -93,19 +93,18 @@ public:
~VMTemplateClone(){};
ErrorCode request_execute(int source_id, const std::string &name,
int &new_id, bool recursive,
const std::string& s_uattrs,
RequestAttributes& att)
{
return clone(source_id, name, new_id, recursive, s_uattrs, att);
};
protected:
ErrorCode clone(int source_id, const std::string &name, int &new_id,
bool recursive, const std::string& s_a,
RequestAttributes& att) override;
RequestAttributes& att) override
{
return clone(source_id, name, new_id, recursive, s_a, false, att);
}
ErrorCode clone(int source_id, const std::string &name, int &new_id,
bool recursive, const std::string& s_a, bool persistent,
RequestAttributes& att);
protected:
std::unique_ptr<Template> clone_template(PoolObjectSQL* obj) override
{
@ -153,13 +152,6 @@ public:
~VNTemplateClone(){};
ErrorCode request_execute(int source_id, const std::string &name,
int &new_id, const std::string& s_uattrs,
RequestAttributes& att)
{
return clone(source_id, name, new_id, false, s_uattrs, att);
};
protected:
std::unique_ptr<Template> clone_template(PoolObjectSQL* obj) override

View File

@ -1132,7 +1132,7 @@ bool Image::test_set_persistent(Template * image_template, int uid, int gid,
persistent = tmpl_persis;
}
// Honor template persistent value for ne.image.allocate
// Honor template persistent value for one.image.allocate
if (is_allocate && has_persistent)
{
persistent = tmpl_persis;

View File

@ -121,7 +121,8 @@ const std::vector<const char*> VMTemplateClone::REMOVE_DISK_ATTRS = {
"IMAGE", "IMAGE_UNAME", "IMAGE_UID", "OPENNEBULA_MANAGED"};
Request::ErrorCode VMTemplateClone::clone(int source_id, const string &name,
int &new_id, bool recursive, const string& s_uattr, RequestAttributes& att)
int &new_id, bool recursive, const string& s_uattr, bool persistent,
RequestAttributes& att)
{
// -------------------------------------------------------------------------
// Clone the VMTemplate
@ -185,7 +186,7 @@ Request::ErrorCode VMTemplateClone::clone(int source_id, const string &name,
oss << name << "-disk-" << ndisk;
ec = img_clone.request_execute(img_id, oss.str(), -1,
false, new_img_id, img_att);
persistent, new_img_id, img_att);
if ( ec != SUCCESS)
{

View File

@ -34,7 +34,7 @@ void VMTemplateInstantiate::request_execute(xmlrpc_c::paramList const& paramList
string name = xmlrpc_c::value_string(paramList.getString(2));
bool on_hold = false; //Optional XML-RPC argument
string str_uattrs; //Optional XML-RPC argument
bool clone_template = false; //Optional XML-RPC argument
bool persistent = false; //Optional XML-RPC argument
if ( paramList.size() > 3 )
{
@ -44,7 +44,7 @@ void VMTemplateInstantiate::request_execute(xmlrpc_c::paramList const& paramList
if ( paramList.size() > 5 )
{
clone_template = xmlrpc_c::value_boolean(paramList.getBoolean(5));
persistent = xmlrpc_c::value_boolean(paramList.getBoolean(5));
}
bool is_vrouter;
@ -72,8 +72,9 @@ void VMTemplateInstantiate::request_execute(xmlrpc_c::paramList const& paramList
int instantiate_id = id;
if (clone_template)
if (persistent)
{
// Clone private persistent copy of the template
int new_id;
VMTemplateClone tmpl_clone;
@ -86,8 +87,7 @@ void VMTemplateInstantiate::request_execute(xmlrpc_c::paramList const& paramList
tmpl_name = original_tmpl_name + "-copy";
}
ErrorCode ec = tmpl_clone.request_execute(id, tmpl_name, new_id, true,
str_uattrs, att);
ErrorCode ec = tmpl_clone.clone(id, tmpl_name, new_id, true, str_uattrs, true, att);
if (ec != SUCCESS)
{