Cisco Transport Manager GateWay/CORBA ユーザ ガイド・プログラマ マニュアル Release 6.0
OSS クライアント開発と使用例
OSS クライアント開発と使用例
発行日;2012/02/05 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 7MB) | フィードバック

目次

OSS クライアント開発と使用例

OSS クライアント開発と使用例

この付録では、インターセプタをリストし、NMS を EMS から再同期するための使用例を示します。

「EMS から NMS を再同期するための使用例」

「CTM Gateway/CORBA クライアント開発」

C.1 EMS から NMS を再同期するための使用例

表 C-1 表 C-2 および 表 C-3 に、EMS から NMS を再同期するための使用例を示します。

 

表 C-1 GateWay/CORBA サービスが起動または再起動されたときに NMS が取得する CTM 情報

情報
詳細

名前

NMS は CTM 情報を取得します。

要約

NMS は、すべての EMS アラームと ManagedElement アラーム、および GateWay/CORBA インターフェイスから既存の MultiLayerSubnetwork、ManagedElement、PTP、CTP、SNC、保護グループの情報を取得します。

アクター

NMS

事前条件

NMS は EmsSessionFactory オブジェクトを検索し、EMSMgr_I、MultiLayerSubnetworkMgr_I、
ManagedElementMgr_I、EquipmentInventoryMgr_I、MaintenanceMgr_I、ProtectionMgr_I、および
PerformanceManagementMgr_I インターフェイスへの参照情報を取得します。

開始時期

NMS がすべての CTM 情報を取得する要求を送信したときに開始します。

内容

NMS は、GateWay/CORBA インターフェイスからの次の情報を要求します。

1. NMS は emsMgr::EMSMgr_I::getAllEMSSystemActiveAlarms インターフェイスを使用してすべての EMS アラームを要求します。

2. NMS は emsMgr::EMSMgr_I::getAllTopLevelSubnetworks インターフェイスを使用して CTM 内のすべての MultiLayerSubnetwork を要求します。

CTM は、 MultiLayerSubnetwork の詳細情報の入った MultiLayerSubnetwork_T オブジェクトのリストを返します。

3. 各 MultiLayerSubnetwork_T オブジェクトに対して、NMS は
multiLayerSubnetwork::MultiLayerSubnetworkMgr_I::getAllManagedElements インターフェイスを使用して、同じ MultiLayerSubnetwork に属するすべての ME を要求します。

CTM は、ManagedElement の詳細情報の入った ManagedElement_T オブジェクトのリストを返します。

各 ManagedElement オブジェクトに対して、NMS は使用例「NMS が(再)同期する ManagedElement に固有の情報」を実行します。

4. NMS は emsMgr::EMSMgr_I::getAllTopLevelTopologicalLinks インターフェイスを使用して、 MultiLayerSubnetwork に関連付けられたすべてのトポロジー リンクを要求します。

CTM は、トポロジー リンクの詳細情報の入った TopologicalLink_T オブジェクトのリストを返します。

5. NMS は multiLayerSubnetwork::MultiLayerSubnetworkMgr_I::getAllVLANs インターフェイスを使用して、 MultiLayerSubnetwork に関連付けられたすべての VLAN を要求します。

終了時期

NMS がすべての CTM 情報を取得したときに終了します。

例外

個別のインターフェイス メソッドがスローした例外を参照してください。

事後条件

NMS は CTM と同期を取ります。

NMS は CTM に登録して、CTM の管理対象オブジェクト、新規アラーム、および TCA への変更に関連する通知を取得します。

追跡可能性

--

 

表 C-2 NMS が再同期する ManagedElement に固有の情報

情報
詳細

名前

NMS は ME に固有の CTM 情報を取得します。

要約

NMS は、特定 ME のすべての PTP、CTP、SNC、および保護グループ情報を取得します。

アクター

NMS

事前条件

NMS は ManagedElementMgr_I、EquipmentInventoryMgr_I、MaintenanceMgr_I、ProtectionMgr_I、
および PerformanceManagementMgr_I インターフェイスへの参照を取得します。また、NMS は
ManagedElement 名を取得します。

開始時期

NMS がすべての ME 情報を取得する要求を送信したときに開始します。NMS は、情報を取得する ME の名前を識別します。

内容

NMS は、GateWay/CORBA インターフェイスからの次の情報を要求します。

