mirror of
https://github.com/ansible/awx.git
synced 2026-05-06 17:07:36 -02:30
adds instance group warnings
This commit is contained in:
@@ -258,6 +258,7 @@ function ToolbarDeleteButton({
|
|||||||
onClose={() => toggleModal(false)}
|
onClose={() => toggleModal(false)}
|
||||||
actions={[
|
actions={[
|
||||||
<Button
|
<Button
|
||||||
|
ouiaId="delete-modal-confirm"
|
||||||
key="delete"
|
key="delete"
|
||||||
variant="danger"
|
variant="danger"
|
||||||
aria-label={i18n._(t`confirm delete`)}
|
aria-label={i18n._(t`confirm delete`)}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
import useRequest, { useDismissableError } from '../../../util/useRequest';
|
import useRequest, { useDismissableError } from '../../../util/useRequest';
|
||||||
import { jsonToYaml, isJsonString } from '../../../util/yaml';
|
import { jsonToYaml, isJsonString } from '../../../util/yaml';
|
||||||
import { InstanceGroupsAPI } from '../../../api';
|
import { InstanceGroupsAPI } from '../../../api';
|
||||||
|
import { relatedResourceDeleteRequests } from '../../../util/getRelatedResourceDeleteDetails';
|
||||||
|
|
||||||
function ContainerGroupDetails({ instanceGroup, i18n }) {
|
function ContainerGroupDetails({ instanceGroup, i18n }) {
|
||||||
const { id, name } = instanceGroup;
|
const { id, name } = instanceGroup;
|
||||||
@@ -34,7 +35,10 @@ function ContainerGroupDetails({ instanceGroup, i18n }) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const { error, dismissError } = useDismissableError(deleteError);
|
const { error, dismissError } = useDismissableError(deleteError);
|
||||||
|
const deleteDetailsRequests = relatedResourceDeleteRequests.instanceGroup(
|
||||||
|
instanceGroup,
|
||||||
|
i18n
|
||||||
|
);
|
||||||
return (
|
return (
|
||||||
<CardBody>
|
<CardBody>
|
||||||
<DetailList>
|
<DetailList>
|
||||||
@@ -101,6 +105,10 @@ function ContainerGroupDetails({ instanceGroup, i18n }) {
|
|||||||
modalTitle={i18n._(t`Delete instance group`)}
|
modalTitle={i18n._(t`Delete instance group`)}
|
||||||
onConfirm={deleteInstanceGroup}
|
onConfirm={deleteInstanceGroup}
|
||||||
isDisabled={isLoading}
|
isDisabled={isLoading}
|
||||||
|
deleteDetailsRequests={deleteDetailsRequests}
|
||||||
|
deleteMessage={i18n._(
|
||||||
|
t`This container group is currently being by other resources. Are you sure you want to delete it?`
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
{i18n._(t`Delete`)}
|
{i18n._(t`Delete`)}
|
||||||
</DeleteButton>
|
</DeleteButton>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
} from '../../../components/DetailList';
|
} from '../../../components/DetailList';
|
||||||
import useRequest, { useDismissableError } from '../../../util/useRequest';
|
import useRequest, { useDismissableError } from '../../../util/useRequest';
|
||||||
import { InstanceGroupsAPI } from '../../../api';
|
import { InstanceGroupsAPI } from '../../../api';
|
||||||
|
import { relatedResourceDeleteRequests } from '../../../util/getRelatedResourceDeleteDetails';
|
||||||
|
|
||||||
const Unavailable = styled.span`
|
const Unavailable = styled.span`
|
||||||
color: var(--pf-global--danger-color--200);
|
color: var(--pf-global--danger-color--200);
|
||||||
@@ -38,7 +39,10 @@ function InstanceGroupDetails({ instanceGroup, i18n }) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const { error, dismissError } = useDismissableError(deleteError);
|
const { error, dismissError } = useDismissableError(deleteError);
|
||||||
|
const deleteDetailsRequests = relatedResourceDeleteRequests.instanceGroup(
|
||||||
|
instanceGroup,
|
||||||
|
i18n
|
||||||
|
);
|
||||||
const verifyInstanceGroup = item => {
|
const verifyInstanceGroup = item => {
|
||||||
if (item.is_isolated) {
|
if (item.is_isolated) {
|
||||||
return (
|
return (
|
||||||
@@ -142,6 +146,10 @@ function InstanceGroupDetails({ instanceGroup, i18n }) {
|
|||||||
modalTitle={i18n._(t`Delete instance group`)}
|
modalTitle={i18n._(t`Delete instance group`)}
|
||||||
onConfirm={deleteInstanceGroup}
|
onConfirm={deleteInstanceGroup}
|
||||||
isDisabled={isLoading}
|
isDisabled={isLoading}
|
||||||
|
deleteDetailsRequests={deleteDetailsRequests}
|
||||||
|
deleteMessage={i18n._(
|
||||||
|
t`This instance group is currently being by other resources. Are you sure you want to delete it?`
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
{i18n._(t`Delete`)}
|
{i18n._(t`Delete`)}
|
||||||
</DeleteButton>
|
</DeleteButton>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import ErrorDetail from '../../../components/ErrorDetail';
|
|||||||
import AlertModal from '../../../components/AlertModal';
|
import AlertModal from '../../../components/AlertModal';
|
||||||
import DatalistToolbar from '../../../components/DataListToolbar';
|
import DatalistToolbar from '../../../components/DataListToolbar';
|
||||||
import AddDropDownButton from '../../../components/AddDropDownButton';
|
import AddDropDownButton from '../../../components/AddDropDownButton';
|
||||||
|
import { relatedResourceDeleteRequests } from '../../../util/getRelatedResourceDeleteDetails';
|
||||||
import InstanceGroupListItem from './InstanceGroupListItem';
|
import InstanceGroupListItem from './InstanceGroupListItem';
|
||||||
|
|
||||||
const QS_CONFIG = getQSConfig('instance-group', {
|
const QS_CONFIG = getQSConfig('instance-group', {
|
||||||
@@ -186,7 +186,10 @@ function InstanceGroupList({ i18n }) {
|
|||||||
? `${match.url}/container_group/${item.id}/details`
|
? `${match.url}/container_group/${item.id}/details`
|
||||||
: `${match.url}/${item.id}/details`;
|
: `${match.url}/${item.id}/details`;
|
||||||
};
|
};
|
||||||
|
const deleteDetailsRequests = relatedResourceDeleteRequests.instanceGroup(
|
||||||
|
selected[0],
|
||||||
|
i18n
|
||||||
|
);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<PageSection>
|
<PageSection>
|
||||||
@@ -218,6 +221,11 @@ function InstanceGroupList({ i18n }) {
|
|||||||
itemsToDelete={modifiedSelected}
|
itemsToDelete={modifiedSelected}
|
||||||
pluralizedItemName={i18n._(t`Instance Groups`)}
|
pluralizedItemName={i18n._(t`Instance Groups`)}
|
||||||
errorMessage={errorMessageDelete}
|
errorMessage={errorMessageDelete}
|
||||||
|
deleteDetailsRequests={deleteDetailsRequests}
|
||||||
|
deleteMessage={i18n._(
|
||||||
|
'{numItemsToDelete, plural, one {This instance group is currently being by other resources. Are you sure you want to delete it?} other {Deleting these instance groups could impact other resources that rely on them. Are you sure you want to delete anyway?}}',
|
||||||
|
{ numItemsToDelete: selected.length }
|
||||||
|
)}
|
||||||
/>,
|
/>,
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -6,10 +6,18 @@ import {
|
|||||||
waitForElement,
|
waitForElement,
|
||||||
} from '../../../../testUtils/enzymeHelpers';
|
} from '../../../../testUtils/enzymeHelpers';
|
||||||
|
|
||||||
import { InstanceGroupsAPI } from '../../../api';
|
import {
|
||||||
|
InstanceGroupsAPI,
|
||||||
|
OrganizationsAPI,
|
||||||
|
InventoriesAPI,
|
||||||
|
UnifiedJobTemplatesAPI,
|
||||||
|
} from '../../../api';
|
||||||
import InstanceGroupList from './InstanceGroupList';
|
import InstanceGroupList from './InstanceGroupList';
|
||||||
|
|
||||||
jest.mock('../../../api/models/InstanceGroups');
|
jest.mock('../../../api/models/InstanceGroups');
|
||||||
|
jest.mock('../../../api/models/Organizations');
|
||||||
|
jest.mock('../../../api/models/Inventories');
|
||||||
|
jest.mock('../../../api/models/UnifiedJobTemplates');
|
||||||
|
|
||||||
const instanceGroups = {
|
const instanceGroups = {
|
||||||
data: {
|
data: {
|
||||||
@@ -44,6 +52,9 @@ const instanceGroups = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const options = { data: { actions: { POST: true } } };
|
const options = { data: { actions: { POST: true } } };
|
||||||
|
OrganizationsAPI.read.mockResolvedValue({ data: { count: 0 } });
|
||||||
|
InventoriesAPI.read.mockResolvedValue({ data: { count: 0 } });
|
||||||
|
UnifiedJobTemplatesAPI.read.mockResolvedValue({ data: { count: 0 } });
|
||||||
|
|
||||||
describe('<InstanceGroupList />', () => {
|
describe('<InstanceGroupList />', () => {
|
||||||
let wrapper;
|
let wrapper;
|
||||||
|
|||||||
@@ -283,4 +283,19 @@ export const relatedResourceDeleteRequests = {
|
|||||||
label: [i18n._(t`Workflow Job Template Nodes`)],
|
label: [i18n._(t`Workflow Job Template Nodes`)],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
instanceGroup: (selected, i18n) => [
|
||||||
|
{
|
||||||
|
request: () => OrganizationsAPI.read({ instance_groups: selected.id }),
|
||||||
|
label: i18n._(t`Organizations`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
request: () => InventoriesAPI.read({ instance_groups: selected.id }),
|
||||||
|
label: i18n._(t`Inventories`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
request: () =>
|
||||||
|
UnifiedJobTemplatesAPI.read({ instance_groups: selected.id }),
|
||||||
|
label: i18n._(t`Templates`),
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user