diff options
author | Vodafone <onap@vodafone.com> | 2019-04-05 15:49:06 +0530 |
---|---|---|
committer | Oren Kleks <orenkle@amdocs.com> | 2019-04-10 06:41:37 +0000 |
commit | 18750938b1513ee32d4d68f0871ec90efdf3ddfd (patch) | |
tree | fae174b2b4d42cf5fa60312c78ced935c318cd25 /openecomp-ui/src | |
parent | ef0e8be1453e3959b38c9832e3e729e4e86a9e04 (diff) |
VSP Compliance Check for Compute Flavor
Change-Id: I04768a20413393026606a3f5b200e959e37c1410
Issue-ID: SDC-2051
Co-authored-by: rahul.ghugikar@vodafone.com, soumyarup.paul@vodafone.com
Signed-off-by: Vodafone <onap@vodafone.com>
Diffstat (limited to 'openecomp-ui/src')
5 files changed, 215 insertions, 89 deletions
diff --git a/openecomp-ui/src/nfvo-utils/i18n/en.json b/openecomp-ui/src/nfvo-utils/i18n/en.json index 1ad23b7a1a..f57b7fdd3c 100644 --- a/openecomp-ui/src/nfvo-utils/i18n/en.json +++ b/openecomp-ui/src/nfvo-utils/i18n/en.json @@ -650,8 +650,10 @@ "Selected Compliance Tests": "Selected Compliance Tests", "Value Should Be Minimum of {minLength} characters and a Maximum of {maxLength} characters": "Value Should Be Minimum of {minLength} characters and a Maximum of {maxLength} characters", "{title} Inputs :": "{title} Inputs :", - "Scenario: {scenario} | Status: {status}": "Scenario: {scenario} | Status: {status}", + "Scenario: {scenario} | Title: {title} | Test Case: {testCaseName} | Status: {status}": "Scenario: {scenario} | Title: {title} | Test Case: {testCaseName} | Status: {status}", "{title} results are not available": "{title} results are not available", "Test Results": "Test Results", - "No Validation Checks Performed": "No Validation Checks Performed" + "No Validation Checks Performed": "No Validation Checks Performed", + "Unknown": "Unknown" + } diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js index d19416a2aa..1ebb94b77c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationActionHelper.js @@ -32,7 +32,7 @@ function postVSPCertificationChecks(tests) { function fetchVspChecks() { const restPrefix = Configuration.get('restPrefix'); - return RestAPIUtil.get(`${restPrefix}/v1.0/externaltesting/testcasetree`); + return RestAPIUtil.fetch(`${restPrefix}/v1.0/externaltesting/testcasetree`); } const SoftwareProductValidationActionHelper = { diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx index 8611c41937..a8ea3804b4 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationView.jsx @@ -210,7 +210,10 @@ class SoftwareProductValidation extends Component { softwareProductValidation.vspChecks ); } - this.setState({ activeTab: tabsMapping.SETUP }); + this.setState({ + activeTab: tabsMapping.SETUP, + goToValidationInput: false + }); setActiveTab({ activeTab: tabsMapping.SETUP }); } } @@ -269,6 +272,20 @@ class SoftwareProductValidation extends Component { } } + fetchDefaultValue(value) { + let { softwareProductId, version } = this.props; + let versionName = parseFloat(version.name).toFixed(1), + versionNumber = + versionName > 1 ? (versionName - 1).toFixed(1) : versionName, + versionUUID = version.id; + value = + value === '$vspid' + ? softwareProductId + : value === '$vspPreviousVersion' ? versionNumber : value; + value = value === '$vspVersionUUID' ? versionUUID : value || ''; + return value; + } + formTestsRequest(item, testsRequest) { let { vspTestsMap } = this.props.softwareProductValidation; testsRequest[item] = { @@ -279,8 +296,9 @@ class SoftwareProductValidation extends Component { endpoint: vspTestsMap[item]['endpoint'] }; vspTestsMap[item].parameters.forEach(parameter => { - testsRequest[item].parameters[parameter.name] = - parameter.defaultValue || ''; + testsRequest[item].parameters[ + parameter.name + ] = this.fetchDefaultValue(parameter.defaultValue); }); return testsRequest; } diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx index c2990a2058..26a6003b5a 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validation/inputs/VspValidationInputsView.jsx @@ -284,8 +284,8 @@ class VspValidationInputs extends Component { size="default" data-test-id="proceed-to-validation-results-btn" disabled={false} - className="proceed-to-validation-monitor-btn" - onClick={() => this.performVSPTests()}> + type="submit" + className="proceed-to-validation-monitor-btn"> {i18n('Submit')} </Button> </Form> diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx index b6cc1d5bdc..162d281ee4 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx @@ -74,109 +74,215 @@ class SoftwareProductValidationResultsView extends React.Component { }; } - buildSubAccordions(result) { - if (result.status && result.status.toLowerCase() === 'completed') { - if (!result.results.testResults) { + getTitle(result) { + let { vspTestsMap } = this.props.softwareProductValidation; + let title = vspTestsMap[result.testCaseName] + ? vspTestsMap[result.testCaseName].title + : i18n('Unknown'); + return i18n( + 'Scenario: {scenario} | Title: {title} | Test Case: {testCaseName} | Status: {status}', + { + scenario: result.scenario || i18n('Unknown'), + status: result.status || i18n('Unknown'), + testCaseName: result.testCaseName || i18n('Unknown'), + title: title + } + ); + } + + renderJSON(result) { + return ( + <li type="none"> + <textarea + disabled={true} + className="validation-results-test-result-json" + value={JSON.stringify(result, null, 2)} + /> + </li> + ); + } + + renderError(result) { + if (Array.isArray(result)) { + return result.map((parameter, index) => { return ( - <div - title={i18n('Scenario: {scenario} | Status: {status}', { - scenario: result.scenario, - status: result.status - })}> + <li type="none" key={index}> <SVGIcon color="negative" name="errorCircle" labelPosition="right" /> <span className="validation-results-test-result-label"> - {i18n('{title} results are not available', { - title: result.scenario - })} + {(parameter.code || '') + + ' | ' + + (parameter.advice || parameter.message)} </span> - </div> + </li> ); - } - return ( - <Accordion - dataTestId="vsp-validation-test-result-success" - title={i18n('Scenario: {scenario} | Status: {status}', { - scenario: result.scenario, - status: result.status - })}> - {Object.keys(result.results.testResults).map( - (key, index) => { - let title = unCamelCasedString(key); - if (result.results.testResults[key].length > 0) { - return ( - <Accordion - dataTestId={title} - title={title} - key={index}> - <TestResultComponent - tests={ - result.results.testResults[key] - } - /> - </Accordion> - ); - } else { - return ( - <div> - {i18n( - '{title} results are not available', - { - title: title - } - )} - </div> - ); - } - } - )} - </Accordion> - ); - } else if ( - result.status && - result.status.toLowerCase() === 'failed' && - result.results.errors - ) { + }); + } else { return ( - <Accordion - dataTestId="vsp-validation-test-result-success" - title={i18n('Scenario: {scenario} | Status: {status}', { - scenario: result.scenario, - status: result.status - })}> - {result.results.errors.map((element, index) => { - return ( - <li type="none" key={index}> - <SVGIcon - color="negative" - name="errorCircle" - labelPosition="right" - /> - <span className="validation-results-test-result-label"> - {element.reason + ' | ' + element.advice} - </span> - </li> - ); - })} - </Accordion> + <li type="none"> + <SVGIcon + color="negative" + name="errorCircle" + labelPosition="right" + /> + <span className="validation-results-test-result-label"> + {(result.code || '') + + ' | ' + + (result.advice || result.message)} + </span> + </li> ); - } else if (result.message || result.httpStatus) { + } + } + + renderResults(result) { + if (typeof result === 'string' || result instanceof String) { return ( <div> <SVGIcon - color="negative" + color="warning" name="errorCircle" labelPosition="right" /> <span className="validation-results-test-result-label"> - {result.message + ' | ' + result.httpStatus} + {result} </span> </div> ); } + return Object.keys(result).map((key, index) => { + let title = unCamelCasedString(key); + if ( + typeof result[key] === 'string' || + result[key] instanceof String + ) { + return ( + <Accordion + defaultExpanded + dataTestId={title} + title={title} + key={index}> + {this.renderString(result[key])} + </Accordion> + ); + } else if (Array.isArray(result[key])) { + if (result[key].length > 0) { + return ( + <Accordion + defaultExpanded + dataTestId={title} + title={title} + key={index}> + <TestResultComponent tests={result[key]} /> + </Accordion> + ); + } else { + return ( + <Accordion + defaultExpanded + dataTestId={title} + title={title} + key={index}> + {i18n('{title} results are not available', { + title: title + })} + </Accordion> + ); + } + } else { + return ( + <Accordion + defaultExpanded + dataTestId={title} + title={title} + key={index}> + {this.renderJSON(result[key])} + </Accordion> + ); + } + }); + } + + renderString(result) { + return ( + <li type="none"> + <textarea + type="textarea" + disabled={true} + className="validation-results-test-result-string" + value={result} + /> + </li> + ); + } + + buildSubAccordions(result) { + let results = result.results; + + if (!results) { + return ( + <Accordion + defaultExpanded + dataTestId="vsp-test-no-results" + title={this.getTitle(result)}> + {this.renderJSON(result)} + </Accordion> + ); + } else if (typeof results === 'string' || results instanceof String) { + return ( + <Accordion + defaultExpanded + dataTestId="vsp-test-string-results" + title={this.getTitle(result)}> + {this.renderString(results)} + </Accordion> + ); + } else { + return ( + <Accordion + defaultExpanded + dataTestId="vsp-test-object-results" + title={this.getTitle(result)}> + {Object.keys(results).length === 0 + ? this.renderString( + i18n('{title} results are not available', { + title: 'Test' + }) + ) + : Object.keys(results).map(key => { + if (key === 'errors' || key === 'error') { + return this.renderError(results[key]); + } else if (key === 'testResults') { + return this.renderResults(results[key]); + } else { + let title = unCamelCasedString(key); + if (results[key] instanceof Object) { + return ( + <Accordion + defaultExpanded + dataTestId={title} + title={title}> + {this.renderJSON(results[key])} + </Accordion> + ); + } else { + return ( + <Accordion + defaultExpanded + dataTestId={title} + title={title}> + {this.renderString(results[key])} + </Accordion> + ); + } + } + })} + </Accordion> + ); + } } render() { |