Skip to content

juniper_junos_rpc unexpected kwargs conversion to bool #538

@pwlodawi

Description

@pwlodawi

Issue Type

  • Bug Report

Module Name

juniper_junos_rpc

juniper.device collection and Python libraries version

ansible 2.10.4
  config file = /home/pwlodawi/ansible/playbooks/upgrade-lab/ansible.cfg
  configured module search path = ['/home/pwlodawi/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/pwlodawi/.venvs/ansible/lib/python3.8/site-packages/ansible
  executable location = /home/pwlodawi/.venvs/ansible/bin/ansible
  python version = 3.8.5 (default, Jul 28 2020, 12:59:40) [GCC 9.3.0]

- juniper.junos, 2.4.3

junos-eznc==2.5.4

OS / Environment

Ubuntu 20.04.1 LTS

JUNOS 17.3R3-S6.3

Summary

Can't pass "0" and "1" to kwargs. They get converted to bool and make RPC fail.

Steps to reproduce

Run following two tasks.

      - name: Save rollback info
        juniper_junos_rpc:
          provider: "{{ provider }}"
          rpc: get-rollback-information
          kwargs:
            rollback: "3"
            compare: "2"
        register: res2

      - name: Save rollback info
        juniper_junos_rpc:
          provider: "{{ provider }}"
          rpc: get-rollback-information
          kwargs:
            rollback: "1"
            compare: "0"
        register: res

Expected results

Both tasks to succeed.

Actual results

The former task (args: 2 &3) succeeds,

ok: [bng101] => {                                                                                                                                                            
    "attrs": null,                                                                                                                                                           
    "changed": false,                                                                                                                                                        
    "format": "xml",                                                                                                                                                         
    "invocation": {                                                                                                                                                          
        "module_args": {                                                                                                                                                     
            "attempts": null,                                                                                                                                                
            "attrs": null,                                                                                                                                                   
            "baud": null,                                                                                                                                                    
            "console": null,                                                                                                                                                 
            "cs_passwd": null,                                                                                                                                               
            "cs_user": null,                                                                                                                                                 
            "dest": null,                                                                                                                                                    
            "dest_dir": null,                                                                                                                                                
            "filter": null,                                                                                                                                                  
            "formats": null,                                                                                                                                                 
            "host": "bng101",                                                                                                                                                
            "ignore_warning": null,                                                                                                                                          
            "kwargs": "{'rollback': '3', 'compare': '2'}",                                                                                                                   
            "level": null,                                                                                                                                                   
            "logdir": null,                                                                                                                                                  
            "logfile": null,                                                                                                                                                 
            "mode": null,                                                                                                                                                    
            "passwd": "secret-cut",                                                                                                                                             
            "port": 22,                                                                                                                                                      
            "return_output": true,                                                                                                                                           
            "rpc": "get-rollback-information",                                                                                                                               
            "rpcs": [                                                                                                                                                        
                "get-rollback-information"                                                                                                                                   
            ],                                                                                                                                                               
            "ssh_config": null,                                                                                                                                              
            "ssh_private_key_file": null,                                                                                                                                    
            "timeout": 1800,                                                                                                                                                 
            "user": "pwlodawi"                                                                                                                                               
        }                                                                                                                                                                    
    },                                                                                                                                                                       
    "kwargs": {                                                                                                                                                              
        "compare": "2",                                                                                                                                                      
        "rollback": "3"                                                                                                                                                      
    },                                                                                                                                                                       
    "msg": "The RPC executed successfully.",           
...        

the later task (args: 0 & 1) fails

fatal: [bng101]: FAILED! => {                                                                                                                                                
    "attrs": null,                                                                                                                                                           
    "changed": false,                                                                                                                                                        
    "format": "xml",                                                                                                                                                         
    "invocation": {                                                                                                                                                          
        "module_args": {                                                                                                                                                     
            "attempts": null,                                                                                                                                                
            "attrs": null,                                                                                                                                                   
            "baud": null,                                                                                                                                                    
            "console": null,                                                                                                                                                 
            "cs_passwd": null,                                                                                                                                               
            "cs_user": null,                                                                                                                                                 
            "dest": null,                                                                                                                                                    
            "dest_dir": null,                                                                                                                                                
            "filter": null,                                                                                                                                                  
            "formats": null,                                                                                                                                                 
            "host": "bng101",                                                                                                                                                
            "ignore_warning": null,                                                                                                                                          
            "kwargs": "{'rollback': '1', 'compare': '0'}",                                                                                                                   
            "level": null,                                                                                                                                                   
            "logdir": null,                                                                                                                                                  
            "logfile": null,                                                                                                                                                 
            "mode": null,                                                                                                                                                    
            "passwd": "secret-cut",                                                                                                                                             
            "port": 22,                                                                                                                                                      
            "return_output": true,                                                                                                                                           
            "rpc": "get-rollback-information",                                                                                                                               
            "rpcs": [                                                                                                                                                        
                "get-rollback-information"                                                                                                                                   
            ],                                                                                                                                                               
            "ssh_config": null,                                                                                                                                              
            "ssh_private_key_file": null,                                                                                                                                    
            "timeout": 1800,                                                                                                                                                 
            "user": "pwlodawi"                                                                                                                                               
        }                                                                                                                                                                    
    },                                                                                                                                                                       
    "kwargs": {                                                                                                                                                              
        "compare": false,                                                                                                                                                    
        "rollback": true                                                                                                                                                     
    },                                                                                                                                                                       
    "msg": "Unable to execute the RPC: b'<get-rollback-information xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\" format=\"xml\">\\n  <rollback/>\\n  <compare/>\\n</ge
t-rollback-information>\\n'. Error: RpcError(severity: error, bad_element: rollback, message: Invalid numeric value: '')",                                                   
    "rpc": "get-rollback-information"                                                                                                                                        
}                                                                                                                           

Junos logs confirm incorrect RPC call

Jan 21 21:57:39 [NETCONF] - [28479] Incoming: <?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:01b7fde1-8c1c-46be-bc37-6d9d1be4645f"><get-rollback-information format="xml"><rollback/><compare/></get-rollback-information></nc:rpc>]]>]]>

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions