Merge branch 'master' into 2.4.2/master

This commit is contained in:
Philippe Caseiro 2016-04-20 14:37:17 +02:00
commit 243f407854
1 changed files with 1824 additions and 0 deletions

1824
bugfix/opennebula.js Normal file
View File

@ -0,0 +1,1824 @@
/* -------------------------------------------------------------------------- */
/* Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
/* not use this file except in compliance with the License. You may obtain */
/* a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
if (typeof(csrftoken) != "undefined")
{
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
var params = originalOptions.data;
if (typeof(params)=="string")
{
params = JSON.parse(params);
params["csrftoken"] = csrftoken;
options.data = JSON.stringify(params);
}
else
{
params = params || {};
params["csrftoken"] = csrftoken;
options.data = $.param(params);
}
});
}
$.ajaxSetup({
converters: {
"text json": function( textValue ) {
return jQuery.parseJSON(jQuery('<div/>').text(textValue).html());
}
}
});
var list_cache = {};
var list_waiting = {};
var list_callbacks = {};
var cache_expire = 60000; //ms
var OpenNebula = {
"Error": function(resp)
{
var error = {};
if (resp.responseText)
{
try {
error = JSON.parse(resp.responseText);
}
catch (e) {
error.error = {message: "It appears there was a server exception. Please check server's log."};
};
}
else
{
error.error = {};
}
error.error.http_status = resp.status;
return error;
},
"is_error": function(obj)
{
return obj.error ? true : false;
},
"Helper": {
"resource_state": function(type, value)
{
var state;
switch(type)
{
case "HOST":
case "host":
state = tr(["INIT",
"MONITORING_MONITORED",
"MONITORED",
"ERROR",
"DISABLED",
"MONITORING_ERROR",
"MONITORING_INIT",
"MONITORING_DISABLED"][value]);
break;
case "HOST_SIMPLE":
case "host_simple":
state = tr(["INIT",
"UPDATE",
"ON",
"ERROR",
"OFF",
"RETRY",
"INIT",
"OFF"][value]);
break;
case "VM":
case "vm":
state = tr(["INIT",
"PENDING",
"HOLD",
"ACTIVE",
"STOPPED",
"SUSPENDED",
"DONE",
"FAILED",
"POWEROFF",
"UNDEPLOYED"][value]);
break;
case "VM_LCM":
case "vm_lcm":
state = tr(["LCM_INIT",
"PROLOG",
"BOOT",
"RUNNING",
"MIGRATE",
"SAVE",
"SAVE",
"SAVE",
"MIGRATE",
"PROLOG",
"EPILOG",
"EPILOG",
"SHUTDOWN",
"SHUTDOWN",
"FAILURE",
"CLEANUP",
"UNKNOWN",
"HOTPLUG",
"SHUTDOWN",
"BOOT",
"BOOT",
"BOOT",
"BOOT",
"CLEANUP",
"SNAPSHOT",
"HOTPLUG",
"HOTPLUG",
"HOTPLUG",
"HOTPLUG",
"SHUTDOWN",
"EPILOG",
"PROLOG",
"BOOT"][value]);
break;
case "IMAGE":
case "image":
state = tr(["INIT",
"READY",
"USED",
"DISABLED",
"LOCKED",
"ERROR",
"CLONE",
"DELETE",
"USED_PERS"][value]);
break;
case "VM_MIGRATE_REASON":
case "vm_migrate_reason":
state = tr(["NONE",
"ERROR",
"USER"][value]);
break;
case "VM_MIGRATE_ACTION":
case "vm_migrate_action":
state = tr(["none",
"migrate",
"live-migrate",
"shutdown",
"shutdown-hard",
"undeploy",
"undeploy-hard",
"hold",
"release",
"stop",
"suspend",
"resume",
"boot",
"delete",
"delete-recreate",
"reboot",
"reboot-hard",
"resched",
"unresched",
"poweroff",
"poweroff-hard"][value]);
break;
default:
return value;
}
if (!state) state = value
return state;
},
"image_type": function(value)
{
return ["OS", "CDROM", "DATABLOCK", "KERNEL", "RAMDISK", "CONTEXT"][value];
},
"action": function(action, params)
{
obj = {
"action": {
"perform": action
}
}
if (params)
{
obj.action.params = params;
}
return obj;
},
"request": function(resource, method, data) {
var r = {
"request": {
"resource" : resource,
"method" : method
}
}
if (data)
{
if (typeof(data) != "array")
{
data = [data];
}
r.request.data = data;
}
return r;
},
"pool": function(resource, response)
{
var pool_name = resource + "_POOL";
var type = resource;
var pool;
if (typeof(pool_name) == "undefined")
{
return Error('Incorrect Pool');
}
var p_pool = [];
if (response[pool_name]) {
pool = response[pool_name][type];
} else {
pool = null;
}
if (pool == null)
{
return p_pool;
}
else if (pool.length)
{
for (i=0;i<pool.length;i++)
{
p_pool[i]={};
p_pool[i][type]=pool[i];
}
return(p_pool);
}
else
{
p_pool[0] = {};
p_pool[0][type] = pool;
return(p_pool);
}
},
"pool_hash_processing": function(pool_name, resource_name, response)
{
var pool;
if (typeof(pool_name) == "undefined")
{
return Error('Incorrect Pool');
}
var p_pool = {};
if (response[pool_name]) {
pool = response[pool_name][resource_name];
} else {
pool = null;
}
if (pool == null)
{
return p_pool;
}
else if (pool.length)
{
for (i=0;i<pool.length;i++)
{
var res = {};
res[resource_name] = pool[i];
p_pool[res[resource_name]['ID']] = res;
}
return(p_pool);
}
else
{
var res = {};
res[resource_name] = pool;
p_pool[res[resource_name]['ID']] = res;
return(p_pool);
}
},
"clear_cache" : function(cache_name){
list_cache[cache_name] = null;
//console.log(cache_name+" cache cleaned");
}
},
"Action": {
//server requests helper methods
"create": function(params, resource, path){
var callback = params.success;
var callback_error = params.error;
var data = params.data;
var request = OpenNebula.Helper.request(resource,"create", data);
var req_path = path ? path : resource.toLowerCase();
var cache_name = params.cache_name ? params.cache_name : resource;
$.ajax({
url: req_path,
type: "POST",
dataType: "json",
data: JSON.stringify(data),
success: function(response){
OpenNebula.Helper.clear_cache(cache_name);
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"del": function(params, resource, path){
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
var request = OpenNebula.Helper.request(resource,"delete", id);
var req_path = path ? path : resource.toLowerCase();
var cache_name = params.cache_name ? params.cache_name : resource;
$.ajax({
url: req_path + "/" + id,
type: "DELETE",
success: function(){
OpenNebula.Helper.clear_cache(cache_name);
return callback ? callback(request) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"list": function(params, resource, path){
var callback = params.success;
var callback_error = params.error;
var timeout = params.timeout || false;
var request = OpenNebula.Helper.request(resource,"list");
var req_path = path ? path : resource.toLowerCase();
var cache_name = params.cache_name ? params.cache_name : resource;
var options = params.options;
var force = false;
if (options){
force = options.force;
}
if (force){
OpenNebula.Helper.clear_cache(cache_name);
}
if( !force &&
list_cache[cache_name] &&
list_cache[cache_name]["timestamp"] + cache_expire > new Date().getTime()){
//console.log(cache_name+" list. Cache used");
return callback ?
callback(request, list_cache[cache_name]["data"]) : null;
}
// TODO: Because callbacks are queued, we may need to force a
// timeout. Otherwise a blocked call cannot be retried.
if (!list_callbacks[cache_name]){
list_callbacks[cache_name] = [];
}
list_callbacks[cache_name].push({
success : callback,
error : callback_error
});
//console.log(cache_name+" list. Callback queued");
if (list_waiting[cache_name]){
return;
}
list_waiting[cache_name] = true;
//console.log(cache_name+" list. NO cache, calling ajax");
$.ajax({
url: req_path,
type: "GET",
data: {timeout: timeout},
dataType: "json",
success: function(response){
var list = OpenNebula.Helper.pool(resource,response)
list_cache[cache_name] = {
timestamp : new Date().getTime(),
data : list
};
list_waiting[cache_name] = false;
for (var i=0; i<list_callbacks[cache_name].length; i++)
{
var callback = list_callbacks[cache_name][i].success;
if (callback){
//console.log(cache_name+" list. Callback called");
callback(request, list);
}
}
list_callbacks[cache_name] = [];
return;
},
error: function(response)
{
list_waiting[cache_name] = false;
for (var i=0; i<list_callbacks[cache_name].length; i++)
{
var callback = list_callbacks[cache_name][i].error;
if (callback){
//console.log(cache_name+" list. ERROR Callback called");
callback(request, OpenNebula.Error(response));
}
}
list_callbacks[cache_name] = [];
return;
}
});
},
"list_in_zone": function(params, resource, path){
var callback = params.success;
var callback_error = params.error;
var timeout = params.timeout || false;
var request = OpenNebula.Helper.request(resource,"list");
var req_path = path ? path : resource.toLowerCase();
$.ajax({
url: req_path,
type: "GET",
data: {timeout: timeout, zone_id: params.data.zone_id},
dataType: "json",
success: function(response){
var list = OpenNebula.Helper.pool(resource,response)
return callback ?
callback(request, list) : null;
},
error: function(response)
{
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
//Subresource examples: "fetch_template", "log"...
"show": function(params, resource, subresource, path){
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
var request = subresource ?
OpenNebula.Helper.request(resource,subresource,id) :
OpenNebula.Helper.request(resource,"show", id);
var req_path = path ? path : resource.toLowerCase();
var url = req_path + "/" + id;
url = subresource? url + "/" + subresource : url;
$.ajax({
url: url,
type: "GET",
dataType: "json",
success: function(response){
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"chown": function(params, resource, path){
var id = params.data.extra_param;
var action_obj = {"owner_id": id,
"group_id": "-1"};
OpenNebula.Action.simple_action(params,
resource,
"chown",
action_obj,
path);
},
"chgrp": function(params, resource, path){
var id = params.data.extra_param;
var action_obj = {"owner_id": "-1",
"group_id": id};
OpenNebula.Action.simple_action(params,
resource,
"chown",
action_obj,
path);
},
//Example: Simple action: publish. Simple action with action obj: deploy
"simple_action": function(params, resource, method, action_obj, path){
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
var action,request;
if (action_obj) {
action = OpenNebula.Helper.action(method, action_obj);
request = OpenNebula.Helper.request(resource,method, [id, action_obj]);
} else {
action = OpenNebula.Helper.action(method);
request = OpenNebula.Helper.request(resource,method, id);
};
var req_path = path ? path : resource.toLowerCase();
var cache_name = params.cache_name ? params.cache_name : resource;
$.ajax({
url: req_path + "/" + id + "/action",
type: "POST",
data: JSON.stringify(action),
success: function(){
OpenNebula.Helper.clear_cache(cache_name);
return callback ? callback(request) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"monitor": function(params, resource, all, path){
var callback = params.success;
var callback_error = params.error;
var data = params.data;
var method = "monitor";
var request = OpenNebula.Helper.request(resource,method, data);
var url = path ? path : resource.toLowerCase();
url = all ? url + "/monitor" : url + "/" + params.data.id + "/monitor";
$.ajax({
url: url,
type: "GET",
data: data['monitor'],
dataType: "json",
success: function(response){
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"accounting": function(params, resource, path){
var callback = params.success;
var callback_error = params.error;
var data = params.data;
var method = "accounting";
var request = OpenNebula.Helper.request(resource,method, data);
var url = path ? path : resource.toLowerCase() + "/accounting";
$.ajax({
url: url,
type: "GET",
data: data,
dataType: "json",
success: function(response){
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
},
"Auth": {
"resource": "AUTH",
"login": function(params)
{
var callback = params.success;
var callback_error = params.error;
var username = params.data.username;
var password = params.data.password;
var remember = params.remember;
var resource = OpenNebula.Auth.resource;
var request = OpenNebula.Helper.request(resource,"login");
$.ajax({
url: "login",
type: "POST",
data: {remember: remember},
beforeSend : function(req) {
var token = username + ':' + password;
var authString = 'Basic ';
if (typeof(btoa) === 'function')
authString += btoa(unescape(encodeURIComponent( token )))
else {
token = CryptoJS.enc.Utf8.parse(token);
authString += CryptoJS.enc.Base64.stringify(token)
}
req.setRequestHeader( "Authorization", authString);
},
success: function(response){
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"logout": function(params)
{
var callback = params.success;
var callback_error = params.error;
var resource = OpenNebula.Auth.resource;
var request = OpenNebula.Helper.request(resource,"logout");
$.ajax({
url: "logout",
type: "POST",
success: function(response){
$.cookie("one-user", null);
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
}
},
"Host": {
"resource": "HOST",
"create": function(params){
OpenNebula.Action.create(params,OpenNebula.Host.resource);
},
"del": function(params){
OpenNebula.Action.del(params,OpenNebula.Host.resource);
},
"list": function(params){
OpenNebula.Action.list(params,OpenNebula.Host.resource);
},
"show": function(params){
OpenNebula.Action.show(params,OpenNebula.Host.resource);
},
"update": function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Host.resource,
"update",
action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.Host.resource,"template");
},
"enable": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Host.resource,"enable");
},
"disable": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Host.resource,"disable");
},
"monitor" : function(params){
OpenNebula.Action.monitor(params,OpenNebula.Host.resource,false);
},
"pool_monitor" : function(params){
OpenNebula.Action.monitor(params,OpenNebula.Host.resource,true);
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Host.resource,
"rename",
action_obj);
}
},
"Network": {
"resource": "VNET",
"create": function(params){
OpenNebula.Action.create(params,OpenNebula.Network.resource);
},
"del": function(params){
OpenNebula.Action.del(params,OpenNebula.Network.resource);
},
"list": function(params){
OpenNebula.Action.list(params,OpenNebula.Network.resource);
},
"show": function(params){
OpenNebula.Action.show(params,OpenNebula.Network.resource);
},
"chown" : function(params){
OpenNebula.Action.chown(params,OpenNebula.Network.resource);
},
"chgrp" : function(params){
OpenNebula.Action.chgrp(params,OpenNebula.Network.resource);
},
"chmod" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"chmod",
action_obj);
},
"publish": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Network.resource,"publish");
},
"unpublish": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Network.resource,"unpublish");
},
"hold" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"hold",
action_obj);
},
"release" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"release",
action_obj);
},
"add_ar" : function(params){
var action_obj = {"ar_template" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"add_ar",
action_obj);
},
"rm_ar" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"rm_ar",
action_obj);
},
"update_ar": function(params){
var action_obj = {"ar_template" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"update_ar",
action_obj);
},
"reserve": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"reserve",
action_obj);
},
"update": function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"update",
action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.Network.resource,"template");
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Network.resource,
"rename",
action_obj);
}
},
"VM": {
"resource": "VM",
"create": function(params){
OpenNebula.Action.create(params,OpenNebula.VM.resource);
},
"del": function(params){
OpenNebula.Action.del(params,OpenNebula.VM.resource);
},
"list": function(params){
OpenNebula.Action.list(params,OpenNebula.VM.resource);
},
"show": function(params){
OpenNebula.Action.show(params,OpenNebula.VM.resource);
},
"chown" : function(params){
OpenNebula.Action.chown(params,OpenNebula.VM.resource);
},
"chgrp" : function(params){
OpenNebula.Action.chgrp(params,OpenNebula.VM.resource);
},
"chmod" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.VM.resource,
"chmod",
action_obj);
},
"shutdown": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"shutdown");
},
"hold": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"hold");
},
"release": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"release");
},
"stop": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"stop");
},
"cancel": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"cancel");
},
"suspend": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"suspend");
},
"resume": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"resume");
},
"restart": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"restart");
},
"resubmit": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"resubmit");
},
"poweroff" : function(params){
var action_obj = {"hard": false};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"poweroff", action_obj);
},
"poweroff_hard" : function(params){
var action_obj = {"hard": true};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"poweroff", action_obj);
},
"undeploy" : function(params){
var action_obj = {"hard": false};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"undeploy", action_obj);
},
"undeploy_hard" : function(params){
var action_obj = {"hard": true};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"undeploy", action_obj);
},
"reboot" : function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"reboot");
},
"reset" : function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"reset");
},
"log": function(params){
OpenNebula.Action.show(params,OpenNebula.VM.resource,"log");
},
"deploy": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"deploy",action_obj);
},
"livemigrate": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"livemigrate",action_obj);
},
"migrate": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"migrate",action_obj);
},
"saveas": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"saveas",action_obj);
},
"snapshot_create": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"snapshot_create",action_obj);
},
"snapshot_revert": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"snapshot_revert",action_obj);
},
"snapshot_delete": function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"snapshot_delete",action_obj);
},
"vnc" : function(params,startstop){
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
var resource = OpenNebula.VM.resource;
var method = startstop;
var action = OpenNebula.Helper.action(method);
var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "vm/" + id + "/" + method,
type: "POST",
dataType: "json",
success: function(response){
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"startvnc" : function(params){
OpenNebula.VM.vnc(params,"startvnc");
},
"update": function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.VM.resource,
"update",
action_obj);
},
"monitor" : function(params){
OpenNebula.Action.monitor(params,OpenNebula.VM.resource,false);
},
"pool_monitor" : function(params){
OpenNebula.Action.monitor(params,OpenNebula.VM.resource,true);
},
"resize" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"resize",action_obj);
},
"attachdisk" : function(params){
var action_obj = {"disk_template": params.data.extra_param};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"attachdisk",action_obj);
},
"detachdisk" : function(params){
var action_obj = {"disk_id": params.data.extra_param};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"detachdisk",action_obj);
},
"attachnic" : function(params){
var action_obj = {"nic_template": params.data.extra_param};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"attachnic",action_obj);
},
"detachnic" : function(params){
var action_obj = {"nic_id": params.data.extra_param};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,
"detachnic",action_obj);
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.VM.resource,
"rename",
action_obj);
},
"resched" : function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"resched");
},
"unresched" : function(params){
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"unresched");
},
"recover" : function(params){
var action_obj = {"with": params.data.extra_param};
OpenNebula.Action.simple_action(params,OpenNebula.VM.resource,"recover",action_obj);
},
"accounting": function(params){
OpenNebula.Action.accounting(params,OpenNebula.VM.resource);
},
},
"Group": {
"resource": "GROUP",
"create": function(params){
OpenNebula.Action.create(params,OpenNebula.Group.resource);
},
"del": function(params){
OpenNebula.Action.del(params,OpenNebula.Group.resource);
},
"list": function(params){
var resource = OpenNebula.Group.resource
var req_path = resource.toLowerCase();
var callback = params.success;
var callback_error = params.error;
var timeout = params.timeout || false;
var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: req_path,
type: "GET",
data: {timeout: timeout},
dataType: "json",
success: function(response){
// Get the default group quotas
default_group_quotas = Quotas.default_quotas(response.GROUP_POOL.DEFAULT_GROUP_QUOTAS);
var list = OpenNebula.Helper.pool(resource,response)
var quotas_hash = OpenNebula.Helper.pool_hash_processing(
'GROUP_POOL','QUOTAS',response);
return callback ?
callback(request, list, quotas_hash) : null;
},
error: function(response)
{
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"update": function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Group.resource,
"update",
action_obj);
},
"set_quota" : function(params){
var action_obj = { quotas : params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.Group.resource,"set_quota",action_obj);
},
"show" : function(params){
OpenNebula.Action.show(params,OpenNebula.Group.resource);
},
"accounting" : function(params){
OpenNebula.Action.monitor(params,OpenNebula.Group.resource,false);
},
"add_provider" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.Group.resource,"add_provider",action_obj);
},
"del_provider" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,OpenNebula.Group.resource,"del_provider",action_obj);
}
},
"User": {
"resource": "USER",
"create": function(params){
OpenNebula.Action.create(params,OpenNebula.User.resource);
},
"del": function(params){
OpenNebula.Action.del(params,OpenNebula.User.resource);
},
"list": function(params){
var resource = OpenNebula.User.resource
var req_path = resource.toLowerCase();
var callback = params.success;
var callback_error = params.error;
var timeout = params.timeout || false;
var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: req_path,
type: "GET",
data: {timeout: timeout},
dataType: "json",
success: function(response){
default_user_quotas = Quotas.default_quotas(response.USER_POOL.DEFAULT_USER_QUOTAS);
var list = OpenNebula.Helper.pool(resource,response)
var quotas_hash = OpenNebula.Helper.pool_hash_processing(
'USER_POOL','QUOTAS',response);
return callback ?
callback(request, list, quotas_hash) : null;
},
error: function(response)
{
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
},
"show" : function(params){
OpenNebula.Action.show(params,OpenNebula.User.resource);
},
"passwd": function(params){
var action_obj = {"password": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.User.resource,
"passwd",action_obj);
},
"chgrp" : function(params){
var action_obj = {"group_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.User.resource,
"chgrp",action_obj);
},
"chauth" : function(params){
var action_obj = {"auth_driver" : params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.User.resource,
"chauth",action_obj);
},
"update": function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.User.resource,
"update",
action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.User.resource,"template");
},
"accounting" : function(params){
OpenNebula.Action.monitor(params,OpenNebula.User.resource,false);
},
"set_quota" : function(params){
var action_obj = { quotas : params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.User.resource,"set_quota",action_obj);
},
"addgroup" : function(params){
var action_obj = {"group_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.User.resource,
"addgroup",action_obj);
},
"delgroup" : function(params){
var action_obj = {"group_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.User.resource,
"delgroup",action_obj);
}
},
"Image": {
"resource": "IMAGE",
"create": function(params){
OpenNebula.Action.create(params,OpenNebula.Image.resource);
},
"del": function(params){
OpenNebula.Action.del(params,OpenNebula.Image.resource);
},
"list": function(params){
OpenNebula.Action.list(params,OpenNebula.Image.resource);
},
"show": function(params){
OpenNebula.Action.show(params,OpenNebula.Image.resource);
},
"chown" : function(params){
OpenNebula.Action.chown(params,OpenNebula.Image.resource);
},
"chgrp" : function(params){
OpenNebula.Action.chgrp(params,OpenNebula.Image.resource);
},
"chmod" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Image.resource,
"chmod",
action_obj);
},
"update": function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Image.resource,
"update",
action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.Image.resource,"template");
},
"enable": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"enable");
},
"disable": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"disable");
},
"persistent": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"persistent");
},
"nonpersistent": function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource,"nonpersistent");
},
"chtype": function(params){
var action_obj = {"type" : params.data.extra_param};
OpenNebula.Action.simple_action(params,
OpenNebula.Image.resource,
"chtype",
action_obj);
},
"clone" : function(params) {
var imgName = params.data.extra_param ? params.data.extra_param : "";
var action_obj = { "name": imgName };
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource, "clone", action_obj);
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Image.resource,
"rename",
action_obj);
}
},
"Template" : {
"resource" : "VMTEMPLATE",
"create" : function(params){
OpenNebula.Action.create(params,OpenNebula.Template.resource);
},
"del" : function(params){
OpenNebula.Action.del(params,OpenNebula.Template.resource);
},
"list" : function(params){
OpenNebula.Action.list(params,OpenNebula.Template.resource);
},
"show" : function(params){
OpenNebula.Action.show(params,OpenNebula.Template.resource);
},
"chown" : function(params){
OpenNebula.Action.chown(params,OpenNebula.Template.resource);
},
"chgrp" : function(params){
OpenNebula.Action.chgrp(params,OpenNebula.Template.resource);
},
"chmod" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Template.resource,
"chmod",
action_obj);
},
"update" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Template.resource,
"update",
action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.Template.resource,"template");
},
"publish" : function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Template.resource,"publish");
},
"unpublish" : function(params){
OpenNebula.Action.simple_action(params,OpenNebula.Template.resource,"unpublish");
},
"instantiate" : function(params) {
var action_obj = params.data.extra_param ? params.data.extra_param : {};
OpenNebula.Action.simple_action(params,OpenNebula.Template.resource,
"instantiate",action_obj);
},
"clone" : function(params) {
var name = params.data.extra_param ? params.data.extra_param : "";
var action_obj = { "name" : name };
OpenNebula.Action.simple_action(params,OpenNebula.Template.resource, "clone", action_obj);
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Template.resource,
"rename",
action_obj);
}
},
"Acl" : {
"resource" : "ACL",
"create" : function(params){
OpenNebula.Action.create(params,OpenNebula.Acl.resource);
},
"del" : function(params){
OpenNebula.Action.del(params,OpenNebula.Acl.resource);
},
"list" : function(params){
OpenNebula.Action.list(params,OpenNebula.Acl.resource);
}
},
"Cluster" : {
"resource" : "CLUSTER",
"create" : function(params){
OpenNebula.Action.create(params,OpenNebula.Cluster.resource);
},
"del" : function(params){
OpenNebula.Action.del(params,OpenNebula.Cluster.resource);
},
"list" : function(params){
OpenNebula.Action.list(params,OpenNebula.Cluster.resource);
},
"list_in_zone" : function(params){
OpenNebula.Action.list_in_zone(params,OpenNebula.Cluster.resource);
},
"show" : function(params){
OpenNebula.Action.show(params,OpenNebula.Cluster.resource);
},
"addhost" : function(params){
var action_obj = { "host_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.Cluster.resource,
"addhost",action_obj);
},
"delhost" : function(params){
var action_obj = { "host_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.Cluster.resource,
"delhost",action_obj);
},
"adddatastore" : function(params){
var action_obj = { "ds_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.Cluster.resource,
"adddatastore",action_obj);
},
"deldatastore" : function(params){
var action_obj = { "ds_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.Cluster.resource,
"deldatastore",action_obj);
},
"addvnet" : function(params){
var action_obj = { "vnet_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.Cluster.resource,
"addvnet",action_obj);
},
"delvnet" : function(params){
var action_obj = { "vnet_id": params.data.extra_param };
OpenNebula.Action.simple_action(params,OpenNebula.Cluster.resource,
"delvnet",action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.Cluster.resource,"template");
},
"update" : function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Cluster.resource,
"update",
action_obj);
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Cluster.resource,
"rename",
action_obj);
}
},
"Datastore" : {
"resource" : "DATASTORE",
"create" : function(params){
OpenNebula.Action.create(params,OpenNebula.Datastore.resource);
},
"del" : function(params){
OpenNebula.Action.del(params,OpenNebula.Datastore.resource);
},
"list" : function(params){
OpenNebula.Action.list(params,OpenNebula.Datastore.resource);
},
"show" : function(params){
OpenNebula.Action.show(params,OpenNebula.Datastore.resource);
},
"chown" : function(params){
OpenNebula.Action.chown(params,OpenNebula.Datastore.resource);
},
"chgrp" : function(params){
OpenNebula.Action.chgrp(params,OpenNebula.Datastore.resource);
},
"chmod" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Datastore.resource,
"chmod",
action_obj);
},
"update" : function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Datastore.resource,
"update",
action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.Datastore.resource,"template");
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Datastore.resource,
"rename",
action_obj);
}
},
"Zone" : {
"resource" : "ZONE",
"create" : function(params){
OpenNebula.Action.create(params,OpenNebula.Zone.resource);
},
"del" : function(params){
OpenNebula.Action.del(params,OpenNebula.Zone.resource);
},
"list" : function(params){
OpenNebula.Action.list(params,OpenNebula.Zone.resource);
},
"show" : function(params){
OpenNebula.Action.show(params,OpenNebula.Zone.resource);
},
"update" : function(params){
var action_obj = {"template_raw" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.Zone.resource,
"update",
action_obj);
},
"fetch_template" : function(params){
OpenNebula.Action.show(params,OpenNebula.Zone.resource,"template");
},
"rename" : function(params){
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Zone.resource,
"rename",
action_obj);
}
},
"Marketplace" : {
"resource" : "MARKETPLACE",
"show" : function(params){
params.error = function() {
return notifyError("Cannot connect to OpenNebula Marketplace")
};
OpenNebula.Action.show(params,OpenNebula.Marketplace.resource);
},
"list" : function(params){
//Custom list request function, since the contents do not come
//in the same format as the rest of opennebula resources.
var callback = params.success;
var callback_error = params.error;
var timeout = params.timeout || false;
var request = OpenNebula.Helper.request('MARKETPLACE','list');
$.ajax({
url: 'marketplace',
type: 'GET',
data: {timeout: timeout},
dataType: "json",
success: function(response){
$(".marketplace_error_message").hide();
return callback ? callback(request, response) : null;
},
error: function(res){
$(".marketplace_error_message").show();
return callback_error ? callback_error(request, OpenNebula.Error(res)) : null;
}
});
}
},
"Service" : {
"resource" : 'DOCUMENT',
"path" : 'service',
"del": function(params){
params.cache_name = "SERVICE";
OpenNebula.Action.del(params,OpenNebula.Service.resource, OpenNebula.Service.path);
},
"list" : function(params){
params.cache_name = "SERVICE";
OpenNebula.Action.list(params, OpenNebula.Service.resource, OpenNebula.Service.path)
},
"show" : function(params){
params.cache_name = "SERVICE";
OpenNebula.Action.show(params, OpenNebula.Service.resource, false, OpenNebula.Service.path)
},
"chown" : function(params){
params.cache_name = "SERVICE";
OpenNebula.Action.chown(params,OpenNebula.Service.resource, OpenNebula.Service.path);
},
"chgrp" : function(params){
params.cache_name = "SERVICE";
OpenNebula.Action.chgrp(params,OpenNebula.Service.resource, OpenNebula.Service.path);
},
"chmod" : function(params){
params.cache_name = "SERVICE";
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.Service.resource,
"chmod",
action_obj,
OpenNebula.Service.path);
},
"shutdown" : function(params){
params.cache_name = "SERVICE";
OpenNebula.Action.simple_action(params,
OpenNebula.Service.resource,
"shutdown",
null,
OpenNebula.Service.path);
},
"recover" : function(params){
params.cache_name = "SERVICE";
OpenNebula.Action.simple_action(params,
OpenNebula.Service.resource,
"recover",
null,
OpenNebula.Service.path);
},
"state" : function(state_int){
var state = [
tr("PENDING"),
tr("DEPLOYING"),
tr("RUNNING"),
tr("UNDEPLOYING"),
tr("WARNING"),
tr("DONE"),
tr("FAILED_UNDEPLOYING"),
tr("FAILED_DEPLOYING"),
tr("SCALING"),
tr("FAILED_SCALING"),
tr("COOLDOWN")
][state_int]
return state ? state : state_int;
}
},
"Role" : {
"resource" : 'DOCUMENT',
"path" : 'service',
"state" : function(state_int){
state_int = state_int ? state_int : 0;
var state = [
tr("PENDING"),
tr("DEPLOYING"),
tr("RUNNING"),
tr("UNDEPLOYING"),
tr("WARNING"),
tr("DONE"),
tr("FAILED_UNDEPLOYING"),
tr("FAILED_DEPLOYING"),
tr("SCALING"),
tr("FAILED_SCALING"),
tr("COOLDOWN")
][state_int]
return state ? state : state_int;
},
"hold" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"hold",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"release" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"release",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"suspend" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"suspend",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"resume" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"resume",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"stop" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"stop",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"boot" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"boot",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"delete_recreate" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"delete-recreate",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"reboot" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"reboot",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"reboot_hard" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"reboot-hard",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"poweroff" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"poweroff",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"poweroff_hard" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"poweroff-hard",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"undeploy" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"undeploy",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"undeploy_hard" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"undeploy-hard",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"snapshot_create" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"snapshot-create",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"shutdown" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"shutdown",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"cancel" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"shutdown-hard",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"del" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"delete",
generate_batch_action_params(),
OpenNebula.Role.path);
},
"recover" : function(params){
OpenNebula.Action.simple_action(params,
OpenNebula.Role.resource,
"recover",
null,
OpenNebula.Role.path);
},
"update" : function(params){
request = OpenNebula.Helper.request(OpenNebula.Role.resource, "update", params.data.id);
$.ajax({
url: OpenNebula.Role.path + "/" + params.data.id,
type: "PUT",
dataType: "json",
data: JSON.stringify(params.data.extra_param),
success: function(response){
return roleCallback(request, response);
},
error: function(response){
return onError(request, OpenNebula.Error(response));
}
});
}
},
"ServiceTemplate" : {
"resource" : 'DOCUMENT',
"path" : 'service_template',
"create": function(params){
params.cache_name = "SERVICE_TEMPLATE";
OpenNebula.Action.create(params, OpenNebula.ServiceTemplate.resource, OpenNebula.ServiceTemplate.path);
},
"instantiate": function(params){
params.cache_name = "SERVICE_TEMPLATE";
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.ServiceTemplate.resource,
"instantiate",
action_obj,
OpenNebula.ServiceTemplate.path);
},
"update": function(params){
params.cache_name = "SERVICE_TEMPLATE";
var action_obj = {"template_json" : params.data.extra_param };
OpenNebula.Action.simple_action(params,
OpenNebula.ServiceTemplate.resource,
"update",
action_obj,
OpenNebula.ServiceTemplate.path);
},
"del": function(params){
params.cache_name = "SERVICE_TEMPLATE";
OpenNebula.Action.del(params,OpenNebula.ServiceTemplate.resource, OpenNebula.ServiceTemplate.path);
},
"list" : function(params){
params.cache_name = "SERVICE_TEMPLATE";
OpenNebula.Action.list(params, OpenNebula.ServiceTemplate.resource, OpenNebula.ServiceTemplate.path)
},
"show" : function(params){
params.cache_name = "SERVICE_TEMPLATE";
OpenNebula.Action.show(params, OpenNebula.ServiceTemplate.resource, false, OpenNebula.ServiceTemplate.path)
},
"chown" : function(params){
params.cache_name = "SERVICE_TEMPLATE";
OpenNebula.Action.chown(params,OpenNebula.ServiceTemplate.resource, OpenNebula.ServiceTemplate.path);
},
"chgrp" : function(params){
params.cache_name = "SERVICE_TEMPLATE";
OpenNebula.Action.chgrp(params,OpenNebula.ServiceTemplate.resource, OpenNebula.ServiceTemplate.path);
},
"chmod" : function(params){
params.cache_name = "SERVICE_TEMPLATE";
var action_obj = params.data.extra_param;
OpenNebula.Action.simple_action(params,
OpenNebula.ServiceTemplate.resource,
"chmod",
action_obj,
OpenNebula.ServiceTemplate.path);
}
}
}