简体   繁体   English

Apache-ranger python 库 JSONDecoder 错误

[英]Apache-ranger python library JSONDecoder error

So i'm trying to create a policy using the ranger python client, and this is my code (redacted confidential info for security purposes)所以我正在尝试使用 ranger python 客户端创建一个策略,这是我的代码(出于安全目的编辑机密信息)

from apache_ranger.model.ranger_service import *
from apache_ranger.client.ranger_client import *
from apache_ranger.model.ranger_policy  import *


ranger_url  = 'http://************.com:***'
ranger_auth = ('**********', '**********')

ranger = RangerClient(ranger_url, ranger_auth)

policy           = RangerPolicy()
policy.service   = 'starburst-enterprise'
policy.name      = 'test_policy'
policy.resources = { 'database': RangerPolicyResource({ 'values': ['hive'] }),
                     'table':    RangerPolicyResource({ 'values': ['uber_rides'] }),
                     'column':   RangerPolicyResource({ 'values': ['*'] }) }

allowItem1          = RangerPolicyItem()
allowItem1.groups   = [ 'Data Product Owner' ]
allowItem1.accesses = [ RangerPolicyItemAccess({ 'type': 'select' }) ]

denyItem1          = RangerPolicyItem()
denyItem1.groups    = [ 'Data Product Owner' ]
denyItem1.accesses = [ RangerPolicyItemAccess({ 'type': 'drop' }) ]

policy.policyItems     = [ allowItem1 ]
policy.denyPolicyItems = [ denyItem1 ]

print('Creating policy: name=' + policy.name)

created_policy = ranger.create_policy(policy)

print('    created policy: name=' + created_policy.name + ', id=' + str(created_policy.id))

But i receive this error, When i tried to debug it i found that, the reason it was going for an exception is because the http.post method inside the ranger_clien.py was returning a response (<Response [400]>) that is not handled by any of the if or elifs blocks hence it goes to else block and enters RaiseServiceException(), when i dug deeper i found some comments in the function that gives JSONDecoder error and it said that exception would be raised only if JSON input is not valid or if simplejson is not installed.但是我收到这个错误,当我尝试调试它时我发现,它出现异常的原因是因为 ranger_clien.py 中的 http.post 方法返回了一个响应 (<Response [400]>) 即不被任何 if 或 elifs 块处理,因此它转到 else 块并进入 RaiseServiceException(),当我深入挖掘时,我发现 function 中的一些注释给出了 JSONDecoder 错误,它说只有当 JSON 输入是无效或未安装 simplejson。

Traceback (most recent call last):
  File "c:\Users\j.shimoga.prakash\Desktop\pls work - Copy\test.py", line 37, in <module>
    created_policy = ranger.create_policy(policy)
  File "C:\Users\j.shimoga.prakash\Desktop\pls work - Copy\venv\lib\site-packages\apache_ranger\client\ranger_client.py", line 124, in create_policy
    resp = self.__call_api(RangerClient.CREATE_POLICY, params, policy)
  File "C:\Users\j.shimoga.prakash\Desktop\pls work - Copy\venv\lib\site-packages\apache_ranger\client\ranger_client.py",  
  File "C:\Users\j.shimoga.prakash\Desktop\pls work - Copy\venv\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Figured out the issue i just had to pass 'https' in ranger_url instead of 'http'弄清楚我只需要在 ranger_url 中传递 'https' 而不是 'http'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM