Network Server AIX: Altering the ODM

On a Network Server 500 or 700 running AIX, I moved a PCI Ethernet card to another PCI slot. I was not able to remove the old device, however. The device was in the defined state, but it could not be removed even if I manually deleted the device. This leaves an "en1" device, and a configured "en2" device which should be "en1".
This is a special case where an object defined in the ODM could not be deleted by deleting the device. You can selectively alter the ODM with the following steps:

Step 1
Before running any "<odmdelete>" or "odmadd" commands, it is recommended that you save the original copies of the Cu* files, like this:
cd /etc/objrepos
cp CuAt cuat.old
cp CuDep cudep.old
cp CuDv cudv.old
cp CuDvDr cudvdr.old
cp CuVPD cuvpd.old

Step 2
In general, to find out what is in the ODM, you can run the odmget command. There are five files on which you would want to run odmget. These files are in /etc/objrepos; their names are CuAt, CuDep, CuDv, CuDvDr, and CuVPD. The syntax for odmget would be:

odmget CuAt > /tmp/cuat
odmget CuDep > /tmp/cudep
odmget CuDv > /tmp/cudv
odmget CuDvDr > /tmp/cudvdr
odmget CuVPD > /tmp/cuvpd

Then you can use pg, vi, or another editor on the /tmp/cu* files to "see" what is in the ODM. You can also "grep" for items, if you know what you are looking for, like this: (This assumes that you put the output of the odmget commands in the /tmp directory, in files beginning with the letters "cu".)

grep 'ent_name' /tmp/cu*

where "ent_name" is the word for which you are looking. For example:

grep ent2 /tmp/cu*

Step 3
WARNING: If you run "<odmdelete> -o CuAt", you will delete EVERYTHING in /etc/objrepos/CuAt! Consider backing up each /etc/objrepos/Cu* file if you have not already done so.

You can put the commands below in a file, make it executable, and run it. It will delete anything in the ODM that is associated with et2. You will want to also delete all ent2 entries.

DEVICE=et2

odmdelete -q "name= $DEVICE" -o CuAt

odmdelete -q "parent = $DEVICE" -o CuDv

odmdelete -q "name = $DEVICE" -o CuDv

odmdelete -q "name = $DEVICE" -o CuDep

odmdelete -q "dependency = $DEVICE" -o CuDep

odmdelete -q "value1 = $DEVICE" -o CuDvDr

odmdelete -q "value3 = $DEVICE" -o CuDvDr

Published Date: Feb 18, 2012