Commit 90cd25d9 by Johannes Stelzer

Add proper endpoint detection for /logfile and /activiti using a single request to /configprops

parent 11a37713
...@@ -17,12 +17,4 @@ ...@@ -17,12 +17,4 @@
module.exports = function ($scope, application) { module.exports = function ($scope, application) {
$scope.application = application; $scope.application = application;
application.getActiviti()
.success(function () {
$scope.application.providesActiviti = true;
})
.error(function () {
$scope.application.providesActiviti = false;
});
}; };
...@@ -60,24 +60,6 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application ...@@ -60,24 +60,6 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application
} }
}); });
}; };
var getLogfile = function (app) {
return app.hasLogfile()
.success(function () {
app.providesLogfile = true;
})
.error(function () {
app.providesLogfile = false;
});
};
var getActiviti = function (app) {
return app.getActiviti()
.success(function () {
app.providesActiviti = true;
})
.error(function () {
app.providesActiviti = false;
});
};
$scope.loadData = function () { $scope.loadData = function () {
Application.query(function (applications) { Application.query(function (applications) {
...@@ -88,13 +70,11 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application ...@@ -88,13 +70,11 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application
app.info = $scope.applications[j].info; app.info = $scope.applications[j].info;
app.version = $scope.applications[j].version; app.version = $scope.applications[j].version;
app.status = $scope.applications[j].status; app.status = $scope.applications[j].status;
app.providesLogfile = $scope.applications[j].providesLogfile;
app.providesActiviti = $scope.applications[j].providesActiviti;
break; break;
} }
} }
app.refreshing = true; app.refreshing = true;
$q.all(getInfo(app), getHealth(app), getLogfile(app), getActiviti(app)) $q.all(getInfo(app), getHealth(app))
.finally(function () { .finally(function () {
app.refreshing = false; app.refreshing = false;
}); });
......
...@@ -14,53 +14,73 @@ ...@@ -14,53 +14,73 @@
* limitations under the License. * limitations under the License.
*/ */
'use strict'; 'use strict';
var angular = require('angular');
module.exports = function ($resource, $http, $rootScope) { module.exports = function ($resource, $http) {
var Application = $resource(
'api/applications/:id', { id: '@id' }, {
query: { method: 'GET', isArray: true },
get: { method: 'GET' },
remove: { method: 'DELETE' }
});
var AuthInterceptor = function (application) { var isEndpointEnabled = function(endpoint, configprops) {
return function (data, status, headers) { if (configprops[endpoint]) {
if (status === 401) { return configprops[endpoint].properties.enabled;
$rootScope.$emit('application-auth-required', application, headers('WWW-Authenticate').split(' ')[0]);
} }
return false;
}; };
var getCapabilities = function(application) {
application.capabilities = {};
$http.get('api/applications/' + application.id + '/configprops').success(function(configprops) {
application.capabilities.logfile = isEndpointEnabled('logfileEndpoint', configprops);
application.capabilities.activiti = isEndpointEnabled('processEngineEndpoint', configprops);
});
}; };
var Application = $resource(
'api/applications/:id', { id: '@id' }, {
query: { method: 'GET',
isArray: true,
transformResponse: function(data) {
var apps = angular.fromJson(data);
for (var i = 0; i < apps.length; i++) {
getCapabilities(apps[i]);
}
return apps;
}
},
get: { method: 'GET',
transformResponse: function(data) {
var app = angular.fromJson(data);
getCapabilities(app);
return app;
}
},
remove: { method: 'DELETE' }
});
Application.prototype.getHealth = function () { Application.prototype.getHealth = function () {
return $http.get('api/applications/' + this.id + '/health').error(new AuthInterceptor(this)); return $http.get('api/applications/' + this.id + '/health');
}; };
Application.prototype.getInfo = function () { Application.prototype.getInfo = function () {
return $http.get('api/applications/' + this.id + '/info').error(new AuthInterceptor(this)); return $http.get('api/applications/' + this.id + '/info');
}; };
Application.prototype.getMetrics = function () { Application.prototype.getMetrics = function () {
return $http.get('api/applications/' + this.id + '/metrics').error(new AuthInterceptor(this)); return $http.get('api/applications/' + this.id + '/metrics');
}; };
Application.prototype.getEnv = function () { Application.prototype.getEnv = function () {
return $http.get('api/applications/' + this.id + '/env').error(new AuthInterceptor(this)); return $http.get('api/applications/' + this.id + '/env');
}; };
Application.prototype.getThreadDump = function () { Application.prototype.getThreadDump = function () {
return $http.get('api/applications/' + this.id + '/dump').error(new AuthInterceptor(this)); return $http.get('api/applications/' + this.id + '/dump');
}; };
Application.prototype.getTraces = function () { Application.prototype.getTraces = function () {
return $http.get('api/applications/' + this.id + '/trace').error(new AuthInterceptor(this)); return $http.get('api/applications/' + this.id + '/trace');
}; };
Application.prototype.getActiviti = function () { Application.prototype.getActiviti = function () {
return $http.get('api/applications/' + this.id + '/activiti').error(new AuthInterceptor(this)); return $http.get('api/applications/' + this.id + '/activiti');
};
Application.prototype.hasLogfile = function () {
return $http.head('api/applications/' + this.id + '/logfile').error(new AuthInterceptor(this));
}; };
return Application; return Application;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.jmx({id: application.id})">JMX</a></li> <li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.jmx({id: application.id})">JMX</a></li>
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.threads({id: application.id})">Threads</a></li> <li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.threads({id: application.id})">Threads</a></li>
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.trace({id: application.id})">Trace</a></li> <li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.trace({id: application.id})">Trace</a></li>
<li ng-show="application.providesActiviti" class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.activiti({id: application.id})">Activiti</a></li> <li ng-show="application.capabilities.activiti" class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.activiti({id: application.id})">Activiti</a></li>
</ul> </ul>
</div> </div>
</div> </div>
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<span ng-show="application.refreshing" class="refresh"></span></td> <span ng-show="application.refreshing" class="refresh"></span></td>
<td style="text-align: right;"> <td style="text-align: right;">
<div class="btn-group" ng-hide="application.managementUrl == null || application.status == null || application.status == 'OFFLINE'"> <div class="btn-group" ng-hide="application.managementUrl == null || application.status == null || application.status == 'OFFLINE'">
<a ng-disabled="!application.providesLogfile" target="_self" class="btn btn-success" ng-href="{{application.providesLogfile ? application.url + '/logfile' :''}}"><i class="icon-file icon-white"></i>Log</a> <a ng-disabled="!application.capabilities.logfile" target="_self" class="btn btn-success" ng-href="{{application.capabilities.logfile ? application.managementUrl + '/logfile' :''}}"><i class="icon-file icon-white"></i>Log</a>
<a ui-sref="apps.details.metrics({id: application.id})" class="btn btn-success">Details</a> <a ui-sref="apps.details.metrics({id: application.id})" class="btn btn-success">Details</a>
<a class="btn btn-success dropdown-toggle" data-toggle="dropdown"> <a class="btn btn-success dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span> <span class="caret"></span>
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<li><a ui-sref="apps.jmx({id: application.id})" >JMX</a></li> <li><a ui-sref="apps.jmx({id: application.id})" >JMX</a></li>
<li><a ui-sref="apps.threads({id: application.id})" >Threads</a></li> <li><a ui-sref="apps.threads({id: application.id})" >Threads</a></li>
<li><a ui-sref="apps.trace({id: application.id})" >Trace</a></li> <li><a ui-sref="apps.trace({id: application.id})" >Trace</a></li>
<li ng-show="application.providesActiviti"><a ui-sref="apps.activiti({id: application.id})" >Activiti</a></li> <li ng-show="application.capabilities.activiti"><a ui-sref="apps.activiti({id: application.id})" >Activiti</a></li>
</ul> </ul>
</div> </div>
<div class="btn-group" title="remove"> <div class="btn-group" title="remove">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment