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') {
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 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 console.log(project.authority_hrn);
190 if($.inArray(project.authority_hrn,projects) == -1){
191 projects.push(project.authority_hrn);
196 console.log("admin account - we don't list all from root");
199 localStorage.setItem('projects', JSON.stringify(projects));
200 myslice.loadSlices(data[0].slices);
215 getSlices: function(name) {
219 refreshUser: function() {
225 //$('div#loading').show();
228 //setTimeout(function(){
229 //$('div#loading').hide();
230 //window.location.href = '/resources/' + this.slice + '?message=true';
235 $.post("/rest/slice/", { 'fields': ['resource','slice_hrn'], 'filters': { 'slice_hrn' : this.slice } }, function(data) {
240 if ('resource' in data[0]) {
241 $.each(data[0].resource, function(idx, r) {
242 resources.push(r.urn);
246 console.log(myslice.pending);
247 console.log(resources);
248 $.each(resources.concat(myslice.pending), function(idx, v) {
252 $.post("/update/slice/", { 'filters': { 'slice_hrn' : myslice.slice }, 'params' : update }, function(data) {
256 console.log(this.slice);
264 // var Reflector = function(obj) {
265 // this.getProperties = function() {
266 // var properties = [];
267 // for (var prop in obj) {
268 // if (typeof obj[prop] != 'function') {
269 // properties.push(prop);
270 // console.log("prop: " + prop);
272 // console.log("func: " + prop);
275 // return properties;
278 // var reflector = new Reflector(myslice.slices[0].resources.pending);
279 // reflector.getProperties();
282 $(document).ready(function() {
283 //console.log(myslice.user().slices);
285 // $.post("/rest/user/",{'filters':{'user_hrn':'$user_hrn'}}, function(data) {
286 // myslice.user = new user(data[0]);
287 // console.log(myslice.user.slices);
288 // myslice.user.list();
290 // }).fail(function() {
291 // throw "error retreiving user data";
293 // Put the object into storage
294 //localStorage.setItem('testObject', JSON.stringify(testObject));
296 // Retrieve the object from storage
302 // add a resource to pending
304 //myslice.user.slice('ple.upmc.myslicedemo').resources.pending.add(resource);