xref: /openbmc/openbmc-test-automation/lib/bmc_ldap_utils.robot (revision 409df05d4b10b9a8c81e282da8fef0199db5bdea)
1b44c957dSAnves Kumar rayankula*** Settings ***
2b44c957dSAnves Kumar rayankulaDocumentation  This module provides general keywords for LDAP.
3b44c957dSAnves Kumar rayankula
4b44c957dSAnves Kumar rayankula*** Keywords ***
5b44c957dSAnves Kumar rayankula
6b44c957dSAnves Kumar rayankulaGet LDAP Configuration Using Redfish
7b44c957dSAnves Kumar rayankula    [Documentation]  Retrieve LDAP Configuration.
8b44c957dSAnves Kumar rayankula    [Arguments]   ${ldap_type}
9b44c957dSAnves Kumar rayankula
10b44c957dSAnves Kumar rayankula    # Description of argument(s):
11b44c957dSAnves Kumar rayankula    # ldap_type  The LDAP type ("ActiveDirectory" or "LDAP").
12b44c957dSAnves Kumar rayankula
13b44c957dSAnves Kumar rayankula    ${ldap_config}=  Redfish.Get Properties  ${REDFISH_BASE_URI}AccountService
14*409df05dSGeorge Keishing    RETURN  ${ldap_config["${ldap_type}"]}
15b44c957dSAnves Kumar rayankula
16b44c957dSAnves Kumar rayankula
17b44c957dSAnves Kumar rayankulaGet LDAP Privilege And Group Name Via Redfish
18b44c957dSAnves Kumar rayankula    [Documentation]  Get LDAP groupname via Redfish.
19b44c957dSAnves Kumar rayankula
20b44c957dSAnves Kumar rayankula    # Get LDAP configuration via Redfish.
21b44c957dSAnves Kumar rayankula    # Sample output of LDAP configuration:
22b44c957dSAnves Kumar rayankula    # {
23b44c957dSAnves Kumar rayankula    #  'RemoteRoleMapping': [
24b44c957dSAnves Kumar rayankula    #    {
25b44c957dSAnves Kumar rayankula    #     'RemoteGroup': 'openldapgroup',
26b44c957dSAnves Kumar rayankula    #     'LocalRole': 'Administrator'
27b44c957dSAnves Kumar rayankula    #     },
28b44c957dSAnves Kumar rayankula    #   ],
29b44c957dSAnves Kumar rayankula    #  'Authentication':
30b44c957dSAnves Kumar rayankula    #   {
31b44c957dSAnves Kumar rayankula    #    'Username': 'cn=Administrator,dc=ldap,dc=com',
32b44c957dSAnves Kumar rayankula    #    'Password': None,
33b44c957dSAnves Kumar rayankula    #    'AuthenticationType': 'UsernameAndPassword'
34b44c957dSAnves Kumar rayankula    #   },
35b44c957dSAnves Kumar rayankula    #  'LDAPService':
36b44c957dSAnves Kumar rayankula    #    {
37b44c957dSAnves Kumar rayankula    #     'SearchSettings':
38b44c957dSAnves Kumar rayankula    #      {
39b44c957dSAnves Kumar rayankula    #       'BaseDistinguishedNames': ['dc=ldap,dc=com'],
40b44c957dSAnves Kumar rayankula    #       'UsernameAttribute': 'cn',
41b44c957dSAnves Kumar rayankula    #       'GroupsAttribute': 'gidNumber'
42b44c957dSAnves Kumar rayankula    #      }
43b44c957dSAnves Kumar rayankula    #    },
44b44c957dSAnves Kumar rayankula    #  'ServiceEnabled': True,
45b44c957dSAnves Kumar rayankula    #  'Certificates':
46b44c957dSAnves Kumar rayankula    #    {
47b44c957dSAnves Kumar rayankula    #      '@odata.id': u'/redfish/v1/AccountService/LDAP/Certificates'
48b44c957dSAnves Kumar rayankula    #    },
49b44c957dSAnves Kumar rayankula    #  'ServiceAddresses': ['ldap://xx.xx.xx.xx/']
50b44c957dSAnves Kumar rayankula    # }
51b44c957dSAnves Kumar rayankula
52b44c957dSAnves Kumar rayankula    ${ldap_config}=  Get LDAP Configuration Using Redfish  ${LDAP_TYPE}
53b44c957dSAnves Kumar rayankula    ${num_list_entries}=  Get Length  ${ldap_config["RemoteRoleMapping"]}
54b44c957dSAnves Kumar rayankula    Return From Keyword If  ${num_list_entries} == ${0}  @{EMPTY}
55b44c957dSAnves Kumar rayankula    ${ldap_group_names}=  Create List
56b44c957dSAnves Kumar rayankula    FOR  ${i}  IN RANGE  ${num_list_entries}
57b44c957dSAnves Kumar rayankula      Append To List  ${ldap_group_names}  ${ldap_config["RemoteRoleMapping"][${i}]["RemoteGroup"]}
58b44c957dSAnves Kumar rayankula    END
59b44c957dSAnves Kumar rayankula
60*409df05dSGeorge Keishing    RETURN  ${ldap_group_names}
61b44c957dSAnves Kumar rayankula
624fa52d77SAnves Kumar rayankula
634fa52d77SAnves Kumar rayankulaCreate LDAP Configuration
644fa52d77SAnves Kumar rayankula    [Documentation]  Create LDAP configuration.
654fa52d77SAnves Kumar rayankula    [Arguments]  ${ldap_type}=${LDAP_TYPE}  ${ldap_server_uri}=${LDAP_SERVER_URI}
664fa52d77SAnves Kumar rayankula    ...  ${ldap_bind_dn}=${LDAP_BIND_DN}  ${ldap_bind_dn_password}=${LDAP_BIND_DN_PASSWORD}
674fa52d77SAnves Kumar rayankula    ...  ${ldap_base_dn}=${LDAP_BASE_DN}
684fa52d77SAnves Kumar rayankula
694fa52d77SAnves Kumar rayankula    # Description of argument(s):
704fa52d77SAnves Kumar rayankula    # ldap_type              The LDAP type ("ActiveDirectory" or "LDAP").
714fa52d77SAnves Kumar rayankula    # ldap_server_uri        LDAP server uri (e.g. ldap://XX.XX.XX.XX).
724fa52d77SAnves Kumar rayankula    # ldap_bind_dn           The LDAP bind distinguished name.
734fa52d77SAnves Kumar rayankula    # ldap_bind_dn_password  The LDAP bind distinguished name password.
744fa52d77SAnves Kumar rayankula    # ldap_base_dn           The LDAP base distinguished name.
754fa52d77SAnves Kumar rayankula
764fa52d77SAnves Kumar rayankula    ${body}=  Catenate  {'${ldap_type}':
774fa52d77SAnves Kumar rayankula    ...  {'ServiceEnabled': ${True},
784fa52d77SAnves Kumar rayankula    ...   'ServiceAddresses': ['${ldap_server_uri}'],
794fa52d77SAnves Kumar rayankula    ...   'Authentication':
804fa52d77SAnves Kumar rayankula    ...       {'AuthenticationType': 'UsernameAndPassword',
814fa52d77SAnves Kumar rayankula    ...        'Username':'${ldap_bind_dn}',
824fa52d77SAnves Kumar rayankula    ...        'Password': '${ldap_bind_dn_password}'},
834fa52d77SAnves Kumar rayankula    ...   'LDAPService':
844fa52d77SAnves Kumar rayankula    ...       {'SearchSettings':
854fa52d77SAnves Kumar rayankula    ...           {'BaseDistinguishedNames': ['${ldap_base_dn}']}}}}
864fa52d77SAnves Kumar rayankula
874fa52d77SAnves Kumar rayankula    Redfish.Patch  ${REDFISH_BASE_URI}AccountService  body=${body}
884fa52d77SAnves Kumar rayankula    Sleep  15s
89