- Nipyapi version: 0.14.0
- NiFi version: 1.11
- NiFi-Registry version:
- Python version:3.6
- Operating System: Linux
Description
I want to add a user (already exist or just created ) to the existing user group inside info with API ?
What I Did
import nipyapi
import urllib3
from UserManagement import add_user
from nipyapi import config, canvas
from nipyapi import security
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
status = None
#admin_email = args["email"]
#zone = args["zone"]
nifi = "https://sdrginnifi0101:8081/nifi-api"
config.nifi_config.host = nifi
config.nifi_config.verify_ssl = False
client_cer = "/opt/application/sdr/apps/nifi/conf/client.cer"
client_key = "/opt/application/sdr/apps/nifi/conf/client.key"
security.set_service_ssl_context(service="nifi", client_cert_file=client_cer, client_key_file=client_key)
user_list = []
root_id = canvas.get_root_pg_id() # id of rot canvas of nifi
pg = canvas.get_process_group(root_id, "id") # ProcessGroupEntity
email_list=["hamza.bekkouri@gmail.com"]
ug = security.get_service_user_group("p10092", identifier_type='identity', service='nifi')
if len(email_list) == 1:
add_user(email_list[0])
user = security.get_service_user(email_list[0], identifier_type="identity", service="nifi")
userGroupDto = nipyapi.nifi.models.user_group_dto.UserGroupDTO(users=[user],access_policies=ug.component.access_policies)
userGroupEntity = nipyapi.nifi.models.user_group_entity.UserGroupEntity(component=userGroupDto)
else:
for mail in email_list:
add_user(mail)
user = security.get_service_user(mail, identifier_type="identity", service="nifi")
user_list.append(user)
userGroupDto = nipyapi.nifi.models.user_group_dto.UserGroupDTO(access_policies=ug.component.access_policies,users=user_list)
userGroupEntity = nipyapi.nifi.models.user_group_entity.UserGroupEntity(component=userGroupDto)
TenantApi = nipyapi.nifi.apis.tenants_api.TenantsApi(api_client=None)
TenantApi.update_user_group(ug.id,userGroupEntity)
ERROR
INFO --user (hamza.bekkouri.ext@orange.com) already exist
Traceback (most recent call last):
File "add_user_to_project.py", line 56, in <module>
TenantApi.update_user_group(ug.id,userGroupEntity)
File "/home/nifi/.local/lib/python2.7/site-packages/nipyapi/nifi/apis/tenants_api.py", line 1142, in update_user_group
(data) = self.update_user_group_with_http_info(id, body, **kwargs)
File "/home/nifi/.local/lib/python2.7/site-packages/nipyapi/nifi/apis/tenants_api.py", line 1229, in update_user_group_with_http_info
collection_formats=collection_formats)
File "/home/nifi/.local/lib/python2.7/site-packages/nipyapi/nifi/api_client.py", line 326, in call_api
_return_http_data_only, collection_formats, _preload_content, _request_timeout)
File "/home/nifi/.local/lib/python2.7/site-packages/nipyapi/nifi/api_client.py", line 153, in __call_api
_request_timeout=_request_timeout)
File "/home/nifi/.local/lib/python2.7/site-packages/nipyapi/nifi/api_client.py", line 379, in request
body=body)
File "/home/nifi/.local/lib/python2.7/site-packages/nipyapi/nifi/rest.py", line 278, in PUT
body=body)
File "/home/nifi/.local/lib/python2.7/site-packages/nipyapi/nifi/rest.py", line 224, in request
raise ApiException(http_resp=r)
nipyapi.nifi.rest.ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Content-Length': '614', 'X-XSS-Protection': '1; mode=block', 'Content-Security-Policy': "frame-ancestors 'self'", 'Strict-Transport-Security': 'max-age=31540000', 'Vary': 'Accept-Encoding', 'Server': 'Jetty(9.4.19.v20190610)', 'Date': 'Sat, 06 Jun 2020 22:53:14 GMT', 'X-Frame-Options': 'SAMEORIGIN', 'Content-Type': 'text/plain'})
HTTP response body: Unrecognized field "accessPolicies" (class org.apache.nifi.web.api.dto.TenantDTO), not marked as ignorable (6 known properties: "parentGroupId", "versionedComponentId", "position", "id", "identity", "configurable"])
at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 77] (through reference chain: org.apache.nifi.web.api.entity.UserGroupEntity["component"]->org.apache.nifi.web.api.dto.UserGroupDTO["users"]->java.util.HashSet[0]->org.apache.nifi.web.api.entity.TenantEntity["component"]->org.apache.nifi.web.api.dto.TenantDTO["accessPolicies"])
I don't find a solution to add user to an existing user