1. NMS は managedElementManager::ManagedElementManager_I::getAllActiveAlarms インターフェイスを使用して、ME の現在の全アラームを要求します。

2. NMS は equipment::EquipmentInventoryMgr_I::getAllEquipment インターフェイスを使用して、ME のすべての既存機器を要求します。

CTM は、ME の機器ホルダーと機器の詳細情報の入った EquipmentHolder_T オブジェクトのリストを返します。

3. EquipmentorHolder_T オブジェクトで取得する機器情報では、NMS は
equipment::EquipmentInventoryMgr_I::getAllSupportedPTPs インターフェイスを使用して、機器でサポートされているすべての PTP を要求します。

CTM は、SDH_SONET ポート、ServiceState(サービス状態)、LineCode(ライン コード)、FrameFormat(フレーム形式)など、PTP の詳細情報の入った TerminationPoint_T オブジェクトのリストを返します。

4. 各 TerminationPoint_T オブジェクトに対して、NMS は使用例「NMS が(再)同期する終端地点に固有の情報」を実行します。

5. NMS は managedElementManager::ManagedElementManager_I::getAllSNCs インターフェイスを使用して、SNC で開始、SNC で終了、または ME を通過するすべての SNC を要求します。

CTM はレイヤ レート、SNC の状態、SNC の保護状態、aEnd CTP、zEnd CTP など、SNC の詳細情報の入った SubnetworkConnection_T オブジェクトのリストを返します。

6. NMS は protection::ProtectionMgr_I::getAllProtectionGroups インターフェイスを使用して、ME に作成されたすべての保護グループを要求します。

CTM は 1:1、1+1、2F-BLSR、リバーティブ、非リバーティブなど、保護グループの詳細情報の入った ProtectionGroup_T オブジェクトのリストを返します。

終了時期

NMS がすべての ME 固有の情報を取得したときに終了します。

例外

個別のインターフェイス メソッドがスローした例外を参照してください。

事後条件

NMS は ME の情報に関して CTM と同期を取ります。

追跡可能性

--

 

表 C-3 NMS が再同期する終端地点に固有の情報

情報
詳細

名前

NMS は TP に固有の CTM 情報を取得します。

要約

NMS は、PTP および使用中の CTP のすべてのループバック情報とスレッシュホールド情報を SNC によって取得します。

アクター

NMS

事前条件

NMS は ManagedElementMgr_I、MaintenanceMgr_I、および PerformanceManagementMgr_I インターフェイスへの参照を取得します。また、NMS は PTP のリストを取得します。

開始時期

NMS が、PTP および使用中の CTP のすべてのスレッシュホールド情報とループバック情報を取得する要求を送信したときに開始します。NMS は、情報を取得する TP の名前と種類(PTP または CTP)を識別します。

内容

NMS は、GateWay/CORBA インターフェイスからの次の情報を要求します。

1. NMS は maintenanceOps::MaintenanceMgr_I::getActiveMaintenanceOperations インターフェイスを使用して、TP のすべてのループバック情報を要求します。

CTM は、PTP に設定されたループバックのタイプ(設定されている場合)の詳細情報の入った、CurrentMaintenanceOperation_T オブジェクトのリストを返します。CTM は
FACILITY_LOOPBACK と TERMINAL_LOOPBACK の 2 つのタイプのループバックをサポートします。TP にループバックが設定されていない場合は、空のリストが返されます。

2. NMS は performance::PerformanceManagementMgr_I::getTCATPParameter インターフェイスを使用して、特定の TP オブジェクトのすべての PM スレッシュホールドに設定されたスレッシュホールドを要求します。

CTM は、PTP の PM スレッシュホールドの名前と値のすべてのペアに関する詳細情報の入った、TCAParameter_T オブジェクトを返します。

3. TP として指定した各 PTP に対して、NMS は
managedElementManager::ManagedElementManager_I::getContainedInUseTPs インターフェイスを使用して、SNC に属している PTP に含まれるすべての CTP を要求します。

CTM は、SNC に属する CTP の情報と、IPPMMonitor の状態や J1 パスのトレース状態などの関連するプロビジョニングの詳細情報の入った、TerminationPoint_T オブジェクトのリストを返します。

4. 各 CTP オブジェクトに対して、NMS は
performance::PerformanceManagementMgr_I::getTCATPParameter インターフェイスを使用して、スレッシュホールド情報を要求します。

