Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Jemand Erfahrung mit OpenPegasus?

Yves3 / 3 Antworten / Flachansicht Nickles

Hallo

Ich habe eine Datenbank mit gewissen DeviceIDs, die als gelöscht oder als nicht gelöscht bezeichnet sind. Ich muss jetzt den Status all dieser Instanzen aktualisieren, also bei jeder überprüfen, ob sie auf dem CIMOM (CIM Object Manager) existiert.
Mein aktueller Ansatz ist folgender:
Code:


bool CServiceLogic::IsVolumeOnCIMOM(Pegasus::String strVolumeID)
{
Array<CIMObject> oTestObject;
String strSelectQuery = "SELECT DeviceID FROM IBMTSDS_Volume WHERE DeviceID= \"";
strSelectQuery.append(strVolumeID);
strSelectQuery.append("\"");
oTestObject = m_oCIMClient.execQuery(m_oNamespaceName, String("WQL"), strSelectQuery);
return (oTestObject.size() == 1);
}


Diese Funktion führe ich einfach für jeden Datensatz in der Datenbank einmal aus.

Leider dauert das ungefähr zehn Minuten, bis es fertig ist (ca. 1200 Instanzen).
Alle Instanzen vom CIMOM auf einmal abzurufen dauert ungefähr 20 Sekunden, allerdings habe ich noch keine Möglichkeit gefunden um diese lokal effizient zu durchsuchen.
Einfach für jede Instanz in der DB das gesamte Array zu durchlaufen halte ich für keine besonders gute Lösung, da die Dauer mit der Anzahl Instanzen exponential ansteigt.

Ich hoffe hier hat schon mal jemand etwas ähnliches versucht.
Ich weiss, dass das API wahrscheinlich nicht so verbreitet ist, wüsste aber nicht, wo ich sonst fragen könnte....
bei Antwort benachrichtigen