Aller au contenu principal
Version : 5.5

Client Python

Version de Python​

Le client Python BlueMind supporte Python 2.7 ou la version courante de Python 3. Nous recommandons l'utilisation de Python 3 pour tous les nouveaux projets.

Installation​

Le client Python s'installe via pip, si possible dans un environnement virtuel (virtualenv ou venv) de façon à ne pas interférer avec le système :

aptitude install python-pip pip install --upgrade setuptools pip install netbluemind5

Version du client

L'historique des versions peut être consulté sur le site de l'Index des Paquets Python : https://pypi.org/project/netbluemind5/#history

Utilisation​

Authentification​

Le client s'initialise avec la classe BMClient :

from netbluemind.python.client import BMClient

# BEGIN CONF
URL="http://localhost:8090/api"
# END CONF

f = open('/etc/bm/bm-core.tok', 'r')
KEY = f.readline()
f.close()

client = BMClient(URL, KEY)
  • URL : définit l'url d'accès au serveur BlueMind ; depuis l’extérieur l'url sera https://bluemind.domain.net/api.
  • KEY : correspond au mot de passe ou token de l'admin0 ; dans cet exemple on utilise le token admin0 disponible sur le serveur afin d'avoir des droits étendus au niveau de l'API.
    Il est possible de s'authentifier en tant qu'utilisateur avec :
    from netbluemind.python.client import BMClient

    # BEGIN CONF
    URL="http://localhost:8090/api"
    # END CONF

    client = BMClient(URL)
    client.login('login@domain.net', 'password')
Il est aussi possible d'utiliser la clé d'API d'un utilisateur à la place de son mot de passe.

Utilisation​

BMClient​

La classe BMClient est un helper qui permet aussi d'accéder aux différentes classes pour manipuler les utilisateurs, groupes, etc. :

from netbluemind.python.client import BMClient

# BEGIN CONF
URL="http://localhost:8090/api"
# END CONF

client = BMClient(URL)
client.login("login@domain.net", "password")
print client.apiKey

iUser = client.users("domain.net")
user = iUser.byEmail("login@domain.net")
print user.value.login

Users​

iUser (instance de IUser) permet d'accéder à toutes les informations d'un utilisateur (mot de passe, photo, contact, statut archivé, etc.) et de les modifier.
Les différentes méthodes retournent une instance d'un object ItemValue qui permet d'accéder à l'object en question via l'attribut value.

Domains​

Il est possible de créer ou modifier des domaines en utilisant l'interface IDomains.
Lors de la création d'un domaine il est important que l'uid du domaine soit son nom ; la création se fait ainsi :

domain = Domain()
domain.name = "local.lan"
domain.label = "local.lan"
domain.description = "Domain of " + "local.lan"
domain.properties = {}
# global doit toujours être à False
domain.global_ = False
# permet de définir les alias du domaine
domain.aliases = []

idomains.create("local.lan", domain)

Il est possible de définir la configuration des paramètres pour les plugins ImportLDAP et ImportAD en utilisant l'attribut properties.
Exemple avec un LDAP :

properties = dict()
properties['import_ldap_hostname'] = 'ldap.local'
properties['import_ldap_password'] = 'ldap-password'
properties['import_ldap_user_filter'] = '(mail=\*)'
properties['import_ldap_accept_certificate'] = True
properties['import_ldap_ext_id_attribute'] = 'entryUUID'
properties['import_ldap_relay_mailbox_group'] = ''
properties['import_ldap_enabled'] = True
properties['import_ldap_group_filter'] = '(objectClass=posixGroup)'
properties['import_ldap_protocol'] = 'tls'
properties['import_ldap_base_dn'] = 'dc=lan,dc=local'
properties['import_ldap_login_dn'] = 'uid=admin,cn=users,cn=accounts,dc=lan,dc=local'
properties['lang'] = 'fr'
properties['im_public_auth'] = True # allow Instant messaging for all users
properties['domain_max_users'] = None
properties['mail_routing_relay'] = ''
properties['mailbox_max_user_quota'] = '0'
properties['mailbox_default_user_quota'] = '0'
properties['mailbox_max_publicfolder_quota'] = '0'
properties['mailbox_default_publicfolder_quota'] = '0'
properties['filehosting_max_filesize'] = '0'
properties['filehosting_retention'] = '365'
properties['mail_autoDetachmentLimit'] = '0'
properties['mail_forward_unknown_to_relay'] = False

Import AD

Pour l'import Active Directory il suffit de remplacer ldap par ad.

Exemples​

De nombreux exemples de possibilités sont accessibles dans le dépôt BlueMind : https://gitlab.bluemind.net/bluemind-public/bluemind-samples/-/tree/master/python-api-examples

Démarrer un backup​

client = BMClient(URL, KEY)
idataprotect = client.instance(IDataProtect)

taskRef = idataprotect.saveAll()
status = client.waitTask(taskRef)
print "\nBackup done with status [" + status.state.value + "]"