4 function isFunction(functionToCheck) {
6 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
13 list.prototype.add = function(element) {
14 if (!this.has(element)) {
15 this.elements.push(element);
19 list.prototype.del = function(element) {
20 if (this.has(element)) {
21 this.elements.splice(index, 1);
25 list.prototype.has = function(element) {
26 index = $.inArray( element, this.elements );
33 list.prototype.count = function() {
34 return this.elements.length;
39 * resources, users, leases
42 function resources() {
66 function slice(name) {
68 this.resources = new resources();
69 this.users = new users();
70 this.leases = new leases();
80 this.testbeds = new list();
81 this.slices = new list();
83 for (i = 0; i < this.user.slices.length; i++) {
84 this.slices[this.user.slices[i]] = new slice(this.user.slices[i]);
88 user.prototype.slice = function(name) {
89 return this.slices[name];
92 user.prototype.list = function() {
93 for (s in this.slices) {
95 if (typeof o != 'function') {
110 get_user: function() {
111 if ($.isEmptyObject(this.user)) {
112 //this.login(function() { return this.user; });
113 if(localStorage.getItem('user')!='undefined'){
114 this.user = JSON.parse(localStorage.getItem('user'));
123 get_projects: function() {
124 if ($.isEmptyObject(this.projects)) {
125 //this.login(function() { return this.user; });
126 if(localStorage.getItem('projects')!='undefined'){
127 this.projects = JSON.parse(localStorage.getItem('projects'));
132 return this.projects;
135 loadSlices: function(slices) {
136 if (typeof(slices) == "undefined"){
138 if(myslice.user != null && typeof(myslice.user.slices) != "undefined" && myslice.user.slices.length>0){
139 slices = myslice.user.slices
142 // myslice.user is in LocalStorage
143 if(typeof(slices) != "undefined"){
145 This allows progressive loading per AM platform
146 Launch queries to get the resources and leases in Manifold Cache
148 TODO support cache for prefixed objects
149 XXX Disabled until it's supported on Manifold side
152 $.post("/rest/platform/", function( data ) {
153 $.each(data, function(index, p) {
154 $.post("/rest/"+p.platform+":resource/", function( data ) {
156 $.post("/rest/"+p.platform+":lease/", function( data ) {
158 $.each( slices, function(i, val) {
159 // Launch a Query for each slice to get it in Manifold Cache
160 $.post("/rest/"+p.platform+":slice/", { 'filters': { 'slice_hrn' : val } }, function(data) {
170 login: function(fn) {
171 user = localStorage.getItem('user');
172 if($.isEmptyObject(user)){
173 // REGISTRY ONLY TO BE REMOVED WITH MANIFOLD-V2
174 $.post("/rest/myslice:user/",{'filters':{'user_hrn':'$user_hrn'}}, function( data ) {
175 if (data.length > 0) {
176 localStorage.setItem('user', JSON.stringify(data[0]));
178 $.each(data[0].pi_authorities, function(idx, auth) {
180 if(auth.split('.').length>2){
181 if($.inArray(auth,projects) == -1){
184 }else if (auth.split('.').length>1){
186 // What are the projects under this authority?
187 $.post("/rest/myslice:authority/",{'fields':['authority_hrn'],'filters':{'authority_hrn':'CONTAINS'+auth}}, function( data ) {
188 $.each(data, function(idx, project) {
189 if($.inArray(project.authority_hrn,projects) == -1){
190 projects.push(project.authority_hrn);
195 console.log("admin account - we don't list all from root");
198 localStorage.setItem('projects', JSON.stringify(projects));
199 myslice.loadSlices(data[0].slices);
204 $('#credentials_msg').css('display','block');
208 $('#credentials_msg').css('display','block');
216 getSlices: function(name) {
220 refreshUser: function() {
226 //$('div#loading').show();
229 //setTimeout(function(){
230 //$('div#loading').hide();
231 //window.location.href = '/resources/' + this.slice + '?message=true';
236 $.post("/rest/slice/", { 'fields': ['resource','slice_hrn'], 'filters': { 'slice_hrn' : this.slice } }, function(data) {
241 if ('resource' in data[0]) {
242 $.each(data[0].resource, function(idx, r) {
243 resources.push(r.urn);
247 console.log(myslice.pending);
248 console.log(resources);
249 $.each(resources.concat(myslice.pending), function(idx, v) {
253 $.post("/update/slice/", { 'filters': { 'slice_hrn' : myslice.slice }, 'params' : update }, function(data) {
257 console.log(this.slice);
265 // var Reflector = function(obj) {
266 // this.getProperties = function() {
267 // var properties = [];
268 // for (var prop in obj) {
269 // if (typeof obj[prop] != 'function') {
270 // properties.push(prop);
271 // console.log("prop: " + prop);
273 // console.log("func: " + prop);
276 // return properties;
279 // var reflector = new Reflector(myslice.slices[0].resources.pending);
280 // reflector.getProperties();
283 $(document).ready(function() {
284 //console.log(myslice.user().slices);
286 // $.post("/rest/user/",{'filters':{'user_hrn':'$user_hrn'}}, function(data) {
287 // myslice.user = new user(data[0]);
288 // console.log(myslice.user.slices);
289 // myslice.user.list();
291 // }).fail(function() {
292 // throw "error retreiving user data";
294 // Put the object into storage
295 //localStorage.setItem('testObject', JSON.stringify(testObject));
297 // Retrieve the object from storage
303 // add a resource to pending
305 //myslice.user.slice('ple.upmc.myslicedemo').resources.pending.add(resource);