Enable instance group creation for non-k8s deployments only

This commit is contained in:
Jake McDermott
2021-06-22 11:15:02 -04:00
committed by Shane McDonald
parent f08bf4766d
commit 4cc734ce6e
2 changed files with 76 additions and 35 deletions

View File

@@ -11,6 +11,7 @@ import useSelected from '../../../util/useSelected';
import PaginatedTable, { import PaginatedTable, {
HeaderRow, HeaderRow,
HeaderCell, HeaderCell,
ToolbarAddButton,
ToolbarDeleteButton, ToolbarDeleteButton,
} from '../../../components/PaginatedTable'; } from '../../../components/PaginatedTable';
import ErrorDetail from '../../../components/ErrorDetail'; import ErrorDetail from '../../../components/ErrorDetail';
@@ -43,7 +44,11 @@ function modifyInstanceGroups(items = []) {
}); });
} }
function InstanceGroupList() { function InstanceGroupList({
isKubernetes,
isSettingsRequestLoading,
settingsRequestError,
}) {
const location = useLocation(); const location = useLocation();
const match = useRouteMatch(); const match = useRouteMatch();
@@ -159,32 +164,39 @@ function InstanceGroupList() {
const addContainerGroup = t`Add container group`; const addContainerGroup = t`Add container group`;
const addInstanceGroup = t`Add instance group`; const addInstanceGroup = t`Add instance group`;
const addButton = ( const addButton =
<AddDropDownButton !isSettingsRequestLoading && !isKubernetes ? (
ouiaId="add-instance-group-button" <AddDropDownButton
key="add" ouiaId="add-instance-group-button"
dropdownItems={[ key="add"
<DropdownItem dropdownItems={[
ouiaId="add-container-group-item" <DropdownItem
to="/instance_groups/container_group/add" ouiaId="add-container-group-item"
component={Link} to="/instance_groups/container_group/add"
key={addContainerGroup} component={Link}
aria-label={addContainerGroup} key={addContainerGroup}
> aria-label={addContainerGroup}
{addContainerGroup} >
</DropdownItem>, {addContainerGroup}
<DropdownItem </DropdownItem>,
ouiaId="add-instance-group-item" <DropdownItem
to="/instance_groups/add" ouiaId="add-instance-group-item"
component={Link} to="/instance_groups/add"
key={addInstanceGroup} component={Link}
aria-label={addInstanceGroup} key={addInstanceGroup}
> aria-label={addInstanceGroup}
{addInstanceGroup} >
</DropdownItem>, {addInstanceGroup}
]} </DropdownItem>,
/> ]}
); />
) : (
<ToolbarAddButton
key="add"
ouiaId="add-container-group-button"
linkTo={`${match.url}/container_group/add`}
/>
);
const getDetailUrl = item => { const getDetailUrl = item => {
return item.is_container_group return item.is_container_group
@@ -199,8 +211,10 @@ function InstanceGroupList() {
<PageSection> <PageSection>
<Card> <Card>
<PaginatedTable <PaginatedTable
contentError={contentError} contentError={contentError || settingsRequestError}
hasContentLoading={isLoading || deleteLoading} hasContentLoading={
isLoading || deleteLoading || isSettingsRequestLoading
}
items={instanceGroups} items={instanceGroups}
itemCount={instanceGroupsCount} itemCount={instanceGroupsCount}
pluralizedItemName={pluralizedItemName} pluralizedItemName={pluralizedItemName}

View File

@@ -1,17 +1,37 @@
import React, { useState, useCallback } from 'react'; import React, { useCallback, useEffect, useState } from 'react';
import { t } from '@lingui/macro'; import { t } from '@lingui/macro';
import { Route, Switch } from 'react-router-dom'; import { Route, Switch } from 'react-router-dom';
import useRequest from '../../util/useRequest';
import { SettingsAPI } from '../../api';
import InstanceGroupAdd from './InstanceGroupAdd'; import InstanceGroupAdd from './InstanceGroupAdd';
import InstanceGroupList from './InstanceGroupList'; import InstanceGroupList from './InstanceGroupList';
import InstanceGroup from './InstanceGroup'; import InstanceGroup from './InstanceGroup';
import ContainerGroupAdd from './ContainerGroupAdd'; import ContainerGroupAdd from './ContainerGroupAdd';
import ContainerGroup from './ContainerGroup'; import ContainerGroup from './ContainerGroup';
import ScreenHeader from '../../components/ScreenHeader'; import ScreenHeader from '../../components/ScreenHeader';
function InstanceGroups() { function InstanceGroups() {
const {
request: settingsRequest,
isLoading: isSettingsRequestLoading,
error: settingsRequestError,
result: isKubernetes,
} = useRequest(
useCallback(async () => {
const {
data: { IS_K8S },
} = await SettingsAPI.readCategory('all');
return IS_K8S;
}, []),
{ isLoading: true }
);
useEffect(() => {
settingsRequest();
}, [settingsRequest]);
const [breadcrumbConfig, setBreadcrumbConfig] = useState({ const [breadcrumbConfig, setBreadcrumbConfig] = useState({
'/instance_groups': t`Instance Groups`, '/instance_groups': t`Instance Groups`,
'/instance_groups/add': t`Create new instance group`, '/instance_groups/add': t`Create new instance group`,
@@ -39,6 +59,7 @@ function InstanceGroups() {
[`/instance_groups/container_group/${instanceGroups.id}`]: `${instanceGroups.name}`, [`/instance_groups/container_group/${instanceGroups.id}`]: `${instanceGroups.name}`,
}); });
}, []); }, []);
return ( return (
<> <>
<ScreenHeader <ScreenHeader
@@ -52,14 +73,20 @@ function InstanceGroups() {
<Route path="/instance_groups/container_group/:id"> <Route path="/instance_groups/container_group/:id">
<ContainerGroup setBreadcrumb={buildBreadcrumbConfig} /> <ContainerGroup setBreadcrumb={buildBreadcrumbConfig} />
</Route> </Route>
<Route path="/instance_groups/add"> {!isSettingsRequestLoading && !isKubernetes ? (
<InstanceGroupAdd /> <Route path="/instance_groups/add">
</Route> <InstanceGroupAdd />
</Route>
) : null}
<Route path="/instance_groups/:id"> <Route path="/instance_groups/:id">
<InstanceGroup setBreadcrumb={buildBreadcrumbConfig} /> <InstanceGroup setBreadcrumb={buildBreadcrumbConfig} />
</Route> </Route>
<Route path="/instance_groups"> <Route path="/instance_groups">
<InstanceGroupList /> <InstanceGroupList
isKubernetes={isKubernetes}
isSettingsRequestLoading={isSettingsRequestLoading}
settingsRequestError={settingsRequestError}
/>
</Route> </Route>
</Switch> </Switch>
</> </>