This is an automated email from the ASF dual-hosted git repository. mugdha pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 9a647f854f4565e816ea00e61d9399b437f60df7 Author: Mugdha Varadkar <mug...@apache.org> AuthorDate: Tue Jun 17 01:08:03 2025 +0530 RANGER-4351 : [addendum] Resource policies side bar takes more time even user is available on policymanager resource page --- .../src/views/AuditEvent/AuditLayout.jsx | 7 ++--- .../src/views/Encryption/KeyManager.jsx | 35 +++++++--------------- .../views/PolicyListing/PolicyListingTabView.jsx | 24 +++++---------- .../src/views/Reports/UserAccessLayout.jsx | 2 +- .../src/views/SecurityZone/SecurityZoneForm.jsx | 19 +++++++----- .../src/views/SecurityZone/ZoneListing.jsx | 10 ++----- .../views/ServiceManager/ServiceDefinitions.jsx | 8 ++--- .../views/ServiceManager/ServiceViewDetails.jsx | 1 + .../react-webapp/src/views/SideBar/SideBar.jsx | 10 +++---- .../react-webapp/src/views/SideBar/TopNavBar.jsx | 4 ++- 10 files changed, 48 insertions(+), 72 deletions(-) diff --git a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx index 5aa29b728..7d6d8b501 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AuditLayout.jsx @@ -65,10 +65,9 @@ class AuditLayout extends Component { this.setState({ services: servicesResp, - servicesAvailable: - servicesResp.length === 0 - ? "SERVICES_NOT_AVAILABLE" - : "SERVICES_AVAILABLE" + servicesAvailable: servicesResp.length + ? "SERVICES_AVAILABLE" + : "SERVICES_NOT_AVAILABLE" }); }; diff --git a/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx b/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx index a4332e9b4..94b0e0dc7 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/Encryption/KeyManager.jsx @@ -40,8 +40,6 @@ import CustomBreadcrumb from "Views/CustomBreadcrumb"; function init(props) { return { loader: true, - servicesData: [], - services: [], selcServicesData: [], keydata: [], onchangeval: @@ -70,17 +68,9 @@ function reducer(state, action) { ...state, loader: action.loader }; - case "SET_DATA": - return { - ...state, - - services: action.services, - servicesData: action.servicesdata - }; case "SET_SEL_SERVICE": return { ...state, - selcServicesData: action.selcservicesData, keydata: action.keydatalist, pagecount: action.pagecount @@ -118,7 +108,6 @@ function reducer(state, action) { ...state, updatetable: action.updatetable }; - case "SET_CURRENT_PAGE_INDEX": return { ...state, @@ -134,7 +123,6 @@ function reducer(state, action) { ...state, resetPage: action.resetPage }; - default: throw new Error(); } @@ -212,19 +200,19 @@ const KeyManager = () => { }, [searchParams]); const fetchServices = async (inputValue) => { - let servicesdata = null; - let allParams = {}; - if (inputValue) { - allParams["name"] = inputValue || ""; - } - allParams["serviceType"] = "kms"; + const allParams = { + serviceType: "kms", + ...(inputValue && { serviceNamePrefix: inputValue }) + }; + let servicesData = []; let serviceOptions = []; + try { const servicesResp = await fetchApi({ url: "public/v2/api/service-headers", params: allParams }); - servicesdata = servicesResp.data || []; + servicesData = servicesResp?.data || []; } catch (error) { let errorMsg = `Error occurred while fetching Services!`; if (error?.response?.data?.msgDesc) { @@ -233,15 +221,12 @@ const KeyManager = () => { toast.error(errorMsg); console.error(`Error occurred while fetching Services! ${error}`); } - serviceOptions = servicesdata.map((obj) => ({ + + serviceOptions = servicesData.map((obj) => ({ value: obj.name, label: obj.name })); - dispatch({ - type: "SET_DATA", - servicesdata: servicesdata, - services: serviceOptions - }); + return serviceOptions; }; diff --git a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx index e12818f83..38468a39e 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyListingTabView.jsx @@ -32,8 +32,7 @@ import { import { Loader } from "Components/CommonComponents"; import TopNavBar from "../SideBar/TopNavBar"; import { cloneDeep, isEmpty, map, sortBy } from "lodash"; -import { RangerPolicyType } from "../../utils/XAEnums"; -import { getServiceDef } from "../../utils/appState"; +import { getServiceDef } from "Utils/appState"; function reducer(state, action) { switch (action.type) { @@ -102,7 +101,7 @@ export const PolicyListingTabView = () => { url: `plugins/services/${params.serviceId}` }); getAllServicesData = await fetchApi({ - url: `plugins/services?serviceType=${getServiceData?.data?.type}` + url: `public/v2/api/service-headers?serviceType=${getServiceData?.data?.type}` }); getServiceDefData = serviceDefs?.allServiceDefs?.find((serviceDef) => { return serviceDef.name == getServiceData?.data?.type; @@ -131,7 +130,7 @@ export const PolicyListingTabView = () => { dispatch({ type: "SERVICES_DATA", - allServicesData: getAllServicesData?.data?.services, + allServicesData: getAllServicesData?.data || [], serviceData: getServiceData?.data, serviceDefData: getServiceDefData }); @@ -153,8 +152,8 @@ export const PolicyListingTabView = () => { let filterService = []; filterService = sortBy( - map(services, function ({ displayName }) { - return { label: displayName, value: displayName }; + map(services, function ({ id, displayName }) { + return { label: displayName, value: id }; }), "label" ); @@ -163,15 +162,8 @@ export const PolicyListingTabView = () => { }; const handleServiceChange = async (e) => { - if (e !== "") { - let selectedServiceData = allServicesData?.find((service) => { - if (service.displayName == e?.label) { - return service; - } - }); - navigate( - `/service/${selectedServiceData?.id}/policies/${params.policyType}` - ); + if (e && e !== undefined) { + navigate(`/service/${e.value}/policies/${params.policyType}`); localStorage.removeItem("zoneDetails"); } }; @@ -229,7 +221,7 @@ export const PolicyListingTabView = () => { serviceData={serviceData} handleServiceChange={handleServiceChange} getServices={getServices} - allServicesData={sortBy(allServicesData, "name")} + allServicesData={allServicesData} policyLoader={loader} currentServiceZone={getServiceZone()} handleZoneChange={handleZoneChange} diff --git a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx index 372c91c56..d367e5350 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx @@ -96,7 +96,7 @@ function UserAccessLayout() { url: "public/v2/api/service-headers" }); - resourceServices = filter(servicesResp.data, (service) => + resourceServices = filter(servicesResp?.data, (service) => isKMSRole ? service.type == "kms" : service.type != "kms" ); } catch (error) { diff --git a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx index 9b52fa09a..447431e33 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx @@ -170,11 +170,12 @@ const SecurityZoneForm = () => { }; const fetchResourceServices = async () => { - const serviceDefnsResp = await fetchApi({ + const servicesResp = await fetchApi({ url: "public/v2/api/service-headers" }); - const filterServices = serviceDefnsResp.data.filter( + const filterServices = filter( + servicesResp?.data, (obj) => obj.type !== "tag" && obj.type !== "kms" ); @@ -590,16 +591,18 @@ const SecurityZoneForm = () => { }; const fetchTagServices = async (inputValue) => { - let params = {}; - if (inputValue) { - params["serviceNamePartial"] = inputValue || ""; - params["serviceType"] = "tag" || ""; - } + const params = { + ...(inputValue && { serviceNamePrefix: inputValue }), + serviceType: "tag" + }; + const serviceResp = await fetchApi({ url: "public/v2/api/service-headers", params: params }); - const filterServices = filter(serviceResp.data || [], ["type", "tag"]); + + const filterServices = filter(serviceResp?.data || [], ["type", "tag"]); + return filterServices.map(({ name }) => ({ label: name, value: name diff --git a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx index 8d1592793..984fe3888 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/ZoneListing.jsx @@ -74,13 +74,7 @@ class ZoneListing extends Component { try { servicesResp = await fetchApi({ - url: "public/v2/api/service-headers", - params: { - page: 0, - pageSize: 200, - total_pages: 0, - startIndex: 0 - } + url: "public/v2/api/service-headers" }); } catch (error) { console.error(`Error occurred while fetching Services! ${error}`); @@ -103,7 +97,7 @@ class ZoneListing extends Component { selectedZone: selectedZone, zones: zoneList, filterZone: zoneList, - services: servicesResp.data + services: servicesResp?.data || [] }); }; diff --git a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx index 49cf32edb..c3d0a2b67 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceDefinitions.jsx @@ -139,13 +139,13 @@ class ServiceDefinitions extends Component { url: "public/v2/api/service-headers" }); if (this.state.isTagView) { - tagServices = filter(servicesResp.data, ["type", "tag"]); + tagServices = filter(servicesResp?.data, ["type", "tag"]); } else { if (this.state.isKMSRole) { - resourceServices = filter(servicesResp.data, ["type", "kms"]); + resourceServices = filter(servicesResp?.data, ["type", "kms"]); } else { resourceServices = filter( - servicesResp.data, + servicesResp?.data, (service) => service.type !== "tag" && service.type !== "kms" ); } @@ -157,7 +157,7 @@ class ServiceDefinitions extends Component { } this.setState({ - allServices: servicesResp.data, + allServices: servicesResp?.data || [], services: this.state.isTagView ? tagServices : resourceServices, filterServices: this.state.isTagView ? tagServices : resourceServices, loader: false diff --git a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx index 7fd84c8b9..5f5728bad 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceViewDetails.jsx @@ -42,6 +42,7 @@ export const ServiceViewDetails = (props) => { let getServiceData = {}; try { + setLoader(true); getServiceData = await fetchApi({ url: `plugins/services/${service.id}` }); diff --git a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx index 192395515..d57082026 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/SideBar.jsx @@ -30,7 +30,7 @@ import settingsIcon from "Images/sidebar/settings.svg"; import accountIcon from "Images/sidebar/account.svg"; import gdsIcon from "Images/sidebar/governed-data.svg"; import { fetchApi } from "Utils/fetchAPI"; -import { getUserProfile, getServiceDef } from "Utils/appState"; +import { getServiceDef, getUserProfile } from "Utils/appState"; import { hasAccessToTab, isAuditor, @@ -156,19 +156,19 @@ export const SideBar = () => { servicesResp = await fetchApi({ url: "public/v2/api/service-headers" }); - tagServices = filter(servicesResp.data, ["type", "tag"]); + tagServices = filter(servicesResp?.data, ["type", "tag"]); if (isKMSRole) { - resourceServices = filter(servicesResp.data, ["type", "kms"]); + resourceServices = filter(servicesResp?.data, ["type", "kms"]); } else { resourceServices = filter( - servicesResp.data, + servicesResp?.data, (service) => service.type !== "tag" && service.type !== "kms" ); } dispatch({ type: "SERVICES_DATA", - allServiceData: servicesResp.data, + allServiceData: servicesResp?.data || [], serviceData: resourceServices, tagServiceData: tagServices }); diff --git a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx index 2e54b01ef..8e7aa43e7 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/SideBar/TopNavBar.jsx @@ -153,7 +153,7 @@ export const TopNavBar = (props) => { if (!isEmpty(service)) { return { label: `Service : ${service?.displayName}`, - value: service.displayName + value: service.id }; } else { return ""; @@ -180,11 +180,13 @@ export const TopNavBar = (props) => { ); } }; + const formatOptionLabel = ({ label }) => ( <div title={label} className="text-truncate"> {label} </div> ); + return ( <nav className="navbar navbar-expand-lg navbar-light bg-light content-top-nav"> <div className="top-nav-title-wrapper">