Wie bekomme ich VM Instanz Laufzeit im Openstack über Python API?

Ich brauche einen kleinen Abrechnungsbericht für den Gebrauch der VMs im Openstack, nachdem er gestoppt wurde. Bisher finde ich schon den Weg, um Geschmacksinformationen (vCPU, Festplatte, Speicher) vom Instanznamen zu erhalten.

Und ich möchte die Startzeit der VM kennen, um jetzt zu berechnen.

Gibt es irgendwelche guten Wege, um es von Openstack Python API zu holen?

Es wird schön sein, wenn man den Code auch einfügen kann.

3 Solutions collect form web for “Wie bekomme ich VM Instanz Laufzeit im Openstack über Python API?”

(Ich habe die Antwort von der China-Openstack-Community bekommen und hier geteilt)

Im novaclient-Nutzungsmodul kann die gesamte Instanz (aktiv oder terminiert) durch list API abgerufen werden, die Detailinformationen werden über get API abgerufen, es ist nicht klar, welche Informationen über dieses Python-Dokument ausgesetzt sind.

Glücklicherweise ist der openstack api: os-simple-tenant-usage die Datenstruktur, die uptime ist was ich will.

  "tenant_usage": { "server_usages": [ { ... (skipped) "uptime": 3600, "vcpus": 1 } ], 

Openstack Dashboard (mindestens Folsom Version) verwenden diese API auch.

Ich wollte nur die Spielzeit des Servers abrufen. Ich meine, echte Uptime für die Zeit der Server wurde UP, nicht seit seiner Erstellung.

  • Ich habe eine neue Maschine erstellt, die Maschine läuft und ich bekam einen Update- Wert; Das war schön inkrementiert
  • Dann habe ich die Maschine angehalten und die Anfrage erneut ausgegeben: Die Antwort berichtet korrekt "state": "gestoppt" , aber die Uptime attr. Wird immer noch inkrementiert ==> Wieder in dieser Erweiterung ist es keine Uptime, es ist Zeit von der Schöpfung

Anforderung an die os-simple-tenant-use- Erweiterung (nach Erhalt eines auth-Tokens): GET http://rdo:8774/v2/4e1900cf21924a098709c23480e157c0/os-simple-tenant-usage/4e1900cf21924a098709c23480e157c0 (mit der korrekten Mieter-ID)

Antwort (beachten Sie, dass die Maschine gestoppt ist und die Uptime ein Wert ungleich Null ist):

 { "tenant_usage": { "total_memory_mb_usage": 0.000007111111111111112, "total_vcpus_usage": 1.388888888888889e-8, "start": "2014-02-25T14:20:19.660179", "tenant_id": "4e1900cf21924a098709c23480e157c0", "stop": "2014-02-25T14:20:19.660184", "server_usages": [ { "instance_id": "ca4465a8-38ca-40de-b138-82efcc88c7cf", "uptime": 1199, "started_at": "2014-02-25T14:00:20.000000", "ended_at": null, "memory_mb": 512, "tenant_id": "4e1900cf21924a098709c23480e157c0", "state": "stopped", "hours": 1.388888888888889e-8, "vcpus": 1, "flavor": "m1.tiny", "local_gb": 1, "name": "m1" } ], "total_hours": 1.388888888888889e-8, "total_local_gb_usage": 1.388888888888889e-8 } } 

Trotz seines Namens Uptime ist es nur Zeit seit der Server-Erstellung .

Warum nicht nur Metadaten verwenden :

Benutzerdefinierte Server-Metadaten können auch zum Startzeitpunkt geliefert werden.

Bei der Erstellung können Sie eine Datumszeit speichern, dann, wenn es anfängt, können Sie einen Unterschied berechnen.

Python ist die beste Programmiersprache der Welt.