CTM は PTP の PM スレッシュホールドの名前と値のペアに関する詳細情報の入った、TCAParameter_T オブジェクトのリストを返します。

終了時期

NMS がすべての PTP および CTP のループバック情報とスレッシュホールド情報を取得したときに終了します。

例外

個別のインターフェイス メソッドがスローした例外を参照してください。

事後条件

NMS は TP オブジェクトの情報に関して CTM と同期を取ります。

追跡可能性

--

C.2 CTM Gateway/CORBA クライアント開発

CTM GateWay/CORBA では、TeleManagement Forum の Multi-Technology Network Management(MTNM)グループにより定義された Application Programming Interface(API)を実装しています。これらの API は、NMS - EMS 間の通信用に定義されています。NMS では、これらの API を使用するクライアント アプリケーションを開発する必要があります。

次の項では、クライアント アプリケーションの開発に必要なツールについて説明します。また、コード例も示します。

C.2.1 推奨するツール

COBRA クライアントを UNIX または PC プラットフォームで開発する場合は、次のツールを使用します。

Sun Microsystems Java Development Kit (JDK) 1.4.2(www.javasoft.com で入手可能)


) このウェブサイトは、Copyright © 1995-2004, Sun Microsystems, Inc. のサイトです。


JacORB 2.x

C.2.2 通知を受信するクライアントのコード例

一般的な CORBA クライアント アプリケーションでは、次の手順を実行します。


ステップ 1 Object Request Broker(ORB; オブジェクト リクエスト ブローカ)へのクライアント接続を初期化します。

ステップ 2 オブジェクトへの参照を取得します。

ステップ 3 このオブジェクトで操作を呼び出します。

クライアントで CTM GateWay/CORBA からの通知を受信するには、さらに次の手順を実行する必要があります。

ステップ 4 ステップ 2 で、ノーティフィケーション サーバ内の EventChannel オブジェクトへの参照を取得します。

ステップ 5 ConsumerAdmin オブジェクトへの参照を取得します。

ステップ 6 パラメータとして CosNotifyChannelAdmin::STRUCTURED_EVENT を指定し、SupplierAdmin オブジェクトの obtain_notification_push_consumer() を呼び出します。この操作によって、
StructuredProxyPushSupplier への参照が返されます。

ステップ 7 StructuredPushConsumer(OMG で定義)のインスタンスを実装します。

ステップ 8 StructuredProxyPushSupplier オブジェクトの操作 connect_structured_push_consumer() を呼び出し、StructuredPushConsumer 実装オブジェクトをノーティフィケーション チャネルに接続します。

ステップ 9 受信する通知をモニタします。


 

C.2.3 Java コード例

ここでは、クライアント アプリケーションの開発に必要な手順を示す Java コード例を示します。


) これらのコードは例を示すことが目的であり、実際にコンパイルしたコードとは異なる場合があります。これらのコード例は、一部の例外処理を省略しています。


C.2.3.1 クライアント接続の初期化

// Import OMG packages
import org.omg.CORBA.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CosNotifyChannelAdmin.*;
public static void main(String[] args)
{
try {
orb = ORB.init(args, null);
}
catch (SystemException ex) {
// Exception handling
}
}
 

C.2.3.2 ネーミング サービスへの参照の取得

// Get Nameservice reference
NamingContext nsRootContext = null;
try {
org.omg.CORBA.Object objRef =
orb.resolve_initial_references ("NameService");
nsRootContext = NamingContextHelper.narrow (objRef);
}
catch (org.omg.CORBA.ORBPackage.InvalidName inEx) {
// Exception handling
}

C.2.3.3 サポートされているマネージャでの操作のコード例

CTM GateWay/CORBA から操作を実行するには、クライアントがログインするときに CTM クライアントで作成したユーザ名とパスワードを使用する必要があります。CTM GateWay/CORBA では、最大 8 つのユーザ プロファイルを作成できます。

コード内でユーザ名とパスワードを使用して、インベントリを取得できます。次に一般的な手順を示します。


ステップ 1 EMSSessionFactory への参照を解決します。「EMSSessionFactory への参照の取得」を参照してください。

ステップ 2 ユーザ名とパスワードを指定して EMSSession を取得します。「ログインと EmsSession の取得」を参照してください。

ステップ 3 EMSSession を照会し、操作に利用可能なマネージャのリストを取得します。「マネージャ リストの取得」を参照してください。

