import LaunchpadFleetActions from'../launchpadFleetActions';
import LaunchpadFleetStore from '../launchpadFleetStore';
import UpTime from 'widgets/uptime/uptime.jsx';
-
+import {SkyquakeRBAC, isRBACValid} from 'widgets/skyquake_rbac/skyquakeRBAC.jsx';
+import ROLES from 'utils/roleConstants.js';
+const PROJECT_ROLES = ROLES.PROJECT;
/*
* TODO: Handle when page is loading. See recordView for ref
*/
const {nsrs, openedNsrIDs, emptyRows, isVisible, ...props} = this.props;
const fieldKeys = FIELD_KEYS;
let glyphValue = (isVisible) ? "chevron-left" : "chevron-right";
+
+ let totalNSRs = nsrs && nsrs.length;
+ let runningNSRs = 0;
+ let failedNSRs = 0;
+ let scalingOutNSRs = 0;
+ let scalingInNSRs = 0;
+ let initializingNSRs = 0;
+
+ nsrs && nsrs.map((nsr) => {
+ nsr['operational-status'] == 'running' && runningNSRs++;
+ nsr['operational-status'] == 'failed' && failedNSRs++;
+ nsr['operational-status'] == 'scaling-out' && scalingOutNSRs++;
+ nsr['operational-status'] == 'scaling-in' && scalingInNSRs++;
+ (
+ nsr['operational-status'] == 'init' ||
+ nsr['operational-status'] == 'vl-init-phase' ||
+ nsr['operational-status'] == 'vnf-init-phase'
+ ) && initializingNSRs++;
+ });
+
+
if (isVisible) {
+
+ let title = (
+ <div>
+ NETWORK SERVICES
+ <div className='nsrSummary'>
+ <span className='nsrSummaryItem'>Total: {totalNSRs}</span>
+ <span className='nsrSummaryItem'>Running: {runningNSRs}</span>
+ <span className='nsrSummaryItem'>Failed: {failedNSRs}</span>
+ <span className='nsrSummaryItem'>Scaling Out: {scalingOutNSRs}</span>
+ <span className='nsrSummaryItem'>Scaling In: {scalingInNSRs}</span>
+ <span className='nsrSummaryItem'>Initializing: {initializingNSRs}</span>
+ </div>
+ </div>
+ );
+
+
return (
<DashboardCard className="nsListPanel" showHeader={true}
- title="NETWORK SERVICES">
- {this.panelToolbar()}
+ title={title}>
+ {isRBACValid(this.context.userProfile, [PROJECT_ROLES.LCM_ADMIN, PROJECT_ROLES.PROJECT_ADMIN]) ? this.panelToolbar() : null}
<a onClick={this.handleShowHideToggle(!isVisible)}
className={"nsListPanelToggle"}>
<span className="oi"
}
}
NsListPanel.contextTypes = {
- router: React.PropTypes.object
+ router: React.PropTypes.object,
+ userProfile: React.PropTypes.object
};
NsListPanel.defaultProps = {
isVisible: true