Allow k8s to create Instance Groups.

This commit is contained in:
Kia Lam
2022-08-29 14:14:34 -07:00
committed by Jeff Bradberry
parent 3333080616
commit cb49eec2b5
2 changed files with 49 additions and 106 deletions

View File

@@ -11,7 +11,6 @@ import useSelected from 'hooks/useSelected';
import PaginatedTable, { import PaginatedTable, {
HeaderRow, HeaderRow,
HeaderCell, HeaderCell,
ToolbarAddButton,
ToolbarDeleteButton, ToolbarDeleteButton,
getSearchableKeys, getSearchableKeys,
} from 'components/PaginatedTable'; } from 'components/PaginatedTable';
@@ -27,11 +26,7 @@ const QS_CONFIG = getQSConfig('instance-group', {
page_size: 20, page_size: 20,
}); });
function InstanceGroupList({ function InstanceGroupList() {
isKubernetes,
isSettingsRequestLoading,
settingsRequestError,
}) {
const location = useLocation(); const location = useLocation();
const match = useRouteMatch(); const match = useRouteMatch();
@@ -113,39 +108,32 @@ 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 = (
!isSettingsRequestLoading && !isKubernetes ? ( <AddDropDownButton
<AddDropDownButton ouiaId="add-instance-group-button"
ouiaId="add-instance-group-button" key="add"
key="add" dropdownItems={[
dropdownItems={[ <DropdownItem
<DropdownItem ouiaId="add-container-group-item"
ouiaId="add-container-group-item" to="/instance_groups/container_group/add"
to="/instance_groups/container_group/add" component={Link}
component={Link} key={addContainerGroup}
key={addContainerGroup} aria-label={addContainerGroup}
aria-label={addContainerGroup} >
> {addContainerGroup}
{addContainerGroup} </DropdownItem>,
</DropdownItem>, <DropdownItem
<DropdownItem ouiaId="add-instance-group-item"
ouiaId="add-instance-group-item" to="/instance_groups/add"
to="/instance_groups/add" component={Link}
component={Link} key={addInstanceGroup}
key={addInstanceGroup} aria-label={addInstanceGroup}
aria-label={addInstanceGroup} >
> {addInstanceGroup}
{addInstanceGroup} </DropdownItem>,
</DropdownItem>, ]}
]} />
/> );
) : (
<ToolbarAddButton
key="add"
ouiaId="add-container-group-button"
linkTo={`${match.url}/container_group/add`}
/>
);
const getDetailUrl = (item) => const getDetailUrl = (item) =>
item.is_container_group item.is_container_group
@@ -159,10 +147,8 @@ function InstanceGroupList({
<PageSection> <PageSection>
<Card> <Card>
<PaginatedTable <PaginatedTable
contentError={contentError || settingsRequestError} contentError={contentError}
hasContentLoading={ hasContentLoading={isLoading || deleteLoading}
isLoading || deleteLoading || isSettingsRequestLoading
}
items={instanceGroups} items={instanceGroups}
itemCount={instanceGroupsCount} itemCount={instanceGroupsCount}
pluralizedItemName={pluralizedItemName} pluralizedItemName={pluralizedItemName}

View File

@@ -1,14 +1,8 @@
import React, { useCallback, useEffect, useState } from 'react'; import React, { useCallback, useState } from 'react';
import { t } from '@lingui/macro'; import { t } from '@lingui/macro';
import { Route, Switch, useLocation } from 'react-router-dom'; import { Route, Switch, useLocation } from 'react-router-dom';
import { Card, PageSection } from '@patternfly/react-core';
import { useUserProfile } from 'contexts/Config';
import useRequest from 'hooks/useRequest';
import { SettingsAPI } from 'api';
import ScreenHeader from 'components/ScreenHeader'; import ScreenHeader from 'components/ScreenHeader';
import ContentLoading from 'components/ContentLoading';
import PersistentFilters from 'components/PersistentFilters'; import PersistentFilters from 'components/PersistentFilters';
import InstanceGroupAdd from './InstanceGroupAdd'; import InstanceGroupAdd from './InstanceGroupAdd';
import InstanceGroupList from './InstanceGroupList'; import InstanceGroupList from './InstanceGroupList';
@@ -18,29 +12,6 @@ import ContainerGroup from './ContainerGroup';
function InstanceGroups() { function InstanceGroups() {
const { pathname } = useLocation(); const { pathname } = useLocation();
const { isSuperUser, isSystemAuditor } = useUserProfile();
const userCanReadSettings = isSuperUser || isSystemAuditor;
const {
request: settingsRequest,
isLoading: isSettingsRequestLoading,
error: settingsRequestError,
result: { isKubernetes },
} = useRequest(
useCallback(async () => {
const {
data: { IS_K8S },
} = await SettingsAPI.readCategory('all');
return {
isKubernetes: IS_K8S,
};
}, []),
{ isKubernetes: false }
);
useEffect(() => {
userCanReadSettings && settingsRequest();
}, [settingsRequest, userCanReadSettings]);
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`,
@@ -81,39 +52,25 @@ function InstanceGroups() {
streamType={streamType} streamType={streamType}
breadcrumbConfig={breadcrumbConfig} breadcrumbConfig={breadcrumbConfig}
/> />
{isSettingsRequestLoading ? ( <Switch>
<PageSection> <Route path="/instance_groups/container_group/add">
<Card> <ContainerGroupAdd />
<ContentLoading /> </Route>
</Card> <Route path="/instance_groups/container_group/:id">
</PageSection> <ContainerGroup setBreadcrumb={buildBreadcrumbConfig} />
) : ( </Route>
<Switch> <Route path="/instance_groups/add">
<Route path="/instance_groups/container_group/add"> <InstanceGroupAdd />
<ContainerGroupAdd /> </Route>
</Route> <Route path="/instance_groups/:id">
<Route path="/instance_groups/container_group/:id"> <InstanceGroup setBreadcrumb={buildBreadcrumbConfig} />
<ContainerGroup setBreadcrumb={buildBreadcrumbConfig} /> </Route>
</Route> <Route path="/instance_groups">
{!isKubernetes && ( <PersistentFilters pageKey="instanceGroups">
<Route path="/instance_groups/add"> <InstanceGroupList />
<InstanceGroupAdd /> </PersistentFilters>
</Route> </Route>
)} </Switch>
<Route path="/instance_groups/:id">
<InstanceGroup setBreadcrumb={buildBreadcrumbConfig} />
</Route>
<Route path="/instance_groups">
<PersistentFilters pageKey="instanceGroups">
<InstanceGroupList
isKubernetes={isKubernetes}
isSettingsRequestLoading={isSettingsRequestLoading}
settingsRequestError={settingsRequestError}
/>
</PersistentFilters>
</Route>
</Switch>
)}
</> </>
); );
} }