Cisco Unified Provisioning Manager Northbound Interface プログラマー ガイド
トラブルシューティング
トラブルシューティング
発行日;2012/02/26 | 英語版ドキュメント(2010/10/13 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 768KB) | フィードバック

目次

トラブルシューティング

よくある質問

トラブルシューティング

この付録では、トラブルシューティング情報について説明します。

よくある質問

大量の NBI 要求を高速でサーバに送信すると、しばらくして、スロットリングの例外が表示され、送信した要求がサーバで拒否されます。なぜでしょうか。

Provisioning Manager サーバで一度に実行できる要求は 20 だけです。サーバ上にキューイングはありません。制限を超えた要求はスロットリング例外として拒否されます。

NBI syncDomain 要求を使用すると、ドメイン同期化ルールが設定されていないという失敗の通知を受け取ります。どのように対処すればよいですか。

ドメインを同期化する前に、ドメイン同期化ルールを設定する必要があります。ドメイン同期化ルールの設定には NBI 要求は必要ありません。Provisioning Manager ユーザ インターフェイスを使用して実行する必要があります。

ドメイン同期化ルールの設定方法を次に示します。


ステップ 1 Provisioning Manager ユーザ インターフェイスから、[Advanced Setup] > [Policies] > [Rules] を選択します。

ステップ 2 ドメインを選択します。

ステップ 3 [Configure Domain Sync Rules] をクリックします。

ステップ 4 ドメインに適用する同期化ルールを選択します。

[Rules] ページで、ドメインが作成されたら [Customer Domain Template] および [Configure Domain Sync Rules] を選択するとルールがドメインにコピーされます。


 

デバイス、ドメイン、またはサービス エリアを削除する際に、メンテナンス モードで操作する必要があるという例外がスローされます。どのように対処すればよいですか。

デバイス、ドメイン、またはサービス エリアを削除する前に、Provisioning Manager をメンテナンス モードに変更する必要があります。操作モードに変更する場合には NBI 要求は必要ありません。Provisioning Manager ユーザ インターフェイスを使用して実行する必要があります。

Provisioning Manager をメンテナンス モードにする方法を次に示します。


ステップ 1 Provisioning Manager ユーザ インターフェイスから、[System Administration] > [Maintenance Mode] を選択します。

ステップ 2 [Enter Maintenance Mode] を選択します。


 

submitOrder 要求をサーバに送信すると、メンテナンス モードであるという例外が表示されます。どのように対処すればよいですか。

インフラストラクチャ設定オーダーおよび加入者オーダーは通常モード(メンテナンス モードでない)のみで送信されます。

Provisioning Manager を通常モードにする方法を次に示します。


ステップ 1 Provisioning Manager ユーザ インターフェイスから、[System Administration] > [Maintenance Mode] を選択します。

ステップ 2 [Exit Maintenance Mode] を選択します。


 

Provisioning Manager を使用して Cisco Unified Communications Manager のインフラストラクチャ製品をディセーブルにできません。原因は何でしょうか。

Provisioning Manager で一旦選択され true に設定された Cisco Unified Communications Manager の一部の値は false に変更できません。これは Cisco Unified Communications Manager のチェックボックスに表示された値に適用されます。

次に例を示します。

ボイス メール プロファイルでは、IC_isDefault アトリビュートは [Make this the default Voice Mail Profile for the System] チェックボックスに対応しています。IC_isDefault アトリビュートは true から false に変更できません。

ボイス メール パイロットでは、IC_isDefault アトリビュートは true から false に変更できません。

H323 Gateway では、IC_mtpRequired アトリビュートは true から false に変更できません。

オブジェクトを削除および作成することなくサービス エリアから 1 つの加入者ロールを削除するには どうすればよいですか。

メタデータ アクション プロパティを使用して複数の値を持つプロパティから 1 つの設定を削除することができます。

updateServiceArea 要求を NBI が要求するには、メタデータ値に次の項目を指定します。

更新するアトリビュート名。

削除するアトリビュート値。

REMOVE 設定のプロパティ アクション。

1 回のオーダーで複数の電話と複数の回線を作成しました。submitOrder を使用して要求を送信する場合に、どのようにして適切な電話に回線を関連付けられますか。

オーダーにはそれぞれの詳細についてのシーケンス番号があります。オーダーに以前に追加されたサービスに基づいてサービスを追加するには、assocSequence 値をシーケンス番号に設定してアソシエーションを行います。

デバイスを同期化した後に、Provisioning Manager の Cisco Unified Communications Manager で使用できるすべてのディレクトリ番号が表示できません。なぜでしょうか。

Cisco Unified Communications Manager のディレクトリ番号が Cisco Unified Communications Manager の加入者に関連付けられていない場合、syncDevice 要求では Provisioning Manager にアップロードされません。

論理演算子 OR を使用して複数のアトリビュート値の list 要求をフィルタと一緒に送信しました。結果のリストでは指定した最初のアトリビュート値だけしか使用していません。

フィルタ内のアトリビュート値のタイプは配列です。ただし、配列は 1 つのアトリビュート設定に対して複数の値を格納できるように設計されていますが、クエリーで論理演算子 OR に適用するアトリビュート値をすべて格納するようには設計されていません。OR の各値は一意のアトリビュート名/値のペアとして指定する必要があります。

たとえば、Cisco Unity または Cisco Unity Connection の機能を持つすべてのデバイスを返すフィルタとして見なします。

間違っている例を次に示します。

<filter>
<cmn:objectSelectionCriteria>
<cmn:selectionCriteria>
<cmn:item>
<cmn:attributeName>capabilityName</cmn:attributeName>
<cmn:attributeValue>
<co-v1-3:item>CiscoUnity</co-v1-3:item>
 
<co-v1-3:item>CiscoUnityConnection</co-v1-3:item>
 
</cmn:attributeValue>
</cmn:item>
</cmn:selectionCriteria>
<cmn:flag>OR</cmn:flag>
</cmn:objectSelectionCriteria>
<cmn:returnDataCriteria>
<cmn:returnDataType>ALL</cmn:returnDataType>
</cmn:returnDataCriteria>
<cmn:associatedObjectSelectionCriteria/>
<filter>
 

正しい例を次に示します。

<filter>
<cmn:objectSelectionCriteria>
<cmn:selectionCriteria>
<cmn:item>
<cmn:attributeName>capabilityName</cmn:attributeName>
<cmn:attributeValue>
<co-v1-3:item>CiscoUnity</co-v1-3:item>
</cmn:attributeValue>
</cmn:item>
<cmn:item>
 
<cmn:attributeName>capabilityName</cmn:attributeName>
<cmn:attributeValue>
 
<co-v1-3:item>CiscoUnityConnection</co-v1-3:item>
 
</cmn:attributeValue>
</cmn:item>
</cmn:selectionCriteria>
<cmn:flag>OR</cmn:flag>
</cmn:objectSelectionCriteria>
<cmn:returnDataCriteria>
<cmn:returnDataType>ALL</cmn:returnDataType>
</cmn:returnDataCriteria>
<cmn:associatedObjectSelectionCriteria/>
</filter>

get 要求または getOrderSummary 要求を送信するか、cupmApiList に含まれた、通知にデータを返す要求を送信した場合、どのようにしてリストから個別のオブジェクトを抽出できますか。

Axis2 をサポートする Java ではこれに対処する複数の方法があります。次の Java コードの一部の例を参照してください。

// get the arrayOfObject object out of the list
org.ossj.xml.common.v1_3.ArrayOfObject arrayOfObject = cupmApiList.getDataObject();
 
// process each object in the list int sizeArray = arrayOfObject.sizeOfItemArray();
for ( int ix = 0 ; ix < sizeArray ; ix++ ) { XmlObject xmlObject = arrayOfObject.getItemArray(ix); processObject(xmlObject); }
 
void processObject(XmlObject xmlObject) {
// Ror each object in the list, the class, a typed object, and/or the
// node name can be used to determine and cast the object on the list.
//
// Some objects can be done multiple ways, others, sent back as
// documents, must use the typed object OMElement element = new
 
StAXOMBuilder(xmlObject.newXMLStreamReader()).getDocumentElement();
XmlOptions options = new XmlOptions();
options.setLoadReplaceDocumentElement(element.getQName());
typedXmlObject = XmlObject.Factory.parse(xmlObject.newInputStream(), options);
String nodeNameKey = getTypeFromListItem(xmlObject);
// nonimpl way to identify node Class xmlClass = xmlObject.getClass();
if ( xmlClass.equals(com.cisco.cucms.cupm.nbi.v1.impl.CupmApiResultValueImpl.class) ) {
 
// if list contains a apiResult, you may use the result in its value state,
// or you can create a document class and work with the result for more functionality
CupmApiResultValue cupmApiResult = (CupmApiResultValue)
xmlObject; CupmApiResultDocument cupmApiResultDocument = CupmApiResultDocument.Factory.newInstance(); cupmApiResultDocument.setCupmApiResult(cupmApiResult); } else if ( xmlClass.equals(com.cisco.cucms.cupm.nbi.v1.impl.DeviceValueImpl.class) ) {
 
// if list contains a device, you may use the device in its value state,
// or you can create a document class and work with the device for more functionality DeviceValue device = (DeviceValue)xmlObject; DeviceDocument deviceDocument = DeviceDocument.Factory.newInstance(); deviceDocument.setDevice(device);
// This also applies to domain, serviceArea, Subscriber, Order, InventoryItem, Product,
// ServiceDetail, PhoneInfo, String, CupmApiFaultType, CupmApiList } else if ( nodeNameKey.equalsIgnoreCase("EnumerationContextType") ) {
// For Enumeration Object, better to use node name instead of support class so client
// is not limited to the Axis2 implementation of Enumeration EnumerationContextType enumerationContext = (EnumerationContextType)xmlObject; EnumerationContextDocument enumerationContextDocument = EnumerationContextDocument.Factory.newInstance(); enumerationContextDocument.setEnumerationContext(enumerationContext); } else if ( typedXmlObject instanceof OrderSummaryDocument ) {
// OrderSummary comes back as a document so must used the typedXmlObject for casting OrderSummaryDocument orderSummaryDocument = (OrderSummaryDocument)typedXmlObject; if ( ps != null ) ps.println(orderSummaryDocument.toString()); } else if ( typedXmlObject instanceof com.cisco.cucms.cupm.nbi.v1.KeywordListDocument ) {
// KeywordList comes back as a document so must used the typedXmlObject for casting com.cisco.cucms.cupm.nbi.v1.KeywordListDocument keywordListDocument = (com.cisco.cucms.cupm.nbi.v1.KeywordListDocument)typedXmlObject; if ( ps != null ) ps.println(keywordListDocument.toString()); } else { System.out.println("WARNING - unknown class = " + xmlClassName + " node name = " + nodeNameKey ); } }

すべての返されたアトリビュートを使用して getOrder または listOrder を実行すると、一部の設定が最初の submitOrder 要求で渡されたアトリビュート値と一致しません。

オーダーが Provisioning Manager データベースから取得されると、一部の設定(特に、ブール設定)に内部アトリビュート値が返されます。

createServiceArea 要求または submitOrder 要求の作成時に、正しいと思えるアトリビュートが拒否されます。なぜでしょうか。

アトリビュート名は大文字と小文字が区別されます。名前が XSD 文字列と正確に一致しているか確認してください。また、正しいオブジェクトにアトリビュートが定義されているかを確認してダブル チェックしてください。たとえば、createDevice 要求では、デバイスおよびデバイス機能は異なるレベルです。