import _ from 'lodash'; import PropTypes from 'prop-types'; import React from 'react'; import { Icon, Modal } from 'antd'; export default class ErrorModal extends React.Component { static propTypes = { errors: PropTypes.shape({}).isRequired, resourceName: PropTypes.string.isRequired, resourceType: PropTypes.string.isRequired } showModal = () => { Modal.error({ title: `Errors in ${this.props.resourceType} ${this.props.resourceName}`, width: 800, maskClosable: true, content: this.renderPodErrors(this.props.errors), onOk() {}, }); } renderContainerErrors = errorsByContainer => { return _.map(errorsByContainer, (errors, container) => (

Container: {container}

Image: {_.get(errors, [0, "image"])}

{ _.map(errors, (er, i) => {er.message} ) }
)); }; renderPodErrors = podErrors => { let errorsByPodAndContainer = _(podErrors) .keys() .sortBy() .map(pod => { return { pod: pod, byContainer: _(podErrors[pod].errors) .groupBy( "container.container") .mapValues(v => _.map(v, "container")) .value() }; }).value(); return _.map(errorsByPodAndContainer, err => { return (

Pod: {err.pod}

{this.renderContainerErrors(err.byContainer)}
); }); } render() { return ( ); } }