eole-one-frontend/bugfix/opennebula.js

1825 lines
72 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* -------------------------------------------------------------------------- */
/* 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);
}
}
}