mirror of https://github.com/rancher/ui.git
Merge pull request #3649 from codyrancher/cis-report
Update the downloaded report
This commit is contained in:
commit
f9302a929f
|
|
@ -74,15 +74,9 @@ export default Controller.extend({
|
|||
|
||||
return tests.map((test) => {
|
||||
const state = this.getCheckState(test);
|
||||
const nodeTypes = test.node_type;
|
||||
|
||||
const nodeNames = nodeTypes.reduce((agg, nodeType) => [...agg, ...get(this, `model.scan.report.nodes.${ nodeType }`)], []);
|
||||
const uniqueNodeNames = Object.keys(nodeNames.reduce((agg, nodeName) => ({
|
||||
...agg,
|
||||
[nodeName]: true
|
||||
}), {}));
|
||||
const nodeNames = get(this, 'model.scan').getNodeNamesFromNodeType(test.node_type);
|
||||
const checkNodes = test.nodes || [];
|
||||
const nodes = uniqueNodeNames.map((nodeName) => ({
|
||||
const nodes = nodeNames.map((nodeName) => ({
|
||||
state: this.getNodeState(test, nodeName, checkNodes),
|
||||
nodeId: get(this, 'model.nodes').findBy('nodeName', nodeName).id,
|
||||
name: nodeName
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { computed, get, set, observer } from '@ember/object';
|
|||
import moment from 'moment';
|
||||
import { downloadFile } from 'shared/utils/download-files';
|
||||
import ObjectsToCsv from 'objects-to-csv';
|
||||
import { extractUniqueStrings } from '../utils/util';
|
||||
|
||||
const ClusterScan = Resource.extend({
|
||||
type: 'clusterScan',
|
||||
|
|
@ -49,25 +50,23 @@ const ClusterScan = Resource.extend({
|
|||
}),
|
||||
|
||||
referencedResults: computed('report', function() {
|
||||
const results = (get(this, 'report.results') || [])
|
||||
return (get(this, 'report.results') || [])
|
||||
.map((result) => result.checks)
|
||||
.reduce((agg, check) => [...agg, ...(check || [])], []);
|
||||
const nodes = get(this, 'report.nodes') || {};
|
||||
|
||||
return results.map((result) => {
|
||||
return {
|
||||
...result,
|
||||
nodes: this.getNodes(nodes, result.node_type)
|
||||
};
|
||||
});
|
||||
}),
|
||||
|
||||
resultsForCsv: computed('referencedResults', function() {
|
||||
resultsForCsv: computed('referencedResults', 'report', function() {
|
||||
return get(this, 'referencedResults').map((result) => {
|
||||
const nodesAndStateForTest = this.getNodesAndStateForTestResult(result);
|
||||
const version = `Version: ${ get(this, 'report.version') }`;
|
||||
|
||||
return {
|
||||
[version]: '',
|
||||
...result,
|
||||
nodes: result.nodes.join(','),
|
||||
node_type: result.node_type.join(',')
|
||||
nodes: nodesAndStateForTest.nodes.join(','),
|
||||
passed_nodes: nodesAndStateForTest.passedNodes.join(','),
|
||||
failed_nodes: nodesAndStateForTest.failedNodes.join(','),
|
||||
node_type: result.node_type.join(',')
|
||||
};
|
||||
})
|
||||
}),
|
||||
|
|
@ -114,6 +113,48 @@ const ClusterScan = Resource.extend({
|
|||
return nodeTypes.reduce((agg, nodeType) => [...agg, ...nodes[nodeType]], []);
|
||||
},
|
||||
|
||||
getNodeNamesFromNodeType(nodeType) {
|
||||
const nodeNames = nodeType
|
||||
.reduce((agg, nodeType) => [...agg, ...get(this, `report.nodes.${ nodeType }`)], []);
|
||||
|
||||
return extractUniqueStrings(nodeNames);
|
||||
},
|
||||
|
||||
getNodesAndStateForTestResult(testResult) {
|
||||
if (testResult.state === 'skip') {
|
||||
return {
|
||||
nodes: [],
|
||||
passedNodes: [],
|
||||
failedNodes: []
|
||||
}
|
||||
}
|
||||
|
||||
const nodeNames = this.getNodeNamesFromNodeType(testResult.node_type);
|
||||
|
||||
if (testResult.state === 'pass') {
|
||||
return {
|
||||
nodes: nodeNames,
|
||||
passedNodes: nodeNames,
|
||||
failedNodes: []
|
||||
}
|
||||
}
|
||||
|
||||
if (testResult.state === 'fail') {
|
||||
return {
|
||||
nodes: nodeNames,
|
||||
passedNodes: [],
|
||||
failedNodes: nodeNames
|
||||
}
|
||||
}
|
||||
|
||||
// if mixed
|
||||
return {
|
||||
nodes: nodeNames,
|
||||
passedNodes: nodeNames.filter((node) => !testResult.nodes.includes(node)),
|
||||
failedNodes: testResult.nodes
|
||||
}
|
||||
},
|
||||
|
||||
async _loadReport() {
|
||||
try {
|
||||
const report = await this.followLink('report');
|
||||
|
|
|
|||
|
|
@ -556,6 +556,15 @@ export function parseCamelcase(str = '') {
|
|||
return ucFirst(str).replace(/([A-Z]+)*([A-Z][a-z])/g, '$1 $2')
|
||||
}
|
||||
|
||||
export function extractUniqueStrings(strings) {
|
||||
const index = strings.reduce((agg, s) => ({
|
||||
...agg,
|
||||
[s]: true
|
||||
}), {});
|
||||
|
||||
return Object.keys(index);
|
||||
}
|
||||
|
||||
var Util = {
|
||||
absoluteUrl,
|
||||
addAuthorization,
|
||||
|
|
@ -601,6 +610,7 @@ var Util = {
|
|||
validateEndpoint,
|
||||
requiredError,
|
||||
parseCamelcase,
|
||||
extractUniqueStrings,
|
||||
};
|
||||
|
||||
window.Util = Util;
|
||||
|
|
|
|||
|
|
@ -31,4 +31,5 @@ export {
|
|||
isNumeric,
|
||||
requiredError,
|
||||
parseCamelcase,
|
||||
extractUniqueStrings,
|
||||
} from 'shared/utils/util';
|
||||
|
|
|
|||
Loading…
Reference in New Issue