buildSplitPanelContent()

in source/idea/idea-cluster-manager/webapp/src/pages/hpc/queues.tsx [292:413]


    buildSplitPanelContent() {
        const selected = () => this.getSelected()!;
        const jobParams = () => selected().default_job_params!;
        const queueParams = () => selected().queue_management_params!;
        const queueUtils = () => new QueueUtils(selected());
        return (
            this.isSelected() && (
                <IdeaSplitPanel title={`Queue Profile: ${this.getSelected()?.name}`}>
                    <Tabs
                        tabs={[
                            {
                                label: "Queue Info",
                                id: "queue-info",
                                content: (
                                    <ColumnLayout columns={3}>
                                        <KeyValue title="Queue Profile" value={selected().name} />
                                        <KeyValue title="Queues" value={selected().queues} />
                                        <KeyValue title="Is Enabled?" value={selected().enabled} />
                                        <KeyValue title="Queue Mode" value={selected().queue_mode} />
                                        {!Utils.asBoolean(selected().keep_forever) && <KeyValue title="Scaling Mode" value={selected().scaling_mode} />}
                                        <KeyValue title="Terminate When Idle" value={selected().terminate_when_idle} suffix="minutes" />
                                        <KeyValue title="Keep Forever?" value={selected().keep_forever} type="boolean" />
                                    </ColumnLayout>
                                ),
                            },
                            {
                                label: "ACLs",
                                id: "queue-acl",
                                content: (
                                    <ColumnLayout columns={3}>
                                        <KeyValue title="Allowed Instance Types" value={queueParams().allowed_instance_types} />
                                        <KeyValue title="Excluded Instance Types" value={queueParams().excluded_instance_types} />
                                        <KeyValue title="Restricted Parameters" value={queueParams().restricted_parameters} />
                                        <KeyValue title="Allowed Instance Profiles" value={queueParams().allowed_instance_profiles} />
                                        <KeyValue title="Allowed Security Groups" value={queueParams().allowed_security_groups} />
                                    </ColumnLayout>
                                ),
                            },
                            {
                                label: "Limits",
                                id: "queue-limits",
                                content: (
                                    <ColumnLayout columns={3}>
                                        <KeyValue title="Max Running Jobs" value={queueParams().max_running_jobs} />
                                        <KeyValue title="Max Provisioned Instances" value={queueParams().max_provisioned_instances} />
                                        <KeyValue title="Max Provisioned Capacity" value={queueParams().max_provisioned_capacity} />
                                        <KeyValue title="Block on any job with Licenses" value={queueParams().wait_on_any_job_with_license} type="boolean" />
                                    </ColumnLayout>
                                ),
                            },
                            {
                                label: "Compute Stack Parameters",
                                id: "compute-stack-parameters",
                                content: (
                                    <ColumnLayout columns={2}>
                                        <KeyValueGroup title="Instance Info">
                                            <KeyValue title="Base OS" value={jobParams().base_os} />
                                            <KeyValue title="Instance AMI" value={jobParams().instance_ami} />
                                            <KeyValue title="Instance Types" value={jobParams().instance_types} />
                                            <KeyValue title="Keep EBS Volumes" value={jobParams().keep_ebs_volumes} />
                                            <KeyValue title="Root Storage Size" value={jobParams().root_storage_size} type="memory" />
                                            <KeyValue title="Enable Elastic Fabric Adapter (EFA)" value={jobParams().enable_efa_support} />
                                            <KeyValue title="Force Reserved Instances" value={jobParams().force_reserved_instances} />
                                            <KeyValue title="Enable Hyper-Threading" value={jobParams().enable_ht_support} />
                                        </KeyValueGroup>

                                        <KeyValueGroup title="Network and Security">
                                            <KeyValue title="Subnet Ids" value={jobParams().subnet_ids} />
                                            <KeyValue title="Security Groups" value={jobParams().security_groups} />
                                            <KeyValue title="Instance Profile" value={jobParams().instance_profile} />
                                            <KeyValue title="Enable Placement Group" value={jobParams().enable_placement_group} />
                                        </KeyValueGroup>

                                        <KeyValueGroup title="Spot Fleet">
                                            <KeyValue title="Is Spot?" value={jobParams().spot} />
                                            {queueUtils().isEnableSpot() && <KeyValue title="Spot Price" value={jobParams().spot_price} type="amount" />}
                                            {queueUtils().isEnableSpot() && <KeyValue title="Spot Allocation Count" value={jobParams().spot_allocation_count} />}
                                            {queueUtils().isEnableSpot() && <KeyValue title="Spot Allocation Strategy" value={jobParams().spot_allocation_strategy} />}
                                        </KeyValueGroup>

                                        {!queueUtils().isScratchStorageEnabled() && (
                                            <KeyValueGroup title="Scratch Storage">
                                                <KeyValue title="Is Enabled?" value={false} />
                                            </KeyValueGroup>
                                        )}

                                        {queueUtils().isScratchEBS() && (
                                            <KeyValueGroup title="Scratch Storage: EBS">
                                                <KeyValue title="EBS: Storage Size" value={jobParams().scratch_storage_size} type="memory" />
                                                <KeyValue title="EBS Storage IOPS" value={jobParams().scratch_storage_iops} />
                                            </KeyValueGroup>
                                        )}

                                        {queueUtils().isScratchExistingFsxLustre() && (
                                            <KeyValueGroup title="Scratch Storage: Existing FSx for Lustre">
                                                <KeyValue title="Existing FSx Lustre" value={jobParams().fsx_lustre?.existing_fsx} />
                                            </KeyValueGroup>
                                        )}
                                        {queueUtils().isScratchNewFsxLustre() && (
                                            <KeyValueGroup title="Scratch Storage: New FSx for Lustre">
                                                <KeyValue title="S3 Backend" value={jobParams().fsx_lustre?.s3_backend} />
                                                <KeyValue title="Import Path" value={jobParams().fsx_lustre?.import_path} />
                                                <KeyValue title="Export Path" value={jobParams().fsx_lustre?.export_path} />
                                                <KeyValue title="Deployment Type" value={jobParams().fsx_lustre?.deployment_type} />
                                                <KeyValue title="Per Unit Throughput" value={jobParams().fsx_lustre?.per_unit_throughput} />
                                                <KeyValue title="Size" value={jobParams().fsx_lustre?.size} type="memory" />
                                            </KeyValueGroup>
                                        )}

                                        <KeyValueGroup title="Metrics">
                                            <KeyValue title="Enable System Metrics" value={jobParams().enable_system_metrics} />
                                            <KeyValue title="Enable Anonymous Metrics" value={jobParams().enable_anonymous_metrics} />
                                        </KeyValueGroup>
                                    </ColumnLayout>
                                ),
                            },
                        ]}
                    />
                </IdeaSplitPanel>
            )
        );
    }