RESTe verwerten oder Wie lese ich Daten von vROps 6 via REST API (Teil2)?

By | 13. März 2015

So, nachdem wir gesehen haben wie die REST API in vROps 6 anzusprechen ist und auch die erste Abfrage via Web Browser erfolgreich war, wollen wir jetzt mal sehen wie wir das in ein Script einbetten.

Hierzu verwende ich die Abfrage nach Resourcen und extrahiere neben dem Resource Identifier auch gleich das Creation Date. Wie erinnern uns, der Resource Identifier ist die eindeutige ID ist unter der ein Objekt in vROps abgelegt ist. Zum Creation Date hier die Zusatzinformation des es sich um den Zeitstempel handelt, zu dem das Objekt in vROps angelegt wurde. Das Format ist hierbei Epoch, also in Sekunden seit dem 1.1.1970.

Beim letzten Mal haben wir einfach Resource Informationen ausgelesen. Ich möchte diesmal nur die Resource Informationen von virtuellen Maschinen lesen. Drum schränke ich die Suche entsprechend ein. Die API liefert mir hierfür auch schon Möglichkeiten wie der folgende Auszug aus der Dokumentation zeigt:

REST-API-getResources-call

Dem Aufruf /api/resources ist ?name=suchstring anzufügen. Zusätzlich dazu will ich auch gleich alles in einem Rutsch lesen. Auch hier kommt wieder pageSize zum Einsatz. Die URL sieht nun wie folgt aus:
https://vrops01.vcc.vmw/suite-api/api/resources?resourceKind=VirtualMachine&pageSize=5000

Zur Erinnerung: Die Basis URL für die REST API lautet http://VROPS/suite-api/

Nochmal kurz im Web Browser verifizieren

REST-API-resources-all

Sehr gut. Das Ganze nun in ein Skript gepackt. Habe hierzu ein Shell Script auf Basis von bash verwendet.

Für die eigene Umgebung ist VROPS=eigeneip/hostname, ID=’anredend oder admin lassen’ und PWD=’eigenespwd’ anzupassen. Als Ergebnis werden die ResourceID und der Zeitstempel in die Datei /tmp/ident.file geschrieben.

#!/usr/bin/env bash
#
# Script to retrieve resourceID & timestamp from vRealize Operations
# Author: fbess
#
# Fetch resource identifiers for all resources matching SRCH critera
# test the url in a browser first!
#
# (c) 03/2015# Change here for your environment
VROPS=172.16.96.88
ID=’admin’
PWD=’VMware1!’
ID_PWD=”$ID:$PWD”
CURL=/usr/bin/curl
ECHO=/bin/echo
TMP=/tmp# Objects you want to apply the attribute against (resourceKind=VirtualMachine does take ALL virtual machines)
# Be aware that vROps6 does return 100 resources max if not other specified or you have to build a wrapper
# around the #ofpages
SRCH=”/resources?resourceKind=VirtualMachine&pageSize=5000″# No modifications beyond required# ———————————–
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binFILE=file
XML_F=${TMP}/${FILE}.xml
IDENT_F=${TMP}/${FILE}.identCTJSON=’Content-Type: application/json’

URL=”https://${VROPS}/suite-api/api”

# Retrieve Token for quick access
AUTHT=${CURL} -k -H "${CTJSON}" -X POST -d '{"username":"'$ID'","password":"'$PWD'","others":[],"otherAttributes":{}}' -u "${ID_PWD}" --url "${URL}/auth/token/acquire" |\
sed 's/^.*<ops\:token>//' | sed 's/<\/ops\:token>.*$//'

CTAUTH=”Authorization: vRealizeOpsToken ${AUTHT}”

# Retrieve resources and extract the resource identifier and timestamp
CNT=0
${CURL} -k -H “${CTAUTH}” –url “${URL}${SRCH}” > ${XML_F}
sed ‘s!/>!&\
!g’ ${XML_F} | sed ‘s!><!>\
<!g’ | awk ‘BEGIN { RS=”\
“; } /identifier=/{ split($3,a,”\””); print a[2]; }’ > ${IDENT_F}

Zum Lesen der Inhalte wird curl verwendet. Als Besonderheit wird hier noch mit einem Access Token gearbeitet. Das wäre für die eine Abfrage nicht notwendig, aber im 3. Teil wollen wir auch Daten zurück schreiben. Um das zu beschleunigen hier schonmal die Abfrage des Tokens, der bei allen weiteren curl Aufufen zum Einsatz kommt. Dies beschleunigt spätere Mehrfachaufrufe um den Faktor 20-25.

Mit sed extrahiere ich aus dem XML Ergebnis das Token für die weitere Nutzung

Der letzte Aufruf von curl ist der, der die Resource Informationen ermittelt. Da das Ergebnis auch in XML geliefert wird, wird mittels awk und sed die ResourceID und das CreationDate extrahiert und in die Zieldatei geschrieben.

Das nächste Mal nutzen wir diese Informationen, bereiten den Zeitstempel in lesbare Form auf und fügen das Ganze als ein eigenes Attribut der jeweiligen Resource hinzu…..

print
Frank Bess

Frank Bess

Global Solutions Consultant bei VMware Global Inc.
Die letzten 15+ Jahre schwerpunktmäßig im Umfeld von Systems und IT Service Management unterwegs. Seit 5 Jahren bei VMware in unterschiedlichen Rollen in EMEA/CEMEA und Deutschland. Auch hier mit starker Ausrichtung auf Management und zunehmend Automation. Also alles oder besser gesagt vieles Rund um vRealize.
Frank Bess
Category: _vR Ops 6 REST API Schlagwörter: , ,

About Frank Bess

Die letzten 15+ Jahre schwerpunktmäßig im Umfeld von Systems und IT Service Management unterwegs. Seit 5 Jahren bei VMware in unterschiedlichen Rollen in EMEA/CEMEA und Deutschland. Auch hier mit starker Ausrichtung auf Management und zunehmend Automation. Also alles oder besser gesagt vieles Rund um vRealize.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.