Merge branch 'develop' into Evan
This commit is contained in:
commit
89f2c4ac8c
19 changed files with 260 additions and 107 deletions
|
@ -11,27 +11,28 @@
|
||||||
<link rel="stylesheet" href="./css/style.css">
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
|
||||||
|
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
<!-- Overlay -->
|
||||||
|
<div ng-include="'./partials/login.html'"></div>
|
||||||
|
<div ng-include="'./partials/home/machineDetails.html'"></div>
|
||||||
|
<div ng-include="'./partials/loading.html'"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- MAIN GRID -->
|
<!-- MAIN GRID -->
|
||||||
<div class="container-lg">
|
<div class="container-lg">
|
||||||
<!-- Status bar -->
|
<!-- Status bar -->
|
||||||
<div class="row" ng-controller="statusCtrl">
|
<div class="row" ng-controller="statusCtrl">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<!-- Login Overlay -->
|
<!-- Status bar -->
|
||||||
<div ng-include="'./partials/login.html'"></div>
|
<div ng-include="'./partials/status.html'"></div>
|
||||||
<!-- Machine Details Overlay -->
|
|
||||||
<div ng-include="'./partials/home/machineDetails.html'"></div>
|
|
||||||
<div ng-include="'./partials/loading.html'"></div>
|
|
||||||
|
|
||||||
<!-- Nav -->
|
|
||||||
<div ng-include="'./partials/nav.html'"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Page content -->
|
<!-- Page content -->
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -85,9 +86,10 @@
|
||||||
<!-- Include controller -->
|
<!-- Include controller -->
|
||||||
<script src="./js/controllers/login.js"></script>
|
<script src="./js/controllers/login.js"></script>
|
||||||
<script src="./js/controllers/status.js"></script>
|
<script src="./js/controllers/status.js"></script>
|
||||||
<script src="./js/controllers/home/main.js"></script>
|
<script src="./js/controllers/home/home.js"></script>
|
||||||
<script src="./js/controllers/home/machineDetails.js"></script>
|
<script src="./js/controllers/home/machineDetails.js"></script>
|
||||||
<script src="./js/controllers/network/main.js"></script>
|
<script src="./js/controllers/network/network.js"></script>
|
||||||
|
<script src="./js/controllers/image/image.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,12 +13,16 @@ mainApp.config(['$routeProvider', function($routeProvider){
|
||||||
|
|
||||||
$routeProvider.
|
$routeProvider.
|
||||||
when('/home',{
|
when('/home',{
|
||||||
templateUrl: 'partials/home/main.html',
|
templateUrl: 'partials/home/home.html',
|
||||||
controller: 'homeCtrl'
|
controller: 'homeCtrl'
|
||||||
}).
|
}).
|
||||||
when('/network',{
|
when('/network',{
|
||||||
templateUrl: 'partials/network/main.html',
|
templateUrl: 'partials/network/network.html',
|
||||||
controller: 'networkCtrl'
|
controller: 'networkCtrl'
|
||||||
|
}).
|
||||||
|
when('/image',{
|
||||||
|
templateUrl: 'partials/image/image.html',
|
||||||
|
controller: 'imageCtrl'
|
||||||
}).otherwise({
|
}).otherwise({
|
||||||
redirectTo: '/home'
|
redirectTo: '/home'
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* @param {$scope} $scope The $scope service from angular
|
* @param {$scope} $scope The $scope service from angular
|
||||||
*/
|
*/
|
||||||
mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', 'Loading','Identity', function ($scope, Compute, $rootScope, Loading, Identity)
|
mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', 'Loading','Identity', 'Image', function ($scope, Compute, $rootScope, Loading, Identity, Image)
|
||||||
{
|
{
|
||||||
|
|
||||||
var callMeAfterPullData=function(data){
|
var callMeAfterPullData=function(data){
|
||||||
|
@ -16,8 +16,14 @@ mainApp.controller('homeCtrl', [ '$scope', 'Compute', '$rootScope', 'Loading','I
|
||||||
Loading.start();
|
Loading.start();
|
||||||
Compute.pullData(callMeAfterPullData);
|
Compute.pullData(callMeAfterPullData);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
if(Identity.isAlreadyLogin()){
|
||||||
|
callMeAfterPullData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Image.getImages(function(){});
|
||||||
|
|
||||||
|
|
||||||
$scope.raiseShowMachineDetailsEvent=function(id){
|
$scope.raiseShowMachineDetailsEvent=function(id){
|
|
@ -6,23 +6,25 @@
|
||||||
mainApp.controller('machineDetailsCtrl', [ '$scope', 'Compute', '$rootScope', '$timeout', function ($scope, Compute, $rootScope, $timeout)
|
mainApp.controller('machineDetailsCtrl', [ '$scope', 'Compute', '$rootScope', '$timeout', function ($scope, Compute, $rootScope, $timeout)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Init scope
|
||||||
$scope.machine={};
|
$scope.machine={};
|
||||||
$("#waitingForToggleMachine").hide();
|
$scope.machineIsStarting=false; // For loading icon
|
||||||
|
|
||||||
|
|
||||||
$scope.$on('showMachineDetailsEvent', function(eventName ,machine, axioms){
|
$scope.$on('showMachineDetailsEvent', function(eventName ,machine, axioms){
|
||||||
$scope.machine=machine;
|
$scope.machine=machine;
|
||||||
$scope.axioms=axioms;
|
$scope.axioms=axioms;
|
||||||
console.log(machine);
|
|
||||||
$('#machineDetailsModal').modal({backdrop: false, keyboard: true});
|
$('#machineDetailsModal').modal({backdrop: false, keyboard: true});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$scope.toggleMachineState=function(){
|
$scope.toggleMachineState=function(){
|
||||||
$("#waitingForToggleMachine").show();
|
// Display gif
|
||||||
|
$scope.machineIsStarting=true;
|
||||||
|
|
||||||
// Fake timeout
|
// Fake timeout
|
||||||
$timeout(function(){
|
$timeout(function(){
|
||||||
$("#waitingForToggleMachine").hide();
|
$scope.machineIsStarting=false;
|
||||||
}, 3000);
|
}, 3000);
|
||||||
$timeout(function(){
|
$timeout(function(){
|
||||||
$scope.machine.online=!$scope.machine.online;
|
$scope.machine.online=!$scope.machine.online;
|
||||||
|
|
21
client/js/controllers/image/image.js
Normal file
21
client/js/controllers/image/image.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/**
|
||||||
|
* The image controller
|
||||||
|
*
|
||||||
|
* @param {$scope} $scope The $scope service from angular
|
||||||
|
*/
|
||||||
|
mainApp.controller('imageCtrl', ['$scope', 'Image', 'Loading', function ($scope, Image, Loading)
|
||||||
|
{
|
||||||
|
var callbackTest=function(){
|
||||||
|
$scope.images=Image.getData().images;
|
||||||
|
Loading.stop();
|
||||||
|
};
|
||||||
|
|
||||||
|
if(Image.getData().images==null){
|
||||||
|
Loading.start();
|
||||||
|
Image.getImages(callbackTest);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
callbackTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
}]);
|
|
@ -16,10 +16,11 @@ mainApp.controller('loginCtrl', ['$scope','$sce','Identity', function ($scope,$s
|
||||||
|
|
||||||
// Manager logout event
|
// Manager logout event
|
||||||
$scope.$on('logoutEvent', function(){
|
$scope.$on('logoutEvent', function(){
|
||||||
Identity.logout();
|
|
||||||
$('#loginModal').modal({backdrop: 'static', keyboard: false});
|
$('#loginModal').modal({backdrop: 'static', keyboard: false});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Hide loading button and message alert
|
// Hide loading button and message alert
|
||||||
$('#loadingLoginButton').hide();
|
$('#loadingLoginButton').hide();
|
||||||
$('#failedToLoginAlert').hide();
|
$('#failedToLoginAlert').hide();
|
||||||
|
|
|
@ -11,10 +11,10 @@ mainApp.controller('statusCtrl', ['$scope','Identity', '$rootScope', function ($
|
||||||
|
|
||||||
// Give profile to model
|
// Give profile to model
|
||||||
$scope.profile=Identity.getProfile();
|
$scope.profile=Identity.getProfile();
|
||||||
|
|
||||||
// Function to logout
|
// Function to logout
|
||||||
$scope.raiseLogoutEvent=function(){
|
$scope.logout=function(){
|
||||||
$rootScope.$broadcast('logoutEvent');
|
Identity.logout();
|
||||||
};
|
};
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){
|
mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){
|
||||||
|
|
||||||
/* Create profile structure to store informations
|
/* Create profile structure to store informations
|
||||||
* about current session
|
* about current session
|
||||||
|
@ -51,6 +51,9 @@ mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){
|
||||||
token=null;
|
token=null;
|
||||||
profile.username=null;
|
profile.username=null;
|
||||||
profile.projectname=null;
|
profile.projectname=null;
|
||||||
|
|
||||||
|
// Reload Page
|
||||||
|
location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,6 +98,7 @@ mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){
|
||||||
else{
|
else{
|
||||||
requestParserResult.failReason="Please check your username, password and project name !";
|
requestParserResult.failReason="Please check your username, password and project name !";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return requestParserResult;
|
return requestParserResult;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,27 +1,58 @@
|
||||||
|
|
||||||
mainApp.factory('Image',[ '$http', 'Identity', function($http, Identity){
|
mainApp.factory('Image',[ '$http', 'Identity', function($http, Identity){
|
||||||
|
|
||||||
|
var data={};
|
||||||
|
data.images=null;
|
||||||
|
|
||||||
|
|
||||||
var parseUploadImageAnswer=function(response, failedToSendRequest){
|
var parseUploadImageAnswer=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.images=response.data.Images;
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(failedToSendRequest){
|
||||||
|
requestParserResult.failReason="Failed to send request";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
requestParserResult.failReason="Error";
|
||||||
|
}
|
||||||
|
return requestParserResult;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var getImages=function(callback){
|
var getImages=function(callback){
|
||||||
|
|
||||||
var result=$http.post('../server/index.php',
|
var result=$http.post('../server/index.php',
|
||||||
$.param({"token" : Identity.profile.token, "task" : "Image"}));
|
$.param({"token" : Identity.getToken(), "task" : "image", 'action':'listImage'}));
|
||||||
|
|
||||||
|
// Wait and handle the response
|
||||||
|
result.then(function (response){
|
||||||
|
callback(parseUploadImageAnswer(response, false));
|
||||||
|
},function(response){
|
||||||
|
callback(parseUploadImageAnswer(response, true));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var getData=function(response){
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
// Return services objects
|
// Return services objects
|
||||||
return {
|
return {
|
||||||
uploadImage: uploadImage
|
getImages:getImages,
|
||||||
|
getData:getData
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,23 @@
|
||||||
|
|
||||||
mainApp.factory('Loading',[ '$http', 'Identity', function($http, Identity){
|
mainApp.factory('Loading',[ function(){
|
||||||
|
/**
|
||||||
|
* Display Loading modal
|
||||||
|
*/
|
||||||
|
|
||||||
var start=function(){
|
var start=function(){
|
||||||
$('#loadingModal').modal({backdrop: 'static', keyboard: false});
|
$('#loadingModal').modal({backdrop: 'static', keyboard: false});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide Loading modal
|
||||||
|
*/
|
||||||
var stop=function(){
|
var stop=function(){
|
||||||
$('#loadingModal').modal('hide');
|
$('#loadingModal').modal('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Service returns
|
||||||
return {
|
return {
|
||||||
start:start,
|
start:start,
|
||||||
stop:stop
|
stop:stop
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
<button class="btn btn-danger" ng-if="machine.status=='ACTIVE'" ng-click="toggleMachineState()">Turn Off</button>
|
<button class="btn btn-danger" ng-if="machine.status=='ACTIVE'" ng-click="toggleMachineState()">Turn Off</button>
|
||||||
<button class="btn btn-success" ng-if="machine.status!=='ACTIVE'" ng-click="toggleMachineState()">Turn On</button>
|
<button class="btn btn-success" ng-if="machine.status!=='ACTIVE'" ng-click="toggleMachineState()">Turn On</button>
|
||||||
<img src="images/spin/32x32/Preloader_1.gif" id="waitingForToggleMachine"></span>
|
<img src="images/spin/32x32/Preloader_1.gif" ng-if="machineIsStarting"></span>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
10
client/partials/image/image.html
Normal file
10
client/partials/image/image.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<div class="panel panel-default" ng-controller="imageCtrl">
|
||||||
|
<div class="panel-heading">
|
||||||
|
Images disponibles
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div ng-repeat="image in images">
|
||||||
|
{{image.name}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -1,4 +1,5 @@
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
<a href="#/home" class="list-group-item">Home</a>
|
<a href="#/home" class="list-group-item">Home</a>
|
||||||
<a href="#/network" class="list-group-item">Network</a>
|
<a href="#/network" class="list-group-item">Network</a>
|
||||||
</div>
|
<a href="#/image" class="list-group-item">Images</a>
|
||||||
|
</div>
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
<nav class="navbar navbar-default">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="#"><b>Status</b></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="navbar-"></div>
|
|
||||||
|
|
||||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
|
||||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
|
||||||
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li class="nav-divider"></li>
|
|
||||||
<li><a href="#">User : {{ profile.username }}</a></li>
|
|
||||||
<li><a href="#">Project Name : {{ profile.projectname }}</a></li>
|
|
||||||
|
|
||||||
<!--<li><a href="#" >Connection : <span ng-bind-html="connection"></span></a></li>-->
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Account<span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="#">Informations</a></li>
|
|
||||||
<li><a href="#">Settings</a></li>
|
|
||||||
<li role="separator" class="divider"></li>
|
|
||||||
<li><a href="#" ng-click="raiseLogoutEvent()">Logout</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div><!-- /.navbar-collapse -->
|
|
||||||
</div><!-- /.container-fluid -->
|
|
||||||
</nav>
|
|
29
client/partials/status.html
Normal file
29
client/partials/status.html
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<!-- Brand and toggle get grouped for better mobile display -->
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand"><b>Status</b></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="navbar-"></div>
|
||||||
|
|
||||||
|
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li class="nav-divider"></li>
|
||||||
|
<li><a>User : {{ profile.username }}</a></li>
|
||||||
|
<li><a>Project Name : {{ profile.projectname }}</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="nav navbar-nav navbar-right">
|
||||||
|
<li><a ng-click="logout()">Logout</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
|
@ -12,11 +12,11 @@ class compute
|
||||||
protected $libClass;
|
protected $libClass;
|
||||||
|
|
||||||
|
|
||||||
public function __construct($app)
|
public function __construct($app)
|
||||||
{
|
{
|
||||||
$this->app = $app;
|
$this->app = $app;
|
||||||
$this->libClass = $app->getLibClass("Compute");
|
$this->libClass = $app->getLibClass("Compute");
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Execute an action
|
* Execute an action
|
||||||
*
|
*
|
||||||
|
@ -41,13 +41,26 @@ class compute
|
||||||
$servers[$server->id] = Array();
|
$servers[$server->id] = Array();
|
||||||
$server->flavor->retrieve();
|
$server->flavor->retrieve();
|
||||||
$server->image->retrieve();
|
$server->image->retrieve();
|
||||||
|
$server->retrieve();
|
||||||
$servers[$server->id]["id"] = $server->id;
|
$servers[$server->id]["id"] = $server->id;
|
||||||
$servers[$server->id]["name"] = $server->name;
|
$servers[$server->id]["name"] = $server->name;
|
||||||
$servers[$server->id]["imageId"] = $server->image->id;
|
$servers[$server->id]["image"] = $server->image;
|
||||||
$servers[$server->id]["flavorId"] = $server->flavor->id;
|
|
||||||
$servers[$server->id]["status"] = $server->status;
|
|
||||||
$servers[$server->id]["ram"] = $server->flavor->ram;
|
$servers[$server->id]["ram"] = $server->flavor->ram;
|
||||||
$servers[$server->id]["disk"] = $server->flavor->disk;
|
$servers[$server->id]["disk"] = $server->flavor->disk;
|
||||||
|
$servers[$server->id]["flavor"] = $server->flavor;
|
||||||
|
$servers[$server->id]["status"] = $server->status;
|
||||||
|
$servers[$server->id]["created"] = $server->created;
|
||||||
|
$servers[$server->id]["updated"] = $server->updated;
|
||||||
|
$servers[$server->id]["ipv4"] = $server->ipv4;
|
||||||
|
$servers[$server->id]["ipv6"] = $server->ipv6;
|
||||||
|
$servers[$server->id]["progress"] = $server->progress;
|
||||||
|
$servers[$server->id]["hostId"] = $server->hostId;
|
||||||
|
$servers[$server->id]["tenantId"] = $server->tenantId;
|
||||||
|
$servers[$server->id]["userId"] = $server->userId;
|
||||||
|
$servers[$server->id]["taskState"] = $server->taskState;
|
||||||
|
$servers[$server->id]["addresses"] = $server->addresses;
|
||||||
|
$servers[$server->id]["links"] = $server->links;
|
||||||
|
$servers[$server->id]["metadata"] = $server->metadata;
|
||||||
}
|
}
|
||||||
$this->app->setOutput("Servers", $servers);
|
$this->app->setOutput("Servers", $servers);
|
||||||
return;
|
return;
|
||||||
|
@ -62,8 +75,13 @@ class compute
|
||||||
$flavors = Array();
|
$flavors = Array();
|
||||||
foreach($flavorList as $flavor){
|
foreach($flavorList as $flavor){
|
||||||
$flavors[$flavor->id] = Array();
|
$flavors[$flavor->id] = Array();
|
||||||
|
$flavor->retrieve();
|
||||||
$flavors[$flavor->id]["id"] = $flavor->id;
|
$flavors[$flavor->id]["id"] = $flavor->id;
|
||||||
$flavors[$flavor->id]["name"] = $flavor->name;
|
$flavors[$flavor->id]["name"] = $flavor->name;
|
||||||
|
$flavors[$flavor->id]["ram"] = $flavor->ram;
|
||||||
|
$flavors[$flavor->id]["disk"] = $flavor->disk;
|
||||||
|
$flavors[$flavor->id]["vcpus"] = $flavor->vcpus;
|
||||||
|
$flavors[$flavor->id]["links"] = $flavor->links;
|
||||||
}
|
}
|
||||||
$this->app->setOutput("Flavors", $flavors);
|
$this->app->setOutput("Flavors", $flavors);
|
||||||
return;
|
return;
|
||||||
|
@ -78,29 +96,32 @@ class compute
|
||||||
$images = Array();
|
$images = Array();
|
||||||
foreach($imageList as $image){
|
foreach($imageList as $image){
|
||||||
$images[$image->id] = Array();
|
$images[$image->id] = Array();
|
||||||
|
$image->retrieve();
|
||||||
$images[$image->id]["id"] = $image->id;
|
$images[$image->id]["id"] = $image->id;
|
||||||
$images[$image->id]["name"] = $image->name;
|
$images[$image->id]["name"] = $image->name;
|
||||||
|
$images[$image->id]["status"] = $image->status;
|
||||||
|
$images[$image->id]["created"] = $image->created;
|
||||||
|
$images[$image->id]["updated"] = $image->updated;
|
||||||
|
$images[$image->id]["minDisk"] = $image->minDisk;
|
||||||
|
$images[$image->id]["minRam"] = $image->minRam;
|
||||||
|
$images[$image->id]["progress"] = $image->progress;
|
||||||
|
$images[$image->id]["links"] = $image->links;
|
||||||
|
$images[$image->id]["metadata"] = $image->metadata;
|
||||||
}
|
}
|
||||||
$this->app->setOutput("Images", $images);
|
$this->app->setOutput("Images", $images);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Create server.
|
|
||||||
* @return array
|
|
||||||
*
|
|
||||||
public function createServer()
|
|
||||||
{
|
|
||||||
|
|
||||||
$server = $this->libClass->createServer();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Get server details.
|
* Get server details.
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getServer()
|
public function getServer()
|
||||||
{
|
{
|
||||||
$serverId = $this->app->getPostParam("serverId");
|
$serverId = $this->app->getPostParam("serverId");
|
||||||
|
if(!isset($serverId)){
|
||||||
|
$this->app->setOutput("Error", "Server ID is missing, son!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
$opt = array('id' => $serverId);
|
$opt = array('id' => $serverId);
|
||||||
$server = $this->libClass->getServer($opt);
|
$server = $this->libClass->getServer($opt);
|
||||||
$server->retrieve();
|
$server->retrieve();
|
||||||
|
@ -114,6 +135,10 @@ class compute
|
||||||
public function getFlavor()
|
public function getFlavor()
|
||||||
{
|
{
|
||||||
$flavorId = $this->app->getPostParam("flavorId");
|
$flavorId = $this->app->getPostParam("flavorId");
|
||||||
|
if(!isset($serverId)){
|
||||||
|
$this->app->setOutput("Error", "Flavor ID is missing, son!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
$opt = array('id' => $flavorId);
|
$opt = array('id' => $flavorId);
|
||||||
$flavor = $this->libClass->getFlavor($opt);
|
$flavor = $this->libClass->getFlavor($opt);
|
||||||
$flavor->retrieve();
|
$flavor->retrieve();
|
||||||
|
@ -127,23 +152,80 @@ class compute
|
||||||
public function getImage()
|
public function getImage()
|
||||||
{
|
{
|
||||||
$imageId = $this->app->getPostParam("imageId");
|
$imageId = $this->app->getPostParam("imageId");
|
||||||
|
if(!isset($serverId)){
|
||||||
|
$this->app->setOutput("Error", "Image ID is missing, son!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
$opt = array('id' => $imageId);
|
$opt = array('id' => $imageId);
|
||||||
$image = $this->libClass->getImage($opt);
|
$image = $this->libClass->getImage($opt);
|
||||||
$image->retrieve();
|
$image->retrieve();
|
||||||
$this->app->setOutput("MyImage", $image);
|
$this->app->setOutput("MyImage", $image);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* working on tests
|
/**
|
||||||
|
* Create server.
|
||||||
public function update()
|
* @return array
|
||||||
|
*/
|
||||||
|
public function createServer()
|
||||||
{
|
{
|
||||||
$image = $this->app->getServer(array $options = []);
|
$name = $this->app->getPostParam("name");
|
||||||
|
$imageId = $this->app->getPostParam("imageId");
|
||||||
|
$flavorId = $this->app->getPostParam("flavorId");
|
||||||
|
if(!isset($name) || !isset($imageId) || !isset($flavorId)){
|
||||||
|
$this->app->setOutput("Error", "No, we don't let you create a server without a name OR image ID OR flavor ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$opt = array('name' => $name, 'imageId' => $imageId, 'flavorId' => $flavorId);
|
||||||
|
$server = $this->libClass->createServer($opt);
|
||||||
}
|
}
|
||||||
public function delete()
|
|
||||||
|
/**
|
||||||
|
* update a server
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function updateServer()
|
||||||
{
|
{
|
||||||
//TODO
|
$serverId = $this->app->getPostParam("serverId");
|
||||||
|
$newName = $this->app->getPostParam("newName");
|
||||||
|
$newIpv4 = $this->app->getPostParam("newIpv4");
|
||||||
|
$newIpv6 = $this->app->getPostParam("newIpv6");
|
||||||
|
if(!isset($serverId)|| !(isset($newName) || isset($newIpv4) || isset($newIpv6)) ){
|
||||||
|
$this->app->setOutput("Error", "You'll have to provide server ID and the new attribute(IP(v4/v6)/Name) you desire to update!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$opt = array('id' => $serverId);
|
||||||
|
$server = $this->libClass->getServer($opt);
|
||||||
|
if (isset($newName)){
|
||||||
|
if(isset($newIpv4)){
|
||||||
|
if(isset($newIpv6)){
|
||||||
|
$attr = array('name' => $newName, 'accessIPv4' => $newIPv4, 'accessIPv6' => $newIpv6);
|
||||||
|
}
|
||||||
|
else $attr = array('name' => $newName, 'accessIPv4' => $newIPv4);
|
||||||
|
}
|
||||||
|
else $attr = array('name' => $newName);
|
||||||
|
}
|
||||||
|
$server->update($attr);
|
||||||
|
$this->app->setOutput("Success", $serverId." has been updated successfully.");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Delete a server
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function deleteServer()
|
||||||
|
{
|
||||||
|
$serverId = $this->app->getPostParam("serverId");
|
||||||
|
if(!isset($serverId)){
|
||||||
|
$this->app->setOutput("Error", "Server ID is missing, son!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$opt = array('id' => $serverId);
|
||||||
|
$server = $this->libClass->getServer($opt);
|
||||||
|
$server->delete();
|
||||||
|
$this->app->setOutput("Success", $serverId." has been deleted successfully.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/*
|
||||||
public function changePassword($newPassword)
|
public function changePassword($newPassword)
|
||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
|
|
Loading…
Add table
Reference in a new issue