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

Merge branch 'bug-5126'

This commit is contained in:
Jaime Melis 2017-04-24 16:22:47 +02:00
commit 5a2f028c79
6 changed files with 65 additions and 15 deletions

View File

@ -403,6 +403,34 @@ module OpenNebula
return @body['shutdown_action']
end
# Replaces the template contents
#
# @param template_json [String] New template contents
# @param append [true, false] True to append new attributes instead of
# replace the whole template
#
# @return [nil, OpenNebula::Error] nil in case of success, Error
# otherwise
def update(template_json=nil, append=false)
if template_json
template = JSON.parse(template_json)
if append
rc = info
if OpenNebula.is_error? rc
return rc
end
template = @body.merge(template)
end
template_json = template.to_json
end
super(template_json, append)
end
# Replaces the raw template contents
#
# @param template [String] New template contents, in the form KEY = VAL

View File

@ -209,10 +209,10 @@ module OpenNebula
def update(template_json, append=false)
template = JSON.parse(template_json)
if(append)
rc = info()
if append
rc = info
if(OpenNebula.is_error?(rc))
if OpenNebula.is_error? rc
return rc
end

View File

@ -248,20 +248,24 @@ post '/service/:id/action' do
when 'rename'
service.rename(opts['name'])
when 'update'
if opts && opts['template_raw']
if (opts['append'] == true)
rc = service.update_raw(
opts['template_raw'],
(opts['append'] == true))
if opts && opts['append']
if opts['template_json']
begin
rc = service.update(opts['template_json'], true)
status 204
rescue Validator::ParseException, JSON::ParserError
OpenNebula::Error.new($!.message)
end
elsif opts['template_raw']
rc = service.update_raw(opts['template_raw'], true)
status 204
else
OpenNebula::Error.new("Action #{action['perform']}: " <<
"Only supported for append")
"You have to provide a template")
end
else
OpenNebula::Error.new("Action #{action['perform']}: " <<
"You have to provide a raw template")
"Only supported for append")
end
else
OpenNebula::Error.new("Action #{action['perform']} not supported")

View File

@ -23,6 +23,8 @@ define(function(require) {
var Locale = require('utils/locale');
var Tips = require('utils/tips');
var TemplatesTable = require('tabs/oneflow-templates-tab/datatable');
var TemplateUtils = require('utils/template-utils');
/*
CONSTANTS
*/

View File

@ -25,6 +25,7 @@ define(function(require) {
var Locale = require('utils/locale');
var Tips = require('utils/tips');
var RoleTab = require('tabs/oneflow-templates-tab/utils/role-tab');
var TemplateUtils = require('utils/template-utils');
/*
TEMPLATES
@ -230,7 +231,7 @@ define(function(require) {
json_template['ready_status_gate'] = ready_status_gate;
var templateStr = $('textarea#template', $("form#createServiceTemplateFormAdvanced")).val();
var template_final = TemplateUtils.mergeTemplates(templateJSON, templateStr);
var template_final = TemplateUtils.mergeTemplates(json_template, templateStr);
if (this.action == "create") {
Sunstone.runAction("ServiceTemplate.create", template_final );
return false;

View File

@ -260,10 +260,15 @@ define(function(require) {
}
function _updateResouceLabels(tabName, resourceId, labelsArray) {
var templateStr = LABELS_ATTR + '="' + labelsArray.join(',') + '"';
var resource = Sunstone.getResource(tabName);
var tabTable = Sunstone.getDataTable(tabName);
if (resource == "ServiceTemplate" || resource == "Service") {
var templateStr = '{"' + LABELS_ATTR.toLowerCase() + '":"' + labelsArray.join(',') + '"}';
} else {
var templateStr = LABELS_ATTR + '="' + labelsArray.join(',') + '"';
}
OpenNebula[resource].append({
timeout: true,
data : {
@ -294,7 +299,11 @@ define(function(require) {
}
function _labelsStr(elementTemplate) {
return TemplateUtils.htmlEncode( elementTemplate[LABELS_ATTR] );
if (elementTemplate['BODY'] && elementTemplate["BODY"][LABELS_ATTR.toLowerCase()]) {
return TemplateUtils.htmlEncode(elementTemplate["BODY"][LABELS_ATTR.toLowerCase()]);
} else {
return TemplateUtils.htmlEncode( elementTemplate[LABELS_ATTR] );
}
}
function _deserializeLabels(labelsStr) {
@ -415,7 +424,13 @@ define(function(require) {
} else {
template = element.TEMPLATE;
}
return template[LABELS_ATTR]||'';
if (template["BODY"] && template["BODY"][LABELS_ATTR.toLowerCase()]) {
return template["BODY"][LABELS_ATTR.toLowerCase()];
} else {
return template[LABELS_ATTR]||'';
}
} else {
return '';
}