Login Registrieren

Python Implementierung der Network Appliance ONTAP APIs

Verfasst von Markus Grimm am 17. Januar 2011

Die Firma Network Appliance (NetApp) hat für die Verwaltung seiner Storage Systeme eine webbasierte API Schnittstelle geschaffen. Leider gibt es für diese Schnittstelle von NetApp keine Pakete für die Programmiersprache Python.

Vor einiger Zeit haben wir daher begonnen, eigens eine Python Bibliothek für unsere Zwecke zu erstellen. Diese war schon nach kurzer Zeit deutlich komfortabler zu benutzen als z.B. die von NetApp bereitgestellte Perl Bibliothek. Ziel war es nun geworden, sämtliche API Kommandos so nachzubilden, dass sie über einen einfachen Funktionsaufruf in Python ausgeführt werden können. Doch durch die Vielzahl an möglichen API Kommandos schien dieses Vorhaben schier unmöglich. Es entwickelte sich die Idee, aus der Dokumentation von NetApp heraus automatisch den Quellcode zu erzeugen...

Zufällig wurde ich dann aber beim Lesen der NetApp Dokumentation auf ein paar API Kommandos aufmerksam, die mir die Arbeit erheblich erleichtern sollten:

Führt man das API Kommando system-api-list aus, gibt es die Namen aller verfügbaren API Kommandos zurück. Verwendet man dazu noch die Kommandos system-api-list-types und system-api-get-elements hat man alle Werkzeuge beisammen, die man für die Generierung benötigt: Welche Argumente hat ein Kommando, wie wird das für die Anfrage wichtige XML Element dafür erstellt und wie kann ich die XML Ausgabe direkt in Python Listen und Dictionaries umbauen.

Nachdem mit jeder neuen ONTAPI Version neue API Kommandos hinzukommen, wird bei unserer Realisierung der Python Code, mit dem man die API Kommandos ausführen kann, automatisch anhand der verwendeten Version generiert. Somit entfällt das händische Updaten für unsere Bibliothek.

Wir haben diese Bibliothek unter der freien Lizenz LGPL zum Download bereitgestellt. Besuchen Sie hierfür die Projektseite.

Werden alle notwendigen NetApp Volumes gesichert?

Verfasst von Uwe W. Schäfer am 10. September 2010

Wann merkt man, dass ein Datenbereich nicht gesichert wird?
Natürlich erst dann, wenn man Daten aus dem betreffenden Bereich wiederherstellen möchte!

Genau dieses war mal wieder beim Kunden vorgekommen und damit dieses nicht noch mal passiert, sollte eine Lösung entwickelt werden, die einmal täglich überprüft, ob alle zurzeit existierenden Volumes gesichert werden.

Die Umgebung:

Der Kunde sichert mehrere NetApp Filer mit dem Backup Produkte NetWorker und dem NDMP Protokoll auf externe Bandmedien.

Auf den Filern werden sowohl Oracle-Datenbanken, MS-Exchange-Daten, VMware-Datastores als auch Benutzer-Daten gespeichert. Die Oracle-, Exchange,- wie auch die VMware-Daten werden über eigene Module gesichert; so kann folglich nicht einfach der NetWorker-SaveSet "All" verwendt werden, um alle NetApp-Volumes zu sichern.

Die Lösung:

Mit unserer eigenen NetApp-ZAPI-Python-Schnittstelle werden zunächst vom jeweiligen Filer alle Volumes ermittelt.

Dann werden über unsere Python-NetWorker-nsradmin-Schnittstelle alle "Save Sets" für den betreffenden Filer ausgelesen.

Volumes, die nicht im NetWorker definiert sind, werden anschließend noch gegen eine definierbare White-Liste verglichen. Die Oracle- und VMware-Volumes will man ja nicht jeden Morgen vor Augen haben,
da man sonst ja wieder nicht sieht, ob ein neues Volume hinzugekommen ist.

Über die Volumes, die weder in der Sicherung noch in der White-Liste enthalten sind, werden die Administratoren mittels E-Mail informiert.

 

Durch unsere bestehenden NetApp und NetWorker Frameworks konnte somit eine einfache und praktikable Lösung in kurzer Zeit entwickelt werden, die dem Kunden eine Menge Ärger und Erklärungsnöte ersparen kann.

Seite 1 von 1