mirror of
https://github.com/ansible/awx.git
synced 2026-03-01 16:58:46 -03:30
Adds more execution environment resource to delete warnings
This commit is contained in:
@@ -168,7 +168,10 @@ function ToolbarDeleteButton({
|
|||||||
deleteMessages.push(warningMessage);
|
deleteMessages.push(warningMessage);
|
||||||
}
|
}
|
||||||
if (deleteMessage) {
|
if (deleteMessage) {
|
||||||
if (itemsToDelete[0]?.type !== 'inventory') {
|
if (
|
||||||
|
itemsToDelete[0]?.type !== 'inventory' &&
|
||||||
|
(itemsToDelete.length > 1 || deleteDetails)
|
||||||
|
) {
|
||||||
deleteMessages.push(deleteMessage);
|
deleteMessages.push(deleteMessage);
|
||||||
} else if (deleteDetails || itemsToDelete.length > 1) {
|
} else if (deleteDetails || itemsToDelete.length > 1) {
|
||||||
deleteMessages.push(deleteMessage);
|
deleteMessages.push(deleteMessage);
|
||||||
@@ -206,6 +209,10 @@ function ToolbarDeleteButton({
|
|||||||
</AlertModal>
|
</AlertModal>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
const shouldShowDeleteWarning =
|
||||||
|
warningMessage ||
|
||||||
|
(itemsToDelete.length === 1 && deleteDetails) ||
|
||||||
|
(itemsToDelete.length > 1 && deleteMessage);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -270,7 +277,7 @@ function ToolbarDeleteButton({
|
|||||||
<br />
|
<br />
|
||||||
</span>
|
</span>
|
||||||
))}
|
))}
|
||||||
{(deleteDetails || deleteMessage || warningMessage) && (
|
{shouldShowDeleteWarning && (
|
||||||
<WarningMessage
|
<WarningMessage
|
||||||
variant="warning"
|
variant="warning"
|
||||||
isInline
|
isInline
|
||||||
|
|||||||
@@ -191,6 +191,6 @@ describe('<ExecutionEnvironmentDetails/>', () => {
|
|||||||
});
|
});
|
||||||
expect(
|
expect(
|
||||||
wrapper.find('DeleteButton').prop('deleteDetailsRequests')
|
wrapper.find('DeleteButton').prop('deleteDetailsRequests')
|
||||||
).toHaveLength(2);
|
).toHaveLength(4);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -195,6 +195,6 @@ describe('<ExecutionEnvironmentList/>', () => {
|
|||||||
});
|
});
|
||||||
expect(
|
expect(
|
||||||
wrapper.find('ToolbarDeleteButton').prop('deleteDetailsRequests')
|
wrapper.find('ToolbarDeleteButton').prop('deleteDetailsRequests')
|
||||||
).toHaveLength(2);
|
).toHaveLength(4);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ function InventorySourceList({ i18n }) {
|
|||||||
pluralizedItemName={i18n._(t`Inventory Sources`)}
|
pluralizedItemName={i18n._(t`Inventory Sources`)}
|
||||||
deleteDetailsRequests={deleteDetailsRequests}
|
deleteDetailsRequests={deleteDetailsRequests}
|
||||||
deleteMessage={i18n._(
|
deleteMessage={i18n._(
|
||||||
'{numItemsToDelete, plural, one {This inventory source is currently being used workflow job template nodes. Are you sure you want to delete it?} other {Deleting these inventory sources could impact some workflow job template nodes that rely on them. Are you sure you want to delete anyway?}}',
|
'{numItemsToDelete, plural, one {This inventory source is currently being used by workflow job template nodes. Are you sure you want to delete it?} other {Deleting these inventory sources could impact workflow job template nodes that rely on them. Are you sure you want to delete anyway?}}',
|
||||||
{ numItemsToDelete: selected.length }
|
{ numItemsToDelete: selected.length }
|
||||||
)}
|
)}
|
||||||
/>,
|
/>,
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ describe('<OrganizationDetail />', () => {
|
|||||||
|
|
||||||
expect(
|
expect(
|
||||||
component.find('DeleteButton').prop('deleteDetailsRequests')
|
component.find('DeleteButton').prop('deleteDetailsRequests')
|
||||||
).toHaveLength(4);
|
).toHaveLength(7);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should render the expected instance group', async () => {
|
test('should render the expected instance group', async () => {
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ describe('<OrganizationsList />', () => {
|
|||||||
);
|
);
|
||||||
expect(
|
expect(
|
||||||
wrapper.find('ToolbarDeleteButton').prop('deleteDetailsRequests')
|
wrapper.find('ToolbarDeleteButton').prop('deleteDetailsRequests')
|
||||||
).toHaveLength(4);
|
).toHaveLength(7);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Items are rendered after loading', async () => {
|
test('Items are rendered after loading', async () => {
|
||||||
|
|||||||
@@ -117,14 +117,26 @@ export const relatedResourceDeleteRequests = {
|
|||||||
request: async () => {
|
request: async () => {
|
||||||
try {
|
try {
|
||||||
const { data } = await InventoriesAPI.updateSources(inventoryId);
|
const { data } = await InventoriesAPI.updateSources(inventoryId);
|
||||||
return WorkflowJobTemplateNodesAPI.read({
|
let total = 0;
|
||||||
unified_job_template: data[0].inventory_source,
|
await Promise.all(
|
||||||
});
|
data.map(async datum => {
|
||||||
|
const {
|
||||||
|
data: { count },
|
||||||
|
} = await WorkflowJobTemplateNodesAPI.read({
|
||||||
|
unified_job_template: datum.inventory_source,
|
||||||
|
});
|
||||||
|
if (count > 0) {
|
||||||
|
total += count;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
console.log(total, 'total');
|
||||||
|
return { data: { count: total } };
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error(err);
|
throw new Error(err);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
label: i18n._(t`Workflow Job Template Node`),
|
label: i18n._(t`Workflow Job Template Nodes`),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -231,26 +243,37 @@ export const relatedResourceDeleteRequests = {
|
|||||||
{
|
{
|
||||||
request: async () =>
|
request: async () =>
|
||||||
OrganizationsAPI.read({
|
OrganizationsAPI.read({
|
||||||
execution_environment: selected.id,
|
default_environment: selected.id,
|
||||||
}),
|
}),
|
||||||
label: [i18n._(t`Organizations`)],
|
label: [i18n._(t`Organizations`)],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
request: async () => {
|
request: async () => {
|
||||||
try {
|
try {
|
||||||
const { data } = await WorkflowJobTemplateNodesAPI.read({
|
const {
|
||||||
|
data: { results },
|
||||||
|
} = await InventorySourcesAPI.read({
|
||||||
execution_environment: selected.id,
|
execution_environment: selected.id,
|
||||||
});
|
});
|
||||||
if (
|
let total = 0;
|
||||||
data.summary_fields.unified_job_template.unified_job_type ===
|
await Promise.all(
|
||||||
'inventory_update'
|
results.map(async result => {
|
||||||
) {
|
const {
|
||||||
await InventorySourcesAPI.read();
|
data: { count },
|
||||||
}
|
} = await WorkflowJobTemplateNodesAPI.read({
|
||||||
} catch {}
|
unified_job_template: result.id,
|
||||||
|
});
|
||||||
|
if (count > 0) {
|
||||||
|
total += count;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
return { data: { count: total } };
|
||||||
|
} catch (err) {
|
||||||
|
throw new Error(err);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
label: [i18n._(t`Workflow Job Template Nodes`)],
|
||||||
label: [i18n._(t`Organizations`)],
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user