{"version":3,"sources":["webpack:///./app/components/NodeView/k8s/messages.js","webpack:///./app/components/NodeView/k8s/K8sInfrastructure.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/constants.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/reducers.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/actions.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/sagas.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/selectors.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/messages.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/K8sNamespaceContents.js","webpack:///./app/containers/NodeViewLayouts/K8sNamespaceNodeViewCardLayout/index.js"],"names":["defineMessages","clusterInfraLoadError","id","defaultMessage","infrastructureSectionHeader","SquareLoadingAnimation","K8sInfrastructure","props","clusterInfrastructure","get","map","row","_","pick","toJS","DynamicFormattedMessage","messages","tableData","getTableData","DataTable","data","console","warn","BorderedCard","style","height","SectionHeader","this","renderBody","Component","GET_NAMESPACE_CONTENTS","GET_NAMESPACE_INFRASTRUCTURE","initialState","fromJS","namespaceContents","error","loading","namespaceInfrastructure","k8sNamespaceNodeViewReducer","handleActions","state","setIn","payload","getNamespaceContents","createAction","getNamespaceContentsSuccess","getNamespaceContentsError","getNamespaceInfrastructure","getNamespaceInfrastructureSuccess","getNamespaceInfrastructureError","k8sNamespaceNodeViewSaga","GET_NAMESPACE_CONTENTS_QUERY","gql","action","srn","getClient","client","query","variables","result","path","join","put","GET_CLUSTER_INFRA_QUERY","all","takeLatest","selectK8sNamespaceNodeView","Map","selectNamespaceContents","createSelector","selectNamespaceInfrastructure","errorLoadingData","K8sNamespaceContents","gotoNodeView","getNamespaceContentData","sortBy","name","label","customColumnConfig","width","minWidth","pinned","headerName","suppressMenu","cellRendererFramework","params","value","nodeType","getTypeFromSrn","urlParams","getNodeViewPushParams","TextLink","color","onClick","push","K8sNamespaceNodeViewCardLayout","namespaces","lg","w","h","xs","styled","div","nodeId","NodeViewHeader","onNodeView","horizontal","className","NodeView","renderDetailsTab","layouts","getLayouts","cols","getCols","gridContent","getGridContent","tabs","getTabs","mapStateToProps","createStructuredSelector","withConnect","connect","dispatch","bindActionCreators","KEY","withReducer","injectReducer","key","reducer","withSaga","injectSaga","saga","DAEMON","compose"],"mappings":"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","file":"40.4cbe4ebfc32fd464cc15.chunk.js","sourcesContent":["import { defineMessages } from 'react-intl'\n\nexport default defineMessages({\n clusterInfraLoadError: {\n id: 'app.components.NodeView.k8s.clusterInfraLoadError',\n defaultMessage:\n 'There was an error loading the Cluster Infrastructure data',\n },\n infrastructureSectionHeader: {\n id: 'app.components.NodeView.k8s.infrastructureSectionHeader',\n defaultMessage: 'Cluster Infrastructure',\n },\n})\n","import React, { Component } from 'react'\nimport _ from 'lodash'\nimport PropTypes from 'prop-types'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\n\nimport BorderedCard from 'components/BorderedCard'\nimport DataTable from 'components/DataTable'\nimport DynamicFormattedMessage from 'components/DynamicFormattedMessage'\nimport SectionHeader from 'components/SectionHeader'\nimport SquareLoadingAnimation from 'components/SquareLoadingAnimation'\n\nimport messages from './messages'\n\n/**\n * This component displays a table of Infrastructure (nodes, disks, etc.) in a\n * kubernetes cluster.\n */\nexport class K8sInfrastructure extends Component {\n getTableData = () => {\n return this.props.clusterInfrastructure\n .get('data')\n .map(row => {\n return {\n ..._.pick(row.toJS(), [\n 'name',\n 'label',\n 'type',\n 'active',\n 'createdDate',\n 'srn',\n ]),\n }\n })\n .toJS()\n }\n\n renderBody = () => {\n if (this.props.clusterInfrastructure.get('loading')) {\n return \n }\n\n if (this.props.clusterInfrastructure.get('error')) {\n return \n }\n\n if (this.props.clusterInfrastructure.get('data')) {\n const tableData = this.getTableData()\n return \n }\n\n // eslint-disable-next-line no-console\n console.warn('K8sInfrastructure: received invalid clusterInfrastructure')\n return null\n }\n\n render() {\n return (\n \n \n \n \n
{this.renderBody()}
\n
\n )\n }\n}\n\nK8sInfrastructure.propTypes = {\n clusterInfrastructure: ImmutablePropTypes.contains({\n data: ImmutablePropTypes.list,\n error: PropTypes.bool,\n loading: PropTypes.bool,\n }).isRequired,\n}\n\nexport default K8sInfrastructure\n","export const GET_NAMESPACE_CONTENTS = `app/containers/NodeViewLayouts/K8sNamespaceNodeView/GET_NAMESPACE_CONTENTS`\nexport const GET_NAMESPACE_CONTENTS_SUCCESS = `app/containers/NodeViewLayouts/K8sNamespaceNodeView/GET_NAMESPACE_CONTENTS_SUCCESS`\nexport const GET_NAMESPACE_CONTENTS_ERROR = `app/containers/NodeViewLayouts/K8sNamespaceNodeView/GET_NAMESPACE_CONTENTS_ERROR`\n\nexport const GET_NAMESPACE_INFRASTRUCTURE = `app/containers/NodeViewLayouts/K8sNamespaceNodeView/GET_NAMESPACE_INFRASTRUCTURE`\nexport const GET_NAMESPACE_INFRASTRUCTURE_SUCCESS = `app/containers/NodeViewLayouts/K8sNamespaceNodeView/GET_NAMESPACE_INFRASTRUCTURE_SUCCESS`\nexport const GET_NAMESPACE_INFRASTRUCTURE_ERROR = `app/containers/NodeViewLayouts/K8sNamespaceNodeView/GET_NAMESPACE_INFRASTRUCTURE_ERROR`\n","import { handleActions } from 'redux-actions'\nimport { fromJS } from 'immutable'\n\nimport {\n GET_NAMESPACE_CONTENTS,\n GET_NAMESPACE_CONTENTS_SUCCESS,\n GET_NAMESPACE_CONTENTS_ERROR,\n GET_NAMESPACE_INFRASTRUCTURE,\n GET_NAMESPACE_INFRASTRUCTURE_ERROR,\n GET_NAMESPACE_INFRASTRUCTURE_SUCCESS,\n} from './constants'\n\nconst initialState = fromJS({\n namespaceContents: {\n data: null,\n error: false,\n loading: false,\n },\n namespaceInfrastructure: {\n data: null,\n error: false,\n loading: false,\n },\n})\n\nconst k8sNamespaceNodeViewReducer = handleActions(\n {\n [GET_NAMESPACE_CONTENTS]: state =>\n state\n .setIn(['namespaceContents', 'error'], false)\n .setIn(['namespaceContents', 'loading'], true),\n [GET_NAMESPACE_CONTENTS_ERROR]: state =>\n state\n .setIn(['namespaceContents', 'error'], true)\n .setIn(['namespaceContents', 'loading'], false),\n [GET_NAMESPACE_CONTENTS_SUCCESS]: (state, { payload }) =>\n state\n .setIn(['namespaceContents', 'error'], false)\n .setIn(['namespaceContents', 'loading'], false)\n .setIn(['namespaceContents', 'data'], fromJS(payload.data)),\n\n [GET_NAMESPACE_INFRASTRUCTURE]: state =>\n state\n .setIn(['namespaceInfrastructure', 'error'], false)\n .setIn(['namespaceInfrastructure', 'loading'], true),\n [GET_NAMESPACE_INFRASTRUCTURE_ERROR]: state =>\n state\n .setIn(['namespaceInfrastructure', 'error'], true)\n .setIn(['namespaceInfrastructure', 'loading'], false),\n [GET_NAMESPACE_INFRASTRUCTURE_SUCCESS]: (state, { payload }) =>\n state\n .setIn(['namespaceInfrastructure', 'error'], false)\n .setIn(['namespaceInfrastructure', 'loading'], false)\n .setIn(['namespaceInfrastructure', 'data'], fromJS(payload.data)),\n },\n initialState\n)\n\nexport default k8sNamespaceNodeViewReducer\n","import { createAction } from 'redux-actions'\nimport {\n GET_NAMESPACE_CONTENTS,\n GET_NAMESPACE_CONTENTS_SUCCESS,\n GET_NAMESPACE_CONTENTS_ERROR,\n GET_NAMESPACE_INFRASTRUCTURE,\n GET_NAMESPACE_INFRASTRUCTURE_SUCCESS,\n GET_NAMESPACE_INFRASTRUCTURE_ERROR,\n} from './constants'\n\nexport const getNamespaceContents = createAction(GET_NAMESPACE_CONTENTS)\nexport const getNamespaceContentsSuccess = createAction(\n GET_NAMESPACE_CONTENTS_SUCCESS\n)\nexport const getNamespaceContentsError = createAction(\n GET_NAMESPACE_CONTENTS_ERROR\n)\n\nexport const getNamespaceInfrastructure = createAction(\n GET_NAMESPACE_INFRASTRUCTURE\n)\nexport const getNamespaceInfrastructureSuccess = createAction(\n GET_NAMESPACE_INFRASTRUCTURE_SUCCESS\n)\nexport const getNamespaceInfrastructureError = createAction(\n GET_NAMESPACE_INFRASTRUCTURE_ERROR\n)\n","import { all, put, takeLatest } from 'redux-saga/effects'\nimport gql from 'graphql-tag'\nimport _ from 'lodash'\nimport { getClient } from 'apolloClient'\n\nimport {\n getNamespaceContentsError,\n getNamespaceContentsSuccess,\n getNamespaceInfrastructureError,\n getNamespaceInfrastructureSuccess,\n} from './actions'\nimport {\n GET_NAMESPACE_CONTENTS,\n GET_NAMESPACE_INFRASTRUCTURE,\n} from './constants'\n\nconst GET_NAMESPACE_CONTENTS_QUERY = gql`\n query getClusterContent($srn: String!) {\n ResourceGroups(where: { srn: { value: $srn } }) {\n items {\n srn\n account\n createdDate\n observedDate\n active\n name\n friendlyName\n tagSet\n type\n ...containedWorkloads\n }\n }\n }\n\n fragment containedWorkloads on Resource {\n contains {\n items {\n srn\n name\n friendlyName\n label\n ... on Workload {\n type\n }\n ... on User {\n type\n }\n ... on Networkcomponent {\n type\n }\n ... on Identityreference {\n type\n }\n ... on Secretstore {\n type\n }\n }\n }\n }\n`\n\nfunction* getNamespaceContents(action) {\n try {\n const { srn } = action.payload\n const client = yield getClient()\n const result = yield client.query({\n query: GET_NAMESPACE_CONTENTS_QUERY,\n variables: { srn },\n })\n\n const path = ['data', 'ResourceGroups', 'items', 0, 'contains', 'items']\n const data = _.get(result, path, null)\n if (data === null) {\n throw 'the result did not contain data at ' + path.join('/')\n }\n\n yield put(getNamespaceContentsSuccess({ data }))\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('An error happened fetching k8s namespace contents: ', e)\n yield put(getNamespaceContentsError())\n }\n}\n\nconst GET_CLUSTER_INFRA_QUERY = gql`\n query getK8sClusterContentsForNamespace($srn: String) {\n ResourceGroups(\n where: { srn: { value: $srn }, type: { value: K8SNamespace } }\n ) {\n items {\n srn\n name\n isIn(\n where: {\n label: { value: \"Account\" }\n on__Account: { type: { value: K8SCluster } }\n }\n ) {\n items {\n name\n isIn(\n where: {\n label: { value: \"Compute\" }\n on__Compute: { type: { value: AzureKubernetesCluster } }\n }\n ) {\n items {\n contains {\n items {\n srn\n label\n active\n createdDate\n ... on Resource {\n name\n }\n ... on Network {\n type\n }\n ... on Networksubnet {\n type\n }\n ... on Networkpolicy {\n type\n }\n ... on Blockstorage {\n type\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n`\n\nfunction* getNamespaceInfrastructure(action) {\n try {\n const { srn } = action.payload\n const client = yield getClient()\n const result = yield client.query({\n variables: { srn },\n query: GET_CLUSTER_INFRA_QUERY,\n })\n const path = [\n 'data',\n 'ResourceGroups',\n 'items',\n 0,\n 'isIn',\n 'items',\n 0,\n 'isIn',\n 'items',\n 0,\n 'contains',\n 'items',\n ]\n const data = _.get(result, path, null)\n if (data === null) {\n throw 'no data at path ' + path.join('/')\n }\n yield put(getNamespaceInfrastructureSuccess({ data }))\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('An error happened fetching k8s ns infrastructure: ', e)\n yield put(getNamespaceInfrastructureError())\n }\n}\n\nfunction* k8sNamespaceNodeViewSaga() {\n yield all([\n takeLatest(GET_NAMESPACE_CONTENTS, getNamespaceContents),\n takeLatest(GET_NAMESPACE_INFRASTRUCTURE, getNamespaceInfrastructure),\n ])\n}\n\nexport default k8sNamespaceNodeViewSaga\n","import { createSelector } from 'reselect'\nimport { Map } from 'immutable'\n\nconst selectK8sNamespaceNodeView = state =>\n state.get('k8sNamespaceNodeView') || Map()\n\nexport const selectNamespaceContents = createSelector(\n selectK8sNamespaceNodeView,\n state => state.get('namespaceContents')\n)\n\nexport const selectNamespaceInfrastructure = createSelector(\n selectK8sNamespaceNodeView,\n state => state.get('namespaceInfrastructure')\n)\n","import { defineMessages } from 'react-intl'\n\nexport default defineMessages({\n errorLoadingData: {\n id:\n 'app.containers.NodeViewLayouts.K8sNamespaceNodeViewCardLayout.errorLoadingData',\n defaultMessage:\n 'There was an error fetching the contents of the namespace.',\n },\n})\n","import React, { Component } from 'react'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\n\nimport BorderedCard from 'components/BorderedCard'\nimport DataTable from 'components/DataTable'\nimport DynamicFormattedMessage from 'components/DynamicFormattedMessage'\nimport SectionHeader from 'components/SectionHeader'\nimport SquareLoadingAnimation from 'components/SquareLoadingAnimation'\nimport TextLink from 'components/TextLink'\n\nimport { getTypeFromSrn } from 'utils/graphDataUtils'\nimport { getNodeViewPushParams } from 'utils/sonraiUtils'\n\nimport messages from './messages'\n\nclass K8sNamespaceContents extends Component {\n getNamespaceContentData = () => {\n return this.props.namespaceContents\n .get('data')\n .map(row => {\n return {\n ..._.pick(row.toJS(), ['name', 'label', 'type', 'srn']),\n gotoNodeView: row.get('srn'),\n }\n })\n .toJS()\n }\n\n renderBody = () => {\n if (this.props.namespaceContents.get('loading')) {\n return \n }\n\n if (this.props.namespaceContents.get('error')) {\n return \n }\n\n // table data default sort: primary = label, secondary = name\n let tableData = this.getNamespaceContentData()\n tableData = _.sortBy(tableData, row => row.name)\n tableData = _.sortBy(tableData, row => row.label)\n\n return (\n {\n const srn = params.value\n const nodeType = getTypeFromSrn(srn)\n const urlParams = getNodeViewPushParams(srn, nodeType)\n\n return (\n {\n this.props.push(urlParams)\n }}\n >\n Go To Details\n \n )\n },\n },\n }}\n />\n )\n }\n\n render() {\n return (\n \n Contents\n
{this.renderBody()}
\n
\n )\n }\n}\n\nK8sNamespaceContents.propTypes = {\n namespaceContents: ImmutablePropTypes.contains({\n data: ImmutablePropTypes.list,\n error: PropTypes.error,\n loading: PropTypes.bool,\n }),\n push: PropTypes.func.isRequired,\n}\n\nexport default K8sNamespaceContents\n","import React, { Component, Fragment } from 'react'\nimport ImmutablePropTypes from 'react-immutable-proptypes'\nimport PropTypes from 'prop-types'\n\nimport { connect } from 'react-redux'\nimport { compose, bindActionCreators } from 'redux'\nimport { createStructuredSelector } from 'reselect'\nimport styled from 'styled-components'\n\nimport injectReducer from 'utils/injectReducer'\nimport injectSaga from 'utils/injectSaga'\nimport { DAEMON } from 'utils/constants'\nimport reducer from './reducers'\nimport saga from './sagas'\n\nimport { push } from 'connected-react-router'\nimport { getNamespaceContents, getNamespaceInfrastructure } from './actions'\nimport {\n selectNamespaceContents,\n selectNamespaceInfrastructure,\n} from './selectors'\n\nimport NodeViewHeader from 'containers/NodeViewHeader'\nimport NodeView from 'containers/NodeSolutionCenter/NodeView'\nimport K8sInfrastructure from 'components/NodeView/k8s/K8sInfrastructure'\nimport K8sNamespaceContents from './K8sNamespaceContents'\n\nclass K8sNamespaceNodeViewCardLayout extends Component {\n componentDidMount() {\n this.props.getNamespaceContents({ srn: this.props.nodeId })\n this.props.getNamespaceInfrastructure({ srn: this.props.nodeId })\n }\n\n getGridContent = () => {\n return [\n
\n \n
,\n ]\n }\n\n getLayouts = () => {\n const layouts = {\n namespaces: {\n lg: { w: 2, h: 3.5 },\n xs: { w: 2, h: 3.5 },\n },\n }\n\n return layouts\n }\n\n getCols = () => {\n return {\n lg: 2,\n xs: 2,\n }\n }\n\n getTabs = () => {\n const InfrastructureContainer = styled.div`\n height: 650px;\n `\n return [\n
\n \n \n \n
,\n ]\n }\n\n render() {\n return (\n \n \n
\n \n
\n
\n )\n }\n}\n\nK8sNamespaceNodeViewCardLayout.propTypes = {\n horizontal: PropTypes.bool,\n nodeId: PropTypes.string.isRequired,\n\n // ~~ bound action creators --\n push: PropTypes.func.isRequired,\n getNamespaceContents: PropTypes.func.isRequired,\n getNamespaceInfrastructure: PropTypes.func.isRequired,\n\n // ~~ props from redux ~~\n namespaceContents: ImmutablePropTypes.map,\n namespaceInfrastructure: ImmutablePropTypes.map,\n}\n\nconst mapStateToProps = createStructuredSelector({\n namespaceContents: selectNamespaceContents,\n namespaceInfrastructure: selectNamespaceInfrastructure,\n})\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n push,\n getNamespaceContents,\n getNamespaceInfrastructure,\n },\n dispatch\n )\n}\n\nconst withConnect = connect(\n mapStateToProps,\n mapDispatchToProps\n)\n\nconst KEY = 'k8sNamespaceNodeView'\nconst withReducer = injectReducer({ key: KEY, reducer })\nconst withSaga = injectSaga({\n key: KEY,\n saga: saga,\n DAEMON,\n})\n\nexport default compose(\n withConnect,\n withReducer,\n withSaga\n)(K8sNamespaceNodeViewCardLayout)\n"],"sourceRoot":""}