If you wish to create a device organizer so that it's easy to differentiate between other types of devices and the type that you're adding, feel free to do so. In the case of AIX, there are a couple of types of setups:
Generic AIX Definitions
This describes the case where the entire pSeries server is dedicated to running one instance of AIX.
Some AIX pSeries servers are capable of running multiple instances of AIX. An AIX instance (LPAR in IBM speak) is equivalent to a VMware image.
AIX LPARs are hosted on physical hardware (ie a pSeries server), which is referred to as a frame. These frames are capable of being run as either a standalone server or as a bunch of LPARs. The frame is like a VMware host.
A VIO server is a special LPAR that allows you to consolidate IO hardware (eg Ethernet, Fibre Channel cards) and share virtualized hardware with other LPARs. This is one of the key technologies required in order to perform VMotion-style activities for AIX LPARs.
A separate server (called a Hardware Management Console (HMC)) is used to manage standalone devices, frames and LPARs (including VIO servers). The HMC is actually a Linux server with a custom configuration to support AIX. In this example, we'll just add the AIX parts and ignore the HMC.
Add a device class for AIX in the /Devices/Server/AIX
class. From the navigation bar at the left-hand side, go to the Classes section and select Devices. Then click on Server, which shows you the Sub-Devices screen. From the Sub-Devices table menu, select . Provide an id (ie AIX
) and click OK.
Under the newly created /Server/AIX
organizer, create the LPAR
class. Under that class, create a VIO
class.
In this newly created scheme, we're intending on putting standalone servers and frames in the /Server/AIX
class, any LPARs in the /Server/AIX/LPAR
class, and any VIO servers (which are a special type of LPAR) under the /Server/AIX/LPAR/VIO
class. If we wanted to have each frame contain its own tab showing the LPARs that it hosts, we would need to create new ZenModel
objects (complete with relations), instantiate them at the base of /Server/AIX
and then write more ZPTs to handle our custom behaviours.
Another situation where we might be forced to write our own device class Python code is where we want to add properties that don't exist in other devices. For instance, we may want to record whether or not a Fibre Channel device supports N-Port ID Virtualization (NPIV). This extra property would need to be subclassed from the ZenModel
class and the object initialized from within our ZenPack's __init__.py
file.