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

B #5555: Fix conflict INHERIT vs RESTRICTED

* bug-inherit-attr: Fixed bug with \n

* bug-inherit-attr: Saved template_json_base within data attribute

(cherry picked from commit 607cde3dafe89f77480aed4e0442a965d91eaa71)
This commit is contained in:
juanmont 2017-11-15 17:31:40 +01:00 committed by Ruben S. Montero
parent dda3ceaad4
commit aa79958aec
5 changed files with 64 additions and 17 deletions

View File

@ -255,10 +255,7 @@ Request::ErrorCode VMTemplateInstantiate::merge(
const string &str_uattrs,
RequestAttributes& att)
{
if (str_uattrs.empty())
{
return SUCCESS;
}
int rc;
@ -270,11 +267,15 @@ Request::ErrorCode VMTemplateInstantiate::merge(
if ( rc != 0 )
{
return INTERNAL;
}
else if (uattrs.empty())
{
return SUCCESS;
}
if (att.uid!=UserPool::ONEADMIN_ID && att.gid!=GroupPool::ONEADMIN_ID)
{
if (uattrs.check_restricted(aname, tmpl))
if (uattrs.check_restricted(aname, tmpl))
{
att.resp_msg ="User Template includes a restricted attribute " + aname;

View File

@ -926,6 +926,9 @@ define(function(require) {
tab.on("click", "#provision_create_vm .provision_select_template .provision-pricing-table.only-one" , function(){
var create_vm_context = $("#provision_create_vm");
var that = this;
that.template_base_json = {};
if ($(this).hasClass("selected")){
//$(".provision_disk_selector", create_vm_context).html("");
@ -954,6 +957,17 @@ define(function(require) {
$("#provision_create_vm .provision_vmgroup").show();
$("#provision_create_vm .provision_ds").show();
OpenNebulaTemplate.show({
data : {
id: template_id,
extended: false
},
timeout: true,
success: function (request, template_json) {
that.template_base_json= template_json;
}
});
OpenNebula.Template.show({
data : {
id: template_id,
@ -975,6 +989,7 @@ define(function(require) {
pers = false;
}
DisksResize.insert({
template_base_json: that.template_base_json,
template_json: template_json,
disksContext: disksContext,
force_persistent: pers,

View File

@ -371,14 +371,29 @@ define(function(require) {
this.selected_nodes = selected_nodes;
this.template_objects = [];
this.template_base_objects = {};
var templatesContext = $(".list_of_templates", context);
var idsLength = this.selected_nodes.length;
var idsDone = 0;
$.each(this.selected_nodes, function(index, template_id) {
OpenNebulaTemplate.show({
data : {
id: template_id,
extended: false
},
timeout: true,
success: function (request, template_json) {
that.template_base_objects[template_json.VMTEMPLATE.ID] = template_json;
}
});
});
templatesContext.html("");
$.each(this.selected_nodes, function(index, template_id) {
OpenNebulaTemplate.show({
data : {
id: template_id,
@ -463,6 +478,7 @@ define(function(require) {
}
DisksResize.insert({
template_base_json: that.template_base_objects[template_json.VMTEMPLATE.ID],
template_json: template_json,
disksContext: $(".disksContext" + template_json.VMTEMPLATE.ID, context),
force_persistent: $("input.instantiate_pers", context).prop("checked"),

View File

@ -76,6 +76,16 @@ define(function(require){
disks = [template_disk]
}
if (opts.template_base_json) {
var template_base_disk = opts.template_base_json.VMTEMPLATE.TEMPLATE.DISK
var disks_base = []
if ($.isArray(template_base_disk)) {
disks_base = template_base_disk
} else if (!$.isEmptyObject(template_base_disk)) {
disks_base = [template_base_disk]
}
}
if (disks.length > 0) {
disksContext.html(DisksResizeTemplate());
@ -101,17 +111,23 @@ define(function(require){
var diskContext;
$(".disksContainer", disksContext).html("");
$.each(disks, function(disk_id, disk) {
diskContext = $(
'<div class="row diskContainer">'+
'<div class="small-12 columns">'+
'<label></label>'+
'</div>'+
'<div class="large-12 columns diskSlider">' +
'</div>' +
'</div>').appendTo($(".disksContainer", disksContext));
diskContext.data('template_disk', disk);
if (disks_base) {
$.each(disks_base, function(disk_id, disk) {
diskContext = $(
'<div class="row diskContainer">'+
'<div class="small-12 columns">'+
'<label></label>'+
'</div>'+
'<div class="large-12 columns diskSlider">' +
'</div>' +
'</div>').appendTo($(".disksContainer", disksContext));
diskContext.data('template_disk', disk);
});
}
$.each(disks, function(disk_id, disk) {
var disk_snapshot_total_size = 0;
if (disk.DISK_SNAPSHOT_TOTAL_SIZE != undefined) {

View File

@ -715,13 +715,12 @@ end
##############################################################################
# GET Resource information
##############################################################################
get '/:resource/:id/template' do
@SunstoneServer.get_template(params[:resource], params[:id])
end
get '/:resource/:id' do
if params[:extended]
if params[:extended] && params[:extended] != "false"
@SunstoneServer.get_resource(params[:resource], params[:id], true)
else
@SunstoneServer.get_resource(params[:resource], params[:id])