|  | *** Settings *** | 
|  | Documentation  This module provides general keywords for LDAP. | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Get LDAP Configuration Using Redfish | 
|  | [Documentation]  Retrieve LDAP Configuration. | 
|  | [Arguments]   ${ldap_type} | 
|  |  | 
|  | # Description of argument(s): | 
|  | # ldap_type  The LDAP type ("ActiveDirectory" or "LDAP"). | 
|  |  | 
|  | ${ldap_config}=  Redfish.Get Properties  ${REDFISH_BASE_URI}AccountService | 
|  | RETURN  ${ldap_config["${ldap_type}"]} | 
|  |  | 
|  |  | 
|  | Get LDAP Privilege And Group Name Via Redfish | 
|  | [Documentation]  Get LDAP groupname via Redfish. | 
|  |  | 
|  | # Get LDAP configuration via Redfish. | 
|  | # Sample output of LDAP configuration: | 
|  | # { | 
|  | #  'RemoteRoleMapping': [ | 
|  | #    { | 
|  | #     'RemoteGroup': 'openldapgroup', | 
|  | #     'LocalRole': 'Administrator' | 
|  | #     }, | 
|  | #   ], | 
|  | #  'Authentication': | 
|  | #   { | 
|  | #    'Username': 'cn=Administrator,dc=ldap,dc=com', | 
|  | #    'Password': None, | 
|  | #    'AuthenticationType': 'UsernameAndPassword' | 
|  | #   }, | 
|  | #  'LDAPService': | 
|  | #    { | 
|  | #     'SearchSettings': | 
|  | #      { | 
|  | #       'BaseDistinguishedNames': ['dc=ldap,dc=com'], | 
|  | #       'UsernameAttribute': 'cn', | 
|  | #       'GroupsAttribute': 'gidNumber' | 
|  | #      } | 
|  | #    }, | 
|  | #  'ServiceEnabled': True, | 
|  | #  'Certificates': | 
|  | #    { | 
|  | #      '@odata.id': u'/redfish/v1/AccountService/LDAP/Certificates' | 
|  | #    }, | 
|  | #  'ServiceAddresses': ['ldap://xx.xx.xx.xx/'] | 
|  | # } | 
|  |  | 
|  | ${ldap_config}=  Get LDAP Configuration Using Redfish  ${LDAP_TYPE} | 
|  | ${num_list_entries}=  Get Length  ${ldap_config["RemoteRoleMapping"]} | 
|  | Return From Keyword If  ${num_list_entries} == ${0}  @{EMPTY} | 
|  | ${ldap_group_names}=  Create List | 
|  | FOR  ${i}  IN RANGE  ${num_list_entries} | 
|  | Append To List  ${ldap_group_names}  ${ldap_config["RemoteRoleMapping"][${i}]["RemoteGroup"]} | 
|  | END | 
|  |  | 
|  | RETURN  ${ldap_group_names} | 
|  |  | 
|  |  | 
|  | Create LDAP Configuration | 
|  | [Documentation]  Create LDAP configuration. | 
|  | [Arguments]  ${ldap_type}=${LDAP_TYPE}  ${ldap_server_uri}=${LDAP_SERVER_URI} | 
|  | ...  ${ldap_bind_dn}=${LDAP_BIND_DN}  ${ldap_bind_dn_password}=${LDAP_BIND_DN_PASSWORD} | 
|  | ...  ${ldap_base_dn}=${LDAP_BASE_DN} | 
|  |  | 
|  | # Description of argument(s): | 
|  | # ldap_type              The LDAP type ("ActiveDirectory" or "LDAP"). | 
|  | # ldap_server_uri        LDAP server uri (e.g. ldap://XX.XX.XX.XX). | 
|  | # ldap_bind_dn           The LDAP bind distinguished name. | 
|  | # ldap_bind_dn_password  The LDAP bind distinguished name password. | 
|  | # ldap_base_dn           The LDAP base distinguished name. | 
|  |  | 
|  | ${body}=  Catenate  {'${ldap_type}': | 
|  | ...  {'ServiceEnabled': ${True}, | 
|  | ...   'ServiceAddresses': ['${ldap_server_uri}'], | 
|  | ...   'Authentication': | 
|  | ...       {'AuthenticationType': 'UsernameAndPassword', | 
|  | ...        'Username':'${ldap_bind_dn}', | 
|  | ...        'Password': '${ldap_bind_dn_password}'}, | 
|  | ...   'LDAPService': | 
|  | ...       {'SearchSettings': | 
|  | ...           {'BaseDistinguishedNames': ['${ldap_base_dn}']}}}} | 
|  |  | 
|  | Redfish.Patch  ${REDFISH_BASE_URI}AccountService  body=${body} | 
|  | ...  valid_status_codes=[${HTTP_OK},${HTTP_NO_CONTENT}] | 
|  | Sleep  15s |