mirror of
https://github.com/ansible/awx.git
synced 2026-02-26 07:26:03 -03:30
Allow k8s to create Instance Groups.
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
@@ -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>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user