BAC テンプレートの機能
設定テンプレートとは、オブジェクトおよびパラメータの集合です。TR-069 デバイスでは、 InternetGatewayDevice がルート オブジェクトですが、TR-106 では、 Device がルート オブジェクトです。
図5-1 は、TR-069 デバイス構成のスキーマを示しています。スキーマに登場する各要素については、次の各項で説明しています。
図5-1 構成スキーマ
設定テンプレートは、次のコンポーネントで構成されます。
• ObjectInstance :TR-069 CPE ノードのインスタンスを表します。オブジェクトの「名前」を指定する必要があります。
オブジェクトには、別のオブジェクトおよびパラメータを含めることができます。さらに、そのオブジェクトおよびパラメータにも、TR-069 仕様に従って別の要素を含めることができます。
CPE オブジェクトには、次の要素を含めることができます。
–Object:CPE ノードのインスタンスを表します。
–Parameters:CPE パラメータを表します。値のほかに、Notification、Access Control、またはその両方を含める必要があります(「パラメータ」を参照してください)。
–Notification:このパラメータのすべてのレベルにあるすべての子パラメータについて、値の変更の通知をイネーブルにします(「通知」を参照してください)。
–Access Control:自動構成サーバ以外のエンティティ(ユーザ、SNMP、UPnP など)が、このオブジェクトの下にある任意の構成パラメータの値を変更できるかどうかを制御します(「アクセス コントロール」を参照してください)。
• Parameter Dictionary :設定テンプレート内のオブジェクトおよびパラメータを検証するのに使用される定義が含まれています。BAC でサポートされる辞書は、テンプレートごとに 1 つだけです(「パラメータ辞書」を参照してください)。
• Prerequisites :(オプション)デバイスを構成する前に満たされている必要がある条件を示します。この条件には、次の要素を含めることができます。
–MaintenanceWindow:構成をデバイスに適用する時間を指定できます。
–Expressions:構成を適用するための前提条件としてデバイス上のパラメータと一致している必要がある任意のパラメータを指定できます(たとえば、デバイスの特定のソフトウェアまたはハードウェア バージョン)。
前提条件スキーマの図については、図5-3 を参照してください。前提条件オプションの使用方法の詳細については、「前提条件」を参照してください。
(注) 設定テンプレートにエラーが存在すると、そのテンプレートを BAC に追加する操作は失敗します。構成エラーを回避するため、次の事項をすべて確認してください。
• オブジェクト名とパラメータ名がパラメータ辞書に存在している。
• パラメータ値が、パラメータ辞書で指定されたタイプになっている。
• 書き込み可能でないパラメータに、値が設定されていない。ただし、Notification 属性または Access Control 属性(あるいは両方)を設定することはできます。
• システムで BAC カスタム プロパティまたはデバイス プロパティを通じて、代入可能な変数が定義されている。
パラメータ
この項では、設定テンプレート内のパラメータ オブジェクトに関連付けられたスキーマについて説明します(図5-2 を参照)。
図5-2 パラメータ スキーマ
CPE パラメータには、名前と値のペアが含まれます。
名前は、パラメータを識別します。また、ディレクトリ内のファイルと同様の階層構造を持ち、各レベルがドット(.)で区切られています。各レベルは、オブジェクト インスタンスに対応します。オブジェクトには、単一インスタンス(シングルトン)を持つものもあれば、複数インスタンスを持つものもあります。両方のオブジェクト インスタンスのパラメータ リストについては、次の各項で説明しています。
パラメータの値には、TR-069 仕様で定義されたデータ タイプのいずれかを指定できます。このデータ タイプには、 string 、 int 、 unsignedInt 、 boolean 、 dateTime 、および base64 があり、いずれもパラメータ辞書によって検証されます(データ タイプの定義については、 表7-1 を参照してください)。
例5-1 は、パラメータ値の設定方法を示しています。
例5-1 パラメータ値の設定
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tc="urn:com:cisco:bac:common-template"
xmlns="urn:com:cisco:bac:cwmp-template"
xsi:schemaLocation="urn:com:cisco:bac:common-template CommonTemplateConstructs.xsd">
<ParameterDictionary>tr069-cwmp-dictionary.xml</ParameterDictionary>
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Name>PeriodicInformEnable</Name>
<Name>PeriodicInformInterval</Name>
単一インスタンス オブジェクトのパラメータ リスト
次の例は、単一インスタンス(シングルトン)を示しています。
InternetGatewayDevice.UserInterface.
シングルトンのパラメータは、次のように表すことができます。
InternetGatewayDevice.UserInterface.PasswordRequired = true
InternetGatewayDevice.UserInterface.ISPName = SBC
複数インスタンス オブジェクトのパラメータ リスト
TR-069 仕様では、複数インスタンスを持ち、各インスタンスに番号を割り当てることのできるオブジェクトが定義されています。複数インスタンスを持つことのできるオブジェクトを定義するには、パラメータ辞書を使用します。
たとえば、 InternetGatewayDevice.Layer3Forwarding.Forwarding
は複数インスタンス オブジェクトです。
このオブジェクトの 2 つのインスタンスは、次のように表すことができます。
InternetGatewayDevice.Layer3Forwarding.Forwarding.1.Enable = true
InternetGatewayDevice.Layer3Forwarding.Forwarding.2.Enable = false
(注) インスタンス番号はデバイスによって生成されます。パラメータ辞書は、複数インスタンスを持つことのできるオブジェクトを表すときに {i} を使用します。設定テンプレートでは、実際のインスタンス番号を使用して、編集するオブジェクトを示す必要があります(たとえば、
InternetGatewayDevice.WANDevice.1.WANConnectionNumberOfEntries
)。
通知
BAC の Notification 属性を使用すると、デバイスがパラメータ値の変更を DPE に通知できるようになります。通知は、デフォルトでオフになっています。
通知をイネーブルにすると、デバイスは、特定のパラメータの変更値を DPE へのデバイス Inform メッセージに含めるように指定され、さらに特定のパラメータの値が変更されたときは必ず DPE へのセッションを開始するように指定されます。
BAC では、TR-069 仕様で定義されたとおり、次に示す Notification 属性の値がサポートされています。
• Off
:通知はオフに設定されます。
デバイスは、指定されたパラメータの変更を BAC に通知する必要がなくなります。
• Passive
:通知は Passive に設定されます。
指定されたパラメータの値が変更されるたびに、デバイスは、Inform メッセージ内の ParameterList に新しい値を含める必要があります。このメッセージは、BAC が次にセッションを確立したときに送信されます。
• Active
:通知は Active に設定されます。
指定されたパラメータの値が変更されるたびに、デバイスは、BAC とのセッションを開始し、関連付けられた Inform メッセージ内の ParameterList に新しい値を含める必要があります。パラメータの変更が 0 以外の通知設定によって Inform メッセージで送信されるたびに、Event コードの 4 VALUE CHANGE
を Events リストに含める必要があります。
(注) 特定のパラメータに通知を設定しようとしたときに、その設定が不適切と見なされた場合(たとえば、設定対象が、連続的に変化する統計の場合)、デバイスは notification request rejected
エラーを返します。
通知の設定
次の例は、Notification 属性の設定方法を示しています。
この例では、 UserInterface
オブジェクトの設定ファイルを定義および生成し、すべてのパラメータに対して通知を Active
に設定します。 ISPName
パラメータは、この通知設定を無効にして Passive
に設定します。
<!--Set Notification of object InternetGatewayDevice.UserInterface.-->
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="UserInterface">
<Notification>Active</Notification> <!-- applies to all parameters under this
<Name>PasswordRequired</Name>
<Name>WarrantyDate</Name>
<Value>2001-02-23T09:45:30+04:30</Value>
<Notification>Passive</Notification> <!--applies to only this parameter-->
<Value>www.sbc.com</Value>
アクセス コントロール
BAC のアクセス コントロールは、CPE の AccessControl 属性を通じてイネーブルになります。この属性は、設定テンプレートを使用して制御できます。CPE パラメータの変更は、変更アクセスを許可するようにアクセス コントロールが設定されていれば、LAN 自動構成プロトコルを介して行うことができます。たとえば、 AccessControl 属性が Subscriber
に設定されていれば、LAN 上の加入者はパラメータ値を変更できます。
AccessControl 属性の値は、特定のパラメータへの write
アクセス権が付与されたエンティティを 0 個以上配列したものになります。エンティティが示されていない場合、BAC から実行できるのはパラメータ値の更新だけです。BAC では、TR-069 仕様に従って、このリストで Subscriber エンティティだけを定義します。その結果、LAN 上の加入者は、LAN 側の DSL CPE Configuration プロトコルや UPnP プロトコルなどを介して、 write
アクセスを実行できるようになります。
アクセス コントロールの設定
次の例は、BAC で設定テンプレートを使用してアクセス コントロールを設定する方法を示しています。
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<AccessControl> <!--Allow LAN-side updates of this object and parameters under it -->
<Entity>Subscriber</Entity>
<Name>PeriodicInformEnable</Name>
<Name>PeriodicInformEnable</Name>
<AccessControl/> <!-- Allow updates only from ACS (BAC) -->
前提条件
BAC テンプレートには、前提条件オプションが含まれます。このオプションは、デバイスを構成するに前に満たされている必要がある条件を示します。たとえば、前提条件として、構成を適用するデバイスが特定のハードウェアまたはソフトウェア バージョンの要件を満たす必要があることを指定できます。
前提条件ルールは、命令に組み込まれ、DPE に送信されます。次に、DPE が、必要に応じてデバイスに問い合せ、前提条件が一致するかどうかを判別します。
図5-3 は、前提条件オプションのスキーマを示しています。
図5-3 前提条件スキーマ
前提条件を使用すると、次の要素によって構成の生成を操作することができます。
• Expressions
• MaintenanceWindow
式
式は、デバイス プロパティの情報を使用する条件となります。式には、Parameters、InformParameters、または rpcArguments を使用できます。式は、前提条件とファームウェア ルールの内部で使用され、デバイスが BAC と交信して構成を取得するときに処理されます。指定した式が true と評価された場合、条件は満たされ、対応する構成またはファームウェア ルールがデバイスに適用されます。詳細については、「条件の使用方法」を参照してください。
Prerequisites タグには、式を 0 個以上含めることができます。
MaintenanceWindow
MaintenanceWindow 設定を使用すると、特定の構成を特定の CPE に適用する期間を指定できます。この評価は、デバイス交信時に DPE で実行され、その結果に応じて DPE ローカル時間が使用されます。
(注) DPE が動作するサーバに、タイム サーバ(NTP など)との自動同期を設定しておく必要があります。
MaintenanceWindow は次の要素で構成されます。
• StartTime :保守期間の開始を示す時間値を指定します。この値は、 hh:mm:ss として定義されます。
• Duration :構成を適用できる StartTime からの期間を示す時間値を指定します。この値は、 hh:mm として定義されます。
• DayOfWeek :構成を適用できる曜日を指定します。このタグがない場合は、すべての曜日でルールが有効になります。このタグはオプションです。
これらの要素を使用すると、このルールを実行できる期間を指定できるため、構成のアップグレード作業を、加入者が就寝している可能性が最も高い深夜に実行するように制限できます。
Prerequisites タグには、0 個または 1 個の MaintenanceWindow を含めることができます。
例5-2 MaintenanceWindow の設定
次の例では、 StartTime 、 Duration 、および DayOfWeek タグの値によって、このルールが有効になる期間を定義しています。このテンプレートは、毎週月曜、火曜、および金曜の午前 1 時から 5 時間にわたって有効になります。
<StartTime>01:00:00</StartTime>
<Duration>05:00</Duration>
<DayOfWeek>Monday</DayOfWeek>
<DayOfWeek>Tuesday</DayOfWeek>
<DayOfWeek>Friday</DayOfWeek>
MaintenanceWindow 期間のデバイス交信
MaintenanceWindow には、その期間にデバイスが BAC と交信することを保証するという重要な概念があります。
特定の日時に DPE と交信するようにデバイスを構成するには、設定テンプレートで PeriodicInformTime 変数の値を設定します。さらに、 RandomDateTimeInRange タグで、デバイスが BAC と交信できる期間を指定します。
MaintenanceWindow 期間に BAC と交信するようにデバイスを設定する方法については、例5-3 を参照してください。
例5-3 MaintenanceWindow 期間に BAC と交信するためのデバイスの設定
次の例では、2007 年 1 月 1 日の午前 3 ~ 4 時にデバイスが初めて BAC と交信します。最初の交信後、デバイスは引き続き 30 分ごとに BAC と交信します。
• デバイスが Inform メソッド コールを使用してデバイス情報を BAC に定期的に送信することを示すため、 PeriodicInformEnable
を true に設定します。
• 30 分ごとに BAC との交信を試みるようデバイスに要求するため、 PeriodicInformInterval
を 30 分(1,800 秒)に設定します。この期間は、 PeriodicInformEnable
が true の場合に、デバイスが BAC との交信を試みる時間間隔となります。
• PeriodicInformTime
には、デバイスが BAC との交信を開始する日付および時刻を設定します。
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Name>PeriodicInformEnable</Name>
<Name>PeriodicInformInterval</Name>
<Name>PeriodicInformTime</Name>
2006-01-27T01:00:00Z+03:00
RandomizationIntervalMinutes>
</RandomizationIntervalMinutes>
PeriodicInformInterval の詳細については、DSL Forum の TR-069 に関する Technical Report を参照してください。
(注) ファームウェアのアップグレードも同様の方法で開始できます。ファームウェアのアップグレードが実行されるのは、通常、特定の期間だけです。MaintenanceWindow オプションを設定してファームウェア ルール テンプレートを定義したら、管理者のユーザ インターフェイスを使用してファームウェア ルール テンプレートをサービス クラス オブジェクトに関連付けます。この作業が完了すると、ファームウェア ルールが DPE にプッシュされます。DPE は、ファームウェア ルールを評価し、ファームウェア アップグレードが特定の期間に確実に実行されるようにします。
前提条件の設定
この項では、前提条件オプションの設定方法について説明します。
例5-4 前提条件の設定
この例で、前提条件は、午前 1 時から 5 時間にわたってこのテンプレートが有効になることを示しています。このテンプレートは、この期間に BAC と交信するデバイスのうち、 EventCode
が 1 BOOT に、製造元が Acme, Inc に設定されているデバイスすべてに適用できます。
<StartTime>01:00:00</StartTime>
<Duration>5:00</Duration>
<InformParameterName>InternetGatewayDevice.DeviceInfo.EventCode</
InformParameterName>
<Operator>match</Operator>
<ParameterName>InternetGatewayDevice.DeviceInfo.Manufacturer</ParameterName>
<Operator>matchIgnoreCase</Operator>
設定テンプレートのオーサリング
BAC では、テンプレート構成体を使用して、1 つのテンプレートから多数のデバイス用にカスタマイズされた構成を作成するための命令を生成することができます。テンプレートからカスタム構成を作成するには、パラメータ代入や、テンプレートの内容に関する条件付きのインクルードまたは除外を使用します。これらの機能は、BAC プロパティ階層の値によって制御されます。テンプレートには他のテンプレートを含めることができます。このメカニズムにより、共通の構成を再利用できます。
サービス クラスでテンプレート ファイルを参照する前に、管理者のユーザ インターフェイスまたは API を使用して、そのファイルを RDU に追加しておく必要があります。
(注) テンプレート内の XML 要素は、次の 2 つのグループに分類されます。
• 先頭に tc が付いていない要素は、設定テンプレートに固有のものです。
• 先頭に tc が付いている要素は、設定テンプレートとファームウェア ルール テンプレートに共通した汎用構成体です。
ルート要素として Configuration
を含む設定テンプレートは、例5-5 のような構造に従う必要があります。
例5-5 サンプルの設定テンプレート
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tc="urn:com:cisco:bac:common-template"
xmlns="urn:com:cisco:bac:cwmp-template"
xsi:schemaLocation="urn:com:cisco:bac:common-template CommonTemplateConstructs.xsd">
<StartTime>01:00:00</StartTime>
<Duration>2:30</Duration>
<ParameterName>InternetGatewayDevice.DeviceInfo.Manufacturer</ParameterName>
<Operator>matchIgnoreCase</Operator>
<ParameterDictionary>tr069-cwmp-dictionary.xml</ParameterDictionary>
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Name>PeriodicInformEnable</Name>
<Name>PeriodicInformInterval</Name>
設定テンプレートでは次の機能がサポートされています。
• パラメータ代入: VAR()
構成体を使用して、BAC プロパティ階層から XML 要素内容および要素属性に値を代入します(詳細については、「パラメータ代入の使用方法」を参照してください)。
• インクルード:再利用可能なテンプレートの抜粋集を作成します。インクルードを使用すると、多くのサービス クラスで共通のオプションを定義する場合に、複数のテンプレートでオプションを重複させる必要がなくなり、便利です(詳細については、「インクルードの使用方法」を参照してください)。
• 条件:テンプレートの内部でテキスト ブロックを含めるか、または除外します。条件文で囲むことのできるテキスト ブロックは、パラメータおよびオブジェクト インスタンス要素に制限されています(詳細については、「条件の使用方法」を参照してください)。
カスタム プロパティ
BAC のプロパティを使用すると、API を介して、BAC に格納されているデータにアクセスできます。対応するオブジェクトのプロパティを使用し、API を介して、事前プロビジョニングされたデータ、検出されたデータ、およびステータス データを取得することができます。また、プロパティを使用すると、BAC を適切な粒度で(システム レベルからデバイス グループおよび個々のデバイスのレベルまで)設定できます。詳細については、「プロパティ階層」を参照してください。
カスタム プロパティを使用すると、RDU データベースに保存される追加のカスタマイズ可能なデバイス情報を定義できます。カスタム プロパティは、通常、設定テンプレートおよびファームウェア ルール テンプレートにパラメータ値を代入するときに使用します。テンプレート パーサーは、階層の下から上にプロパティを検索し(最初はデバイス、次にプロビジョニング グループ、サービス クラス、デバイス タイプ、およびシステム デフォルトの順)、テンプレート オプション構文に変換します。 VAR()
構成体を使用したテンプレート パラメータの代入の詳細については、次の項を参照してください。
例5-6 デバイスからのユーザ名またはパスワードの取得
次の例は、テンプレートを使用して、さまざまなレベルからプロパティを取得する方法を示しています。たとえば、デバイスから資格情報のユーザ名とパスワードを取得します。
<ParameterDictionary>tr069-cwmp-dictionary.xml</ParameterDictionary>
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Name>PeriodicInformEnable</Name>
<Name>PeriodicInformInterval</Name>
<Notification>Active</Notification>
<Name>ConnectionRequestUsername</Name>
<Value>VAR(name=/dt/username, defaultValue="User")</Value>
<Name>ConnectionRequestURL</Name>
<Value>VAR(name=/dt/pk, defaultValue="http://testURL")</Value>
管理者のユーザ インターフェイスからカスタム プロパティを設定するには、 Configuration > Custom Property タブの順に選択します。Add Custom Property ページを使用して、カスタム プロパティを追加または削除します。詳細については、「カスタム プロパティの設定」を参照してください。
注意 テンプレートが参照するカスタム プロパティを削除すると、RDU がデバイス用の命令の生成に失敗します。
パラメータ代入の使用方法
設定テンプレートからカスタム構成を作成するには、 VAR()
構成体を使用して、BAC プロパティ階層からテンプレートに値を代入します。 VAR()
構成体は、XML 要素値または要素属性の中に表示できます。また、この構成体を使用して、すべてまたは一部の値を代入することもできます。
次のリストは、BAC でサポートされている、パラメータ代入用の構成体を示しています。
• XML 要素内容に代入する BAC プロパティ値
• XML 要素属性に代入する BAC プロパティ値
• デフォルト値
• 部分的な XML 要素内容
• 特殊文字を含む値
構文の説明
VAR(token=someChar, name=someProperty, defaultValue=someValue)
• token: 後続のフィールドを区切る文字を指定します。この要素はオプションで、デフォルトではカンマ(,)に設定されています。
(注) デフォルト値にカンマ(,)が含まれている場合は、VAR()
構成体を開始するときに、トークン文字を指定してください。このトークンは、デフォルト値の中に表示されないものにする必要があります。また、トークン文字の後ろに VAR
終了ブラケットがあることを確認してください。
• name :代入するカスタム プロパティの名前、または参照する Standard Device プロパティの名前を指定します。
• defaultValue :参照するプロパティを使用できない場合に使用する値を指定します。
例5-7 BAC カスタム プロパティへの値の設定
<Value>VAR(name=/cpe/version, defaultValue=4)</Value>
例5-8 Standard Device プロパティの参照
<Value>VAR(name=/IPDevice/connectionRequestPath, defaultValue="http://test")</Value>
(注) /IPDevice/connectionRequestPath の API 定数は、IPDeviceKeys.CONNECTION_REQUEST_PATH
です。
例5-9 defaultValue
とカンマの併用
<Value>VAR(token=;;name=/cpe/usrStr; defaultValue=4,5;)</Value>
例5-10 BAC プロパティに基づいた文字列値の作成
<Value>CWMP_VAR(name=/cpe/version, defaultValue=4).bin</Value>
cpe/version
が 1-08
の場合、値は CWMP_1-08.bin
になります。
インクルードの使用方法
インクルード ファイルを使用すると、再利用可能なテンプレートの抜粋集を作成できます。このファイルを使用すると、多くのサービス クラスで共通のオプションを定義する場合に、複数のテンプレートでオプションを重複させる必要がなくなり、便利です。
特定のファイルの内容をテンプレートに含めるには、 tc:include 構成体を使用します。インクルードするファイルの内容をホスト テンプレートに挿入すると、ホスト テンプレートで指定されたパラメータ辞書によって、挿入後のテンプレートの内容が検証されます。
(注) インクルードするテンプレートで使用されているオブジェクトおよびパラメータが、ホスト テンプレートと同じ辞書で定義されていない場合は、命令の生成中にパラメータの検証が失敗します。
tc:Include 要素は href 属性を指定します。 href は、ホスト テンプレートにインクルードする BAC テンプレート ファイルの名前を示します。テンプレートでインクルード ディレクティブを使用する場合は、二重引用符(")を使用します。
(注) インクルード ファイルとテンプレートのファイル タイプが一致していることを確認してください。たとえば、設定テンプレートを追加する場合は、インクルードするファイルすべてが Configuration Template ファイル タイプになっている必要があります。
例5-11 インクルード ファイル
次の例は、ホスト テンプレートと、インクルードするテンプレートの内容を示しています。
インクルードするテンプレート: informInterval.xml
<!-- enable and set Periodic Inform value -->
<tc:Template :xsi="http://www.w3.org/2001/XMLSchema-instance" :tc="urn:com:cisco:bac:common-template" ="urn:com:cisco:bac:cwmp-template" :schemaLocation="urn:com:cisco:bac:common-template CommonTemplateConstructs.xsd">
<ParameterDictionary>tr069-cwmp-dictionary.xml</ParameterDictionary>
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Name>PeriodicInformEnable</Name>
<Name>PeriodicInformInterval</Name>
ホスト テンプレート: cwmp-config.xml
<!-- set Periodic Inform value based on content of informInterval-cwmp.xml -->
<!-- set ManagmentServer.URL -->
<tc:Template :xsi="http://www.w3.org/2001/XMLSchema-instance" :tc="urn:com:cisco:bac:common-template" ="urn:com:cisco:bac:cwmp-template" :schemaLocation="urn:com:cisco:bac:common-template CommonTemplateConstructs.xsd">
<ParameterDictionary>tr069-cwmp-dictionary.xml</ParameterDictionary>
<tc:include href="informInterval.xml"/>
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Value>http://10.44.64.200:9595/acs</Value>
インクルードするファイルを挿入した後のテンプレート: informInterval.xml
<!-- set ManagmentServer.URL -->
<tc:Template :xsi="http://www.w3.org/2001/XMLSchema-instance" :tc="urn:com:cisco:bac:common-template" ="urn:com:cisco:bac:cwmp-template" :schemaLocation="urn:com:cisco:bac:common-template CommonTemplateConstructs.xsd">
<ParameterDictionary>tr069-cwmp-dictionary.xml</ParameterDictionary>
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Name>PeriodicInformEnable</Name>
<Name>PeriodicInformInterval</Name>
<ObjectInstance name="InternetGatewayDevice">
<ObjectInstance name="ManagementServer">
<Value>http:// 10.44.64.200:9595/acs</Value>
条件の使用方法
BAC では、テンプレート構成体の強力な条件式を使用して、構成の最終的なカスタマイズを行うことができます。
条件式の構成体を使用すると、テンプレートの内部でテキスト ブロックを含めるか、または除外することができます。この構成体の要素は、 tc:if 、 tc:choose 、および tc:when です。 tc:if 構成体は、単純な単一条件の場合に使用します。論理的な if...else if...else 構成体の場合は、 tc:choose 、 tc:when 、および tc:otherwise の組み合せを使用します。 tc:if および tc:when 構成体には、 test 属性が必要です。 test 属性とは、評価可能な式のことで、結果のオブジェクトは、ブール演算子( true または false )に変換できます。
tc:choose 要素は、想定された選択肢の中から 1 つを選択します。この要素には、一連の tc:when 要素と、それに続くオプションの tc:otherwise 要素が含まれます。各 tc:when 要素は、単一属性の test を持ちます。この属性は、式を指定します。
tc:when 要素と tc:otherwise 要素の内容は、有効なテンプレート セグメントです。 tc:choose 要素が処理されると、次に、各 tc:when 要素がテストされます。このテストでは、式が評価され、結果のオブジェクトがブール演算子に変換されます。テストで true となった最初の tc:when 要素の内容だけがインスタンス化されます。 tc:when が true にならなかった場合は、 tc:otherwise 要素の内容がインスタンス化されます。 tc:when 要素が true にならなかった場合、 tc:otherwise 要素が示されていないときは、何も作成されません。
(注) 式の内部でリテラル文字列を区切るには、一重引用符(')または二重引用符(")を使用します。ただし、テンプレート プロセッサは、引用符(' または ")を属性の終端として解釈します。この問題を避けるため、引用符は文字参照(" または ')として入力します(表5-2 を参照してください)。一方、属性を二重引用符(")で区切る場合は、式の内部で一重引用符(')を使用できます(その逆も可能です)。
表5-2 は、この BAC リリースでサポートされる条件テンプレート構成体を示しています。
表5-2 BAC でサポートされる条件テンプレート構成体
条件文 |
If |
条件文 |
If...else if...else |
条件文 |
or |
条件式 |
and |
条件式 |
lessThan |
条件式 |
lessThanEqual |
条件式 |
greaterThan |
条件式 |
greaterThanEqual |
条件式 |
contains、notContains |
条件式 |
containsIgnoreCase、notContainsIgnoreCase |
条件式 |
equals、notEquals |
条件式 |
equalsIgnoreCase、notEqualsIgnoreCase |
XML では、左山カッコ(<)とアンパサンド(&)はサポートされていません。代わりに、定義済みのエンティティ( 表5-3 を参照)を使用してください。
表5-3 BAC における XML 定義
|
|
<(小なり) |
< |
<=(小なりまたは等しい) |
<= |
>(大なり) |
> |
>=(大なりまたは等しい) |
>= |
&(アンパサンド) |
& |
'(アポストロフィ) |
' |
"(二重引用符) |
" |
次の例は、さまざまな条件式を示しています。
例5-12 数値のテスト条件
数値として 100 を使用:
<tc:if test="VAR(name=/cpe/version, defaultValue=20) > 100">
例5-13 文字列のテスト条件
文字列として 100 を使用:
<tc:if test="VAR(name=/cpe/version, defaultValue=20) > '100'">
(注) 両者を数値として比較した場合、20 は 100 よりも「小なり」です。しかし、演算子(>)と文字列を組み合せて、文字列として比較した場合、20 は 100 よりも「大なり」(>)となります。
例5-14 BAC プロパティ内のテキスト検索
テキストとして cwmp
を使用:
<tc:if test="contains(VAR(name=/cpe/UsrStr, defaultValue=linksys), 'cwmp')">
例5-15 一重引用符を含むテキストの検索
cwmp's test
を使用:
<tc:if test="contains(VAR(name=/cpe/UsrStr, defaultValue=linksys), "cwmp's test")">
例5-16 二重引用符を含むテキストの検索
cwmp
test を使用:
<tc:if test="contains(VAR(name=/cpe/UsrStr, defaultValue=linksys), 'cwmp "test"')">
条件文で囲むことのできるテキスト ブロックは、 Parameter
要素と Object
要素に制限されています
例5-17 選択肢からの選択
次の例は、 tc:choose と tc:when を使用する場合の構文を示しています。
<tc:when test="VAR(name=/cpe/version,defaultValue=11) > 12">
<Name>UpgradeAvailable</Name>
<tc:when test="VAR(name=/db/version,defaultValue=15) > 14">
<Name>UpgradeAvailable</Name>
<Name>UpgradeAvailable</Name>
設定ユーティリティの使用方法
設定ユーティリティを使用すると、TR-069 テンプレート ファイル(設定およびファームウェア ルール)のテスト、検証、および表示を行うことができます。これらの作業は、独自の設定ファイルに関する命令を正常に展開するために重要です(テンプレートの詳細については、「設定テンプレートのオーサリング」を参照してください)。
設定ユーティリティは、RDU をインストールし、ユーティリティを BPR_HOME/rdu/bin ディレクトリにインストールしたときにのみ利用可能です。
この項のすべての例では、RDU が運用中で、次の条件が適用されていることを前提にしています。
• BAC アプリケーションは、ホームディレクトリ( /opt/CSCObac )にインストールされています。
• RDU ログイン名は admin です。
• RDU ログイン パスワードは changeme です。
(注) この項の例では、一部が出力例にとって重要でない場合に、その部分を省略して切り詰めていることがあります。その場合は、例中のサマリーの直前に省略記号(...)を示しています。
この項では、次のトピックについて取り上げます。
• 「設定ユーティリティの実行」
• 「BAC へのテンプレートの追加」
• 「ローカル テンプレート ファイルの XML 構文の検証」
• 「BAC に格納されているテンプレートの XML 構文の検証」
• 「ローカル テンプレート ファイルのテンプレート処理のテスト」
• 「BAC に格納されているテンプレートのテンプレート処理のテスト」
• 「BAC テンプレート ファイルとデバイスのテンプレート処理のテスト」
設定ユーティリティの実行
以降の手順と例で、「設定ユーティリティを実行する」というフレーズは、指定されたディレクトリから runCfgUtil.sh コマンドを入力することを意味します。設定ユーティリティを実行するには、 BPR_HOME/rdu/bin ディレクトリから次のコマンドを実行します。
利用可能な options は、次のとおりです。
• -cwmp :入力ファイルを CWMP 技術の設定テンプレート ファイルとして処理することを指定します。-cwmp は -a オプションと一緒に使用します。
• -a { sc | gc }:必要なアクションを指定します。次のどちらかを指定できます。
– sc :構文チェックで XML テンプレートおよび辞書が整形式であるかどうかをテストするように指定します。 sc は -l オプションと一緒に使用します。
– gc :Instruction Generation Service(IGS)と同じ方法で設定テンプレートを処理します。 gc は、( -l および -data )オプションまたは( -l および -i )オプションと一緒に使用します。
• -l filename :入力ファイルがローカル ファイル システムにあることを示します。たとえば、入力ファイルの名前が any_file の場合は、 -l any_file と入力します。
(注) -l を -r オプションと同時に使用することはできません。
• -o filename :テンプレート処理の出力を XML 形式で指定のファイルに保存します。たとえば、出力を op_file という名前のファイルに保存するには、 -o op_file と入力します。この要素はオプションです。
• -i device id :テンプレートの処理中に変数代入用に使用するデバイスを指定します。変数値は、デバイスのプロパティを使用して取得されます。このオプションは -r オプションと一緒に使用します。
• -r filename :RDU に格納されているテンプレートの名前を指定します。このオプションは、 -l オプションの代わりに使用します。
• -u username :RDU に接続するときに使用するユーザ名を指定します。
• -p password :RDU に接続するときに使用するパスワードを指定します。
• -firmware :入力ファイルがファームウェア ルール テンプレートであることを指定します。このオプションがない場合は、設定テンプレートと見なされます。
BAC へのテンプレートの追加
設定ユーティリティを使用して、BAC テンプレートをテストするには、次の手順に従います。
ステップ 1 「設定テンプレートのオーサリング」の説明に従い、テンプレートを作成します。テンプレートに他のテンプレートを含める場合は、参照されるテンプレートすべてが同一のディレクトリにあることを確認します。
ステップ 2 ローカル ファイル システムで設定ユーティリティを実行します。テンプレートの構文をチェックするか、または IGS と同じ方法で設定ユーティリティにテンプレートを処理させた後、XML 出力を返すことができます。
処理するテンプレートが VAR()
構成体を使用してデバイス プロパティを参照する場合、結果の出力には、その VAR()
構成体の defaultValue が含まれます。
ステップ 3 テンプレート(および、そのテンプレートにインクルードするテンプレート)を RDU に追加します。
テンプレートが VAR()
構成体を使用してデバイス プロパティを参照する場合は、デバイス オプションを使用してサンプル テンプレートを生成します。
ステップ 4 テストが成功したら、そのテンプレートを使用するサービス クラスを設定します。
ローカル テンプレート ファイルの XML 構文の検証
runCfgUtil.sh コマンドを使用して、ローカル ファイル システムに格納されているテンプレート ファイルを検証します。
構文の説明
runCfgUtil.sh -cwmp -a sc -l file
• -cwmp :入力ファイルを CWMP テンプレート ファイルとして処理することを示します。
• -a sc :構文チェックを指定します。
• -l :入力ファイルがローカル ファイル システムにあることを指定します。
• file :検証する入力テンプレート ファイルを示します。
ローカル ファイル システムにあるテンプレート ファイルを使用するには、次の手順に従います。
ステップ 1 /opt/CSCObac/rdu/samples/cwmp にディレクトリを変更します。
ステップ 2 使用するテンプレート ファイルを選択します。
(注) この例では、sample-cwmp-config.xml という既存のテンプレート ファイルを使用します。これは CWMP テンプレートであるため、-cwmp オプションを使用します。
ステップ 3 次のコマンドを使用して、設定ユーティリティを実行します。
/opt/CSCObac/rdu/bin/runCfgUtil.sh -cwmp -a sc -l sample-cwmp-config.xml
• -cwmp :入力ファイルを CWMP テンプレート ファイルとして処理することを示します。
• -l :入力ファイルがローカル ファイル システムにあることを指定します。
• sample-cwmp-config.xml :検証する入力テンプレート ファイルを示します。
ユーティリティを実行すると、次のような結果が表示されます。
Broadband Access Center Configuration Utility
Version: 3.0, Revision: 1.26
validating configuration template sample-cwmp-config.xml...
>sample-cwmp-config.xml is valid.
BAC に格納されているテンプレートの XML 構文の検証
runCfgUtil.sh コマンドを使用して、RDU データベースに格納されているテンプレート ファイルを検証します。
構文の説明
runCfgUtil.sh -cwmp -a sc -r file -u username -p password
• -cwmp :入力ファイルを CWMP テンプレート ファイルとして処理することを示します。
• -a sc :構文チェックを指定します。
• -r file :入力ファイルが RDU に追加したファイルであることを示します。
• -u username :RDU に接続するときに使用するユーザ名を指定します。
• -p password :RDU に接続するときに使用するパスワードを指定します。
RDU に追加したテンプレート ファイルを検証するには、次の手順に従います。
ステップ 1 /opt/CSCObac/rdu/samples/cwmp にディレクトリを変更します。
ステップ 2 使用するテンプレート ファイルを選択します。
(注) この例では、sample-cwmp-config.xml という既存のテンプレート ファイルを使用します。CWMP テンプレートを使用するため、-cwmp オプションを使用します。
ステップ 3 次のコマンドを使用して、設定ユーティリティを実行します。
./runCfgUtil.sh -cwmp -a sc -r sample-cwmp-config.xml -u admin -p changeme
• sample-cwmp-config.xml :入力ファイルを示します。
• admin :ユーザ名を示します。
• changeme :パスワードを示します。
• -cwmp :ファイルを CWMP テンプレートとして処理することを示します。
ユーティリティを実行すると、次のような結果が表示されます。
Broadband Access Center Configuration Utility
Version: 3.0, Revision: 1.26
validating configuration template sample-cwmp-config.xml...
>sample-cwmp-config.xml is valid.
ローカル テンプレート ファイルのテンプレート処理のテスト
runCfgUtil.sh コマンドを使用して、ローカル テンプレート ファイルのテンプレート処理をテストします。
構文の説明
runCfgUtil.sh -cwmp -a gc -l file -o file
• -cwmp :入力ファイルを CWMP テンプレート ファイルとして処理することを示します。
• -a gc :構成の生成に関する命令を指定します。
• -l file :入力ファイルがローカル ファイル システムにあることを指定します。
• -o file :処理されたテンプレートを XML 形式で指定のファイルに保存することを指定します。
ローカル テンプレート ファイルのテンプレート処理をテストするには、次の手順に従います。
ステップ 1 /opt/CSCObac/rdu/samples/cwmp にディレクトリを変更します。
ステップ 2 使用するテンプレート ファイルを選択します。この例では、 sample-cwmp-config.xml という既存のテンプレート ファイルを使用します。
ステップ 3 次のコマンドを使用して、設定ユーティリティを実行します。
./opt/CSCObac/rdu/bin/runCfgUtil.sh -cwmp -a gc -l sample-cwmp-config.xml -o output.xml
• sample-cwmp-config.xml :入力ファイルを示します。
• output.xml :処理されたテンプレートを XML 形式で保存するファイルを示します。
ユーティリティを実行すると、次のような結果が表示されます。
Broadband Access Center Configuration Utility
Version: 3.0, Revision: 1.26
generating configuration from sample-cwmp-config.xml...
output.xml generated successfully.
output.xml ファイルを開いて、構成を表示することができます。
BAC に格納されているテンプレートのテンプレート処理のテスト
runCfgUtil.sh コマンドを使用して、RDU データベース内のテンプレートのテンプレート処理をテストします。
構文の説明
runCfgUtil.sh -cwmp -a gc -r file -o file -u username -p password
• -cwmp :入力ファイルを CWMP テンプレート ファイルとして処理することを示します。
• -a gc :構成の生成に関する命令を指定します。
• -r file :入力ファイルが RDU に追加したファイルであることを示します。
• -o file :処理されたテンプレートを XML 形式で指定のファイルに保存することを指定します。
• -u username :RDU に接続するときに使用するユーザ名を指定します。
• -p password :RDU に接続するときに使用するパスワードを指定します。
BAC に格納されているテンプレートのテンプレート処理をテストするには、次の手順に従います。
ステップ 1 /opt/CSCObac/rdu/samples/cwmp にディレクトリを変更します。
ステップ 2 使用するテンプレート ファイルを選択します。この例では、 sample-cwmp-config.xml という既存のテンプレート ファイルを使用します。
ステップ 3 次のコマンドを使用して、設定ユーティリティを実行します。
./runCfgUtil.sh -cwmp -a sc -r sample-cwmp-config.xml -o output.xml -u admin -p changeme
• sample-cwmp-config.xml :入力ファイルを示します。
• output.xml :生成された構成を XML 形式で保存するファイルを示します。
ユーティリティを実行すると、次のような結果が表示されます。
Broadband Access Center Configuration Utility
Version: 3.0, Revision: 1.26
generating configuration from sample-cwmp-config.xml...
output.xml generated successfully.
output.xml ファイルを開いて、構成を表示することができます。
BAC テンプレート ファイルとデバイスのテンプレート処理のテスト
runCfgUtil.sh コマンドを使用して、RDU データベースに格納されている、デバイスに関連付けられたファイルのテンプレート処理をテストします。
構文の説明
runCfgUtil.sh -cwmp -a gc -r file -o file -i deviceID -u username -p password
• -cwmp :入力ファイルを CWMP テンプレート ファイルとして処理することを示します。
• -a gc :構成の生成に関する命令を指定します。
• -r file :入力ファイルが RDU に追加したファイルであることを示します。
• -o file :処理されたテンプレートを XML 形式で指定のファイルに保存することを指定します。
• -i deviceID :使用するデバイスを指定します。変数値は、デバイスのプロパティを使用して取得されます。
• -u username :RDU に接続するときに使用するユーザ名を指定します。
• -p password :RDU に接続するときに使用するパスワードを指定します。
RDU に格納されている、デバイスに関連付けられたファイルのテンプレート処理をテストするには、次の手順に従います。
ステップ 1 管理者のユーザ インターフェイスを使用して、 /opt/CSCObac/rdu/samples/cwmp/sample-cwmp-var-config.xml というテンプレート ファイルを BAC に追加します。
(注) sample-cwmp-var-config.xml テンプレートには、/IPDevice/connectionRequestUsername デバイス プロパティへの参照が含まれています。プロパティの API 定数は、IPDeviceKeys.CONNECTION_REQUEST_USERNAME
です。
ステップ 2 使用するテンプレート ファイルを選択します。この例では、 sample-cwmp-var-config.xml という既存のテンプレート ファイルを使用します。
ステップ 3 BAC にすでに存在するデバイスを特定し、そのデバイスの ID を使用します。この例では、/IPDevice/connectionRequestUsername プロパティが testUser に設定されたデバイスを使用します。
ステップ 4 使用するデバイスを調べます。この例では、デバイスが RDU に存在し、変数がプロパティとして設定されているものとします。
ステップ 5 次のコマンドを使用して、設定ユーティリティを実行します。
./runCfgUtil.sh -cwmp -a gc -r sample-cwmp-var-config.xml -i OUI-1234 -o output.xml -u admin -p changeme
• sample-cwmp-var-config.xml :入力ファイルを示します。
• OUI-1234 :デバイスの ID を示します。このデバイス ID は、例として示す目的でのみ使用しています。
• output.xml :処理されたテンプレートを XML 形式で保存するファイルを示します。
• admin :この例で使用するデフォルトのユーザ名を示します。
• changeme :この例で使用するデフォルトのパスワードを示します。
ユーティリティを実行すると、次のような結果が表示されます。
Broadband Access Center Configuration Utility
Version: 3.0, Revision: 1.26
generating configuration from sample-cwmp-var-config.xml...
output.xml generated successfully.
(注) output.xml ファイルを開いて、構成を表示することができます。VAR(name=/IPDevice/connectionRequestUsername, defaultValue=test)
文は、testUser で置き換えられます。