SlideShare a Scribd company logo
UNIVERSITÀ DI PISA
Facoltà di Scienze MM.FF.NN.
Laurea Magistale in Sicurezza Informatica:
Infrastrutture e Applicazioni
Complementi di Programmazione Distribuita - Prof. M. GattiA.A. 2011/2012
vSphere Inventory Browser
for VMware ESX/vCenter 4.x
Salvatore Saeli
Scopo del progetto
Produrre un’Inventory Browser in grado di
interfacciarsi con un server ESX/vCenter 4.x
sfruttando strumenti e tecniche di ottimizzazione
server-side e client-side
¤  Approfondimento dell’infrastruttura di virtualizzazione
di VMware
¤  Uso della vSphere Web Services SDK
¤  Uso e approfondimento di Microsoft Visual C#
¤  Installazione di due server ESX e di un server vCenter
vSphere Inventory Browser - Salvatore Saeli
1
Introduzione2
vSphere Inventory Browser - Salvatore Saeli
Problematiche affrontate
vSphere Inventory Browser - Salvatore Saeli
3
¨  Ottimizzazione del numero di oggetti da creare
all’interno del server a ogni sessione
¨  Riduzione del traffico d’informazioni tra il client e il
server per contenere l’uso della banda
¨  Gestione dei problemi di coerenza e
sincronizzazione dei dati da mantenere sul client
Soluzioni adottate
vSphere Inventory Browser - Salvatore Saeli
4
¨  Server-side
¤  oggetti ViewManager e View
rendono performante l’uso del PropertyCollector
¤  meccanismo di notifica WaitForUpdate
uso efficiente delle risorse di rete, rimane bloccato in attesa di aggiornamenti
¨  Client-side
¤  albero n-ario implementato con tabelle hash
mantiene l’intera struttura in memoria con accesso in tempo costante ai nodi ai
vari livelli dell’albero
¤  tecnichedi multi-threading (C#)
esecuzione in parallelo delle operazione eseguite in background
sincronizzazione dei dati sugli oggetti del server
¤  tecnica di riflessione (C#)
accesso alle proprietà degli oggetti di tipo ManagedEntity dall’Inventory UI
Tree
Il ViewManager e le View5
vSphere Inventory Browser - Salvatore Saeli
Il PropertyCollector
vSphere Inventory Browser - Salvatore Saeli
6
È una service interface che supporta le seguenti
tipologie di task da un’applicazione client:
¨  navigare all’interno dell’inventory e ottenere
informazioni su specifici managed object
dall’inventory
¨  reperire dati sullo stato del server, nel caso di
un’applicazione client sincronizzata con lo stato
degli oggetti del server
Performance del PropertyCollector
vSphere Inventory Browser - Salvatore Saeli
7
I fattori che ne possono andare ad intaccarne le
performance sono:
¨  il numero di oggetti
¨  il numero di proprietà da trattare su ogni oggetto
¨  la frequenza di cambiamenti degli oggetti e delle
proprietà nel server
¨  la profondità di attraversamento
¤  il numero di proprietà da attraversare
Migliorare le prestazioni di raccolta
del PropertyCollector
vSphere Inventory Browser - Salvatore Saeli
8
Utilizzandolo in congiunzione con gli oggetti
ViewManager e View permette di minimizzare
¨  l’overhead sul PropertyCollector
¨  l’ammontare di traffico di rete per un’applicazione
client
Il ViewManager permette al client di accedere al
contenuto dei managed object sul server creando
delle View (s.i. di managed entity)
¤  ContainerView, InventoryView, ListView
PropertyFilterSpec usato con una
ContainerView
vSphere Inventory Browser - Salvatore Saeli
9
Interazione
con il PC
tramite il
supporto
delle View
PropFilterSpec
più semplici
per definire i
filtri
Comunicazion
e Client-
Server molto
più efficiente
InventoryView
vSphere Inventory Browser - Salvatore Saeli
10
The InventoryView managed object provides a means of
browsing the inventory and tracking changes to open
folders. This managed object is particularly useful for UI
clients that display a tree-based navigation panel of the
inventory. (VMware vSphere API Ref)
InventoryView
vSphere Inventory Browser - Salvatore Saeli
11
¨  fornisce le operazioni per aprire e chiudere le
folder in un inventory
¨  la sua proprietà view contiene un array dei MORef
agli oggetti che compongono l’inventory
¨  quando viene creato il server inizializza la lista
degli oggetti della View con la root folder
¨  per aggiungere dei child object occorre eseguire
l’operazione OpenInventoryViewFolder passandogli
il MORef della managed object entity
InventoryView – host ESX
vSphere Inventory Browser - Salvatore Saeli
12
Nel caso di un host ESX, per ottenere tutti gli oggetti
server all’interno della View le operazioni sono :
1.  Aprire la root folder
2.  Aprire le folder del Datacenter
InventoryView – server vCenter
vSphere Inventory Browser - Salvatore Saeli
13
Nel caso di un server vCenter, per ogni Datacenter
occorre iterare l’operazione 2.
Risultato: con al più 1+(4*N) chiamate, con N uguale
al numero dei Datacenter, è possibile ottenere tutti gli
oggetti dell’inventory all’interno dell’InventoryView
Albero N-ario e Tabelle Hash14
vSphere Inventory Browser - Salvatore Saeli
Struttura albero n-ario
vSphere Inventory Browser - Salvatore Saeli
15
Analizzando la
gerarchia
dell’inventory si
evince che ci
sono dei livelli
prestabiliti
Permette di
inserire i nodi in
ordine in base al
loro livello di
appartenenza
È possibile
gestire
l’inventory di un
server vCenter
allo stesso modo
d’invenotory di
un host ESX
standalone
Struttura nodo dell’albero n-ario
vSphere Inventory Browser - Salvatore Saeli
16
¨  Key:
¤  MORef.Value, valore univoco per ogni oggetto del server
¨  Value:
¤  MORef, si ottengono le proprietà Value e Type
¤  ManagedEntity Object, rappresenta una classe per ogni
tipo di oggetto nell’inventory
¤  Rif. ai Child, permettono di attraversare l’albero in
profondità
Tabelle Hash ad indirizzamento diretto
vSphere Inventory Browser - Salvatore Saeli
17
Generalizzazione
del concetto di
array ordinario.
L’indirizzamento
diretto di un array
ordinario permette
di esaminare una
posizione arbitraria
in tempo constante
Funziona bene
quando l’universo U
delle chiavi è
ragionevolmente
piccolo e si tratta di
valori univoci
I dati satellite
vengono
memorizzati in un
oggetto esterno
N-ary HashTree Node
vSphere Inventory Browser - Salvatore Saeli
18
* più oggetti uguali in un host ESX
** più oggetti uguali in un server vCenter
Key : MORef.Value
Value: puntatore ad un array dinamico con locazioni
MORef ; ManagedEtity Object; Puntatori ai nodi child (nessuno nel caso di nodi foglia)
N-ary HashTree
vSphere Inventory Browser - Salvatore Saeli
19
Albero n-ario
ottenuto
tramite
l’implementa
zione dei
nodi con
delle tabelle
di hash
La struttura a
puntatori
permette di
attraversare
in profondità
l’albero
N-ary HashTree – inserimento nodi
1.  Si ottiene la chiave del nodo parent dal ManagedEntity Object
2.  In base alla tipologia del nodo da aggiungere, si accede al nodo
di livello superiore tramite la chiave ottenuta
3.  si aggiunge il riferimento nel nodo parent
20
vSphere Inventory Browser - Salvatore Saeli
Attraversamento di un albero
vSphere Inventory Browser - Salvatore Saeli
21
¨  Per attraversamento o visita di un albero s’intende
l’ispezione dei nodi dell’albero in modo che tutti i
nodi vengano ispezionati una ed una sola volta
¨  Definisce un ordinamento totale tra i nodi
dell’albero in base alla loro posizione
¤  ogni nodo ha un predecessore e un successore
all’interno di un attraversamento
Attraversamento Preorder
22
vSphere Inventory Browser - Salvatore Saeli
Visita preorder di un BST Adattamento per l’N-ary Tree
Multi-Threading e Sincronizzazione23
vSphere Inventory Browser - Salvatore Saeli
Tecniche usate per il Multi-Threading
vSphere Inventory Browser - Salvatore Saeli
24
¨  Delegati Sincroni
¤  discovery delle Managed Entity
¤  chiamate Thread-Safe ai Windows Form Controls
¨  BackgroundWorker
¤  operazione di Login
¤  caricamento dell’inventory
¤  event listener
¨  Delegati Asincroni
¤  notifica di tipo Enter
Descriviamo i casi più interessanti
Discovery delle Managed Entity
vSphere Inventory Browser - Salvatore Saeli
25
Per caricare tutti
gli oggetti server
all’interno
dell’InventoryVie
w viene eseguita
l’apertura delle
folder di un
Datacenter su
quattro thread
separati
Nel caso di un
server vCenter
viene
l’operazione
viene ripetuta
per ogni
Datacenter
Classe BackgroundWorker
vSphere Inventory Browser - Salvatore Saeli
26
¨  Rende semplice l’uso dei thread in un Window Fom
¨  Per eseguire un’operazione onerosa in background
si crea un BrackgroundWorker
¨  Si resta in attesa degli eventi che segnalano
l’avanzamento e il completamento dell’operazione
Caricamento dell’Inventory
vSphere Inventory Browser - Salvatore Saeli
27
¨  Consiste di più sotto-fasi che sono eseguite
all’interno di un BackgroundWorker:
1.  Discovery delle ManagedEntity
2.  Raccolta delle proprietà delle ManagedEntity
3.  Creazione dell’Inventory per tipologia delle
ManagedEntity
4.  Costruzione dell’N-ary HashTree
5.  Costruzione dell’Inventory UI Tree
¨  L’avanzamento e il completamento delle operazioni
sono segnalati aggiornando una ProcessBar
Event Listener
vSphere Inventory Browser - Salvatore Saeli
28
¨  La sincronizzazione con il server è mantenuta usando il meccanismo
di notifica WaitForUpdate, eseguito all’interno di un
BackGroundWorker.
¨  3 Thread, uno per ogni tipologia di notifica
¤  Enter, un managed object è visibile a un filtro per la prima volta
¤  Leave, un managed object non fa più parte dell’insieme degli oggetti
del filtro
¤  Modify, una proprietà di un managed object cambia il suo valore
¨  Avanzamento dell’operazione segnalato tramite
¤  Aggiunta di elementi a una ListBox (tipo di notifica, managed object al
quale è applicata)
¤  Modifica della struttura dell’Inventory UI Tree
¤  Aggiornamento di un DataGridView che mantiene l’elenco delle
proprietà e dei corrispettivi valori
Delegati Asincroni
vSphere Inventory Browser - Salvatore Saeli
29
¨  Permettono di eseguire un metodo in modo
asincrono
¨  Attraverso un delegato è possibile chiamare un
metodo e ritornare immediatamente all’esecuzione
del codice successivo
¤  Il metodo esegue in un thread separato
Notifica di tipo Enter
vSphere Inventory Browser - Salvatore Saeli
30
¨  All’inserimento di un nuovo nodo all’Inventory UI Tree
(ed eventualmente dei sui nodi figli), occorre creare il
nodo e aggiungerlo al suo nodo parent
¨  Può accadere che la notifica d’inserimento non sia data
in ordine di livello di profondità quindi non viene
trovato il parent
¨  Viene impiegato un delegato asincrono
1.  fa uno o più tentativi di ricerca fin quando non trova il
rispettivo nodo parent del nodo entrante
2.  aggiunge il nodo entrante tra i nodi figli del nodo parent
Event Listener: Thread e Delegati
vSphere Inventory Browser - Salvatore Saeli
31
Riflessione
vSphere Inventory Browser - Salvatore Saeli
32
¨  Fornisce oggetti di tipo Type che incapsulan
l’assembly, i moduli e i tipi
¨  È possibile usare la riflessione per ottenere il tipo
da un oggetto esistente, per poi richiamarne i
metodi o per accedere ai campi e alle proprietà
dell’oggetto
¨  Si ottiene un’unica procedura che permetta di
asaminare tutte le proprietà accessibili, in lettura o
in scrittura, di un oggetto ManagedEntity
TreeNode e la proprietà Tag
vSphere Inventory Browser - Salvatore Saeli
33
¨  Inventory UI Tree implementato con un controllo
TreeView
¨  La proprietà Tag dell’oggetto TreeNode permette
di ottenere o settare l’oggetto che contiene i dati
sul nodo dell’albero
¨  Viene caricato nella proprietà Tag di ogni
TreeNode un’istanza del rispettivo oggetto
ManagedEntity
Screen dell’Applicazione34
vSphere Inventory Browser - Salvatore Saeli
Form di Login35
vSphere Inventory Browser - Salvatore Saeli
Form di caricamento dell’Inventory36
vSphere Inventory Browser - Salvatore Saeli
Form InventoryBrowser37
vSphere Inventory Browser - Salvatore Saeli
Dettaglio delle VirtualMachine appartenti all’host
Form More Info38
vSphere Inventory Browser - Salvatore Saeli
Fine39
vSphere Inventory Browser - Salvatore Saeli

More Related Content

Viewers also liked

Self-introduction
Self-introduction Self-introduction
Self-introduction
happyfeet321
 
Sapm
SapmSapm
Oracle Content Marketing, from Lead Nurturing to Sales.
Oracle Content Marketing, from Lead Nurturing to Sales.Oracle Content Marketing, from Lead Nurturing to Sales.
Oracle Content Marketing, from Lead Nurturing to Sales.
RobertoManzoli
 
Ефремова Ольга Васильевна
Ефремова Ольга ВасильевнаЕфремова Ольга Васильевна
Ефремова Ольга Васильевна
Виктор Ефремов
 
shriji decor - interior designer mumbai
shriji decor - interior designer mumbaishriji decor - interior designer mumbai
shriji decor - interior designer mumbai
shriji decor - interior designer mumbai
 
Hammertoss: Proof of concept in C#
Hammertoss: Proof of concept in C#Hammertoss: Proof of concept in C#
Hammertoss: Proof of concept in C#
Salvatore Saeli
 
Sandbox network sketch
Sandbox network sketchSandbox network sketch
Sandbox network sketch
Salvatore Saeli
 
Давление на дне океана
Давление на дне океанаДавление на дне океана
Давление на дне океана_Elizaveta_
 
давление на дне океана»
давление на дне океана»давление на дне океана»
давление на дне океана»
_Elizaveta_
 
TicsDzm
TicsDzmTicsDzm
TicsDzm
KerstynZ
 

Viewers also liked (10)

Self-introduction
Self-introduction Self-introduction
Self-introduction
 
Sapm
SapmSapm
Sapm
 
Oracle Content Marketing, from Lead Nurturing to Sales.
Oracle Content Marketing, from Lead Nurturing to Sales.Oracle Content Marketing, from Lead Nurturing to Sales.
Oracle Content Marketing, from Lead Nurturing to Sales.
 
Ефремова Ольга Васильевна
Ефремова Ольга ВасильевнаЕфремова Ольга Васильевна
Ефремова Ольга Васильевна
 
shriji decor - interior designer mumbai
shriji decor - interior designer mumbaishriji decor - interior designer mumbai
shriji decor - interior designer mumbai
 
Hammertoss: Proof of concept in C#
Hammertoss: Proof of concept in C#Hammertoss: Proof of concept in C#
Hammertoss: Proof of concept in C#
 
Sandbox network sketch
Sandbox network sketchSandbox network sketch
Sandbox network sketch
 
Давление на дне океана
Давление на дне океанаДавление на дне океана
Давление на дне океана
 
давление на дне океана»
давление на дне океана»давление на дне океана»
давление на дне океана»
 
TicsDzm
TicsDzmTicsDzm
TicsDzm
 

Similar to vSphere Inventory Browser for VMware ESX/vCenter 4.x

Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
Massimo Bonanni
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
Andrea Dottor
 
Infrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSInfrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACS
Nucleode Srl
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
Luca Congiu
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
Codemotion
 
Global azure2020 identityserver
Global azure2020 identityserverGlobal azure2020 identityserver
Global azure2020 identityserver
Alessandro Perugini
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
DotNetMarche
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSS
DotNetMarche
 
Azure cointainer instances e sql server
Azure cointainer instances e sql serverAzure cointainer instances e sql server
Azure cointainer instances e sql server
Danilo Dominici
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
Gianluca Arbezzano
 
Vaadin7
Vaadin7Vaadin7
Html5 e PHP
Html5 e PHPHtml5 e PHP
Html5 e PHP
Mariano Fiorentino
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
Andrea Dottor
 
Simple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computingSimple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computing
Francesca1980
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
azuredayit
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWin
Nicolò Carandini
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
VMUGIT Roma 2016 - vROps Day 2 - Antonio Amoroso
VMUGIT Roma 2016 - vROps Day 2 - Antonio AmorosoVMUGIT Roma 2016 - vROps Day 2 - Antonio Amoroso
VMUGIT Roma 2016 - vROps Day 2 - Antonio Amoroso
VMUG IT
 

Similar to vSphere Inventory Browser for VMware ESX/vCenter 4.x (20)

Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Corso Java 3 - WEB
Corso Java 3 - WEBCorso Java 3 - WEB
Corso Java 3 - WEB
 
Infrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSInfrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACS
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
 
Global azure2020 identityserver
Global azure2020 identityserverGlobal azure2020 identityserver
Global azure2020 identityserver
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSS
 
Azure cointainer instances e sql server
Azure cointainer instances e sql serverAzure cointainer instances e sql server
Azure cointainer instances e sql server
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
Vaadin7
Vaadin7Vaadin7
Vaadin7
 
Html5 e PHP
Html5 e PHPHtml5 e PHP
Html5 e PHP
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
Simple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computingSimple Cloud API: accesso semplificato al cloud computing
Simple Cloud API: accesso semplificato al cloud computing
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWin
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
VMUGIT Roma 2016 - vROps Day 2 - Antonio Amoroso
VMUGIT Roma 2016 - vROps Day 2 - Antonio AmorosoVMUGIT Roma 2016 - vROps Day 2 - Antonio Amoroso
VMUGIT Roma 2016 - vROps Day 2 - Antonio Amoroso
 

vSphere Inventory Browser for VMware ESX/vCenter 4.x

  • 1. UNIVERSITÀ DI PISA Facoltà di Scienze MM.FF.NN. Laurea Magistale in Sicurezza Informatica: Infrastrutture e Applicazioni Complementi di Programmazione Distribuita - Prof. M. GattiA.A. 2011/2012 vSphere Inventory Browser for VMware ESX/vCenter 4.x Salvatore Saeli
  • 2. Scopo del progetto Produrre un’Inventory Browser in grado di interfacciarsi con un server ESX/vCenter 4.x sfruttando strumenti e tecniche di ottimizzazione server-side e client-side ¤  Approfondimento dell’infrastruttura di virtualizzazione di VMware ¤  Uso della vSphere Web Services SDK ¤  Uso e approfondimento di Microsoft Visual C# ¤  Installazione di due server ESX e di un server vCenter vSphere Inventory Browser - Salvatore Saeli 1
  • 4. Problematiche affrontate vSphere Inventory Browser - Salvatore Saeli 3 ¨  Ottimizzazione del numero di oggetti da creare all’interno del server a ogni sessione ¨  Riduzione del traffico d’informazioni tra il client e il server per contenere l’uso della banda ¨  Gestione dei problemi di coerenza e sincronizzazione dei dati da mantenere sul client
  • 5. Soluzioni adottate vSphere Inventory Browser - Salvatore Saeli 4 ¨  Server-side ¤  oggetti ViewManager e View rendono performante l’uso del PropertyCollector ¤  meccanismo di notifica WaitForUpdate uso efficiente delle risorse di rete, rimane bloccato in attesa di aggiornamenti ¨  Client-side ¤  albero n-ario implementato con tabelle hash mantiene l’intera struttura in memoria con accesso in tempo costante ai nodi ai vari livelli dell’albero ¤  tecnichedi multi-threading (C#) esecuzione in parallelo delle operazione eseguite in background sincronizzazione dei dati sugli oggetti del server ¤  tecnica di riflessione (C#) accesso alle proprietà degli oggetti di tipo ManagedEntity dall’Inventory UI Tree
  • 6. Il ViewManager e le View5 vSphere Inventory Browser - Salvatore Saeli
  • 7. Il PropertyCollector vSphere Inventory Browser - Salvatore Saeli 6 È una service interface che supporta le seguenti tipologie di task da un’applicazione client: ¨  navigare all’interno dell’inventory e ottenere informazioni su specifici managed object dall’inventory ¨  reperire dati sullo stato del server, nel caso di un’applicazione client sincronizzata con lo stato degli oggetti del server
  • 8. Performance del PropertyCollector vSphere Inventory Browser - Salvatore Saeli 7 I fattori che ne possono andare ad intaccarne le performance sono: ¨  il numero di oggetti ¨  il numero di proprietà da trattare su ogni oggetto ¨  la frequenza di cambiamenti degli oggetti e delle proprietà nel server ¨  la profondità di attraversamento ¤  il numero di proprietà da attraversare
  • 9. Migliorare le prestazioni di raccolta del PropertyCollector vSphere Inventory Browser - Salvatore Saeli 8 Utilizzandolo in congiunzione con gli oggetti ViewManager e View permette di minimizzare ¨  l’overhead sul PropertyCollector ¨  l’ammontare di traffico di rete per un’applicazione client Il ViewManager permette al client di accedere al contenuto dei managed object sul server creando delle View (s.i. di managed entity) ¤  ContainerView, InventoryView, ListView
  • 10. PropertyFilterSpec usato con una ContainerView vSphere Inventory Browser - Salvatore Saeli 9 Interazione con il PC tramite il supporto delle View PropFilterSpec più semplici per definire i filtri Comunicazion e Client- Server molto più efficiente
  • 11. InventoryView vSphere Inventory Browser - Salvatore Saeli 10 The InventoryView managed object provides a means of browsing the inventory and tracking changes to open folders. This managed object is particularly useful for UI clients that display a tree-based navigation panel of the inventory. (VMware vSphere API Ref)
  • 12. InventoryView vSphere Inventory Browser - Salvatore Saeli 11 ¨  fornisce le operazioni per aprire e chiudere le folder in un inventory ¨  la sua proprietà view contiene un array dei MORef agli oggetti che compongono l’inventory ¨  quando viene creato il server inizializza la lista degli oggetti della View con la root folder ¨  per aggiungere dei child object occorre eseguire l’operazione OpenInventoryViewFolder passandogli il MORef della managed object entity
  • 13. InventoryView – host ESX vSphere Inventory Browser - Salvatore Saeli 12 Nel caso di un host ESX, per ottenere tutti gli oggetti server all’interno della View le operazioni sono : 1.  Aprire la root folder 2.  Aprire le folder del Datacenter
  • 14. InventoryView – server vCenter vSphere Inventory Browser - Salvatore Saeli 13 Nel caso di un server vCenter, per ogni Datacenter occorre iterare l’operazione 2. Risultato: con al più 1+(4*N) chiamate, con N uguale al numero dei Datacenter, è possibile ottenere tutti gli oggetti dell’inventory all’interno dell’InventoryView
  • 15. Albero N-ario e Tabelle Hash14 vSphere Inventory Browser - Salvatore Saeli
  • 16. Struttura albero n-ario vSphere Inventory Browser - Salvatore Saeli 15 Analizzando la gerarchia dell’inventory si evince che ci sono dei livelli prestabiliti Permette di inserire i nodi in ordine in base al loro livello di appartenenza È possibile gestire l’inventory di un server vCenter allo stesso modo d’invenotory di un host ESX standalone
  • 17. Struttura nodo dell’albero n-ario vSphere Inventory Browser - Salvatore Saeli 16 ¨  Key: ¤  MORef.Value, valore univoco per ogni oggetto del server ¨  Value: ¤  MORef, si ottengono le proprietà Value e Type ¤  ManagedEntity Object, rappresenta una classe per ogni tipo di oggetto nell’inventory ¤  Rif. ai Child, permettono di attraversare l’albero in profondità
  • 18. Tabelle Hash ad indirizzamento diretto vSphere Inventory Browser - Salvatore Saeli 17 Generalizzazione del concetto di array ordinario. L’indirizzamento diretto di un array ordinario permette di esaminare una posizione arbitraria in tempo constante Funziona bene quando l’universo U delle chiavi è ragionevolmente piccolo e si tratta di valori univoci I dati satellite vengono memorizzati in un oggetto esterno
  • 19. N-ary HashTree Node vSphere Inventory Browser - Salvatore Saeli 18 * più oggetti uguali in un host ESX ** più oggetti uguali in un server vCenter Key : MORef.Value Value: puntatore ad un array dinamico con locazioni MORef ; ManagedEtity Object; Puntatori ai nodi child (nessuno nel caso di nodi foglia)
  • 20. N-ary HashTree vSphere Inventory Browser - Salvatore Saeli 19 Albero n-ario ottenuto tramite l’implementa zione dei nodi con delle tabelle di hash La struttura a puntatori permette di attraversare in profondità l’albero
  • 21. N-ary HashTree – inserimento nodi 1.  Si ottiene la chiave del nodo parent dal ManagedEntity Object 2.  In base alla tipologia del nodo da aggiungere, si accede al nodo di livello superiore tramite la chiave ottenuta 3.  si aggiunge il riferimento nel nodo parent 20 vSphere Inventory Browser - Salvatore Saeli
  • 22. Attraversamento di un albero vSphere Inventory Browser - Salvatore Saeli 21 ¨  Per attraversamento o visita di un albero s’intende l’ispezione dei nodi dell’albero in modo che tutti i nodi vengano ispezionati una ed una sola volta ¨  Definisce un ordinamento totale tra i nodi dell’albero in base alla loro posizione ¤  ogni nodo ha un predecessore e un successore all’interno di un attraversamento
  • 23. Attraversamento Preorder 22 vSphere Inventory Browser - Salvatore Saeli Visita preorder di un BST Adattamento per l’N-ary Tree
  • 24. Multi-Threading e Sincronizzazione23 vSphere Inventory Browser - Salvatore Saeli
  • 25. Tecniche usate per il Multi-Threading vSphere Inventory Browser - Salvatore Saeli 24 ¨  Delegati Sincroni ¤  discovery delle Managed Entity ¤  chiamate Thread-Safe ai Windows Form Controls ¨  BackgroundWorker ¤  operazione di Login ¤  caricamento dell’inventory ¤  event listener ¨  Delegati Asincroni ¤  notifica di tipo Enter Descriviamo i casi più interessanti
  • 26. Discovery delle Managed Entity vSphere Inventory Browser - Salvatore Saeli 25 Per caricare tutti gli oggetti server all’interno dell’InventoryVie w viene eseguita l’apertura delle folder di un Datacenter su quattro thread separati Nel caso di un server vCenter viene l’operazione viene ripetuta per ogni Datacenter
  • 27. Classe BackgroundWorker vSphere Inventory Browser - Salvatore Saeli 26 ¨  Rende semplice l’uso dei thread in un Window Fom ¨  Per eseguire un’operazione onerosa in background si crea un BrackgroundWorker ¨  Si resta in attesa degli eventi che segnalano l’avanzamento e il completamento dell’operazione
  • 28. Caricamento dell’Inventory vSphere Inventory Browser - Salvatore Saeli 27 ¨  Consiste di più sotto-fasi che sono eseguite all’interno di un BackgroundWorker: 1.  Discovery delle ManagedEntity 2.  Raccolta delle proprietà delle ManagedEntity 3.  Creazione dell’Inventory per tipologia delle ManagedEntity 4.  Costruzione dell’N-ary HashTree 5.  Costruzione dell’Inventory UI Tree ¨  L’avanzamento e il completamento delle operazioni sono segnalati aggiornando una ProcessBar
  • 29. Event Listener vSphere Inventory Browser - Salvatore Saeli 28 ¨  La sincronizzazione con il server è mantenuta usando il meccanismo di notifica WaitForUpdate, eseguito all’interno di un BackGroundWorker. ¨  3 Thread, uno per ogni tipologia di notifica ¤  Enter, un managed object è visibile a un filtro per la prima volta ¤  Leave, un managed object non fa più parte dell’insieme degli oggetti del filtro ¤  Modify, una proprietà di un managed object cambia il suo valore ¨  Avanzamento dell’operazione segnalato tramite ¤  Aggiunta di elementi a una ListBox (tipo di notifica, managed object al quale è applicata) ¤  Modifica della struttura dell’Inventory UI Tree ¤  Aggiornamento di un DataGridView che mantiene l’elenco delle proprietà e dei corrispettivi valori
  • 30. Delegati Asincroni vSphere Inventory Browser - Salvatore Saeli 29 ¨  Permettono di eseguire un metodo in modo asincrono ¨  Attraverso un delegato è possibile chiamare un metodo e ritornare immediatamente all’esecuzione del codice successivo ¤  Il metodo esegue in un thread separato
  • 31. Notifica di tipo Enter vSphere Inventory Browser - Salvatore Saeli 30 ¨  All’inserimento di un nuovo nodo all’Inventory UI Tree (ed eventualmente dei sui nodi figli), occorre creare il nodo e aggiungerlo al suo nodo parent ¨  Può accadere che la notifica d’inserimento non sia data in ordine di livello di profondità quindi non viene trovato il parent ¨  Viene impiegato un delegato asincrono 1.  fa uno o più tentativi di ricerca fin quando non trova il rispettivo nodo parent del nodo entrante 2.  aggiunge il nodo entrante tra i nodi figli del nodo parent
  • 32. Event Listener: Thread e Delegati vSphere Inventory Browser - Salvatore Saeli 31
  • 33. Riflessione vSphere Inventory Browser - Salvatore Saeli 32 ¨  Fornisce oggetti di tipo Type che incapsulan l’assembly, i moduli e i tipi ¨  È possibile usare la riflessione per ottenere il tipo da un oggetto esistente, per poi richiamarne i metodi o per accedere ai campi e alle proprietà dell’oggetto ¨  Si ottiene un’unica procedura che permetta di asaminare tutte le proprietà accessibili, in lettura o in scrittura, di un oggetto ManagedEntity
  • 34. TreeNode e la proprietà Tag vSphere Inventory Browser - Salvatore Saeli 33 ¨  Inventory UI Tree implementato con un controllo TreeView ¨  La proprietà Tag dell’oggetto TreeNode permette di ottenere o settare l’oggetto che contiene i dati sul nodo dell’albero ¨  Viene caricato nella proprietà Tag di ogni TreeNode un’istanza del rispettivo oggetto ManagedEntity
  • 36. Form di Login35 vSphere Inventory Browser - Salvatore Saeli
  • 37. Form di caricamento dell’Inventory36 vSphere Inventory Browser - Salvatore Saeli
  • 38. Form InventoryBrowser37 vSphere Inventory Browser - Salvatore Saeli
  • 39. Dettaglio delle VirtualMachine appartenti all’host Form More Info38 vSphere Inventory Browser - Salvatore Saeli
  • 40. Fine39 vSphere Inventory Browser - Salvatore Saeli