Skip to content

Commit

Permalink
RANGER-4749: fixed TagREST.getServiceResourceByResource() to populate…
Browse files Browse the repository at this point in the history
… resource value in response - #2

Signed-off-by: Madhan Neethiraj <madhan@apache.org>
  • Loading branch information
anandN872 authored and mneethiraj committed Mar 26, 2024
1 parent caec262 commit 5981fb3
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1398,9 +1398,9 @@ private void deleteTagDef(RangerTagDef tagDef) throws Exception {
}
}

public RangerServiceResource getRangerServiceResource(String serviceName, Map<String, String[]> resourceMap) {
public static RangerServiceResource toRangerServiceResource(String serviceName, Map<String, String[]> resourceMap) {
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagDBStore.getRangerServiceResource(): serviceName={" + serviceName + "}");
LOG.debug("==> TagDBStore.toRangerServiceResource(): serviceName={" + serviceName + "}");
}

Map<String, RangerPolicyResource> resourceElements = new HashMap<>();
Expand All @@ -1424,11 +1424,13 @@ public RangerServiceResource getRangerServiceResource(String serviceName, Map<St
}

if (parts.length == 1) {
List<String> valueList = new ArrayList<>();
List<String> valueList = new ArrayList<>(valueArray.length);

for (String str : valueArray) {
valueList.add(str.trim());
}

policyResource.setValues(valueList);
} else if (parts.length == 2 && valueArray[0] != null) {
String subKey = parts[1];
String value = valueArray[0];
Expand All @@ -1444,7 +1446,7 @@ public RangerServiceResource getRangerServiceResource(String serviceName, Map<St
RangerServiceResource ret = new RangerServiceResource(serviceName, resourceElements);

if (LOG.isDebugEnabled()) {
LOG.debug("<== TagDBStore.getRangerServiceResource(): (serviceName={" + serviceName + "} RangerServiceResource={" + ret + "})");
LOG.debug("<== TagDBStore.toRangerServiceResource(): (serviceName={" + serviceName + "} RangerServiceResource={" + ret + "})");
}

return ret;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1028,7 +1028,7 @@ public RangerServiceResource getServiceResourceByResource(@PathParam("serviceNam
}

Map<String, String[]> resourceMap = searchUtil.getMultiValueParamsWithPrefix(request, SearchFilter.RESOURCE_PREFIX, true);
RangerServiceResource serviceResource = tagStore.getRangerServiceResource(serviceName, resourceMap);
RangerServiceResource serviceResource = tagStore.toRangerServiceResource(serviceName, resourceMap);

serviceResource = getServiceResourceByServiceAndResourceSignature(serviceName, new RangerServiceResourceSignature(serviceResource).getSignature());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.WebApplicationException;
import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
Expand Down Expand Up @@ -50,6 +53,7 @@
import org.apache.ranger.plugin.model.RangerTag;
import org.apache.ranger.plugin.model.RangerTagDef;
import org.apache.ranger.plugin.model.RangerTagResourceMap;
import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
import org.apache.ranger.plugin.store.PList;
import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.plugin.util.ServiceTags;
Expand Down Expand Up @@ -1239,4 +1243,21 @@ private RangerServiceResourceWithTagsList createRangerServiceResourceWithTagsVi

return rangerServiceResourceViewList;
}

@Test
public void testToRangerServiceResource() {
Map<String, String[]> resourceMap = new HashMap<>();
Map<String, RangerPolicyResource> resourceElements = new HashMap<>();

resourceMap.put("database", new String[] { "db1" });
resourceMap.put("database.isExcludes", new String[] { "false" });
resourceMap.put("database.isRecursive", new String[] { "false" });

resourceElements.put("database", new RangerPolicyResource("db1", false, false));

RangerServiceResource expectedResource = new RangerServiceResource(serviceName, resourceElements);
RangerServiceResource actualResource = tagDBStore.toRangerServiceResource(serviceName, resourceMap);

Assert.assertEquals(expectedResource.getResourceElements(), actualResource.getResourceElements());
}
}

0 comments on commit 5981fb3

Please sign in to comment.