You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2021/05/20 18:46:10 UTC

[ranger] branch master updated: RANGER-3289: updated Python client to support optional query-params

This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 3d0e212  RANGER-3289: updated Python client to support optional query-params
3d0e212 is described below

commit 3d0e21230358744f07996945da5b665905284217
Author: Madhan Neethiraj <ma...@apache.org>
AuthorDate: Wed May 19 17:12:55 2021 -0700

    RANGER-3289: updated Python client to support optional query-params
---
 .../python/apache_ranger/client/ranger_client.py   | 82 ++++++++++------------
 intg/src/main/python/setup.py                      |  2 +-
 2 files changed, 40 insertions(+), 44 deletions(-)

diff --git a/intg/src/main/python/apache_ranger/client/ranger_client.py b/intg/src/main/python/apache_ranger/client/ranger_client.py
index 96543cc..4dfcfbc 100644
--- a/intg/src/main/python/apache_ranger/client/ranger_client.py
+++ b/intg/src/main/python/apache_ranger/client/ranger_client.py
@@ -20,19 +20,16 @@
 import json
 import logging
 import os
-
-from requests import Session, Response
-
 from apache_ranger.exceptions                 import RangerServiceException
 from apache_ranger.model.ranger_base          import RangerBase
-from apache_ranger.model.ranger_role          import RangerRole
 from apache_ranger.model.ranger_policy        import RangerPolicy
+from apache_ranger.model.ranger_role          import RangerRole
+from apache_ranger.model.ranger_security_zone import RangerSecurityZone
 from apache_ranger.model.ranger_service       import RangerService
 from apache_ranger.model.ranger_service_def   import RangerServiceDef
-from apache_ranger.model.ranger_security_zone import RangerSecurityZone
 from apache_ranger.utils                      import *
-
-
+from requests                                 import Session
+from requests                                 import Response
 
 LOG = logging.getLogger(__name__)
 
@@ -62,11 +59,11 @@ class RangerClient:
 
         return type_coerce(resp, RangerServiceDef)
 
-    def delete_service_def_by_id(self, serviceDefId):
-        self.__call_api(RangerClient.DELETE_SERVICEDEF_BY_ID.format_path({ 'id': serviceDefId }))
+    def delete_service_def_by_id(self, serviceDefId, params=None):
+        self.__call_api(RangerClient.DELETE_SERVICEDEF_BY_ID.format_path({ 'id': serviceDefId }), params)
 
-    def delete_service_def(self, serviceDefName):
-        self.__call_api(RangerClient.DELETE_SERVICEDEF_BY_NAME.format_path({ 'name': serviceDefName }))
+    def delete_service_def(self, serviceDefName, params=None):
+        self.__call_api(RangerClient.DELETE_SERVICEDEF_BY_NAME.format_path({ 'name': serviceDefName }), params)
 
     def get_service_def_by_id(self, serviceDefId):
         resp = self.__call_api(RangerClient.GET_SERVICEDEF_BY_ID.format_path({ 'id': serviceDefId }))
@@ -79,9 +76,6 @@ class RangerClient:
         return type_coerce(resp, RangerServiceDef)
 
     def find_service_defs(self, filter=None):
-        if filter is None:
-            filter = {}
-
         resp = self.__call_api(RangerClient.FIND_SERVICEDEFS, filter)
 
         return type_coerce_list(resp, RangerServiceDef)
@@ -103,13 +97,13 @@ class RangerClient:
 
         return type_coerce(resp, RangerService)
 
-    def update_service_by_id(self, serviceId, service):
-        resp = self.__call_api(RangerClient.UPDATE_SERVICE_BY_ID.format_path({ 'id': serviceId }), request_data=service)
+    def update_service_by_id(self, serviceId, service, params=None):
+        resp = self.__call_api(RangerClient.UPDATE_SERVICE_BY_ID.format_path({ 'id': serviceId }), params, service)
 
         return type_coerce(resp, RangerService)
 
-    def update_service(self, serviceName, service):
-        resp = self.__call_api(RangerClient.UPDATE_SERVICE_BY_NAME.format_path({ 'name': serviceName }), request_data=service)
+    def update_service(self, serviceName, service, params=None):
+        resp = self.__call_api(RangerClient.UPDATE_SERVICE_BY_NAME.format_path({ 'name': serviceName }), params, service)
 
         return type_coerce(resp, RangerService)
 
@@ -120,17 +114,14 @@ class RangerClient:
         self.__call_api(RangerClient.DELETE_SERVICE_BY_NAME.format_path({ 'name': serviceName }))
 
     def find_services(self, filter=None):
-        if filter is None:
-            filter = {}
-
         resp = self.__call_api(RangerClient.FIND_SERVICES, filter)
 
         return type_coerce_list(resp, RangerService)
 
 
     # Policy APIs
-    def create_policy(self, policy):
-        resp = self.__call_api(RangerClient.CREATE_POLICY, request_data=policy)
+    def create_policy(self, policy, params=None):
+        resp = self.__call_api(RangerClient.CREATE_POLICY, params, policy)
 
         return type_coerce(resp, RangerPolicy)
 
@@ -144,8 +135,8 @@ class RangerClient:
 
         return type_coerce(resp, RangerPolicy)
 
