cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
593
Views
0
Helpful
5
Replies

Container name "frequency_synchronization" mismatch in ydk.cisco.com page and in compiled file

shhaneef
Cisco Employee
Cisco Employee

Hi Team,

 

From the latest ydk page (0.8.3) (http://ydk.cisco.com/py/docs/gen_doc_dfe42d73c3f4f1961e486d4f23a11f136f62317a.html#ydk.models.cisco_ios_xr.Cisco_IOS_XR_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration) the container name for frequency it was defined as frequency_synchronization not Cisco-IOS-XR-freqsync-cfg_frequency-synchronization.

 

However when we using the compiled file "Cisco_IOS_XR_ifmgr_cfg.py" the container name defined as "CiscoIosXrFreqsyncCfg_FrequencySynchronization”. We used the container name present in compiled for our automation and while running/validating script, RPC returns a bad-element error in RPC reply as below.

 

Could you please help resolving this issue.

 

In router(ncs5500) the yang model “Cisco-IOS-XR-freqsync-cfg.yang” has the augment as below for the cli “frequency synchronization” under interface configuration.

augment "/a2:interface-configurations/a2:interface-configuration" {

 

    container frequency-synchronization {

      presence "CLI submode compatibility.";

      description

        "Frequency Synchronization interface

        configuration";

  .

 .

 .

  .

   description

      "This augment extends the configuration data of

      'Cisco-IOS-XR-ifmgr-cfg'";

  }

 

Whereas when we checked the compiled file “Cisco_IOS_XR_ifmgr_cfg.py” used for automation the class name defined as“CiscoIosXrFreqsyncCfg_FrequencySynchronization”.

 

Due to this the RPC has issue while running via script as below:

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:f9655205-2ba0-477f-b992-2e3b139bfcf0">

  <edit-config>

    <target>

      <candidate/>

    </target>

    <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">

      <interface-configurations xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg">

        <interface-configuration>

          <active>act</active>

          <interface-name>TenGigE0/0/0/3</interface-name>

          <Cisco-IOS-XR-freqsync-cfg_frequency-synchronization xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-freqsync-cfg">

            <enable></enable>

            <selection-input></selection-input>

            <wait-to-restore-time>0</wait-to-restore-time>

          </Cisco-IOS-XR-freqsync-cfg_frequency-synchronization>

        </interface-configuration>

      </interface-configurations>

    </config>

  </edit-config>

</rpc>

 

<?xml version="1.0"?>

<rpc-reply message-id="urn:uuid:f9655205-2ba0-477f-b992-2e3b139bfcf0" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<rpc-error>

  <error-type>protocol</error-type>

  <error-tag>unknown-element</error-tag>

  <error-severity>error</error-severity>

  <error-path xmlns:ns2="http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg" xmlns:ns1="http://cisco.com/ns/yang/Cisco-IOS-XR-freqsync-cfg">ns2:interface-configurations/ns2:interface-configuration/ns1:Cisco-IOS-XR-freqsync-cfg_frequency-synchronization</error-path>

  <error-info>

   <bad-element>Cisco-IOS-XR-freqsync-cfg_frequency-synchronization</bad-element>

  </error-info>

</rpc-error>

</rpc-reply>

 

List of containers present in ifmgr compiled file Cisco_IOS_XR_ifmgr_cfg.py.

 

['AaaTable', 'Afs', 'Atm', 'Bfd', 'Bundle', 'BundleMember', 'Bvi', 'CarrierDelay', 'Cdp', 'CiscoIosXrCoherentPortmodeCfg_Portmode','CiscoIosXrFreqsyncCfg_FrequencySynchronization', 'CiscoIosXrNcs4KFreqsyncCfg_FrequencySynchronization', 'CiscoIosXrNcs5500CoherentPortmodeCfg_Portmode', 'CiscoIosXrPppMaCfg_Ppp', 'CiscoIosXrPppMaFsmCfg_Ppp', 'CiscoIosXrPppMaIpcpCfg_Ppp', 'CiscoIosXrPppMaIpcpiwCfg_Ppp', 'CiscoIosXrPppMaLcpCfg_Ppp', 'CnBngnalipSubscribers', 'CnBngnalpppoeSubscriber', 'Cpri', 'CsiEther', 'Dagrs', 'Dampening', 'Dot1XInterface', 'Dwdm', 'Encapsulation', 'EsPacketFilter', 'Ethernet', 'EthernetBng', 'EthernetControl', 'EthernetFeatures', 'EthernetService', 'FlowProtocols', 'Ipv4Arp', 'Ipv4DhcpClientConfig', 'Ipv4FlowSpec', 'Ipv4Network', 'Ipv4NetworkForwarding', 'Ipv4PacketFilter', 'Ipv6DhcpClientOptions', 'Ipv6FlowSpec', 'Ipv6Neighbor', 'Ipv6Network', 'Ipv6PacketFilter', 'L2Transport', 'Lacp', 'Lldp', 'Loopbacks', 'MacAccounting', 'Macsec', 'Mlacp', 'Mpls', 'MteTunnelAttributes', 'Mtus', 'NvSatelliteAccess', 'NvSatelliteFabricLink', 'NvSatelliteFabricNetwork', 'Nve', 'Odu', 'OduOtnsec', 'Optics', 'Otu', 'Pbr', 'PerformanceManagement', 'PortMode', 'Pppoe', 'PseudowireEther', 'PseudowireIw', 'Ptp', 'Qos', 'ServiceActivationTest', 'ServicePolicies', 'SpanMonitorSessions', 'SsrpSession', 'Statistics', 'Subscriber', 'TransportProfileTunnel', 'TunnelIp', 'TunnelTeAttributes', 'VlanSubConfiguration', 'VlanTrunkConfiguration', 'Wanphy', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_common_path', '_has_data', '_meta_info', '_prefix', '_revision', 'aaa_table', 'active', 'afs', 'atm', 'bandwidth', 'bfd', 'breakout', 'bundle', 'bundle_member', 'bvi', 'carrier_delay', 'cdp', 'cisco_ios_xr_coherent_portmode_cfg_portmode', 'cisco_ios_xr_freqsync_cfg_frequency_synchronization', 'cisco_ios_xr_ncs4k_freqsync_cfg_frequency_synchronization', 'cisco_ios_xr_ncs5500_coherent_portmode_cfg_portmode', 'cisco_ios_xr_ppp_ma_cfg_ppp', 'cisco_ios_xr_ppp_ma_fsm_cfg_ppp', 'cisco_ios_xr_ppp_ma_ipcp_cfg_ppp', 'cisco_ios_xr_ppp_ma_ipcpiw_cfg_ppp', 'cisco_ios_xr_ppp_ma_lcp_cfg_ppp', 'cn_bngnalip_subscribers', 'cn_bngnalpppoe_subscriber', 'cpri', 'csi_ether', 'dagrs', 'dampening', 'description', 'dot1x_interface', 'dwdm', 'encapsulation', 'es_packet_filter', 'ethernet', 'ethernet_bng', 'ethernet_control', 'ethernet_features', 'ethernet_service', 'fast_shutdown', 'flow_protocols', 'holdoff_time', 'interface_mode_non_physical', 'interface_name', 'interface_virtual', 'ipv4_dhcp_client_config', 'ipv4_flow_spec', 'ipv4_network', 'ipv4_network_forwarding', 'ipv4_packet_filter', 'ipv4arp', 'ipv6_dhcp_client_options', 'ipv6_flow_spec', 'ipv6_neighbor', 'ipv6_network', 'ipv6_packet_filter', 'is_config', 'l2_transport', 'lacp', 'laser_squelch', 'link_status', 'lldp', 'loopbacks', 'mac_accounting', 'mac_addr', 'macsec', 'maintenance_embargo', 'mlacp', 'mpls', 'mte_tunnel_attributes', 'mtus', 'nv_satellite_access', 'nv_satellite_fabric_link', 'nv_satellite_fabric_network', 'nve', 'odu', 'odu_otnsec', 'optics', 'otu', 'parent', 'pbr', 'perf_mon_disable', 'performance_management', 'port_mode', 'pppoe', 'pseudowire_ether', 'pseudowire_iw', 'ptp', 'qos', 'secondary_admin_state', 'service_activation_test', 'service_policies', 'shutdown', 'span_monitor_sessions', 'ssrp_session', 'statistics', 'subscriber', 'track_name', 'transport_profile_tunnel', 'tunnel_ip', 'tunnel_te_attributes', 'user_network_interface', 'vlan_sub_configuration', 'vlan_trunk_configuration', 'vrf', 'wanphy']

 

Thanks

Shafeek

5 Replies 5

yangorelik
Spotlight
Spotlight

Could you please share your script and details of YDK environment. What is the XR device version?

Yan Gorelik
YDK Solutions

Hi Yan Gorelik,

 

Please find the method and the import used below,

 

Issue seen in both ydk version 7.1.1 and 7.3.1

 

XR Version in box NCS5500:

7.3.1

 

Import :

from ydk.models.cisco_ios_xr import Cisco_IOS_XR_ifmgr_cfg as xr_ifmgr_cfg

 

Method:

def set_interface_frequency_sync(self, interfaces, frequency_sync, *args, **kwargs):
"""
Set/unconfig frequency synchronization for device

:param interfaces: interface list
:param frequency_sync: frequency sync true or false
:param args: args list
:param kwargs: kwargs list
:param selection: source of selection (input)
:param priority: source priority (1-254)
:param wait_to_restore: wait-to-restore time (0-12)
:param ql_rcv: the received quality level ('exact'/'highest'/'lowest')
:param ql_snd: the quality level to be transmitted ('exact'/'highest'/'lowest')
:param option: ITU-T QL options (1/2)
:param quality: ITU-T Option quality level ('PRC'/'SEC'/..)
:param generation: ITU-T QL option 2 generation
:param ssm: disable
:return:
"""

ifmgr = xr_ifmgr_cfg.InterfaceConfigurations()
intf = ifmgr.InterfaceConfiguration()
default_val = {
'selection': None,
'priority': None,
'wait_to_restore': None,
'ql_rcv': None,
'ql_snd': None,
'option': None,
'modes': None,
'quality': None,
'generation': None,
'ssm': None}
kwargs = {key: kwargs.get(key, default_val[key]) for key in default_val}

if not isinstance(interfaces, list):
interfaces = [interfaces]
for i in interfaces:
intf.interface_name = self._fix_name(i)
intf.active = "act"
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization = \
ifmgr.InterfaceConfiguration.CiscoIosXrFreqsyncCfg_FrequencySynchronization()
if frequency_sync == False:
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.enable = DELETE()
else:
# intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.enable = Empty()
if kwargs['ssm'] == 'disable':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.ssm_disable = Empty()
if kwargs['ssm'] == 'enable':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.ssm_disable = DELETE()
if kwargs['selection'] is not None:
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.selection_input = Empty()
if kwargs['priority'] is not None:
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.priority = int(kwargs['priority'])
if kwargs['wait_to_restore'] is not None:
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.wait_to_restore_time = int(kwargs['wait_to_restore'])
if kwargs['option'] is not None:
if kwargs['generation'] is None:
if kwargs['option'] == '1':
option1 = "option_1"
option1_ql = "o1_"
if kwargs['ql_rcv'] is not None:
option1_ql=option1_ql+re.sub('-', "_", kwargs['ql_rcv']).lower()
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.quality_level_option = option1
if kwargs['ql_rcv'] == 'exact':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.exact_quality_level_value = option1_ql
elif kwargs['ql_rcv'] == 'lowest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.min_quality_level_value = option1_ql
elif kwargs['ql_rcv'] == 'highest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.max_quality_level_value = option1_ql
if kwargs['ql_snd'] is not None:
option1_ql=option1_ql+re.sub('-', "_", kwargs['ql_snd']).lower()
print("QL is %s", option1_ql)
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.quality_level_option = option1
if kwargs['ql_snd'] == 'exact':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.exact_quality_level_value = option1_ql
elif kwargs['ql_snd'] == 'lowest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.min_quality_level_value = option1_ql
elif kwargs['ql_snd'] == 'highest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.max_quality_level_value = option1_ql
else:
if kwargs['generation'] == '1':
option2 = 'option_2__COMMA___generation_1'
option2_ql = "o2_g1_"
elif kwargs['generation'] == '2':
option2 = 'option_2__COMMA___generation_2'
option2_ql = "o2_g2_"
if kwargs['ql_rcv'] is not None:
option2_ql=option2_ql+re.sub('-', "_", kwargs['ql_rcv']).lower()
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.quality_level_option= option2
if kwargs['ql_rcv'] == 'exact':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.exact_quality_level_value = option2_ql
elif kwargs['ql_rcv'] == 'lowest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.min_quality_level_value = option2_ql
elif kwargs['ql_rcv'] == 'highest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.input_quality_level.max_quality_level_value = option2_ql
if kwargs['ql_snd'] is not None:
option2_ql=option2_ql+re.sub('-', "_", kwargs['ql_snd']).lower()
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.quality_level_option = option2
if kwargs['ql_snd'] == 'exact':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.exact_quality_level_value = option2_ql
elif kwargs['ql_snd'] == 'lowest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.min_quality_level_value = option2_ql
elif kwargs['ql_snd'] == 'highest':
intf.cisco_ios_xr_freqsync_cfg_frequency_synchronization.output_quality_level.max_quality_level_value = option2_ql
import pdb;pdb.set_trace()
ifmgr.interface_configuration.append(intf)
self.device.create(ifmgr)
[shhaneef@bgl-ads-806 timer]$

 

Thanks

Shafeek

 

 

 

Hi Shafeek

Based on your script (uses class DELETE), you are operating on very old YDK version, presumably 0.5.5.post2. This version is owned and supported only by test team in XR BU. Try contact them directly and maybe they can help.

Yan Gorelik
YDK Solutions

Hi Yan,

 

Thanks for the response. Could you please help clarifying below query,

 

why the compiled file shows  as "cisco_ios_xr_freqsync_cfg_frequency_synchronization" and ydk page show as "frequency_synchronization", is this anything to do with ydk version.

 

Thanks

Shafeek

Hi Shafeek
The code generator alters almost all the Yang defined node names due to restrictions in the Python language. Besides, the model sometime contains duplicate names, which are not acceptable in the generator code. One of the modification includes changing node name by prepending module name. Please note that 0.5.5 code contains few bugs that were fixed in YDK-0.8.4 and later. It requires significant efforts to fix them in the old YDK release.

Yan Gorelik
YDK Solutions