Intro

iTop es lo más de lo más para gestionar el hardware (y hasta el software) de una compañía o departamento. No hemos podido dejar de usarlo desde que lo descubrimos. Sin embargo, la configuración por defecto no incluye la opción de dar de alta dispositivos tales como monitores.

Buscando en google encontramos un artículo estupendo sobre como añadir los monitores a iTop. Lo bueno es que nos sirve para añadir cualquier nuevo tipo de dispositivo (o CI como lo llama iTop).

 

iTop customization

Para tunear iTop necesitamos un plugin llamado iTopDataModelToolkit. La forma de instalarlo y configurarlo la tenemos en el siguiente enlace.

Creamos el módulo de customización (pedazo más feo de palabro) con las características del artículo sobre creación del elemento monitores.

Label Value Remarks
Module name sample-add-class Names starting with itop- and combodo- are reserved for use by Combodo. It is recommended not to put spaces or accentuated characters in the name of the module. Two modules with the same name cannot co-exist in the same iTop instance.
Module Label Add Class Sample This label will be displayed in the setup wizard. Localized characters and spaces are allowed
Module Version 1.0.0 The convention is to use a 3 digits numbering scheme: X.Y.Z
Category business Modules that provide modifications to the data model should be in the category ‘business’
Dependencies itop-config-mgmt/2.0.0,itop-endusers-devices/2.0.0 Our customization module depends on the modules: iTop Configuration Management (version 2.0.0) in which the Physical Device class is defined and iTop End User Devices (version 2.0.0) in which the “End User Devices” menu is defined

No voy a explicar todos los pasos en este artículo, porque sería repetir lo que ya está en los artículos de los enlaces.

 

Añadir elemento al panel de control

En el artículo sobre la creación del elemento monitores nos explican como se ha de añadir el nuevo elemento al panel de control. Se hace mediante el código:

<menus>
  <menu id="ConfigManagementOverview" xsi:type="DashboardMenuNode" _delta="must_exist">
    <definition>
      <cells>
        <cell id="2" _delta="must_exist">
          <dashlets>
            <dashlet id="99" xsi:type="DashletBadge" _delta="define">
              <rank>8</rank>
              <class>Monitor</class>
            </dashlet>
          </dashlets>
        </cell>
      </cells>
    </definition>
  </menu>
</menus>

Este código habría que incluirlo en la sección menus del script datamodel.mod-model_module.xml del módulo. Sin embargo, si no es el primer elemento que añadimos el sistema se quejará de que ya ha cargado el módulo. El truco está en la línea:

<dashlet id="99" xsi:type="DashletBadge" _delta="define">

Hay que cambiar la id por un número distinto del 99, que es el que se le ha aplicado al elemento monitores. Cada elemento tendrá un número diferente. Parece que el máximo es 99, así que lo mejor sería poner ids por debajo de ese número.

Realmente lo mejor para añadir módulos a iTop es crearlos en una instancia iTop de desarrollo y una vez están funcionando copiar el directorio del módulo desde extensions al directorio extensions del servidor de producción

Añadir entradas a los modelos

Sin embargo, si que voy a explicar como crear un código para añadir entradas a los modelos. Resulta que al ir a añadir un monitor no aparecía el modelo en el desplegable, y tampoco aparecía la entrada ‘Monitor’ al ir a crear el modelo. Después de buscar en google (cómo no!) resulta que la solución está en crear otro nuevo módulo de extensión con la siguiente configuración en el archivo de datamodel:

<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
  <classes>
    <class id="Model">
      <fields>
        <field id="type" xsi:type="AttributeEnum" _delta="redefine">
          <values>
            <value>NetworkDevice</value>
            <value>Server</value>
            <value>SANSwitch</value>
            <value>StorageSystem</value>
            <value>Rack</value>
            <value>Enclosure</value>
            <value>PC</value>
            <value>Tablet</value>
            <value>TeleConf</value>
            <value>Telephone</value>
            <value>MobilePhone</value>
            <value>Monitor</value>
            <value>Printer</value>
            <value>DiskArray</value>
            <value>NAS</value>
            <value>TapeLibrary</value>
            <value>IPPhone</value>
            <value>Peripheral</value>
            <value>PowerSource</value>
            <value>PDU</value>
            <value>VidConfUnit</value>
          </values>
          <sql>type</sql>
          <default_value/>
          <is_null_allowed>false</is_null_allowed>
          <display_style>list</display_style>
        </field>
      </fields>
     </class>
  </classes>
  <menus>
  </menus>
  <profiles>
  </profiles>
</itop_design>

 

He llamado al módulo mod-model_module y lo he creado con las mismas dependencias que el módulo de monitores en el módulo de customización.

Hay que comprobar la consistencia del modelo de datos (Data Model Consistency) en el toolkit que tenemos en el directorio toolkit de la instalación de iTop y luego hacer un iTop update cada vez que queramos modificar algo en algún módulo.
Para el módulo de modelos hay que asegurarse de que actualizamos la base de datos en el toolkit. Si no nos sale el botón Update iTop code and Database hay que recargar la página del tookit para que salga y actualizar la base de datos.