當PyEZ使用RPC調用我們添加的參數像rpc.get_interface_information(terse="True", interface-name="xe-0/0/0")
命名的參數有所不同,但對於配置的選項需要像rpc.get_configuration({"inherit":"inherit", "groups":"groups"})
PyEZ RPC選項格式獲取配置和其他呼叫
在詞典中有什麼的原因這些差異?
當PyEZ使用RPC調用我們添加的參數像rpc.get_interface_information(terse="True", interface-name="xe-0/0/0")
命名的參數有所不同,但對於配置的選項需要像rpc.get_configuration({"inherit":"inherit", "groups":"groups"})
PyEZ RPC選項格式獲取配置和其他呼叫
在詞典中有什麼的原因這些差異?
描述它的最好方法是這樣的: 對於非配置的rpcs,每個項都是它自己的元素,而在PyEZ中,我們使用這些參數來確定我們正在引用元素。
<get-interface-information>
<routing-instance>routing-instance</routing-instance>
<extensive/>
<statistics/>
<media/>
<detail/>
<terse/>
<brief/>
<descriptions/>
<snmp-index>snmp-index</snmp-index>
<switch-port>switch-port</switch-port>
<interface-name>interface-name</interface-name>
</get-interface-information>
在獲得配置RPC的情況下,所有你引用的項目實際上是屬性獲得配置標籤本身,在RPC定義不元素。
<get-configuration
[changed="changed"]
[commit-scripts="(apply | apply-no-transients | view)"]
[compare="rollback" [rollback="[0-49]"]]
[database="(candidate | committed)"]
[database-path=$junos-context/commit-context/database-path]
[format="(text | xml)"]
[inherit="(defaults | inherit)"
[groups="groups"] [interface-ranges="interface-ranges"]]
[(junos:key | key)="key"] >
<!-- tag elements for the configuration element to display -->
</get-configuration>
因此,要知道的RPC(我們將在PyEZ動態創建)是否被引用的元素或屬性是參數或字典的使用,分別。
希望有所幫助。
添加到Edward的答案,我相信PyEZ RPC調用是使用反射(__call__
方法)實現的,所以今天它不知道有效的RPC調用和參數。讓它意識到的方法是從設備動態加載Netconf模式並使用它將命名的arg映射到標記或元素。
試圖從用戶那裏抽象出這個調用約定是一個潛在的問題,那就是當同一個RPC有一個標籤和一個同名元素時該怎麼辦 - 不確定是否是現在的情況,或者是否有規則在模式中防止這種情況發生,但在這種情況下,調用的用戶應該能夠控制RPC doc恕我直言。
謝謝愛德華,看到這些標籤的最佳方式是什麼/檢查某物是屬性而不是元素? –