feat(k8s): display namespace status and terminating namespaces (#5551)
refactor(k8s): use function instead of filterpull/5550/head
parent
e4fe4f9a43
commit
8d157c2c33
|
@ -92,6 +92,13 @@
|
|||
<i class="fa fa-sort-alpha-up" aria-hidden="true" ng-if="$ctrl.state.orderBy === 'Namespace.Name' && $ctrl.state.reverseOrder"></i>
|
||||
</a>
|
||||
</th>
|
||||
<th>
|
||||
<a ng-click="$ctrl.changeOrderBy('Namespace.Status')">
|
||||
Status
|
||||
<i class="fa fa-sort-alpha-down" aria-hidden="true" ng-if="$ctrl.state.orderBy === 'Namespace.Status' && !$ctrl.state.reverseOrder"></i>
|
||||
<i class="fa fa-sort-alpha-up" aria-hidden="true" ng-if="$ctrl.state.orderBy === 'Namespace.Status' && $ctrl.state.reverseOrder"></i>
|
||||
</a>
|
||||
</th>
|
||||
<th>
|
||||
<a ng-click="$ctrl.changeOrderBy('Quota')">
|
||||
Quota
|
||||
|
@ -124,6 +131,9 @@
|
|||
<a ui-sref="kubernetes.resourcePools.resourcePool({ id: item.Namespace.Name })">{{ item.Namespace.Name }}</a>
|
||||
<span style="margin-left: 5px;" class="label label-info image-tag" ng-if="$ctrl.isSystemNamespace(item)">system</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="label label-{{ $ctrl.namespaceStatusColor(item.Namespace.Status) }}">{{ item.Namespace.Status }}</span>
|
||||
</td>
|
||||
<td> <i class="fa {{ item.Quota ? 'fa-toggle-on' : 'fa-toggle-off' }}" aria-hidden="true" style="margin-right: 2px;"></i> {{ item.Quota ? 'Yes' : 'No' }} </td>
|
||||
<td>{{ item.Namespace.CreationDate | getisodate }} {{ item.Namespace.ResourcePoolOwner ? 'by ' + item.Namespace.ResourcePoolOwner : '' }}</td>
|
||||
<td ng-if="$ctrl.isAdmin">
|
||||
|
|
|
@ -38,6 +38,17 @@ angular.module('portainer.docker').controller('KubernetesResourcePoolsDatatableC
|
|||
return !ctrl.isSystemNamespace(item) || (ctrl.settings.showSystem && ctrl.isAdmin);
|
||||
};
|
||||
|
||||
this.namespaceStatusColor = function(status) {
|
||||
switch (status.toLowerCase()) {
|
||||
case 'active':
|
||||
return 'success';
|
||||
case 'terminating':
|
||||
return 'danger';
|
||||
default:
|
||||
return 'primary';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Do not allow system namespaces to be selected
|
||||
*/
|
||||
|
|
|
@ -41,14 +41,11 @@ class KubernetesNamespaceService {
|
|||
const data = await this.KubernetesNamespaces().get().$promise;
|
||||
const promises = _.map(data.items, (item) => this.KubernetesNamespaces().status({ id: item.metadata.name }).$promise);
|
||||
const namespaces = await $allSettled(promises);
|
||||
const visibleNamespaces = _.map(namespaces.fulfilled, (item) => {
|
||||
if (item.status.phase !== 'Terminating') {
|
||||
return KubernetesNamespaceConverter.apiToNamespace(item);
|
||||
}
|
||||
const allNamespaces = _.map(namespaces.fulfilled, (item) => {
|
||||
return KubernetesNamespaceConverter.apiToNamespace(item);
|
||||
});
|
||||
const res = _.without(visibleNamespaces, undefined);
|
||||
updateNamespaces(res);
|
||||
return res;
|
||||
updateNamespaces(allNamespaces);
|
||||
return allNamespaces;
|
||||
} catch (err) {
|
||||
throw new PortainerError('Unable to retrieve namespaces', err);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue