public static bool RefreshFromSNMP(object obj) { CEquipementLogique eqpt = obj as CEquipementLogique; if (eqpt == null) { return(false); } CSpvEquip eqptSpv = CSpvEquip.GetObjetSpvFromObjetTimos(eqpt); if (eqptSpv == null) { return(false); } string strIP = eqptSpv.AdresseIP; string strCommunaute = eqptSpv.CommunauteSnmp; CChampCustom[] lstChamps = eqpt.TousLesChamps; string strOldContexteModif = eqpt.ContexteDonnee.IdModificationContextuelle;; eqpt.ContexteDonnee.IdModificationContextuelle = CSpvChampCustomSNMP.c_contexteModificationRefreshFromSNMP; IRequeteSNMPServeur requeteurServeur = C2iFactory.GetNewObjetForSession("CRequeteSNMPServeur", typeof(IRequeteSNMPServeur), eqpt.ContexteDonnee.IdSession) as IRequeteSNMPServeur; foreach (CChampCustom champ in lstChamps) { CSpvChampCustomSNMP champSNMP = CSpvChampCustomSNMP.GetObjetSpvFromObjetTimos(champ); if (champSNMP != null && champSNMP.OID != null && champSNMP.OID.Length > 0 && champSNMP.FormuleIndex != null) { CContexteEvaluationExpression ctxFormule = new CContexteEvaluationExpression(eqpt); CResultAErreur result = champSNMP.FormuleIndex.Eval(ctxFormule); if (result) { try { int nIndex = Convert.ToInt32(result.Data); string strOid = champSNMP.OID + "." + nIndex.ToString(); CRequeteSnmpOID requete = new CRequeteSnmpOID(strIP, strCommunaute, strOid); result = requeteurServeur.GetValue(requete); if (result) { eqpt.SetValeurChamp(champ, result.Data); } } catch {} } } } eqpt.ContexteDonnee.IdModificationContextuelle = strOldContexteModif; return(true); }
public CResultAErreur SetValueSNMP(CContexteDonnee contexte, object valeur) { CResultAErreur result = CResultAErreur.True; IRequeteSNMPServeur requeteurServeur = C2iFactory.GetNewObjetForSession("CRequeteSNMPServeur", typeof(IRequeteSNMPServeur), contexte.IdSession) as IRequeteSNMPServeur; if (requeteurServeur == null) { result.EmpileErreur(I.T("Can not instanciate SNMP Query server|20001")); return(result); } result = GetRequeteSNMPOID(contexte); if (!result) { return(result); } CRequeteSnmpOID requeteOID = result.Data as CRequeteSnmpOID; if (requeteOID == null) { result.EmpileErreur(I.T("Error while creating OID SNMP QUERY|20005")); return(result); } return(requeteurServeur.SetValue(requeteOID, valeur)); }
////////////////////////////////////////////////////////////////// public static void ModificationsSNMP( CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result) { if (!result) { return; } DataTable table = contexte.Tables[CRelationEquipementLogique_ChampCustom.c_nomTable]; if (table == null) { return; } ArrayList lst = new ArrayList(table.Rows); IRequeteSNMPServeur requeteurServeur = null; foreach (DataRow row in lst) { if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added) { if (row[CObjetDonnee.c_champContexteModification] == DBNull.Value || (string)row[CObjetDonnee.c_champContexteModification] != CSpvChampCustomSNMP.c_contexteModificationRefreshFromSNMP) { CRelationEquipementLogique_ChampCustom relChamp = new CRelationEquipementLogique_ChampCustom(row); CSpvChampCustomSNMP champSNMP = new CSpvChampCustomSNMP(contexte); if (champSNMP.ReadIfExists(new CFiltreData(CSpvChampCustomSNMP.c_champIdChampCustomTimos + "=@1", (int)row[CChampCustom.c_champId]))) { if (!champSNMP.GetOnly) { CSpvEquip eqptSpv = new CSpvEquip(contexte); if (eqptSpv.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1", row[CEquipementLogique.c_champId]))) { string strIP = eqptSpv.AdresseIP; string strCommunaute = eqptSpv.CommunauteSnmp; if (requeteurServeur == null) { requeteurServeur = C2iFactory.GetNewObjetForSession("CRequeteSNMPServeur", typeof(IRequeteSNMPServeur), eqptSpv.ContexteDonnee.IdSession) as IRequeteSNMPServeur; } if (champSNMP != null && champSNMP.OID != null && champSNMP.OID.Length > 0 && champSNMP.FormuleIndex != null) { CContexteEvaluationExpression ctxFormule = new CContexteEvaluationExpression(relChamp.ElementAChamps); CResultAErreur resTmp = champSNMP.FormuleIndex.Eval(ctxFormule); if (resTmp) { try { int nIndex = Convert.ToInt32(result.Data); string strOid = champSNMP.OID + "." + nIndex.ToString(); CRequeteSnmpOID requete = new CRequeteSnmpOID(strIP, strCommunaute, strOid); requeteurServeur.SetValue(requete, relChamp.Valeur); } catch { } } } } } } } } } }