diff --git a/src/sunstone/public/js/opennebula.js b/src/sunstone/public/js/opennebula.js
index 23abbc1a6e..23aa229b52 100644
--- a/src/sunstone/public/js/opennebula.js
+++ b/src/sunstone/public/js/opennebula.js
@@ -182,8 +182,8 @@ var OpenNebula = {
var password = params.data.password;
var remember = params.remember;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"login");
+ var resource = OpenNebula.Auth.resource;
+ var request = OpenNebula.Helper.request(resource,"login");
$.ajax({
url: "/login",
@@ -216,8 +216,8 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"logout");
+ var resource = OpenNebula.Auth.resource;
+ var request = OpenNebula.Helper.request(resource,"logout");
$.ajax({
url: "/logout",
@@ -248,8 +248,8 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"list");
+ var resource = OpenNebula.Config.resource;
+ var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "/config",
@@ -281,8 +281,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var data = params.data;
+ var resource = OpenNebula.Host.resource;
- var request = OpenNebula.Helper.request(this.resource,"create", data);
+ var request = OpenNebula.Helper.request(resource,"create", data);
$.ajax({
url: "/host",
@@ -311,9 +312,10 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Host.resource;
- var request = OpenNebula.Helper.request(this.resource,"delete", id);
+ var request = OpenNebula.Helper.request(resource,"delete", id);
$.ajax({
url: "/host/" + id,
@@ -341,8 +343,8 @@ var OpenNebula = {
var callback_error = params.error;
var timeout = params.timeout || false;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"list");
+ var resource = OpenNebula.Host.resource;
+ var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "/host",
@@ -374,8 +376,8 @@ var OpenNebula = {
var callback_error = params.error;
var id = params.data.id;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"show", id);
+ var resource = OpenNebula.Host.resource;
+ var request = OpenNebula.Helper.request(resource,"show", id);
$.ajax({
url: "/host/" + id,
@@ -403,10 +405,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Host.resource;
var method = "enable";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/host/" + id + "/action",
@@ -434,10 +437,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Host.resource;
var method = "disable";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/host/" + id + "/action",
@@ -469,8 +473,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var data = params.data;
+ var resource = OpenNebula.Network.resource;
- var request = OpenNebula.Helper.request(this.resource,"create",data);
+ var request = OpenNebula.Helper.request(resource,"create",data);
$.ajax({
url: "/vnet",
@@ -499,8 +504,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Network.resource;
- var request = OpenNebula.Helper.request(this.resource,"delete", id);
+ var request = OpenNebula.Helper.request(resource,"delete", id);
$.ajax({
url: "/vnet/" + id,
@@ -527,9 +533,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var timeout = params.timeout || false;
-
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"list");
+ var resource = OpenNebula.Network.resource;
+
+ var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "/vnet",
@@ -559,8 +565,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Network.resource;
- var request = OpenNebula.Helper.request(this.resource,"show", id);
+ var request = OpenNebula.Helper.request(resource,"show", id);
$.ajax({
url: "/vnet/" + id,
@@ -588,10 +595,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Network.resource;
var method = "publish";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vnet/" + id + "/action",
@@ -619,10 +627,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Network.resource;
var method = "unpublish";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vnet/" + id + "/action",
@@ -654,8 +663,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var data = params.data;
+ var resource = OpenNebula.VM.resource;
- var request = OpenNebula.Helper.request(this.resource,"create",data);
+ var request = OpenNebula.Helper.request(resource,"create",data);
$.ajax({
url: "/vm",
@@ -684,8 +694,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Network.resource;
- var request = OpenNebula.Helper.request(this.resource,"delete", id);
+ var request = OpenNebula.Helper.request(resource,"delete", id);
$.ajax({
url: "/vm/" + id,
@@ -713,8 +724,8 @@ var OpenNebula = {
var callback_error = params.error;
var timeout = params.timeout || false;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"list");
+ var resource = OpenNebula.VM.resource;
+ var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "/vm",
@@ -744,8 +755,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
- var request = OpenNebula.Helper.request(this.resource,"log", id);
+ var request = OpenNebula.Helper.request(resource,"log", id);
$.ajax({
url: "/vm/" + id + "/log",
@@ -772,8 +784,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
- var request = OpenNebula.Helper.request(this.resource,"show", id);
+ var request = OpenNebula.Helper.request(resource,"show", id);
$.ajax({
url: "/vm/" + id,
@@ -802,10 +815,11 @@ var OpenNebula = {
var callback_error = params.error;
var id = params.data.id;
var host = params.data.extra_param;
+ var resource = OpenNebula.VM.resource;
var method = "deploy";
var action = OpenNebula.Helper.action(method, {"host_id": host});
- var request = OpenNebula.Helper.request(this.resource,method, [id, host]);
+ var request = OpenNebula.Helper.request(resource,method, [id, host]);
$.ajax({
url: "/vm/" + id + "/action",
@@ -833,10 +847,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
var method = "shutdown";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -865,10 +880,11 @@ var OpenNebula = {
var callback_error = params.error;
var id = params.data.id;
var host = params.data.extra_param;
+ var resource = OpenNebula.VM.resource;
var method = "livemigrate";
var action = OpenNebula.Helper.action(method,{"host_id": host});
- var request = OpenNebula.Helper.request(this.resource,method, [id, host]);
+ var request = OpenNebula.Helper.request(resource,method, [id, host]);
$.ajax({
url: "/vm/" + id + "/action",
@@ -897,10 +913,11 @@ var OpenNebula = {
var callback_error = params.error;
var id = params.data.id;
var host = params.data.extra_param;
+ var resource = OpenNebula.VM.resource;
var method = "migrate";
var action = OpenNebula.Helper.action(method,{"host_id": host});
- var request = OpenNebula.Helper.request(this.resource,method, [id, host]);
+ var request = OpenNebula.Helper.request(resource,method, [id, host]);
$.ajax({
url: "/vm/" + id + "/action",
@@ -928,10 +945,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
var method = "hold";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -959,10 +977,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
var method = "release";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -990,10 +1009,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
var method = "stop";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -1021,10 +1041,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
var method = "cancel";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -1052,10 +1073,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
-
+ var resource = OpenNebula.VM.resource;
+
var method = "suspend";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -1083,10 +1105,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
var method = "resume";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -1125,8 +1148,10 @@ var OpenNebula = {
"image_name": image_name,
"type" : type
}
+ var resource = OpenNebula.VM.resource;
+
var action = OpenNebula.Helper.action(method,saveas_params)
- var request = OpenNebula.Helper.request(this.resource,method, [vm_id, disk_id, image_name, type]);
+ var request = OpenNebula.Helper.request(resource,method, [vm_id, disk_id, image_name, type]);
$.ajax({
url: "/vm/" + id + "/action",
@@ -1154,10 +1179,11 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.VM.resource;
var method = "restart";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/vm/" + id + "/action",
@@ -1189,8 +1215,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var data = params.data;
+ var resource = OpenNebula.Cluster.resource;
- var request = OpenNebula.Helper.request(this.resource,"create", name);
+ var request = OpenNebula.Helper.request(resource,"create", name);
$.ajax({
url: "/cluster",
@@ -1219,8 +1246,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Cluster.resource;
- var request = OpenNebula.Helper.request(this.resource,"delete", id);
+ var request = OpenNebula.Helper.request(resource,"delete", id);
$.ajax({
url: "/cluster/" + id,
@@ -1247,9 +1275,10 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var timeout = params.timeout || false;
+ var resource = OpenNebula.Cluster.resource;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"list");
+ var resource = OpenNebula.Cluster.resource;
+ var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "/cluster",
@@ -1280,12 +1309,13 @@ var OpenNebula = {
var callback_error = params.error;
var host_id = params.data.id;
var cluster_id = params.data.extra_param;
+ var resource = OpenNebula.Cluster.resource;
var method = "add_host";
var action = OpenNebula.Helper.action(method, {
"host_id" : host_id
});
- var request = OpenNebula.Helper.request(this.resource,method, [host_id, cluster_id]);
+ var request = OpenNebula.Helper.request(resource,method, [host_id, cluster_id]);
$.ajax({
url: "/cluster/" + cluster_id + "/action",
@@ -1319,7 +1349,9 @@ var OpenNebula = {
var action = OpenNebula.Helper.action(method, {
"host_id" : host_id
});
- var request = OpenNebula.Helper.request(this.resource,method, [host_id, cluster_id]);
+ var resource = OpenNebula.Cluster.resource;
+
+ var request = OpenNebula.Helper.request(resource,method, [host_id, cluster_id]);
$.ajax({
url: "/cluster/" + cluster_id + "/action",
@@ -1351,8 +1383,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var data = params.data;
+ var resource = OpenNebula.User.resource;
- var request = OpenNebula.Helper.request(this.resource,"create",data);
+ var request = OpenNebula.Helper.request(resource,"create",data);
$.ajax({
url: "/user",
@@ -1381,8 +1414,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.User.resource;
- var request = OpenNebula.Helper.request(this.resource,"delete", id);
+ var request = OpenNebula.Helper.request(resource,"delete", id);
$.ajax({
url: "/user/" + id,
@@ -1410,8 +1444,8 @@ var OpenNebula = {
var callback_error = params.error;
var timeout = params.timeout || false;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"list");
+ var resource = OpenNebula.Cluster.resource;
+ var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "/user",
@@ -1447,7 +1481,9 @@ var OpenNebula = {
var action = OpenNebula.Helper.action(method, {
"password" : passwd
});
- var request = OpenNebula.Helper.request(this.resource,method, passwd);
+
+ var resource = OpenNebula.User.resource;
+ var request = OpenNebula.Helper.request(resource,method, passwd);
$.ajax({
url: "/user/" + id + "/action",
@@ -1479,8 +1515,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var data = params.data;
+ var resource = OpenNebula.Image.resource;
- var request = OpenNebula.Helper.request(this.resource,"register",data);
+ var request = OpenNebula.Helper.request(resource,"register",data);
$.ajax({
url: "/image",
@@ -1509,8 +1546,9 @@ var OpenNebula = {
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
+ var resource = OpenNebula.Image.resource;
- var request = OpenNebula.Helper.request(this.resource,"delete", id);
+ var request = OpenNebula.Helper.request(resource,"delete", id);
$.ajax({
url: "/image/" + id,
@@ -1538,8 +1576,8 @@ var OpenNebula = {
var callback_error = params.error;
var timeout = params.timeout || false;
- var resource = this.resource;
- var request = OpenNebula.Helper.request(this.resource,"list");
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "/image",
@@ -1570,7 +1608,8 @@ var OpenNebula = {
var callback_error = params.error;
var id = params.data.id;
- var request = OpenNebula.Helper.request(this.resource,"show", id);
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,"show", id);
$.ajax({
url: "/image/" + id,
@@ -1606,7 +1645,9 @@ var OpenNebula = {
"name" : name,
"value" : value
});
- var request = OpenNebula.Helper.request(this.resource,method, [id, name, value]);
+
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, [id, name, value]);
$.ajax({
url: "/image/" + id + "/action",
@@ -1641,7 +1682,9 @@ var OpenNebula = {
var action = OpenNebula.Helper.action(method, {
"name" : name
});
- var request = OpenNebula.Helper.request(this.resource,method, [id, name]);
+
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, [id, name]);
$.ajax({
url: "/image/" + id + "/action",
@@ -1672,7 +1715,9 @@ var OpenNebula = {
var method = "enable";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/image/" + id + "/action",
@@ -1703,7 +1748,8 @@ var OpenNebula = {
var method = "disable";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/image/" + id + "/action",
@@ -1734,7 +1780,8 @@ var OpenNebula = {
var method = "publish";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/image/" + id + "/action",
@@ -1765,7 +1812,8 @@ var OpenNebula = {
var method = "unpublish";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/image/" + id + "/action",
@@ -1796,7 +1844,9 @@ var OpenNebula = {
var method = "persistent";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/image/" + id + "/action",
@@ -1827,7 +1877,9 @@ var OpenNebula = {
var method = "nonpersistent";
var action = OpenNebula.Helper.action(method);
- var request = OpenNebula.Helper.request(this.resource,method, id);
+
+ var resource = OpenNebula.Image.resource;
+ var request = OpenNebula.Helper.request(resource,method, id);
$.ajax({
url: "/image/" + id + "/action",
diff --git a/src/sunstone/public/js/plugins/hosts-tab.js b/src/sunstone/public/js/plugins/hosts-tab.js
index 699cd95e5b..4f1dfa918b 100644
--- a/src/sunstone/public/js/plugins/hosts-tab.js
+++ b/src/sunstone/public/js/plugins/hosts-tab.js
@@ -38,6 +38,65 @@ var hosts_tab_content =
\
';
+var create_host_tmpl =
+'
';
+
+var create_cluster_tmpl =
+'';
+
var hosts_select="";
var clusters_select="";
var host_list_json = {};
@@ -55,6 +114,11 @@ var host_actions = {
notify:False,
},
+ "Host.create_dialog" : {
+ type: "custom",
+ call: popUpCreateHostDialog
+ },
+
"Host.list" : {
type: "list",
call: OpenNebula.Host.list,
@@ -110,7 +174,7 @@ var host_actions = {
"Host.delete" : {
type: "multiple",
- call : OpenNebula.Host.create,
+ call : OpenNebula.Host.delete,
callback : deleteHostElement,
dataTable: function() { return dataTable_hosts },
error : onError,
@@ -136,7 +200,20 @@ var host_actions = {
Sunstone.runAction("Cluster.list");
},
error : onError,
- notify:True,
+ notify:True
+ },
+
+ "Cluster.create_dialog" : {
+ type: "custom",
+ call: popUpCreateClusterDialog
+ },
+
+ "Cluster.list" : {
+ type: "list",
+ call: OpenNebula.Cluster.list,
+ callback: updateClustersView,
+ error: onError,
+ notify:True
},
"Cluster.delete" : {
@@ -178,9 +255,8 @@ var host_buttons = {
img: "/images/Refresh-icon.png",
condition: True
},
-
- "Host.create" : {
- type: "create",
+ "Host.create_dialog" : {
+ type: "create_dialog",
text: "+ New host",
condition :True
},
@@ -195,8 +271,8 @@ var host_buttons = {
tip: "This will disable the selected hosts.",
condition : True
},
- "Cluster.create" : {
- type: "create",
+ "Cluster.create_dialog" : {
+ type: "create_dialog",
text: "+ New Cluster",
condition : True
},
@@ -231,12 +307,25 @@ var host_buttons = {
}
};
+var host_info_panel = {
+ "info_host_tab" : {
+ title: "Host information",
+ content:""
+ },
+
+ "host_template_tab" : {
+ title: "Host template",
+ content: ""
+ }
+};
+
for (action in host_actions){
Sunstone.addAction(action,host_actions[action]);
}
// title, content, buttons, id
Sunstone.addMainTab('Hosts',hosts_tab_content,host_buttons,'hosts_tab');
+Sunstone.addInfoPanel("host_info_panel",host_info_panel);
//Plugin functions
@@ -395,15 +484,11 @@ function updateClustersView(request, cluster_list){
function updateHostInfo(request,host){
- host_info = host.HOST
- rendered_info =
-'\
-
\
-
\
-
\
+ var host_info = host.HOST;
+ var info_host_tab = {
+ title : "Host information",
+ content :
+ '\
\
Host information - '+host_info.NAME+' \
\
@@ -460,20 +545,92 @@ function updateHostInfo(request,host){
Running VMs \
'+host_info.HOST_SHARE.RUNNING_VMS+' \
\
-
\
- \
- \
-
'
+ }
+
+ var host_template_tab = {
+ title : "Host template",
+ content :
+ '
\
Host template '+
prettyPrintJSON(host_info.TEMPLATE)+
- '
\
-
\
-';
- popDialog(rendered_info);
- $('#host_informations').tabs();
+ '
'
+ }
+
+ Sunstone.updateInfoTab("host_info_panel","info_host_tab",info_host_tab);
+ Sunstone.updateInfoTab("host_info_panel","host_template_tab",host_template_tab);
+ popDialog(Sunstone.getInfoPanelHTML("host_info_panel"));
}
+function setUpCreateHostDialog(){
+ $('div#dialogs').append('
');
+ $('div#create_host_dialog').html(create_host_tmpl);
+ $('#create_host_dialog').dialog({
+ autoOpen: false,
+ modal: true,
+ width: 500
+ });
+
+ $('#create_host_dialog button').button();
+
+ //Handle the form submission
+ $('#create_host_form').submit(function(){
+ if (!($('#name',this).val().length)){
+ notifyError("Host name missing!");
+ return false;
+ }
+ host_json = { "host": { "name": $('#name',this).val(),
+ "tm_mad": $('#tm_mad :selected',this).val(),
+ "vm_mad": $('#vmm_mad :selected',this).val(),
+ "im_mad": $('#im_mad :selected',this).val()}}
+
+ //Create the OpenNebula.Host.
+ //If it's successfull we refresh the list.
+ Sunstone.runAction("Host.create",host_json);
+ //OpenNebula.Host.create({data: host_json, success: addHostElement, error: onError});
+ $('#create_host_dialog').dialog('close');
+ return false;
+ });
+
+}
+
+function setUpCreateClusterDialog(){
+ $('div#dialogs').append('
');
+ $('#create_cluster_dialog').html(create_cluster_tmpl);
+
+ $('#create_cluster_dialog').dialog({
+ autoOpen: false,
+ modal: true,
+ width: 400
+ });
+
+ $('#create_cluster_dialog button').button();
+
+ $('#create_cluster_form').submit(function(){
+ name=$('#name',this).val();
+ cluster_json = { "cluster" : { "name" : name }};
+ Sunstone.runAction("Cluster.create",cluster_json);
+ $('#create_cluster_dialog').dialog('close');
+ return false;
+ });
+
+}
+
+
+
+function popUpCreateHostDialog(){
+ $('#create_host_dialog').dialog('open');
+ return false;
+}
+
+function popUpCreateClusterDialog(){
+ $('#create_cluster_dialog').dialog('open');
+ return false;
+}
+
+
+
//Document ready
$(document).ready(function(){
@@ -499,6 +656,9 @@ $(document).ready(function(){
//OpenNebula.Host.list({success: updateHostsView,error: onError});
Sunstone.runAction("Host.list");
+ setUpCreateHostDialog();
+ setUpCreateClusterDialog();
+
//set refresh interval
setInterval(function(){
nodes = $('input:checked',dataTable_hosts.fnGetNodes());
@@ -511,5 +671,6 @@ $(document).ready(function(){
initCheckAllBoxes(dataTable_hosts);
tableCheckboxesListener(dataTable_hosts);
hostInfoListener();
+
});
diff --git a/src/sunstone/public/js/sunstone-util.js b/src/sunstone/public/js/sunstone-util.js
index 3fba713610..a50c0740f8 100644
--- a/src/sunstone/public/js/sunstone-util.js
+++ b/src/sunstone/public/js/sunstone-util.js
@@ -143,7 +143,7 @@ function tableCheckboxesListener(dataTable){
if (last_action_b.length && last_action_b.val().length){
last_action_b.button("disable");
};
- $('.create_button',context).button("enable");
+ $('.create_dialog_button',context).button("enable");
//listen to changes
$('input',dataTable).live("change",function(){
diff --git a/src/sunstone/public/js/sunstone.js b/src/sunstone/public/js/sunstone.js
index 26abd43e66..13a320bf52 100644
--- a/src/sunstone/public/js/sunstone.js
+++ b/src/sunstone/public/js/sunstone.js
@@ -67,6 +67,50 @@ var Sunstone = {
},
+ "getInfoPanelHTML" : function(name){
+ var info_panel = $('
');
+ var tabs = SunstoneCfg["info_panels"][name];
+ var tab=null;
+ for (tab_name in tabs){
+ tab=tabs[tab_name];
+ $('ul',info_panel).append('
'+tab.title+' ');
+ info_panel.append('
'+tab.content+'
');
+ }
+ return info_panel.tabs({selected: 0});
+
+ },
+
+ "addInfoPanel" : function(name, info_panel){
+ SunstoneCfg["info_panels"][name]=info_panel;
+ },
+
+ "updateInfoPanel" : function(name, info_panel,refresh){
+ SunstoneCfg["info_panels"][name]=info_panel;
+ if (refresh){
+ refreshInfoPanel(name);
+ }
+ },
+
+ "removeInfoPanel" : function(name){
+ SunstoneCfg["info_panels"][name] = null;
+ },
+
+ "addInfoTab" : function(info_panel, tab_name, tab){
+ SunstoneCfg["info_panels"][info_panel][tab_name] = tab;
+ },
+
+ "updateInfoTab" : function(info_panel, tab_name, tab, refresh){
+ SunstoneCfg["info_panels"][info_panel][tab_name] = tab;
+ if (refresh){
+ refreshInfoPanelTab(info_panel,tab_name);
+ }
+ },
+
+
+ "removeInfoTab" : function(info_panel,tab_name){
+ SunstoneCfg["info_panels"][info_panel][tab_name] = null;
+ },
+
"runAction" : function(action, data_arg, extra_param){
var actions = SunstoneCfg["actions"];
@@ -93,7 +137,10 @@ var Sunstone = {
// * Other calls
switch (action_cfg.type){
- case "create","single":
+ case "create":
+ call({data:data_arg, success: callback, error:err});
+ break;
+ case "single":
call({data:{id:data_arg}, success: callback,error:err});
break;
case "list":
@@ -258,7 +305,6 @@ $(document).ready(function(){
insertTabs();
insertButtons();
-
initListButtons();
setupCreateDialogs(); //listener for create
setupConfirmDialogs();
@@ -380,6 +426,9 @@ function insertButtons(){
case "image":
button_code = '
';
break;
+ case "create_dialog":
+ button_code = '
'+button.text+' ';
+ break;
default:
button_code = '
'+button.text+' ';
@@ -393,6 +442,56 @@ function insertButtons(){
}
+// We do not insert info panels code, we generate it dinamicly when
+// we need it with getInfoPanelHTML()
+//~ function insertInfoPanels(){
+ //~ var panels = SunstoneCfg["info_panels"];
+ //~ tabs = null;
+ //~ //For each defined dialog
+ //~ for (panel in panels) {
+ //~ addInfoPanel(panel);
+ //~ }
+//~ }
+//~
+//~ function addInfoPanel(name){
+ //~ var tabs = SunstoneCfg["info_panels"][name];
+ //~ $('#info_panels').append('
');
+ //~ for (tab in tabs){
+ //~ addInfoPanelTab(name,tab);
+ //~ }
+ //~ //at this point jquery tabs structure is ready, so we enable it
+ //~ $('div#'+name).tabs();
+//~ }
+//~
+//~ function refreshInfoPanel(name){
+ //~ $('#info_panels div#'+name).tabs("destroy");
+ //~ $('#info_panels div#'+name).remove();
+ //~ $('#info_panels').append('
');
+ //~ var tabs = SunstoneCfg["info_panels"][name];
+ //~ for (tab in tabs){
+ //~ addInfoPanelTab(name,tab);
+ //~ }
+ //~ //at this point jquery tabs structure is ready, so we enable it
+ //~ $('div#'+name).tabs();
+//~ }
+//~
+//~ function addInfoPanelTab(panel_name,tab_name){
+ //~ var tab = SunstoneCfg["info_panels"][panel_name][tab_name];
+ //~ if ( !$('div#'+panel_name+' ul').length ) {
+ //~ $('div#'+panel_name).prepend('
');
+ //~ }
+ //~ $('div#'+panel_name+' ul').append('
'+tab.title+' ');
+ //~ $('div#'+panel_name).append('
'+tab.content+'
');
+//~ }
+//~
+
+
+//Tries to refresh a tab content if it is somewhere in the DOM
+function refreshInfoPanelTab(panel_name,tab_name){
+ var tab = SunstoneCfg["info_panels"][panel_name][tab_name];
+ $('div#'+panel_name+' div#'+tab_name).html(tab.content);
+}
+
//Converts selects into buttons which show a of actions when clicked
function initListButtons(){
diff --git a/src/sunstone/templates/index.html b/src/sunstone/templates/index.html
index 79cc056998..e0358c84a2 100644
--- a/src/sunstone/templates/index.html
+++ b/src/sunstone/templates/index.html
@@ -70,32 +70,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+