From dfcca55b8060fb86404527851055444a27e09c63 Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:29:14 -0500 Subject: [PATCH] [released bugs] Fleet FE: Bulk host transfer and delete respects all UI page filters (#17263) --- .../hosts/ManageHostsPage/HostsPageConfig.tsx | 1 - .../hosts/ManageHostsPage/ManageHostsPage.tsx | 61 ++++++++---- frontend/services/entities/hosts.ts | 95 ++++++++++++++++++- 3 files changed, 139 insertions(+), 18 deletions(-) diff --git a/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx b/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx index 8a7fb4c61b..7d7b3be7f7 100644 --- a/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx +++ b/frontend/pages/hosts/ManageHostsPage/HostsPageConfig.tsx @@ -13,7 +13,6 @@ export const MANAGE_HOSTS_PAGE_FILTER_KEYS = [ "status", "mdm_id", "mdm_enrollment_status", - "os_id", "os_name", "os_version", "munki_issue_id", diff --git a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx index fdb117e5a3..98116ba0d6 100644 --- a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx +++ b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx @@ -1034,21 +1034,33 @@ const ManageHostsPage = ({ setIsUpdatingHosts(true); const teamId = typeof transferTeam.id === "number" ? transferTeam.id : null; - const currentTeam = teamIdForApi; - let action = hostsAPI.transferToTeam(teamId, selectedHostIds); - - if (isAllMatchingHostsSelected) { - const labelId = selectedLabel?.id; - - action = hostsAPI.transferToTeamByFilter({ - teamId, - query: searchQuery, - status, - labelId, - currentTeam, - }); - } + const action = isAllMatchingHostsSelected + ? hostsAPI.transferToTeamByFilter({ + teamId, + query: searchQuery, + status, + labelId: selectedLabel?.id, + currentTeam: teamIdForApi, + policyId, + policyResponse, + softwareId, + softwareTitleId, + softwareVersionId, + osName, + osVersionId, + osVersion, + macSettingsStatus, + bootstrapPackageStatus, + mdmId, + mdmEnrollmentStatus, + munkiIssueId, + lowDiskSpaceHosts, + osSettings: osSettingsStatus, + diskEncryptionStatus, + vulnerability, + }) + : hostsAPI.transferToTeam(teamId, selectedHostIds); try { await action; @@ -1075,7 +1087,6 @@ const ManageHostsPage = ({ setIsUpdatingHosts(true); const teamId = isAnyTeamSelected ? currentTeamId ?? null : null; - const labelId = selectedLabel?.id; try { await (isAllMatchingHostsSelected @@ -1083,7 +1094,25 @@ const ManageHostsPage = ({ teamId, query: searchQuery, status, - labelId, + labelId: selectedLabel?.id, + currentTeam: teamIdForApi, + policyId, + policyResponse, + softwareId, + softwareTitleId, + softwareVersionId, + osName, + osVersionId, + osVersion, + macSettingsStatus, + bootstrapPackageStatus, + mdmId, + mdmEnrollmentStatus, + munkiIssueId, + lowDiskSpaceHosts, + osSettings: osSettingsStatus, + diskEncryptionStatus, + vulnerability, }) : hostsAPI.destroyBulk(selectedHostIds)); diff --git a/frontend/services/entities/hosts.ts b/frontend/services/entities/hosts.ts index 749373149f..ea78bc2a08 100644 --- a/frontend/services/entities/hosts.ts +++ b/frontend/services/entities/hosts.ts @@ -15,8 +15,10 @@ import { BootstrapPackageStatus, IMdmSolution, MdmProfileStatus, + MdmEnrollmentStatus, } from "interfaces/mdm"; import { IMunkiIssuesAggregate } from "interfaces/macadmins"; +import { PolicyResponse } from "utilities/constants"; export interface ISortOption { key: string; @@ -117,6 +119,23 @@ export interface IActionByFilter { status: string; labelId?: number; currentTeam?: number | null; + policyId?: number | null; + policyResponse?: PolicyResponse; + softwareId?: number | null; + softwareTitleId?: number | null; + softwareVersionId?: number | null; + osName?: string; + osVersion?: string; + osVersionId?: number | null; + macSettingsStatus?: MacSettingsStatusQueryParam; + bootstrapPackageStatus?: BootstrapPackageStatus; + mdmId?: number | null; + mdmEnrollmentStatus?: MdmEnrollmentStatus; + munkiIssueId?: number | null; + lowDiskSpaceHosts?: number | null; + osSettings?: MdmProfileStatus; + diskEncryptionStatus?: DiskEncryptionStatus; + vulnerability?: string; } export type ILoadHostDetailsExtension = "device_mapping" | "macadmins"; @@ -173,7 +192,30 @@ export default { return sendRequest("POST", HOSTS_DELETE, { ids: hostIds }); }, - destroyByFilter: ({ teamId, query, status, labelId }: IActionByFilter) => { + destroyByFilter: ({ + teamId, + query, + status, + labelId, + currentTeam, + policyId, + policyResponse, + softwareId, + softwareTitleId, + softwareVersionId, + osName, + osVersion, + osVersionId, + macSettingsStatus, + bootstrapPackageStatus, + mdmId, + mdmEnrollmentStatus, + munkiIssueId, + lowDiskSpaceHosts, + osSettings, + diskEncryptionStatus, + vulnerability, + }: IActionByFilter) => { const { HOSTS_DELETE } = endpoints; return sendRequest("POST", HOSTS_DELETE, { filters: { @@ -181,6 +223,23 @@ export default { status, label_id: labelId, team_id: teamId, + policy_id: policyId, + policy_response: policyResponse, + software_id: softwareId, + software_title_id: softwareTitleId, + software_version_id: softwareVersionId, + os_name: osName, + os_version: osVersion, + os_version_id: osVersionId, + macos_settings: macSettingsStatus, + bootstrap_package: bootstrapPackageStatus, + mdm_id: mdmId, + mdm_enrollment_status: mdmEnrollmentStatus, + munki_issue_id: munkiIssueId, + low_disk_space_host: lowDiskSpaceHosts, + os_settings: osSettings, + os_settings_disk_encryption: diskEncryptionStatus, + vulnerability, }, }); }, @@ -361,6 +420,23 @@ export default { status, labelId, currentTeam, + policyId, + policyResponse, + softwareId, + softwareTitleId, + softwareVersionId, + osName, + osVersion, + osVersionId, + macSettingsStatus, + bootstrapPackageStatus, + mdmId, + mdmEnrollmentStatus, + munkiIssueId, + lowDiskSpaceHosts, + osSettings, + diskEncryptionStatus, + vulnerability, }: IActionByFilter) => { const { HOSTS_TRANSFER_BY_FILTER } = endpoints; return sendRequest("POST", HOSTS_TRANSFER_BY_FILTER, { @@ -370,6 +446,23 @@ export default { status, label_id: labelId, team_id: currentTeam, + policy_id: policyId, + policy_response: policyResponse, + software_id: softwareId, + software_title_id: softwareTitleId, + software_version_id: softwareVersionId, + os_name: osName, + os_version: osVersion, + os_version_id: osVersionId, + macos_settings: macSettingsStatus, + bootstrap_package: bootstrapPackageStatus, + mdm_id: mdmId, + mdm_enrollment_status: mdmEnrollmentStatus, + munki_issue_id: munkiIssueId, + low_disk_space_host: lowDiskSpaceHosts, + os_settings: osSettings, + os_settings_disk_encryption: diskEncryptionStatus, + vulnerability, }, }); },