iLO support
authorAlex Kirhenshtein <alk@netxms.org>
Sun, 5 May 2013 01:25:22 +0000 (01:25 +0000)
committerAlex Kirhenshtein <alk@netxms.org>
Sun, 5 May 2013 01:25:22 +0000 (01:25 +0000)
13 files changed:
include/nms_util.h
include/nxclapi.h
src/java/netxms-client/src/main/java/org/netxms/client/datacollection/DataCollectionObject.java
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/Messages.java
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_es.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/propertypages/General.java
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/views/helpers/DciLabelProvider.java
src/libnetxms/net.cpp
src/server/core/datacoll.cpp
src/server/core/dcobject.cpp
src/server/core/node.cpp
src/server/include/nms_objects.h

index 736a615..13da3b6 100644 (file)
@@ -522,6 +522,7 @@ public:
        virtual ~SocketConnection();
 
        bool connectTCP(const TCHAR *hostName, WORD port, DWORD timeout);
+       bool connectTCP(DWORD ip, WORD port, DWORD timeout);
        void disconnect();
 
        bool canRead(DWORD timeout);
@@ -544,9 +545,15 @@ protected:
 
 public:
        bool connect(const TCHAR *hostName, WORD port, DWORD timeout);
+       bool connect(DWORD ip, WORD port, DWORD timeout);
        int read(char *pBuff, int nSize, DWORD timeout = INFINITE);
+       int readLine(char *buffer, int size, DWORD timeout = INFINITE);
 
        static TelnetConnection *createConnection(const TCHAR *hostName, WORD port, DWORD timeout);
+
+protected:
+       bool connectTCP(const TCHAR *hostName, WORD port, DWORD timeout);
+       bool connectTCP(DWORD ip, WORD port, DWORD timeout);
 };
 
 #endif   /* __cplusplus */
index 45e736e..469c671 100644 (file)
@@ -752,7 +752,7 @@ enum
 #define DS_CHECKPOINT_AGENT   3
 #define DS_PUSH_AGENT         4
 #define DS_WINPERF            5
