X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Flaunchpad%2Fsrc%2FrecordViewer%2FrecordCard.jsx;h=50a3585d504c28b3ccb23420fa038d3c43bea827;hp=e3c3dadceea8fe93e77b25f15d506dc531fe737a;hb=47f1c190e7bec1588bbf094107b2641363ad36e2;hpb=e29efc315df33d546237e270470916e26df391d6 diff --git a/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx b/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx index e3c3dadce..50a3585d5 100644 --- a/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx +++ b/skyquake/plugins/launchpad/src/recordViewer/recordCard.jsx @@ -1,6 +1,6 @@ /* - * + * * Copyright 2016 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -31,6 +31,12 @@ import ParseMP from '../monitoring_params/monitoringParamComponents.js'; import PlacementGroupsInfo from './placementGroupsInfo.jsx'; import JobListCard from '../launchpad_card/jobListCard.jsx'; import NSVirtualLinks from '../virtual_links/nsVirtualLinks.jsx'; +import LaunchpadFleetStore from '../launchpadFleetStore.js'; + +import Prism from 'prismjs'; +import 'prismjs/themes/prism.css'; + + export default class RecordCard extends React.Component { constructor(props) { super(props) @@ -40,7 +46,13 @@ export default class RecordCard extends React.Component { // console.log('Selected tab is', index, 'last index is', last); } + openConsole = (url, event) => { + event.preventDefault(); + LaunchpadFleetStore.getVDUConsoleLink(url); + } + render(){ + let self = this; let html; let content; let card; @@ -58,10 +70,13 @@ export default class RecordCard extends React.Component { let displayNSVirtualLinks = false; let nsVirtualLinksProps = {}; let nsVirtualLinksComponent = null; - + let displayVolumesTab = false; + let volumesHTML = []; let tabList = []; let tabPanels = []; + let notice = null; + switch(this.props.type) { case 'vnfr' : cardData = this.props.data[0]; @@ -80,16 +95,18 @@ export default class RecordCard extends React.Component {
{ //Sort for recent on top - this.props.jobData.sort(function(a,b){ + this.props.jobData + .sort(function(a,b){ return parseInt(b['job-id']) - parseInt(a['job-id']); - }).map(function(job){ + }) + .map(function(job){ //Return only vnfr configs if(job["triggered-by"] == 'vnf-primitive') { return job.vnfr.map(function(v){ //That match the currently selected job id if(v.id == cardData.id) { return v.primitive.map(function(p, i) { - return + return }) } }) @@ -103,22 +120,59 @@ export default class RecordCard extends React.Component { if (cardData['vdur']) { cardData['vdur'].map((vdur, index) => { - let consoleLink = vdur['console-url'] ? 'Open VM Console' : 'None'; + let consoleLink = vdur['console-url'] ? 'Obtain Token And Open VM Console' : 'None'; consoleUrlsList.push(
  • {vdur['name'] + '-' + vdur.id.substr(0,4)}

    - - {consoleLink} - + + {consoleLink} * +
  • ) + notice =
  • * If a separate browser window does not open, please check if the popup was blocked and allow it.
  • + if(vdur.hasOwnProperty('volumes') && (vdur.volumes.length > 0)) { + displayVolumesTab = true; + vdur.volumes.map((volume, vi) => { + // let html = Prism.highlight(JSON.stringify(volume), Prism.languages.javascript, 'javascript'); + // volumesHTML.push( + //
    +                //       
    +                //     
    + function buildProperties(obj) { + let p = []; + _.forEach(obj, function(v, k) { + p.push( +
    +
    {k}
    +
    {v.constructor.name == 'String' ? v : buildProperties(v)}
    +
    + ) + }); + return p; + } + volumesHTML.push( +
    +
    + VOLUME +
    +
    + { + buildProperties(volume) + } +
    +
    + ) + }) + } }); consoleUrlsComponent = (
      {consoleUrlsList} + {notice}
    ); @@ -145,16 +199,16 @@ export default class RecordCard extends React.Component {
    {sortedJobs.map(function(job, i){ if(job["triggered-by"] == 'ns-primitive') { - return + return } }) .concat(sortedJobs.map(function(job) { if(!job.hasOwnProperty('job-name') && (job["triggered-by"] == 'ns-primitive')) { - return job.vnfr.map(function(v){ + return job.vnfr.map(function(v, h){ //That match the currently selected job id if(v.id == cardData.id) { return v.primitive.map(function(p, i) { - return + return }) } }) @@ -195,7 +249,7 @@ export default class RecordCard extends React.Component { let nfviMetrics = ; metricsAndParams.push(
    - {components.sort().map(function(c, k) { + {components.map(function(c, k) { return
    {c.title}{c.component}
    })}
    ) @@ -212,7 +266,7 @@ export default class RecordCard extends React.Component { if(this.props.isLoading) { html = } else { - let glyphValue = (this.props.mmmrecordDetailsToggleValue) ? "chevron-left" : "chevron-right"; + let glyphValue = (!this.props.recordDetailsToggleValue) ? "chevron-left" : "chevron-right"; if (this.props.type == 'nsr') { tabList.push( @@ -313,7 +367,7 @@ export default class RecordCard extends React.Component { if (consoleUrlsComponent) { let consoleUrlsTabTitle = ''; consoleUrlsTabTitle = 'VDU Console Links'; - + tabList.push( {consoleUrlsTabTitle} ); @@ -329,6 +383,21 @@ export default class RecordCard extends React.Component { ) } + if (displayVolumesTab) { + + tabList.push( + Volumes + ); + + tabPanels.push( + + {volumesHTML} +
    +
    +
    + ) + } + html = (