ステップ 4 リスト内のいずれかのマネージャで適切なメソッドを呼び出します。「EMS Manager での getEMS 操作の実行」を参照してください。


 

C.2.3.3.1 EMSSessionFactory への参照の取得

NameComponent name = new NameComponent[6];
name[0] = new NameComponent(classString,"Class");
name[1] = new NameComponent(vendorString, "Vendor");
name[2] = new NameComponent(emsInstanceString, "EMSInstance");
name[3] = new NameComponent(versionString,"Version");
name[4] = new NameComponent(ctm_sys_id, "EMS");
name[5] = new NameComponent("SessionFactory", "EmsSessionFactory");
try {
org.omg.CORBA.Object obj = nsRootContext.resolve(name);
}
catch (InvalidName inEx) {
// Exception handling
}
catch (NotFound nfEx) {
// Exception handling
}
 

「ネーミング サービスへの参照の取得」の例に従い、ネーミング サービスへの参照を取得します。

C.2.3.3.2 ログインと EmsSession の取得

EmsSessionFactory_I m_emsFactory = EmsSessionFactory_IHelper.narrow(obj);
NmsSession_I csession = new _tie_Session_I(new NmsSessionImpl());
orb.connect(csession);
EmsSession_IHolder sessionHolder = new EmsSession_IHolder();
m_emsFactory.getEmsSession("<userid>", "<password>", csession,sessionHolder);
EmsSession_I emsSession = sessionHolder.value;

C.2.3.3.3 マネージャ リストの取得

managerNames_THolder names = new managerNames_THolder();
emsSession.getSupportedManagers(names);
managers = names.value;
for (i = 0; i < managers.length; i++ )
{
System.out.print("Manager ");
System.out.print(i);
System.out.println(" " + managers[i]);
}

C.2.3.3.4 EMS Manager での getEMS 操作の実行

EMS_T m_ems;
EMS_THolder m_emsHolder = new EMS_THolder();
try {
Common_IHolder mgrHolder = new Common_IHolder();
emsSession.getManager("EMS", mgrHolder);
EMSMgr_I emsMgr = EMSMgr_IHelper.narrow(mgrHolder.value);
emsMgr.getEMS(m_emsHolder);
}
catch (ProcessingFailureException pfe) {
System.out.println("Processing Exception" + pfe.getMessage());
pfe.printStackTrace();
}
m_ems = m_emsHolder.value;
System.out.println("Native EMS Name" + m_ems.nativeEMSName);

C.2.3.4 EventChannel への参照の取得

EventChannel notifChannel;
EventChannelHolder chanHolder = new EventChannelHolder();
try {
Ö
emsSession.getEventChannel(chanHolder);
}
catch (Exception ex){
// handle exceptions
}
notifChannel = chanHolder.value;

C.2.3.5 ConsumerAdmin への参照の取得

//retrieve default consumer admin
try {
ConsumerAdmin cadmin = notifChannel.get_consumeradmin(0);
}
catch (AdminNotFound anfSe) {
// Exception handling
}

C.2.3.6 ProxyPushSupplier の取得

try {
ProxySupplier baseSupplier =
cadmin.obtain_notification_push_supplier(
ClientType.STRUCTURED_EVENT, id);
structuredProxyPushSupplier =
StructuredProxyPushSupplierHelper.narrow(baseSupplier);
}
catch (AdminLimitExceeded aleEx) {
// Exception handling
}

C.2.3.7 StructuredPushConsumer の実装

class StructuredPushConsumerImpl extends _StructuredPushConsumerImplBase
{
StructuredPushConsumerImpl() {
super();
System.out.println("StructuredPushConsumerImpl created.");
}
public void disconnect_structured_push_consumer() {
System.out.println("Disconnect structured push consumer.:");
}
public void push_structured_event(StructuredEvent notification) {
System.out.println("Received notification.");
}
public void offer_change(EventType[] added,
EventType[] removed)
throws InvalidEventType
{
System.out.println("Offer changed.");
}
}

C.2.3.8 StructuredPushConsumerImpl の接続

try {
structuredProxyPushSupplier.connect_structured_push_consumer(
new StructuredPushConsumerImpl());
System.out.println(
"Connected to structured proxy push supplier.");
}
catch (AlreadyConnected acEx) {
// Exception handling
}
catch (TypeError teEx) {
// Exception handling
}