diff --git a/src/sunstone/public/app/opennebula/action.js b/src/sunstone/public/app/opennebula/action.js index 4b197b6fda..1eb6dcb919 100644 --- a/src/sunstone/public/app/opennebula/action.js +++ b/src/sunstone/public/app/opennebula/action.js @@ -6,6 +6,8 @@ define(function(require) { var listWaiting = {}; var listCallbacks = {}; + var nameIndex = {}; + var CACHE_EXPIRE = 60000; //ms var _clearCache = function(cache_name) { @@ -161,6 +163,9 @@ define(function(require) { list = OpenNebulaHelper.pool(resource, response); } + nameIndex[cache_name] = OpenNebulaHelper.pool_name_processing( + resource+"_POOL", resource, response); + listCache[cache_name] = { timestamp : new Date().getTime(), data : list @@ -345,8 +350,22 @@ define(function(require) { }); }, + "getName": function(id, cache_name){ + if(nameIndex[cache_name] != undefined){ + var name = nameIndex[cache_name][id]; + if (name != undefined){ + return name; + } + + // TODO: if name is not found, perform a .list or .show to at least + // get it ready for the next call? + } + + return ""+id; + }, + "clear_cache": _clearCache - } + }; return Action; }); diff --git a/src/sunstone/public/app/opennebula/cluster.js b/src/sunstone/public/app/opennebula/cluster.js index 43598ced69..271861f325 100644 --- a/src/sunstone/public/app/opennebula/cluster.js +++ b/src/sunstone/public/app/opennebula/cluster.js @@ -54,6 +54,9 @@ define(function(require) { "rename" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/datastore.js b/src/sunstone/public/app/opennebula/datastore.js index 04e54aae3e..44bee59875 100644 --- a/src/sunstone/public/app/opennebula/datastore.js +++ b/src/sunstone/public/app/opennebula/datastore.js @@ -50,6 +50,9 @@ define(function(require) { }, "disable": function(params) { OpenNebulaAction.simple_action(params, RESOURCE, "disable"); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/group.js b/src/sunstone/public/app/opennebula/group.js index 4eba319953..8ab61f02b7 100644 --- a/src/sunstone/public/app/opennebula/group.js +++ b/src/sunstone/public/app/opennebula/group.js @@ -61,8 +61,11 @@ define(function(require) { "del_admin" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "del_admin", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } - } + }; return Group; -}) +}); \ No newline at end of file diff --git a/src/sunstone/public/app/opennebula/helper.js b/src/sunstone/public/app/opennebula/helper.js index 4977ffca4b..ff710358ad 100644 --- a/src/sunstone/public/app/opennebula/helper.js +++ b/src/sunstone/public/app/opennebula/helper.js @@ -91,6 +91,39 @@ define(function(require) { p_pool[res[resource_name]['ID']] = res; + return (p_pool); + } + }, + + "pool_name_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 = pool[i]; + + p_pool[res['ID']] = res['NAME']; + } + return (p_pool); + } else { + var res = pool; + + p_pool[res['ID']] = res['NAME']; + return (p_pool); } } diff --git a/src/sunstone/public/app/opennebula/host.js b/src/sunstone/public/app/opennebula/host.js index b4d2c23a20..33bcd11846 100644 --- a/src/sunstone/public/app/opennebula/host.js +++ b/src/sunstone/public/app/opennebula/host.js @@ -70,6 +70,9 @@ define(function(require) { "rename" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/image.js b/src/sunstone/public/app/opennebula/image.js index 1769bce00b..fe2c572bc0 100644 --- a/src/sunstone/public/app/opennebula/image.js +++ b/src/sunstone/public/app/opennebula/image.js @@ -83,6 +83,9 @@ define(function(require) { "rename" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/network.js b/src/sunstone/public/app/opennebula/network.js index 5f16536c75..327b579afd 100644 --- a/src/sunstone/public/app/opennebula/network.js +++ b/src/sunstone/public/app/opennebula/network.js @@ -70,6 +70,9 @@ define(function(require) { "rename" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/securitygroup.js b/src/sunstone/public/app/opennebula/securitygroup.js index 8dc2912e81..9ec2c4e906 100644 --- a/src/sunstone/public/app/opennebula/securitygroup.js +++ b/src/sunstone/public/app/opennebula/securitygroup.js @@ -43,6 +43,9 @@ define(function(require) { "rename" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/service.js b/src/sunstone/public/app/opennebula/service.js index 16595a6d93..30b7bd33df 100644 --- a/src/sunstone/public/app/opennebula/service.js +++ b/src/sunstone/public/app/opennebula/service.js @@ -56,6 +56,9 @@ define(function(require) { Locale.tr("COOLDOWN") ][state_int] return state ? state : state_int; + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, CACHE_NAME); } } diff --git a/src/sunstone/public/app/opennebula/servicetemplate.js b/src/sunstone/public/app/opennebula/servicetemplate.js index c70d8bc43f..ba657cdfa3 100644 --- a/src/sunstone/public/app/opennebula/servicetemplate.js +++ b/src/sunstone/public/app/opennebula/servicetemplate.js @@ -46,6 +46,9 @@ define(function(require) { params.cache_name = CACHE_NAME; var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "chmod", action_obj, PATH); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, CACHE_NAME); } } diff --git a/src/sunstone/public/app/opennebula/template.js b/src/sunstone/public/app/opennebula/template.js index 5e75ec6540..b202e0d114 100644 --- a/src/sunstone/public/app/opennebula/template.js +++ b/src/sunstone/public/app/opennebula/template.js @@ -52,6 +52,9 @@ define(function(require) { "rename" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/user.js b/src/sunstone/public/app/opennebula/user.js index 246ab7a271..839f08145e 100644 --- a/src/sunstone/public/app/opennebula/user.js +++ b/src/sunstone/public/app/opennebula/user.js @@ -77,8 +77,11 @@ define(function(require) { "delgroup" : function(params) { var action_obj = {"group_id": params.data.extra_param}; OpenNebulaAction.simple_action(params, RESOURCE, "delgroup", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } - } + }; return User; -}) +}); \ No newline at end of file diff --git a/src/sunstone/public/app/opennebula/vdc.js b/src/sunstone/public/app/opennebula/vdc.js index 7f32b67b87..3fc84b16dc 100644 --- a/src/sunstone/public/app/opennebula/vdc.js +++ b/src/sunstone/public/app/opennebula/vdc.js @@ -72,6 +72,9 @@ define(function(require) { "del_vnet" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "del_vnet", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } } diff --git a/src/sunstone/public/app/opennebula/vm.js b/src/sunstone/public/app/opennebula/vm.js index 78196d7b80..87db25da03 100644 --- a/src/sunstone/public/app/opennebula/vm.js +++ b/src/sunstone/public/app/opennebula/vm.js @@ -475,6 +475,9 @@ define(function(require) { "isNICAttachSupported": isNICAttachSupported, "isVNCSupported": isVNCSupported, "isSPICESupported": isSPICESupported, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); + } } function retrieveLastHistoryRecord(element) { diff --git a/src/sunstone/public/app/opennebula/zone.js b/src/sunstone/public/app/opennebula/zone.js index 43fe4431ba..95e683831c 100644 --- a/src/sunstone/public/app/opennebula/zone.js +++ b/src/sunstone/public/app/opennebula/zone.js @@ -27,8 +27,11 @@ define(function(require) { "rename" : function(params) { var action_obj = params.data.extra_param; OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj); + }, + "getName": function(id){ + return OpenNebulaAction.getName(id, RESOURCE); } - } + }; return Zone; -}) +}); \ No newline at end of file