-#define DS_WMI                6
+#define DS_ILO                6
 
 /**
  * Item status
index f56c3c7..16aebe0 100644 (file)
@@ -40,6 +40,7 @@ public abstract class DataCollectionObject
        public static final int CHECKPOINT_SNMP = 3;\r
        public static final int PUSH = 4;\r
        public static final int WINPERF = 5;\r
+       public static final int ILO = 6;\r
        \r
        // data collection object status\r
        public static final int ACTIVE = 0;\r
index 9fdb0ea..31192f1 100644 (file)
@@ -133,6 +133,7 @@ public class Messages extends NLS
        public static String DciLabelProvider_SourceInternal;\r
        public static String DciLabelProvider_SourcePush;\r
        public static String DciLabelProvider_SourceSNMP;\r
+       public static String DciLabelProvider_SourceILO;\r
        public static String DciLabelProvider_Table;\r
        public static String DciLabelProvider_Unknown;\r
        public static String DciList_ColDescr;\r
@@ -219,6 +220,7 @@ public class Messages extends NLS
        public static String General_SourceInternal;\r
        public static String General_SourcePush;\r
        public static String General_SourceSNMP;\r
+       public static String General_SourceILO;\r
        public static String General_Status;\r
        public static String General_Storage;\r
        public static String General_UseCustomPort;\r
index 633926f..12d2e74 100644 (file)
@@ -126,6 +126,7 @@ DciLabelProvider_SourceCPSNMP=Check Point SNMP
 DciLabelProvider_SourceInternal=Internal\r
 DciLabelProvider_SourcePush=Push\r
 DciLabelProvider_SourceSNMP=SNMP\r
+DciLabelProvider_SourceILO=iLO\r
 DciLabelProvider_Table=<< TABLE >>\r
 DciLabelProvider_Unknown=<unknown>\r
 DciList_ColDescr=Description\r
@@ -212,6 +213,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal\r
 General_SourcePush=Push\r
 General_SourceSNMP=SNMP\r
+General_SourceILO=iLO\r
 General_Status=Status\r
 General_Storage=Storage\r
 General_UseCustomPort=Use custom SNMP port:\r
index 70eece7..d312d93 100644 (file)
@@ -1,33 +1,33 @@
-AbstractSelectParamDlg_AvailableParameters=Parámetros disponibles\r
-AbstractSelectParamDlg_Description=Descripción\r
+AbstractSelectParamDlg_AvailableParameters=Par\ufffdmetros disponibles\r
+AbstractSelectParamDlg_Description=Descripci\ufffdn\r
 AbstractSelectParamDlg_Name=Nombre\r
-AbstractSelectParamDlg_Title=Selección de Parámetros\r
+AbstractSelectParamDlg_Title=Selecci\ufffdn de Par\ufffdmetros\r
 AbstractSelectParamDlg_Type=Tipo\r
 AbstractSelectParamDlg_Warning=Advertencia\r
-AbstractSelectParamDlg_WarningText=Es necesario seleccionar un parámetro de la lista\!\r
-ApplyTemplate_JobError=No es posible aplicar una plantilla de colección de datos\r
+AbstractSelectParamDlg_WarningText=Es necesario seleccionar un par\ufffdmetro de la lista\!\r
+ApplyTemplate_JobError=No es posible aplicar una plantilla de colecci\ufffdn de datos\r
 ApplyTemplate_JobTitle=Aplicar plantilla\r
-CreateInterfaceDciDialog_BadPollingInterval=Introducir el intervalo entre sondeos como un número entero entre 2 y 10000\r
-CreateInterfaceDciDialog_BadRetentionTime=Introducir el tiempo de conservación como un número entero entre 1 y 10000\r
+CreateInterfaceDciDialog_BadPollingInterval=Introducir el intervalo entre sondeos como un n\ufffdmero entero entre 2 y 10000\r
+CreateInterfaceDciDialog_BadRetentionTime=Introducir el tiempo de conservaci\ufffdn como un n\ufffdmero entero entre 1 y 10000\r
 CreateInterfaceDciDialog_Data=Dato\r
 CreateInterfaceDciDialog_Delta=Valor Delta (promedio por segundo)\r
-CreateInterfaceDciDialog_Description=Descripción:\r
+CreateInterfaceDciDialog_Description=Descripci\ufffdn:\r
 CreateInterfaceDciDialog_Error=Error\r
-CreateInterfaceDciDialog_InBytes=Tráfico entrante (bytes)\r
-CreateInterfaceDciDialog_InBytesDescr=Tráfico entrante @@ifName@@ (bytes/s)\r
+CreateInterfaceDciDialog_InBytes=Tr\ufffdfico entrante (bytes)\r
+CreateInterfaceDciDialog_InBytesDescr=Tr\ufffdfico entrante @@ifName@@ (bytes/s)\r
 CreateInterfaceDciDialog_InErrors=Errores entrantes\r
 CreateInterfaceDciDialog_InErrorsDescr=Errores entrantes @@ifName@@ (errores/s)\r
-CreateInterfaceDciDialog_InPackets=Tráfico entrante (paquetes)\r
+CreateInterfaceDciDialog_InPackets=Tr\ufffdfico entrante (paquetes)\r
 CreateInterfaceDciDialog_InPacketsDescr=Paquetes entrantes @@ifName@@ (paquetes/s)\r
 CreateInterfaceDciDialog_Options=Opciones\r
-CreateInterfaceDciDialog_OutBytes=Tráfico saliente (bytes)\r
-CreateInterfaceDciDialog_OutBytesDescr=Tráfico saliente @@ifName@@ (bytes/s)\r
+CreateInterfaceDciDialog_OutBytes=Tr\ufffdfico saliente (bytes)\r
+CreateInterfaceDciDialog_OutBytesDescr=Tr\ufffdfico saliente @@ifName@@ (bytes/s)\r
 CreateInterfaceDciDialog_OutErrors=Errores salientes\r
 CreateInterfaceDciDialog_OutErrorsDescr=Errores salientes @@ifName@@ (errores/s)\r
-CreateInterfaceDciDialog_OutPackets=Tráfico saliente (paquetes)\r
-CreateInterfaceDciDialog_OutPacketsDescr=Tráfico saliente @@ifName@@ (paquetes/s)\r
+CreateInterfaceDciDialog_OutPackets=Tr\ufffdfico saliente (paquetes)\r
+CreateInterfaceDciDialog_OutPacketsDescr=Tr\ufffdfico saliente @@ifName@@ (paquetes/s)\r
 CreateInterfaceDciDialog_PollingInterval=Intervalo entre sondeos (segundos)\r
-CreateInterfaceDciDialog_RetentionTime=Tiempo de conservación (días)\r
+CreateInterfaceDciDialog_RetentionTime=Tiempo de conservaci\ufffdn (d\ufffdas)\r
 CreateInterfraceDci_JobError=No es posible crear DCIs para el interfaz\r
 CreateInterfraceDci_JobTitle=Crear DCIs para el interfaz\r
 CreateInterfraceDci_TaskName=Creando DCIs\r
@@ -39,22 +39,22 @@ CreateTemplateGroup_JobErrorPrefix=No es posible crear el objeto grupo de planti
 CreateTemplateGroup_JobErrorSuffix="\r
 CreateTemplateGroup_JobTitle=Crear grupo de plantillas\r
 CreateTemplateGroup_TemplateGroup=Grupo de Plantillas\r
-CustomSchedule_Add=&Añadir...\r
+CustomSchedule_Add=&A\ufffdadir...\r
 CustomSchedule_Delete=&Eliminar\r
 CustomSchedule_Edit=&Editar...\r
 CustomSchedule_JobError=No es posible actualizar el DCI planificado\r
-CustomSchedule_JobTitle=Actualizar planificación del DCI \r
+CustomSchedule_JobTitle=Actualizar planificaci\ufffdn del DCI \r
 CustomSchedule_Schedule=Planificar\r
 DataCollectionEditor_Activate=&Activar\r
 DataCollectionEditor_ChStatusJob_Error=No es posible modificar el estado del monitor para \r
 DataCollectionEditor_ChStatusJob_Title=Cambiar el estado del monitor para \r
 DataCollectionEditor_ColDataType=Tipo de Dato\r
-DataCollectionEditor_ColDescription=Descripción\r
+DataCollectionEditor_ColDescription=Descripci\ufffdn\r
 DataCollectionEditor_ColID=ID\r
 DataCollectionEditor_ColOrigin=Origen\r
-DataCollectionEditor_ColParameter=Parámetro\r
+DataCollectionEditor_ColParameter=Par\ufffdmetro\r
 DataCollectionEditor_ColPollingInterval=Intervalo entre sondeos\r
-DataCollectionEditor_ColRetentionTime=Tiempo de Conservación\r
+DataCollectionEditor_ColRetentionTime=Tiempo de Conservaci\ufffdn\r
 DataCollectionEditor_ColStatus=Estado\r
 DataCollectionEditor_ColTemplate=Plantilla\r
 DataCollectionEditor_Convert=Convertir en &plantilla...\r
@@ -69,7 +69,7 @@ DataCollectionEditor_CopyJob_Title=Copiar monitor de
 DataCollectionEditor_CreateJob_Error=No es posible crear un nuevo monitor para \r
 DataCollectionEditor_CreateJob_Title=Crear un nuevo monitor para \r
 DataCollectionEditor_Delete=&Eliminar\r
-DataCollectionEditor_DeleteConfirmText=¿Se confirma la eliminación de los monitores seleccionados?\r
+DataCollectionEditor_DeleteConfirmText=\ufffdSe confirma la eliminaci\ufffdn de los monitores seleccionados?\r
 DataCollectionEditor_DeleteConfirmTitle=Eliminar Monitores\r
 DataCollectionEditor_DeleteJob_Error=No es posible eliminar monitores para \r
 DataCollectionEditor_DeleteJob_Title=Eliminar monitores para \r
@@ -80,20 +80,20 @@ DataCollectionEditor_Duplicate=D&uplicar
 DataCollectionEditor_Edit=&Editar...\r
 DataCollectionEditor_Error=<error>\r
 DataCollectionEditor_Move=&Mover a otro(s) nodo(s)...\r
-DataCollectionEditor_NewParam=&Nuevo parámetro...\r
+DataCollectionEditor_NewParam=&Nuevo par\ufffdmetro...\r
 DataCollectionEditor_NewTable=Nue&va tabla...\r
 DataCollectionEditor_OpenJob_Error=No es posible configurar monitores para \r
 DataCollectionEditor_OpenJob_Title=Configurar monitores para \r
-DataCollectionEditor_PartNamePrefix=Configuración de Monitores - \r
+DataCollectionEditor_PartNamePrefix=Configuraci\ufffdn de Monitores - \r
 DataCollectionEditor_ShowFilter=Mostrar &filtro\r
 DataCollectionEditor_TableCreateJob_Error=No es posible crear una nueva tabla de monitores para \r
 DataCollectionEditor_TableCreateJob_Title=Crear una nueva tabla de monitores para \r
-DataCollectionEditor_UnlockJob_Error=No es posible desbloquear configuración del monitor para \r
-DataCollectionEditor_UnlockJob_Title=Desbloquear configuración del monitor para \r
+DataCollectionEditor_UnlockJob_Error=No es posible desbloquear configuraci\ufffdn del monitor para \r
+DataCollectionEditor_UnlockJob_Title=Desbloquear configuraci\ufffdn del monitor para \r
 DciLabelProvider_Active=Activar\r
-DciLabelProvider_CustomSchedule=planificación personalizada\r
-DciLabelProvider_Day=\ día\r
-DciLabelProvider_Days=\ días\r
+DciLabelProvider_CustomSchedule=planificaci\ufffdn personalizada\r
+DciLabelProvider_Day=\ d\ufffda\r
+DciLabelProvider_Days=\ d\ufffdas\r
 DciLabelProvider_Disabled=Desactivado\r
 DciLabelProvider_DT_float=Coma flotante\r
 DciLabelProvider_DT_int32=Entero\r
@@ -103,44 +103,46 @@ DciLabelProvider_DT_uint32=Entero sin signo
 DciLabelProvider_DT_uint64=Entero64 sin signo\r
 DciLabelProvider_NotSupported=No soportado\r
 DciLabelProvider_SourceAgent=Agente NetXMS\r
-DciLabelProvider_SourceCPSNMP=Comprobación SNMP\r
+DciLabelProvider_SourceCPSNMP=Comprobaci\ufffdn SNMP\r
 DciLabelProvider_SourceInternal=Interno\r
 DciLabelProvider_SourcePush=Enviar\r
 DciLabelProvider_SourceSNMP=SNMP\r
+DciLabelProvider_SourceWMI=WMI\r
+DciLabelProvider_SourceILO=iLO\r
 DciLabelProvider_Table=<< TABLA >>\r
 DciLabelProvider_Unknown=<desconocido>\r
-DciList_ColDescr=Descripción\r
+DciList_ColDescr=Descripci\ufffdn\r
 DciList_ColID=ID\r
-DciList_ColParam=Parámetro\r
+DciList_ColParam=Par\ufffdmetro\r
 DciList_JobError=No es posible obtener la lista de monitores para el nodo\r
 DciList_JobTitle=Obtener los valores de los monitores del nodo \r
 DciRemoveConfirmationDialog_Remove=&Eliminar monitores para el nodo \r
 DciRemoveConfirmationDialog_Title=Eliminar Plantilla\r
 DciRemoveConfirmationDialog_Unbind=&Desvincular DCIs de la plantilla\r
-DciRemoveConfirmationDialog_WarningText=Se va a eliminar la plantilla de monitores de un nodo. Indicar cómo deben gestionarse los DCIs relacionados con esta plantilla:\r
+DciRemoveConfirmationDialog_WarningText=Se va a eliminar la plantilla de monitores de un nodo. Indicar c\ufffdmo deben gestionarse los DCIs relacionados con esta plantilla:\r
 DciSelector_JobError=No es posible resolver el nombre del DCI\r
 DciSelector_JobTitle=Resolver el nombre del DCI\r
 DciSelector_None=<ninguno>\r
-EditColumnDialog_ColumnDefinition=Definición de Columna: \r
-EditScheduleDialog_Schedule=Planificación\r
-EditScheduleDialog_Title=Editar Planificación\r
+EditColumnDialog_ColumnDefinition=Definici\ufffdn de Columna: \r
+EditScheduleDialog_Schedule=Planificaci\ufffdn\r
+EditScheduleDialog_Title=Editar Planificaci\ufffdn\r
 EditThresholdDialog_ActEvent=Activar evento\r
 EditThresholdDialog_AvgValue=Valor promedio\r
-EditThresholdDialog_Condition=Condición\r
+EditThresholdDialog_Condition=Condici\ufffdn\r
 EditThresholdDialog_DCError=Error al colectar datos\r
 EditThresholdDialog_DeactEvent=Desactivar evento\r
 EditThresholdDialog_Diff=Diferencia con el valor previo\r
 EditThresholdDialog_EQ=== : igual a\r
 EditThresholdDialog_Event=Evento\r
 EditThresholdDialog_Every=&Cada\r
-EditThresholdDialog_Function=Función\r
+EditThresholdDialog_Function=Funci\ufffdn\r
 EditThresholdDialog_GE=>= : mayor o igual a\r
 EditThresholdDialog_GT=>  : mayor de\r
-EditThresholdDialog_LastValue=Último valor\r
+EditThresholdDialog_LastValue=\ufffdltimo valor\r
 EditThresholdDialog_LE=<= : menor o igual a\r
 EditThresholdDialog_LIKE=Similar a\r
 EditThresholdDialog_LT=<  : menor de\r
-EditThresholdDialog_MeanDeviation=Desviación media\r
+EditThresholdDialog_MeanDeviation=Desviaci\ufffdn media\r
 EditThresholdDialog_NE=\!= : Distinto a\r
 EditThresholdDialog_Never=&Nunca\r
 EditThresholdDialog_NOTLIKE=No similiar a\r
@@ -150,17 +152,17 @@ EditThresholdDialog_Samples=Veces
 EditThresholdDialog_Seconds=segundos\r
 EditThresholdDialog_Sum=Suma de valores\r
 EditThresholdDialog_Title=Editar Umbral\r
-EditThresholdDialog_UseDefault=Configuración por &defecto\r
+EditThresholdDialog_UseDefault=Configuraci\ufffdn por &defecto\r
 EditThresholdDialog_Value=Valor\r
 General_Active=&Activo\r
 General_ClRes=Asociar a un recurso de cluster\r
 General_CustomPort=Personalizar puerto SNMP\r
-General_CustomSchedule=Personalizar planificación\r
+General_CustomSchedule=Personalizar planificaci\ufffdn\r
 General_Data=Dato\r
 General_DataType=Tipo de Dato\r
-General_Description=Descripción\r
+General_Description=Descripci\ufffdn\r
 General_Disabled=&Desactivado\r
-General_DT_float=Número en coma flotante\r
+General_DT_float=N\ufffdmero en coma flotante\r
 General_DT_int32=Entero\r
 General_DT_int64=Entero de 64 bits\r
 General_DT_string=Cadena\r
@@ -168,83 +170,85 @@ General_DT_uint32=Entero sin signo
 General_DT_uint64=Entero sin signo de 64 bits\r
 General_FixedIntervals=Intervalos fijos\r
 General_InterpretRawValue=Interpretar el valor del octeto SNMP como\r
-General_JobError=No es posible actualizar la configuración general del DCI\r
-General_JobTitle=Actualizar la configuración general del DCI\r
+General_JobError=No es posible actualizar la configuraci\ufffdn general del DCI\r
+General_JobTitle=Actualizar la configuraci\ufffdn general del DCI\r
 General_None=<nada>\r
 General_NotSupported=&No soportado\r
 General_Origin=Origen\r
-General_Parameter=Parámetro\r
+General_Parameter=Par\ufffdmetro\r
 General_Polling=Sondeo\r
 General_PollingInterval=Intervalo entre sondeos (segundos)\r
 General_PollingMode=Modo de sondeo\r
 General_ProxyNode=Nodo Proxy\r
-General_RetentionTime=Tiempo de conservación (días)\r
+General_RetentionTime=Tiempo de conservaci\ufffdn (d\ufffdas)\r
 General_Select=&Seleccionar...\r
-General_SNMP_DT_float=Número en coma flotante\r
+General_SNMP_DT_float=N\ufffdmero en coma flotante\r
 General_SNMP_DT_int32=Entero con signo de 32 bits\r
 General_SNMP_DT_int64=Entero con signo de 64 bits\r
-General_SNMP_DT_ipAddr=Dirección IP\r
-General_SNMP_DT_macAddr=Dirección MAC\r
+General_SNMP_DT_ipAddr=Direcci\ufffdn IP\r
+General_SNMP_DT_macAddr=Direcci\ufffdn MAC\r
 General_SNMP_DT_None=Nada\r
 General_SNMP_DT_uint32=Entero sin signo de 32 bits\r
 General_SNMP_DT_uint64=Entero sin signo de 64 bits\r
 General_SourceAgent=Agente NetXMS\r
-General_SourceCPSNMP=Comprobación SNMP\r
+General_SourceCPSNMP=Comprobaci\ufffdn SNMP\r
 General_SourceInternal=Interno\r
 General_SourcePush=Enviar\r
 General_SourceSNMP=SNMP\r
+General_SourceWMI=WMI\r
+General_SourceILO=iLO\r
 General_Status=Estado\r
 General_Storage=Almacenamiento\r
 General_UseCustomPort=Puerto SNMP personalizado:\r
 GeneralTable_Active=&Activo\r
 GeneralTable_ClRes=Asociar a un recurso de cluster\r
 GeneralTable_CustomPort=Personalizar puerto SNMP\r
-GeneralTable_CustomSchedule=Personalizar planificación\r
+GeneralTable_CustomSchedule=Personalizar planificaci\ufffdn\r
 GeneralTable_Data=Dato\r
-GeneralTable_Description=Descripción\r
+GeneralTable_Description=Descripci\ufffdn\r
 GeneralTable_Disabled=&Desactivado\r
 GeneralTable_FixedIntervals=Intervalo fijo\r
-GeneralTable_JobError=No es posible actualizar la configuración general del DCI\r
-GeneralTable_JobTitle=Actualizar la configuración general del DCI\r
+GeneralTable_JobError=No es posible actualizar la configuraci\ufffdn general del DCI\r
+GeneralTable_JobTitle=Actualizar la configuraci\ufffdn general del DCI\r
 GeneralTable_None=<nada>\r
 GeneralTable_NotSupported=&No soportado\r
 GeneralTable_Origin=Origen\r
-GeneralTable_Parameter=Parámetro\r
+GeneralTable_Parameter=Par\ufffdmetro\r
 GeneralTable_Polling=Sondeo\r
 GeneralTable_PollingInterval=Intervalo entre sondeos (segundos)\r
 GeneralTable_PollingMode=Modo de sondeo\r
 GeneralTable_ProxyNode=Nodo Proxy\r
-GeneralTable_RetentionTime=Tiempo de conservación (días)\r
+GeneralTable_RetentionTime=Tiempo de conservaci\ufffdn (d\ufffdas)\r
 GeneralTable_Select=&Seleccionar...\r
 GeneralTable_SourceAgent=Agente NetXMS\r
-GeneralTable_SourceCPSNMP=Comprobación SNMP\r
+GeneralTable_SourceCPSNMP=Comprobaci\ufffdn SNMP\r
 GeneralTable_SourceInternal=Interno\r
 GeneralTable_SourcePush=Enviar\r
 GeneralTable_SourceSNMP=SNMP\r
 GeneralTable_Status=Estado\r
 GeneralTable_Storage=Almacenamiento\r
 GeneralTable_UseCustomSNMPPort=Puerto SNMP personalizado:\r
-LastValues_AutoRefresh=Actualizar &automáticamente\r
+LastValues_AutoRefresh=Actualizar &autom\ufffdticamente\r
 LastValues_Error=<error>\r
-LastValues_PartNamePrefix=Últimos Valores - \r
+LastValues_PartNamePrefix=\ufffdltimos Valores - \r
 LastValues_ShowFilter=Mostrar &filtro\r
-LastValues_UseMultipliers=Utilizar &múltiplos\r
+LastValues_UseMultipliers=Utilizar &m\ufffdltiplos\r
 LastValuesLabelProvider_Error=<< ERROR >>\r
 LastValuesLabelProvider_Giga=\ G\r
 LastValuesLabelProvider_Kilo=\ K\r
 LastValuesLabelProvider_Mega=\ M\r
 LastValuesLabelProvider_OK=OK\r
 LastValuesLabelProvider_Table=<< TABLA >>\r
-LastValuesWidget_ColDescr=Descripción\r
+LastValuesWidget_ColDescr=Descripci\ufffdn\r
 LastValuesWidget_ColID=ID\r
 LastValuesWidget_ColThreshold=Umbral\r
 LastValuesWidget_ColTime=Fecha y Hora\r
 LastValuesWidget_ColValue=Valor\r
 LastValuesWidget_JobError=No es posible recuperar valores DCI del nodo \r
 LastValuesWidget_JobTitle=Recuperar valores DCI del nodo \r
-LastValuesWidget_ShowErrors=Mostrar colección de &errores\r
+LastValuesWidget_ShowErrors=Mostrar colecci\ufffdn de &errores\r
 LastValuesWidget_ShowUnsupported=Mostar monitores &no soportados\r
-LastValuesWidget_UseMultipliers=Utilizar &múltiplos\r
+LastValuesWidget_UseMultipliers=Utilizar &m\ufffdltiplos\r
 OpenEditor_Error=Error\r
 OpenEditor_ErrorText=Error al abrir la vista: \r
 RemoveTemplate_JobError=No es posible eliminar la plantilla\r
@@ -252,28 +256,28 @@ RemoveTemplate_JobTitle=Eliminar plantilla
 SelectAgentParamDlg_CurrentValuePrefix=El valor actual es "\r
 SelectAgentParamDlg_CurrentValueSuffix="\r
 SelectAgentParamDlg_CurrentValueTitle=Valor actual\r
-SelectAgentParamDlg_InstanceMessage=Instancia del parámetro\r
+SelectAgentParamDlg_InstanceMessage=Instancia del par\ufffdmetro\r
 SelectAgentParamDlg_InstanceTitle=Instancia\r
-SelectAgentParamDlg_JobError=No es posible obtener la lista de parámetros soportados\r
-SelectAgentParamDlg_JobTitle=Obtener la lista de parámetros soportados para\r
+SelectAgentParamDlg_JobError=No es posible obtener la lista de par\ufffdmetros soportados\r
+SelectAgentParamDlg_JobTitle=Obtener la lista de par\ufffdmetros soportados para\r
 SelectAgentParamDlg_Query=&Consulta...\r
-SelectAgentParamDlg_QueryError=No es posible obtener el valor del parámetro actual\r
+SelectAgentParamDlg_QueryError=No es posible obtener el valor del par\ufffdmetro actual\r
 SelectAgentParamDlg_QueryJobTitle=Agente para consulta\r
 SelectDciDialog_Title=Select DCI\r
 SelectDciDialog_Warning=Advertencia\r
 SelectDciDialog_WarningMessage=Seleccionar un DCI de la lista y pulsar Aceptar\r
 SelectInternalParamDlg_DCI_AgentStatus=Estado del agente NetXMS\r
-SelectInternalParamDlg_DCI_AvgConfPollerQueue=Tamaño medio de la cola de sondeo de configuraciones durante el último minuto\r
-SelectInternalParamDlg_DCI_AvgDBWriterQueue=Tamaño medio de la cola de peticiones de escritura en la base de datos durante el último minuto\r
-SelectInternalParamDlg_DCI_AvgDCIQueueTime=Tiempo medio de la cola de sondeos DCI durante el último minuto\r
-SelectInternalParamDlg_DCI_AvgDCQueue=Tamaño medio de la cola de peticiones de sondeos DCI durante el último minuto\r
-SelectInternalParamDlg_DCI_AvgStatusPollerQueue=Tamaño medio de la cola de sondeos de estado durante el último minuto\r
+SelectInternalParamDlg_DCI_AvgConfPollerQueue=Tama\ufffdo medio de la cola de sondeo de configuraciones durante el \ufffdltimo minuto\r
+SelectInternalParamDlg_DCI_AvgDBWriterQueue=Tama\ufffdo medio de la cola de peticiones de escritura en la base de datos durante el \ufffdltimo minuto\r
+SelectInternalParamDlg_DCI_AvgDCIQueueTime=Tiempo medio de la cola de sondeos DCI durante el \ufffdltimo minuto\r
+SelectInternalParamDlg_DCI_AvgDCQueue=Tama\ufffdo medio de la cola de peticiones de sondeos DCI durante el \ufffdltimo minuto\r
+SelectInternalParamDlg_DCI_AvgStatusPollerQueue=Tama\ufffdo medio de la cola de sondeos de estado durante el \ufffdltimo minuto\r
 SelectInternalParamDlg_DCI_ChildObjectStatus=Estado del objeto hijo {instancia}\r
-SelectInternalParamDlg_DCI_ConditionStatus=Estado del objeto condición {instancia}\r
+SelectInternalParamDlg_DCI_ConditionStatus=Estado del objeto condici\ufffdn {instancia}\r
 SelectInternalParamDlg_DCI_Dummy=Sin valor\r
-SelectInternalParamDlg_DCI_NextHop=Próximo salto de enrutamiento para la dirección IP {instancia}\r
+SelectInternalParamDlg_DCI_NextHop=Pr\ufffdximo salto de enrutamiento para la direcci\ufffdn IP {instancia}\r
 SelectInternalParamDlg_DCI_Status=Estado\r
-SelectNodeDciDialog_Title=Selección de DCI\r
+SelectNodeDciDialog_Title=Selecci\ufffdn de DCI\r
 SelectNodeDciDialog_Warning=Advertencia\r
 SelectNodeDciDialog_WarningText=Seleccionar un DCI de la lista y pulsar Aceptar\r
 ShowLastValues_Error=Error\r
@@ -284,7 +288,7 @@ TableColumnLabelProvider_int64=Entero64
 TableColumnLabelProvider_string=Cadena\r
 TableColumnLabelProvider_uint32=Entero sin signo\r
 TableColumnLabelProvider_uint64=Entero64 sin signo\r
-TableColumns_Add=&Añadir...\r
+TableColumns_Add=&A\ufffdadir...\r
 TableColumns_ColumnName=Nombre la columna\r
 TableColumns_Columns=Columnas\r
 TableColumns_Delete=&Eliminar\r
@@ -294,27 +298,27 @@ TableColumns_InstanceColumn=Columna instancia
 TableColumns_JobError=No es posible actualizar la tabla de columnas\r
 TableColumns_JobTitle=Actualizar la tabla de columnas del DCI \r
 TableColumns_Name=Nombre\r
-TableColumns_NewColumn=Definición de nueva columna\r
+TableColumns_NewColumn=Definici\ufffdn de nueva columna\r
 TableColumns_OID=OID SNMP\r
 TableColumns_Type=Tipo\r
 TableColumns_WarningText=Introducir un nombre de columna\r
-Thresholds_Add=&Añadir...\r
+Thresholds_Add=&A\ufffdadir...\r
 Thresholds_Delete=&Eliminar\r
 Thresholds_Down=&Bajar\r
 Thresholds_Edit=&Editar...\r
 Thresholds_Event=Evento\r
-Thresholds_Expression=Expresión\r
+Thresholds_Expression=Expresi\ufffdn\r
 Thresholds_Instance=Instancia\r
 Thresholds_JobError=No es posible actualizar los umbrales\r
 Thresholds_JobTitle=Actualizar umbrales para el DCI \r
 Thresholds_ProcessAll=Procesar &todos los umbrales\r
 Thresholds_Thresholds=Umbrales\r
 Thresholds_Up=&Subir\r
-ThresholdSummaryWidget_Condition=Condición\r
+ThresholdSummaryWidget_Condition=Condici\ufffdn\r
 ThresholdSummaryWidget_JobError=No es posible obtener el resumen de umbrales\r
 ThresholdSummaryWidget_JobTitle=Obtener el resumen de umbrales\r
 ThresholdSummaryWidget_Node=Nodo\r
-ThresholdSummaryWidget_Parameter=Parámetro\r
+ThresholdSummaryWidget_Parameter=Par\ufffdmetro\r
 ThresholdSummaryWidget_Since=Desde\r
 ThresholdSummaryWidget_Status=Estado\r
 ThresholdSummaryWidget_Value=Valor\r
@@ -322,8 +326,8 @@ Transformation_DeltaAvgPerMin=Promedio por minuto del valor delta
 Transformation_DeltaAvgPerSec=Promedio por segundo del valor delta\r
 Transformation_DeltaNone=Ninguno (conservar valor original)\r
 Transformation_DeltaSimple=Valor delta sencillo\r
-Transformation_JobError=No es posible actualizar la transformación\r
-Transformation_JobTitle=Actualizar la transformación para el DCI \r
-Transformation_Step1=Paso 1 - cálculo del valor delta\r
-Transformation_Step2=Paso 2 - script de transformación\r
+Transformation_JobError=No es posible actualizar la transformaci\ufffdn\r
+Transformation_JobTitle=Actualizar la transformaci\ufffdn para el DCI \r
+Transformation_Step1=Paso 1 - c\ufffdlculo del valor delta\r
+Transformation_Step2=Paso 2 - script de transformaci\ufffdn\r
 Transformation_Test=&Probar...\r
index d61d4d6..a1ccf99 100644 (file)
@@ -211,6 +211,7 @@ public class General extends PropertyPage
       origin.add(Messages.General_SourceCPSNMP);\r
       origin.add(Messages.General_SourcePush);\r
       origin.add("Windows Performance Counters");\r
+      origin.add(Messages.General_SourceILO);\r
       origin.select(dci.getOrigin());\r
       origin.addSelectionListener(new SelectionListener() {\r
                        @Override\r
index b99bc61..51177ed 100644 (file)
@@ -61,6 +61,7 @@ public class DciLabelProvider implements ITableLabelProvider
                originTexts.put(DataCollectionItem.INTERNAL, Messages.DciLabelProvider_SourceInternal);
                originTexts.put(DataCollectionItem.PUSH, Messages.DciLabelProvider_SourcePush);
                originTexts.put(DataCollectionItem.WINPERF, "Windows Performance Counters");
+               originTexts.put(DataCollectionItem.ILO, Messages.DciLabelProvider_SourceILO);
                
                statusTexts.put(DataCollectionItem.ACTIVE, Messages.DciLabelProvider_Active);
                statusTexts.put(DataCollectionItem.DISABLED, Messages.DciLabelProvider_Disabled);
index ab9dec7..d1ef3b1 100644 (file)
@@ -75,6 +75,19 @@ SocketConnection::~SocketConnection()
  * @return true if connection attempt was successful
  */
 bool SocketConnection::connectTCP(const TCHAR *hostName, WORD port, DWORD timeout)
