// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import React from 'react'; import { StyleRulesCallback, WithStyles, withStyles, Card, CardContent, Typography, Grid } from '@material-ui/core'; import { ArvadosTheme } from 'common/custom-theme'; import { ResourceIcon } from 'components/icon/icon'; import { RootState } from 'store/store'; import { connect } from 'react-redux'; import { ClusterConfigJSON } from 'common/config'; import { NotFoundView } from 'views/not-found-panel/not-found-panel'; import { formatCWLResourceSize, formatCost, formatFileSize } from 'common/formatters'; type CssRules = 'root' | 'instanceType'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ root: { width: '100%', overflow: 'auto' }, instanceType: { padding: "10px", }, }); type InstanceTypesPanelConnectedProps = {config: ClusterConfigJSON}; type InstanceTypesPanelRootProps = InstanceTypesPanelConnectedProps & WithStyles; const mapStateToProps = ({auth}: RootState): InstanceTypesPanelConnectedProps => ({ config: auth.config.clusterConfig, }); export const InstanceTypesPanel = withStyles(styles)(connect(mapStateToProps)( ({ config, classes }: InstanceTypesPanelRootProps) => { const instances = config.InstanceTypes || {}; return {Object.keys(instances).length > 0 ? Object.keys(instances).map((instanceKey) => { const instanceType = instances[instanceKey]; const diskRequest = instanceType.IncludedScratch; const ramRequest = instanceType.RAM - config.Containers.ReserveExtraRAM; return {instanceKey} Provider type: {instanceType.ProviderType} Price: {formatCost(instanceType.Price)} Cores: {instanceType.VCPUs} Preemptible: {instanceType.Preemptible.toString()} Max disk request: {formatCWLResourceSize(diskRequest)} ({formatFileSize(diskRequest)}) Max RAM request: {formatCWLResourceSize(ramRequest)} ({formatFileSize(ramRequest)}) {instanceType.CUDA && instanceType.CUDA.DeviceCount > 0 ? <> CUDA GPUs: {instanceType.CUDA.DeviceCount} Hardware capability: {instanceType.CUDA.HardwareCapability} Driver version: {instanceType.CUDA.DriverVersion} : <> } }) : } } ));