istic-openstack/client/js/services/Compute.js

142 lines
3.3 KiB
JavaScript
Raw Normal View History

2016-02-18 18:06:06 +01:00
mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){
2016-03-01 20:51:08 +01:00
// Init data
var data={};
2016-03-01 20:51:08 +01:00
data.machines=null;
2016-03-01 22:50:37 +01:00
data.axioms={} // Contain static data
data.axioms.ram=[128,512,1024,2048,4096];
data.axioms.disk=[1,2,5,10,25,50,100,150,200]
data.axioms.images={}; // Retrieve after
2016-02-29 08:54:04 +01:00
2016-03-01 20:51:08 +01:00
/**
2016-03-01 22:50:37 +01:00
* Parse pullMachines answer
2016-03-01 20:51:08 +01:00
* @param {response} the server response
* @param {boolean} false if the request as been send true else
* @return {requestParserResult} the result of parsing
*/
var parsePullMachinesAnswer=function(response, failedToSendRequest){
2016-03-01 15:50:57 +01:00
// Defined return object
var requestParserResult={};
requestParserResult.status=1;
requestParserResult.failReason=null;
2016-03-01 20:51:08 +01:00
2016-03-01 15:50:57 +01:00
if (typeof response.data.Servers !== 'undefined') {
// Set status code
requestParserResult.status=0;
data.machines=response.data.Servers;
2016-03-01 16:55:36 +01:00
2016-03-01 15:50:57 +01:00
}
else if(failedToSendRequest){
requestParserResult.failReason="Failed to send request";
}
else{
requestParserResult.failReason="Error";
}
return requestParserResult;
2016-02-18 18:06:06 +01:00
};
2016-03-01 20:51:08 +01:00
/**
* Retrieve machine list
* @param {callback} function to call after request complete
*/
2016-03-01 15:50:57 +01:00
var pullMachines=function(callback){
2016-03-01 20:51:08 +01:00
// Send listServers request
2016-02-18 18:06:06 +01:00
var result=$http.post('../server/index.php',
2016-03-01 20:51:08 +01:00
$.param({"token" : Identity.getToken(), "task" : "compute", "action":"listServers"}));
2016-02-28 20:30:57 +01:00
// Wait and handle the response
result.then(function (response){
2016-03-01 20:51:08 +01:00
callback(parsePullMachinesAnswer(response, false));
2016-02-28 20:30:57 +01:00
},function(response){
2016-03-01 20:51:08 +01:00
callback(parsePullMachinesAnswer(response, true));
});
2016-02-18 18:06:06 +01:00
};
2016-03-01 22:50:37 +01:00
/**
* Parse pullImages answer
* @param {response} the server response
* @param {boolean} false if the request as been send true else
* @return {requestParserResult} the result of parsing
*/
var parsePullImagesAnswer=function(response, failedToSendRequest){
// Defined return object
var requestParserResult={};
requestParserResult.status=1;
requestParserResult.failReason=null;
if (typeof response.data.Images !== 'undefined') {
// Set status code
requestParserResult.status=0;
data.axioms.images=response.data.Images;
}
else if(failedToSendRequest){
requestParserResult.failReason="Failed to send request";
}
else{
requestParserResult.failReason="Error";
}
return requestParserResult;
};
2016-03-01 22:50:37 +01:00
/**
* Retrieve machine list
* @param {callback} function to call after request complete
*/
var pullImages=function(callback){
// Send listServers request
var result=$http.post('../server/index.php',
$.param({"token" : Identity.getToken(), "task" : "compute", "action":"listImages"}));
// Wait and handle the response
result.then(function (response){
callback(parsePullImagesAnswer(response, false));
},function(response){
callback(parsePullImagesAnswer(response, true));
});
};
2016-03-01 20:51:08 +01:00
/**
* Retrieve all data
* @param {callback} function to call after request complete
*/
var pullData=function(callback){
2016-03-01 22:50:37 +01:00
var nextFunction=function(response){
if(response.status==0){
pullMachines(callback);
}
}
pullImages(nextFunction);
}
2016-02-18 18:06:06 +01:00
2016-03-01 15:50:57 +01:00
2016-03-01 20:51:08 +01:00
/**
* Get Data
* @return {data} return the data object
*/
2016-03-01 15:50:57 +01:00
var getData=function(){
return data;
}
2016-02-18 18:06:06 +01:00
// Return services objects
return {
2016-03-01 15:50:57 +01:00
pullMachines: pullMachines,
2016-02-24 14:39:47 +01:00
pullData: pullData,
2016-03-01 15:50:57 +01:00
getData: getData
2016-02-18 18:06:06 +01:00
};
}]);