Hogyan lehet tesztelni, hogy egy Fan ne tartozzon RedundancySet-be?

0 votes
asked Apr 12, 2013 in IRF tantárgy by anonymous  
edited Apr 12, 2013 by micskeiz

Hello!

Az adatbázisban alapból nincs olyan FAN, amelyik ne lenne csoporthoz rendelve, így nem nagyon lehet direktben tesztelni őket. Ilyenkor csak úgy emulált adatokkal tudok tesztelni, vagy van valami hekkelés amivel hozzá lehet venni ilyen adatbázist?

2 Answers

0 votes
answered Apr 12, 2013 by micskeiz (2,873 points)  

Egyszerű módot nem találtam rá.

Lehetne a wbemcli-vel példányt létrehozni (van példa a manualban a végén):

wbemcli ci 'http://meres:LaborImage@localhost:5988/root/cimv2:Linux_Fan.SystemCreationClassName="Linux_ComputerSystem",SystemName="irfserver.irf.local",CreationClassName="Linux_Fan",DeviceID="TestFan1"' SystemCreationClassName="Linux_ComputerSystem",SystemName="irfserver.irf.local",CreationClassName="Linux_Fan",DeviceID="TestFan1"

Erre ez a válasz:

*
* wbemcli: Cim: (7) CIM_ERR_NOT_SUPPORTED: The requested operation is not supported
*

Ugyanezt kapjuk, hogy a YAWN felületéről próbálnánk létrehozni:

http://localhost/yawn/CreateInstancePrep?url=https%3A%2F%2Flocalhost&className=Linux_Fan&ns=root%2Fcimv2

Van-e megoldás akkor?

HACK MODE ON

A HACK megoldás az lenne, hogy mivel egy MOF definícióban meg lehet adni példányokat is, közvetlenül az osztálydefiníciókkal együtt egy statikus példánytdefiníciót is megadunk.

Az sblim-sfcb a /var/lib/sfcb/registration könyvtárban tárolja a CIM adatbázist bináris formában. A /var/lib/sfcb/stage könyvtárban vannak a MOF fájlok (amik a lehetséges osztályokat adják meg) és a provider-ek leírói (adott osztályt milyen provider milyen lib-ben valósít meg). Itt kell megkeresni a Linux_Fan-t definiáló MOF-ot:

cd /var/lib/sfcb/stage/mofs/root/cimv2/
nano linux-fan-profile.mof

Írjuk be a végére a következőt:

instance of Linux_Fan
{
   SystemCreationClassName = "Linux_ComputerSystem";
  SystemName="irfserver.irf.local";
  CreationClassName="Linux_Fan";
  DeviceID="TestFan1";
};

Ez ugye egy konkrét példány statikus definíciója.

Ezután csak annyi kell, hogy kivenni, hogy a Linux_Fan-hoz ne legyen provider, mert akkor az visszaadná a szokásos FAN-okat.

cd /var/lib/sfcb/stage/regs/
nano linux-fan-profile.reg

Itt kommentezzük ki a következő sorokat (a # a komment jele):

[Linux_Fan]
   provider: Linux_Fan
   location: linux_fanprovider
   type: instance method
   namespace: root/cimv2

Hozzuk létre újra a mof és reg fájlokból az sfcb adatbázisát:

sfcbrepos

Ezek után már le tudjuk kérdezni a Linux_Fan példányait, és visszakapjuk a TestFan1 példányt. Azért a módszer még nem tökéletes, mert például a FanRedundancySet kapcsolóosztályai még visszaadnak FAN0 példányokat (amik nem léteznek), de ez már a többi provider implementációs hibája.

Természetesen az ilyen teszt FAN-nal való tesztelés nem elvárás, ezt csak érdekességként írtam le:)

HACK MODE OFF

0 votes
answered Apr 13, 2013 by lpeter (28 points)  

Egy másik hack:

LinuxCPUFan-t nekem engedett felvenni a YAWN-ban, ehhez persze a scriptben az általánosabb CIMFan-t kell használni, de a feladatleírás amúgy is ezt javasolja.

...