Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions ibmsecurity/isam/aac/scim.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
from ibmsecurity.utilities import tools

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -63,3 +64,36 @@ def update_isam_user(isamAppliance, isam_domain, update_native_users, ldap_conne
"Update SCIM ISAM user settings",
"/mga/scim/configuration/urn:ietf:params:scim:schemas:extension:isam:1.0:User",
ret_obj)

def set_all(isamAppliance, scim_configuration, check_mode=False, force=False):
"""
Update entire SCIM settings
"""
if scim_configuration is None or scim_configuration == '':
return isamAppliance.create_return_object(
warnings="Need to pass content for scim configuration")
else:
if force is True or _check(isamAppliance, scim_configuration) is False :
if check_mode is True:
return isamAppliance.create_return_object(changed=True)
else:
return isamAppliance.invoke_put(
"Update SCIM settings",
"/mga/scim/configuration",
scim_configuration )

return isamAppliance.create_return_object()

def _check(isamAppliance, scim_configuration):
"""
Check if scim configuration is identical with server
"""
ret_obj = get_all(isamAppliance)
logger.debug("Comparing server scim configuration with desired configuration.")
logger.debug("Server JSON: {0}".format(tools.json_sort(ret_obj['data'])))
logger.debug("Desired JSON: {0}".format(tools.json_sort(scim_configuration)))
if tools.json_sort(scim_configuration) != tools.json_sort(ret_obj['data']):
return False

logger.debug("Server configuration is identical with desired configuration. No change necessary.")
return True