-    def get_policies_in_service(self, serviceName):
-        resp = self.__call_api(RangerClient.GET_POLICIES_IN_SERVICE.format_path({ 'serviceName': serviceName }))
+    def get_policies_in_service(self, serviceName, params=None):
+        resp = self.__call_api(RangerClient.GET_POLICIES_IN_SERVICE.format_path({ 'serviceName': serviceName }), params)
 
         return type_coerce_list(resp, RangerPolicy)
 
@@ -159,8 +150,8 @@ class RangerClient:
 
         return type_coerce(resp, RangerPolicy)
 
-    def apply_policy(self, policy):
-        resp = self.__call_api(RangerClient.APPLY_POLICY, request_data=policy)
+    def apply_policy(self, policy, params=None):
+        resp = self.__call_api(RangerClient.APPLY_POLICY, params, policy)
 
         return type_coerce(resp, RangerPolicy)
 
@@ -170,7 +161,7 @@ class RangerClient:
     def delete_policy(self, serviceName, policyName):
         self.__call_api(RangerClient.DELETE_POLICY_BY_NAME, { 'servicename': serviceName, 'policyname': policyName })
 
-    def find_policies(self, filter={}):
+    def find_policies(self, filter=None):
         resp = self.__call_api(RangerClient.FIND_POLICIES, filter)
 
         return type_coerce_list(resp, RangerPolicy)
@@ -208,20 +199,25 @@ class RangerClient:
 
         return type_coerce(resp, RangerSecurityZone)
 
-    def find_security_zones(self, filter={}):
+    def find_security_zones(self, filter=None):
         resp = self.__call_api(RangerClient.FIND_ZONES, filter)
 
         return type_coerce_list(resp, RangerSecurityZone)
 
 
     # Role APIs
-    def create_role(self, serviceName, role):
-        resp = self.__call_api(RangerClient.CREATE_ROLE, { 'serviceName': serviceName }, role)
+    def create_role(self, serviceName, role, params=None):
+        if params is None:
+            params = {}
+
+        params['serviceName'] = serviceName
+
+        resp = self.__call_api(RangerClient.CREATE_ROLE, params, role)
 
         return type_coerce(resp, RangerRole)
 
-    def update_role(self, roleId, role):
-        resp = self.__call_api(RangerClient.UPDATE_ROLE_BY_ID.format_path({ 'id': roleId }), request_data=role)
+    def update_role(self, roleId, role, params=None):
+        resp = self.__call_api(RangerClient.UPDATE_ROLE_BY_ID.format_path({ 'id': roleId }), params, role)
 
         return type_coerce(resp, RangerRole)
 
@@ -246,23 +242,23 @@ class RangerClient:
 
         return resp
 
-    def get_user_roles(self, user):
-        ret = self.__call_api(RangerClient.GET_USER_ROLES.format_path({ 'name': user }))
+    def get_user_roles(self, user, filters=None):
+        ret = self.__call_api(RangerClient.GET_USER_ROLES.format_path({ 'name': user }), filters)
 
         return list(ret) if ret is not None else None
 
-    def find_roles(self, filter={}):
+    def find_roles(self, filter=None):
         resp = self.__call_api(RangerClient.FIND_ROLES, filter)
 
         return type_coerce_list(resp, RangerRole)
 
-    def grant_role(self, serviceName, request):
-        resp = self.__call_api(RangerClient.GRANT_ROLE.format_path({ 'name': serviceName }), request_data=request)
+    def grant_role(self, serviceName, request, params=None):
+        resp = self.__call_api(RangerClient.GRANT_ROLE.format_path({ 'name': serviceName }), params, request)
 
         return type_coerce(resp, RESTResponse)
 
-    def revoke_role(self, serviceName, request):
-        resp = self.__call_api(RangerClient.REVOKE_ROLE.format_path({ 'name': serviceName }), request_data=request)
+    def revoke_role(self, serviceName, request, params=None):
+        resp = self.__call_api(RangerClient.REVOKE_ROLE.format_path({ 'name': serviceName }), params, request)
 
         return type_coerce(resp, RESTResponse)
 
@@ -309,15 +305,15 @@ class RangerClient:
             ret = None
         elif response.status_code == api.expected_status:
             try:
-                if response.content is not None:
+                if response.status_code == HTTPStatus.NO_CONTENT or response.content is None:
+                    ret = None
+                else:
                     if LOG.isEnabledFor(logging.DEBUG):
                         LOG.debug("<== __call_api(%s, %s, %s), result=%s", vars(api), params, request_data, response)
 
                         LOG.debug(response.json())
 
                     ret = response.json()
-                else:
-                    ret = None
             except Exception as e:
                 print(e)
 
diff --git a/intg/src/main/python/setup.py b/intg/src/main/python/setup.py
index 5a97657..ebf86a9 100644
--- a/intg/src/main/python/setup.py
+++ b/intg/src/main/python/setup.py
@@ -27,7 +27,7 @@ with open("README.md", "r") as fh:
 
 setup(
     name="apache-ranger",
-    version="0.0.3",
+    version="0.0.4",
     author="Apache Ranger",
     author_email="dev@ranger.apache.org",
     description="Apache Ranger Python client",