рдЕрд▓рд╛рд░реНрдордЖрдИрдЖрд░рдкреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдУрдПрд╕рдПрд╕ рд╕реЗ рдЕрд▓рд╛рд░реНрдо рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдирдорд╕реНрддреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рд╡реЗрдм рдкрд░ рдмрд╣реБрдд рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдХреАрд░реНрдг рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реА рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдереЛрдбрд╝рд╛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрдЧрд╣ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд▓рдЧрддреА рд╣реИред

CORBA AlarmIRP рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрдкрдХрд░рдг рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреЗ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЬрд┐рдирд╕реЗ рдореБрдЭреЗ рдирд┐рдкрдЯрдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 3GPP 3G TS 32.106-2 рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдУрдПрд╕рдПрд╕-рдЖрд░рд╕реА рдПрд░рд┐рдХреНрд╕рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рд╡рд░реНрдгрд┐рдд рд╣реИред NetAct Nokia рдФрд░ Huawei M-2000 рдХреЗ рд▓рд┐рдП, рдХреЛрдб рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдорд╛рдирдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╣реЛрдЧрд╛ред рдореИрдВ рдЕрд▓рд╛рд░реНрдо рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкрд╣рд▓реЗ рдХрднреА рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдХреЛрд░рдмрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреБрдж рдХреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреВрдВрдЧрд╛ред

рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЛ 3 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. IOR рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
  2. рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрджрд░реНрднрд┐рдд рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
  3. рдХреЙрд▓рд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрд░реАрдХреЗ

рдЗрд╕рд▓рд┐рдП, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, IOR рдХреЛ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
/var/opt/ericsson/blkcm/data/bulkcm.nameservice
рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░
http: // "рдорд╛рд╕реНрдЯрд░рд╣реЛрд╕реНрдЯ рдЖрдИрдкреА": 80 / ior / ExternalNameService.ior
рд╣рдо рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

private String readIOR() { String mastersvc = "/var/opt/ericsson/blkcm/data/bulkcm.nameservice"; File f = new File(mastersvc); BufferedReader br; String iorContents = null; try { br = new BufferedReader(new FileReader(f)); iorContents = br.readLine(); br.close(); } catch (IOException e) { e.printStackTrace(); } return iorContents; } 

рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджреА рдЧрдИ рд╡рд┐рдзрд┐ рд╣рдореЗрдВ IOR рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ NameService (CORBA рд╢рдмреНрджрд╛рд╡рд▓реА) рдХрд╛ рд▓рд┐рдВрдХ рджреЗрдЧреА, рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ IOR рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рд░рд▓: рд╣рдо рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рджреВрд╕рд░рд╛ рдЪрд░рдг ORB рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг рд╣реИ:

 public void createAlarmObj(){ org.omg.CORBA.Object rootObj = null; NamingContextExt rootNameCon = null; Properties props = new Properties(); props.put("org.omg.CORBA.ORBInitRef", "NameService=" + readIOR()); org.omg.CORBA.ORB orb = ORB.init(new String[0], props); // Resolve the CORBA Naming Service try { rootObj = orb.resolve_initial_references("NameService"); rootNameCon = NamingContextExtHelper.narrow(rootObj); String s = "com/ericsson/nms/fm_cirpagent/AlarmIRP"; //Locate Alarm IRP rootObj = rootNameCon.resolve(rootNameCon.to_name(s)); _alarmIrp = com.ericsson.irp.AlarmIRPSystem._AlarmIRPOperationsHelper.narrow(rootObj); } catch (InvalidName | NotFound | CannotProceed | org.omg.CosNaming.NamingContextPackage.InvalidName e) { e.printStackTrace(); } } 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, get_alarm_list рд╡рд┐рдзрд┐ рд╕реЗ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ 3GPP рд╕реЗ рдЙрдирдХрд╛ рд╢рд╛рд╕реНрддреНрд░ рд╣реИ:
рдпрд╣ рддрд░реАрдХрд╛ рдЕрд▓рд╛рд░реНрдо рдЗрдирдлреЙрд░реНрдореЗрд╢рди рджреЗрддрд╛ рд╣реИред рдЕрдЧрд░ рдЭрдВрдбрд╛ рд╣реИ
рд╕рд╣реА рд╣реИ, рд╕рднреА рд▓реМрдЯреЗ рдЕрд▓рд╛рд░реНрдо рд╕реВрдЪрдирд╛рдПрдБ AlarmInformationSeq рдореЗрдВ рд╣реЛрдВрдЧреА
рдЬрд┐рд╕рдореЗрдВ 0.1 рдпрд╛ рдЕрдзрд┐рдХ рдЕрд▓рд╛рд░реНрдо рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ iter
рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдзреНрд╡рдЬ FALSE рд╣реИ, рддреЛ рдХреЛрдИ рдЕрд▓рд╛рд░реНрдо рд╕реВрдЪрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧреА
рдореЗрдВ рдЕрд▓рд╛рд░реНрдордЗрдиреНрдлреЙрд░реНрдореЗрд╢рдирд╕реЗрдХред IRPAgent рдХреЛ рдЙрдиреНрд╣реЗрдВ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 public void getActiveAlarms(){ BooleanHolder flag = new BooleanHolder(false); // false for iteration com.ericsson.irp.AlarmIRPSystem.AlarmInformationIteratorHolder iter = new com.ericsson.irp.AlarmIRPSystem.AlarmInformationIteratorHolder(); try { _alarmIrp.get_alarm_list(alarmFilter, flag, iter); EventBatchHolder alarmInformation = new EventBatchHolder(); short alarmSize = 100; List<StructuredEvent> alarms = new ArrayList<StructuredEvent>(); boolean haveMoreAlarms = false; do{ if (iter.value != null) { haveMoreAlarms = iter.value.next_alarmInformations(alarmSize, alarmInformation); alarms.addAll(Arrays.asList(alarmInformation.value)); } }while (haveMoreAlarms); for (StructuredEvent alarm: alarms) { alarmPrint(alarm); } } } catch (GetAlarmList | ParameterNotSupported | InvalidParameter | NextAlarmInformations e) { e.printStackTrace(); } } 

рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рд╛рд░реНрдо рдХреА рдПрдХ рд╕реВрдЪреА рд╕реЗ рдпреБрдХреНрдд рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдЬреЛ рддрдм рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЕрд▓рд╛рд░реНрдордкреНрд░рд┐рдВрдЯ (рдЕрд▓рд╛рд░реНрдо) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдбрдИрд╡реЗрдВрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рд╣реЗрдбрд░ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп_рдбреЗрдЯрд╛ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдирд╛рдо рдФрд░ рдореВрд▓реНрдп рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдХреЙрд░реНрдб рднреА рд╣реИред рдЦреЗрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рднреА рдорд╛рдирдХ рдореЗрдВ рд╣реИ:
const string NV_NOTIFICATION_ID = "рдП";
const string NV_CORRELATED_NOTIFICATIONS = "рдмреА";
const string NV_EVENT_TIME = "c";
const string NV_SYSTEM_DN = "d";
const string NV_MANAGED_OBJECT_CLASS = "e";
const string NV_MANAGED_OBJECT_INSTANCE = "f";
const string NV_SPECIFIC_PROBLEM = "i";
...

рдЕрдм рд╣рдо рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЙрджрд╛рд╣рд░рдг рдФрд░ specific_problem рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:

 private void alarmPrint(StructuredEvent alarm){ String result = "" if (alarm.filterable_data != null) { for (Property filterableData: alarm.filterable_data) { String fieldName = filterableData.name; switch (fieldName){ case "f": result = result + filterableData.value.extract_string() + ";"; break; case "i": result = result + filterableData.value.extract_string(); break; } } } System.out.println(result); } 

рдЕрдВрдд рдореЗрдВ, рдкрд░рд┐рдгрд╛рдореА рдорд╕реМрджреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХреЛрдб:

рдкреВрд░реНрдг рдХреЛрдб
 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Properties; import org.omg.CORBA.*; import org.omg.CORBA.ORBPackage.InvalidName; import org.omg.CosNaming.NamingContextExt; import org.omg.CosNaming.NamingContextExtHelper; import org.omg.CosNaming.NamingContextPackage.CannotProceed; import org.omg.CosNaming.NamingContextPackage.NotFound; import org.omg.CosNotification.EventBatchHolder; import org.omg.CosNotification.Property; import org.omg.CosNotification.StructuredEvent; import com.ericsson.irp.AlarmIRPSystem.GetAlarmList; import com.ericsson.irp.AlarmIRPSystem.InvalidParameter; import com.ericsson.irp.AlarmIRPSystem.NextAlarmInformations; import com.ericsson.irp.AlarmIRPSystem.ParameterNotSupported; public class AlarmClient { private com.ericsson.irp.AlarmIRPSystem._AlarmIRPOperations _alarmIrp = null; public static void main(String[] args) { AlarmClient ac = new AlarmClient(); ac.createAlarmObj(); ac.getActiveAlarms(); } private String readIOR() { File f = new File("/var/opt/ericsson/blkcm/data/bulkcm.nameservice"); BufferedReader br; String iorContents = null; try { br = new BufferedReader(new FileReader(f)); iorContents = br.readLine(); br.close(); } catch (IOException e) { e.printStackTrace(); } return iorContents; } public void createAlarmObj(){ org.omg.CORBA.Object rootObj = null; NamingContextExt rootNameCon = null; Properties props = new Properties(); props.put("org.omg.CORBA.ORBInitRef", "NameService=" + readIOR()); org.omg.CORBA.ORB orb = ORB.init(new String[0], props); // Resolve the CORBA Naming Service try { rootObj = orb.resolve_initial_references("NameService"); rootNameCon = NamingContextExtHelper.narrow(rootObj); String s = "com/ericsson/nms/fm_cirpagent/AlarmIRP"; //Locate Alarm IRP rootObj = rootNameCon.resolve(rootNameCon.to_name(s)); _alarmIrp = com.ericsson.irp.AlarmIRPSystem._AlarmIRPOperationsHelper.narrow(rootObj); //System.out.println(_alarmIrp); } catch (InvalidName | NotFound | CannotProceed | org.omg.CosNaming.NamingContextPackage.InvalidName e) { e.printStackTrace(); } } public void getActiveAlarms(){ BooleanHolder flag = new BooleanHolder(false); // false for iteration com.ericsson.irp.AlarmIRPSystem.AlarmInformationIteratorHolder iter = new com.ericsson.irp.AlarmIRPSystem.AlarmInformationIteratorHolder(); try { _alarmIrp.get_alarm_list("", flag, iter); EventBatchHolder alarmInformation = new EventBatchHolder(); short alarmSize = 100; List<StructuredEvent> alarms = new ArrayList<StructuredEvent>(); boolean haveMoreAlarms = false; do{ if (iter.value != null) { haveMoreAlarms = iter.value.next_alarmInformations(alarmSize, alarmInformation); alarms.addAll(Arrays.asList(alarmInformation.value)); } }while (haveMoreAlarms); if (iter.value != null) { for (StructuredEvent alarm: alarms) { alarmPrint(alarm); } } } catch (GetAlarmList | ParameterNotSupported | InvalidParameter | NextAlarmInformations e) { e.printStackTrace(); } } private void alarmPrint(StructuredEvent alarm){ String result = ""; if (alarm.filterable_data != null) { for (Property filterableData: alarm.filterable_data) { String fieldName = filterableData.name; switch (fieldName){ case "f": result = result + filterableData.value.extract_string() + ";"; break; case "i": result = result + filterableData.value.extract_string(); break; } } } System.out.println(result); } } 


рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
java -cp .: / opt / ericsson / fm_core / classes / Alarmirp.jar AlarmClient

рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ: "рдкреНрд░рд╢рдВрд╕рдХ" рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЕрднреА рддрдХ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ NotificationIRP - рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, BulkCmIRP - рдПрдХ рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрджрд┐ред рддрдХрдиреАрдХ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж, рдпрд╣ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╣реИред рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/hi422293/


All Articles