Article by Gianluca Bortoli

Tutorial API VMware

Il protocollo VMware View Client è formato da un set di istruzioni che un software che agisce come un client può usare per comunicare con un’istanza View Connection Server. Il client può fare una richiesta POST con un payload XML correttamente costruito per recuperare informazioni utili riguardanti l’ambiente VDI (es. virtual desktop, applicazioni pubblicate, risorse disponibili, ecc). In seguito, viene generata una risposta XML e rimandata al client. La comunicazione fra i due attori avviene tramite HTTPS e richiede che i cookies vengano gestiti lato client.

L’implementazione delle API viene aggiornata ogni volta che una nuova versione di VMware Horizon (aka il lato server) viene rilasciata. Per riuscire a tracciarle tutte, l’attributo version nel tag broker della richiesta del client informa il server circa la versione del protocollo che il client supporta. Questo parametro è utile anche per gestire la compatibilità con le versioni precedenti e successive delle API.

vmware-flow-chart

Un diagramma di flusso (semplificato) degli step che il client deve effettuare per comunicare con il server.

Per capire meglio le funzionalità chiave del protocollo rappresentate nell’immagine qui sopra, vediamo un esempio: si vorrebbe poter recuperare la lista di tutti i desktop e applicazioni (se ce ne sono) che il server può fornire.

#!/usr/bin/python
import requests as re
 
def auth():
    response = req.post({
        hview.example.com,
        xml_data
    })
 
    if response.status_code == 200:
        # store the cookie
        return response.cookie
    else:
        # catch error
        print('Bad auth!')
        return
 
def get_vdi_resources(cookie):
    response = req.post({
        hview.example.com,
        xml_data,
        cookies=cookie
    })
 
    if response.status_code == 200:
        # request ok, retrieve info processing XML
        # in the response
        return process(response.text)
    else:
        # catch error
        print('Ops!')
        return
 
# actually do stuff
auth_cookie = auth()
resources = get_vdi_resources(auth_cookie)
print(resources)
[aesop_content color=”#ffffff” background=”#ffffff” columns=”1″ position=”none” imgrepeat=”no-repeat” floaterposition=”left” floaterdirection=”up”]

Probabilmente, il codice qui sopra chiarisce meglio il flusso di informazioni delle API. Innanzitutto, il client si autentica con il server fornendo le credenziali in xml_data (es. username, password e dominio salvato in XML formattato seguendo le specifiche). Se la richiesta di autenticazione ha successo, il cookie viene recuperato dalla risposta. Una volta che il client possiede l’auth_cookie, può compiere ogni tipo di interazione con il server.

Nell’esempio sopra, ho richiesto al server la lista dei virtual desktop e applicazioni disponibili. In più si possono compiere molte altre azioni, come sloggare un utente specifico, richiedere una connessione diretta con il server, invece di una tunnelled, configurare parametri lato server e anche connettersi direttamente a un virtual desktop.

Il punto principale che uno sviluppatore deve prendere in considerazione è che ogni dato inviato e ricevuto ha un rigido formato XML definito nella documentazione delle API fornita da VMware stessa. Sfortunatamente questo linguaggio non è tra i più pratici per lavorare con i dati, visto che deve essere analizzato, rappresentato come un albero ed infine attraversato per poter recuperare le informazioni che si vogliono cercare. A questo scopo, il modulo ElementTree XML APIs per python mi ha aiutato a mantenere chiaro il codice mentre avevo a che fare con la decodifica, codifica e scansione dell’XML.

Rispondi

L'unione fa la forza

I nostri rivenditori sono in grado di sfruttare al meglio la nostra tecnologia e lavorano con noi per disegnare le soluzioni ottimali per te.

Clienti

Loro hanno scelto di utilizzare le soluzioni Praim