update from RIFT as of 696b75d2fe9fb046261b08c616f1bcf6c0b54a9b third try
[osm/UI.git] / skyquake / plugins / launchpad / src / nsListPanel / nsListPanel.jsx
index c8c8412..8a1334d 100644 (file)
@@ -6,7 +6,9 @@ import DashboardCard from 'widgets/dashboard_card/dashboard_card.jsx';
 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
  */
@@ -326,11 +328,48 @@ export default class NsListPanel extends React.Component {
         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"
@@ -359,7 +398,8 @@ export default class NsListPanel extends React.Component {
     }
 }
 NsListPanel.contextTypes = {
-    router: React.PropTypes.object
+    router: React.PropTypes.object,
+    userProfile: React.PropTypes.object
 };
 NsListPanel.defaultProps = {
     isVisible: true