User Management

User management in InfiniSDK is done mostly via system.users and system.groups.

Users

Getting

Getting all users in a system

>>> users = system.users.to_list()

Getting a user by name

>>> user = system.users.get(name='someuser')
>>> print(user.get_name())
someuser

Creating and Deleting Users

Use infinibox.users.create to create new users:

>>> user = system.users.create(name='testuser', password='testpassword')

Deleting users is done like any other InfiniSDK object, using User.delete():

>>> user.delete()

Modifying Users

You can modify users configured on the system using any of the User class:

>>> user = system.users.create(name='testuser', password='testpassword')
>>> user.update_password('12345678')
>>> user.update_name('testuser2')

Setting User Roles

You can set a user’s role using User.update_role():

>>> user.update_role('PoolAdmin')
>>> print(user.get_role())
POOL_ADMIN

Setting Pool Owners

To set a pool that will be administered by a user, simply call Pool.set_owners():

>>> pool = system.pools.create()
>>> pool.set_owners([user])

LDAP Integration

Getting all current LDAP configs:

Setting up LDAP integration is done in two main steps. First, we need to define our LDAP settings. This depends on your ldap provider. For open-ldap:

>>> ldap_config = system.ldap_configs.define_open_ldap(name='AD2K3.local', bind_username='Administrator', bind_password='passwd', servers=['AD2K3.local'])

and for active-directory:

>>> ldap_config = system.ldap_configs.define_active_directory(name='AD2K3.local', domain_name='AD2K3.local', bind_username='Administrator', bind_password='passwd')  

Note

The usage of system.ldap_configs.define() is discouraged, prefer to use one of the two methods mentioned above.

Once the LDAP directory is defined, we need to map the LDAP group to a local role:

>>> group = ldap_config.create_group(name='group01', dn='group01', role='PoolAdmin')
>>> print(group.get_role())
POOL_ADMIN

Updating LDAP Configuration

Updating LDAP configurations can be easily done with LDAPConfig.modify():

>>> ldap_config.modify(schema_group_class='group')

>>> ldap_config.update_name('some_new_name')

You can also pass a dictionary with the fields’ names and their updated values:

>>> d = {"name": "my-new-name", "ldap_port": 1234}
>>> ldap_config.modify(**d)

Testing LDAP Configuration

>>> ldap_config.test()

Updating LDAP Configuration Prioritiy Order

system.ldap_configs.set_order([ldap_config, ldap_config2, ...])

Reloading/Refreshing LDAP Cache

>>> system.ldap_configs.reload()

Or:

>>> system.ldap_configs.flush_cache()

Deleting LDAP Configurations

>>> ldap_config.delete()