+{
+   return connectTCP(ResolveHostName(hostName), port, timeout);
+}
+
+/**
+ * Establish TCP connection to given host and port
+ *
+ * @param hostName host name or IP address
+ * @param port port number
+ * @param timeout connection timeout in milliseconds
+ * @return true if connection attempt was successful
+ */
+bool SocketConnection::connectTCP(DWORD ip, WORD port, DWORD timeout)
 {
        m_socket = socket(AF_INET, SOCK_STREAM, 0);
        if (m_socket != INVALID_SOCKET)
@@ -82,7 +95,7 @@ bool SocketConnection::connectTCP(const TCHAR *hostName, WORD port, DWORD timeou
                struct sockaddr_in sa;
                sa.sin_family = AF_INET;
                sa.sin_port = htons(port);
-               sa.sin_addr.s_addr = ResolveHostName(hostName);
+               sa.sin_addr.s_addr = ip;
 
                if (ConnectEx(m_socket, (struct sockaddr*)&sa, sizeof(sa), (timeout != 0) ? timeout : 30000) < 0)
                {
@@ -202,6 +215,18 @@ bool SocketConnection::waitForText(const char *text, int timeout)
        }
 }
 
+/*
+ * Establish TCP connection to given host and port
+ *
+ * @param hostName host name or IP address
+ * @param port port number
+ * @param timeout connection timeout in milliseconds
+ * @return true if connection attempt was successful
+ */
+bool TelnetConnection::connect(const TCHAR *hostName, WORD port, DWORD timeout)
+{
+   return connect(ResolveHostName(hostName), port, timeout);
+}
 
 /**
  * Establish TCP connection to given host and port
@@ -211,9 +236,9 @@ bool SocketConnection::waitForText(const char *text, int timeout)
  * @param timeout connection timeout in milliseconds
  * @return true if connection attempt was successful
  */
-bool TelnetConnection::connect(const TCHAR *hostName, WORD port, DWORD timeout)
+bool TelnetConnection::connect(DWORD ip, WORD port, DWORD timeout)
 {
-   bool ret = SocketConnection::connectTCP(hostName, port, timeout);
+   bool ret = SocketConnection::connectTCP(ip, port, timeout);
 
    if (ret)
    {
@@ -292,6 +317,41 @@ int TelnetConnection::read(char *pBuff, int nSize, DWORD timeout)
    return bytesRead;
 }
 
+
+/**
+ * Read line from socket
+ */
+int TelnetConnection::readLine(char *buffer, int size, DWORD timeout)
+{
+   int numOfChars = 0;
+       int bytesRead = 0;
+   while (true) {
+      bytesRead = read(buffer + numOfChars, 1, timeout);
+      if (bytesRead <= 0) {
+         break;
+      }
+
+      if (buffer[numOfChars] == 0x0d || buffer[numOfChars] == 0x0a)
+      {
+         if (numOfChars == 0) {
+            // ignore leading new line characters
+         }
+         else
+         {
+            // got complete string, return
+            break;
+         }
+      }
+      else
+      {
+         numOfChars++;
+      }
+   };
+
+   buffer[numOfChars] = 0;
+   return numOfChars;
+}
+
 /**
  * Helper fuction to create connected TelnetConnection object.
  *
index 9b43deb..3070fcd 100644 (file)
@@ -85,6 +85,24 @@ static void *GetItemData(DataCollectionTarget *dcTarget, DCItem *pItem, TCHAR *p
                        {
                                *error = DCE_NOT_SUPPORTED;
                        }
+         break;
+      case DS_ILO:
+         if (dcTarget->Type() == OBJECT_NODE)
+         {
+                               TCHAR path[MAX_PARAM_NAME];
+            nx_strncpy(path, pItem->getName(), MAX_PARAM_NAME);
+            TCHAR *param = _tcsrchr(path, _T('/'));
+            if (param != NULL)
+            {
+               *param = 0;
+               param++;
+            }
+                *error = ((Node *)dcTarget)->getItemFromILO(path, param, MAX_LINE_SIZE, pBuffer);
+         }
+         else
+         {
+            *error = DCE_NOT_SUPPORTED;
+         }
          break;
                default:
                        *error = DCE_NOT_SUPPORTED;
index c843b99..d76b8e7 100644 (file)
@@ -422,7 +422,7 @@ void DCObject::setStatus(int status, bool generateEvent)
        if (generateEvent && (m_pNode != NULL) && (m_status != (BYTE)status) && IsEventSource(m_pNode->Type()))
        {
                static DWORD eventCode[3] = { EVENT_DCI_ACTIVE, EVENT_DCI_DISABLED, EVENT_DCI_UNSUPPORTED };
-               static const TCHAR *originName[7] = { _T("Internal"), _T("NetXMS Agent"), _T("SNMP"), _T("CheckPoint SNMP"), _T("Push"), _T("WinPerf"), _T("WMI") };
+               static const TCHAR *originName[7] = { _T("Internal"), _T("NetXMS Agent"), _T("SNMP"), _T("CheckPoint SNMP"), _T("Push"), _T("WinPerf"), _T("iLO") };
 
                PostEvent(eventCode[status], m_pNode->Id(), "dssds", m_dwId, m_szName, m_szDescription,
                          m_source, originName[m_source]);
index 8b64023..c7edf66 100644 (file)
@@ -3378,6 +3378,58 @@ DWORD Node::getInternalItem(const TCHAR *param, DWORD bufSize, TCHAR *buffer)
    return rc;
 }
 
+
+/**
+ * Get value from iLO board
+ */
+DWORD Node::getItemFromILO(const TCHAR *path, const TCHAR *param, DWORD bufSize, TCHAR *buffer)
+{
+   DWORD result = DCE_COMM_ERROR;
+
+   // TODO: remove this check?
+   //if (!(m_dwDynamicFlags & NDF_UNREACHABLE))
+   {
+      TelnetConnection *conn = new TelnetConnection();
+      if (conn->connect(htonl(m_dwIpAddr), 23, 1000))
+      { 
+         if (conn->waitForText(":", 1000)) {
+            conn->writeLine("netxms");
+            if (conn->waitForText(":", 1000)) {
+               conn->writeLine("Riereer8");
+               if (conn->waitForText("iLO->", 1000)) {
+                  TCHAR tmp[1024];
+                  _sntprintf(tmp, 1024, "show -o format=text %s", path);
+                  // TODO: convert to multibyte!!!
+                  conn->writeLine(tmp);
+
+                  while (conn->readLine(tmp, 1024, 500) > 0) {
+                     if (_tcsstr(tmp, _T("iLO->")) != NULL)
+                     {
+                        break;
+                     }
+                     StrStrip(tmp);
+                     int numStrings = 0;
+                     TCHAR **splitted = SplitString(tmp, _T('='), &numStrings);
+                     if (numStrings == 2 && !_tcsicmp(splitted[0], param))
+                     {
+                        nx_strncpy(buffer, splitted[1], bufSize);
+                        result = DCE_SUCCESS;
+                        break;
+                     }
+                  }
+                  conn->writeLine(_T("quit"));
+               }
+            }
+         }
+         conn->disconnect();
+      }
+   }
+
+   DbgPrintf(7, _T("Node(%s)->GetItemFromILO(%s, %s): result=%d"), m_szName, path, param, result);
+
+   return result;
+}
+
 /**
  * Translate DCI error code into RCC
  */
index 758ddbd..e58f1f4 100644 (file)
@@ -1084,6 +1084,7 @@ public:
        DWORD getListFromAgent(const TCHAR *name, StringList **list);
    DWORD getItemForClient(int iOrigin, const TCHAR *pszParam, TCHAR *pszBuffer, DWORD dwBufSize);
    DWORD getTableForClient(const TCHAR *name, Table **table);
+   DWORD getItemFromILO(const TCHAR *path, const TCHAR *param, DWORD bufSize, TCHAR *buffer);
 
        virtual NXSL_Array *getParentsForNXSL();
        NXSL_Array *getInterfacesForNXSL();