export default function ClusterActions()

in frontend/src/pages/Clusters/ClusterActions.js [34:102]


export default function ClusterActions () {
  const clusterName = useState(['app', 'clusters', 'selected']);
  const clusterPath = ['clusters', 'index', clusterName];
  const cluster = useState(clusterPath);
  const region = useState(['app', 'selectedRegion']);
  const defaultRegion = useState(['aws', 'region']);
  const headNode = useState([...clusterPath, 'headNode']);

  const fleetStatus = useState([...clusterPath, 'computeFleetStatus']);
  const clusterStatus = useState([...clusterPath, 'clusterStatus']);
  const dcvEnabled = useState([...clusterPath, 'config', 'HeadNode', 'Dcv', 'Enabled']);

  const startFleet = () => {
    UpdateComputeFleet(clusterName, "START_REQUESTED")
  }
  const editConfiguration = () => {
    setState(['app', 'wizard', 'clusterName'], clusterName);
    setState(['app', 'wizard', 'page'], 'cluster');
    setState(['app', 'wizard', 'dialog'], true);
    setState(['app', 'wizard', 'editing'], true);

    GetConfiguration(clusterName, (configuration) => {
      loadTemplate(jsyaml.load(configuration));
    });
  }
  const deleteCluster = () => {
    setState(['app', 'clusters', 'clusterDelete', 'dialog'], true)
  }

  const shellCluster = (instanceId) => {
    const useRegion = region || defaultRegion;
    window.open(`https://${useRegion}.console.aws.amazon.com/systems-manager/session-manager/${instanceId}?region=${useRegion}`);
  }

  const dcvConnect = (instance) => {
    let os = getIn(cluster.config, ['Image', 'Os'])
    let user = {"alinux2": "ec2-user",
      "ubuntu2004": "ubuntu",
      "ubuntu1804": "ubuntu",
      "centos7": "centos"}[os]
    let callback = (dcvInfo) => {
      window.open(`https://${instance.publicIpAddress}:${dcvInfo.port}?authToken=${dcvInfo.session_token}#${dcvInfo.session_id}`);
    }
    GetDcvSession(instance.instanceId, user, callback);
  }

  return <div style={{marginLeft: "20px"}}>
    <ClusterDeleteDialog clusterName={clusterName} />
    <ClusterStopDialog clusterName={clusterName} />
    <SpaceBetween direction="horizontal" size="xs">
      <Button className="action" disabled={clusterStatus === 'DELETE_IN_PROGRESS' || clusterStatus === 'CREATE_FAILED'} variant="normal" onClick={editConfiguration} iconName={"edit"}> Edit</Button>
      {fleetStatus === "STOPPED" && <Button className="action" variant="normal" onClick={startFleet} iconName={"caret-right-filled"}> Start</Button>}
      {fleetStatus === "RUNNING" && <Button className="action" variant="normal" onClick={stopComputeFleet}>
        <div className="container">
          <CancelIcon /> Stop
        </div>
      </Button>}
      <Button className="action" disabled={clusterStatus === 'DELETE_IN_PROGRESS'} color="default" onClick={deleteCluster}>
        <div className="container">
          <DeleteIcon /> Delete
        </div>
      </Button>
      {headNode && headNode.publicIpAddress && headNode.publicIpAddress !== "" &&
      <Button className="action" disabled={clusterStatus === 'DELETE_IN_PROGRESS'} onClick={() => {shellCluster(headNode.instanceId)}}>
        <div className="container">
          <FeaturedPlayListIcon />
          Shell
        </div>
      </Button>}