@ -68,33 +68,37 @@ options:
required : true
port :
description :
- Specifies the port to use when building the connection to the remote device .
- Specifies the port to use when building the connection to the
remote device .
default : 22
username :
description :
- Configures the username to use to authenticate the connection to
the remote device . This value is used to authenticate
the SSH session . If the value is not specified in the task , the
value of environment variable C ( ANSIBLE_NET_USERNAME ) will be used instead .
value of environment variable C ( ANSIBLE_NET_USERNAME ) will be used
instead .
password :
description :
- Specifies the password to use to authenticate the connection to
the remote device . This value is used to authenticate
the SSH session . If the value is not specified in the task , the
value of environment variable C ( ANSIBLE_NET_PASSWORD ) will be used instead .
value of environment variable C ( ANSIBLE_NET_PASSWORD ) will be used
instead .
timeout :
description :
- Specifies the timeout in seconds for communicating with the network device
for either connecting or sending commands . If the timeout is
exceeded before the operation is completed , the module will error .
- Specifies the timeout in seconds for communicating with the network
device for either connecting or sending commands . If the timeout
is exceeded before the operation is completed , the module will
error .
default : 10
ssh_keyfile :
description :
- Specifies the SSH key to use to authenticate the connection to
the remote device . This value is the path to the
key used to authenticate the SSH session . If the value is not specified
in the task , the value of environment variable C ( ANSIBLE_NET_SSH_KEYFILE )
will be used instead .
key used to authenticate the SSH session . If the value is not
specified in the task , the value of environment variable
C( ANSIBLE_NET_SSH_KEYFILE ) will be used instead .
gather_subset :
version_added : " 2.6 "
description :
@ -231,7 +235,7 @@ class FactsBase(object):
class Default ( FactsBase ) :
COMMANDS = [ ' display sys-info' , ' display running-config' ]
COMMANDS = [ ' show sys-info' , ' show running-config' ]
def populate ( self ) :
super ( Default , self ) . populate ( )
@ -297,12 +301,12 @@ class Default(FactsBase):
class Hardware ( FactsBase ) :
COMMANDS = [
' display running-config'
' show running-config'
]
def populate ( self ) :
super ( Hardware , self ) . populate ( )
data = self . run ( [ ' display process memory' ] )
data = self . run ( [ ' show process memory' ] )
data = to_text ( data , errors = ' surrogate_or_strict ' ) . strip ( )
data = data . replace ( r " \ n " , " \n " )
if data :
@ -331,7 +335,7 @@ class Hardware(FactsBase):
class Config ( FactsBase ) :
COMMANDS = [ ' display running-config' ]
COMMANDS = [ ' show running-config' ]
def populate ( self ) :
super ( Config , self ) . populate ( )
@ -342,7 +346,7 @@ class Config(FactsBase):
class Interfaces ( FactsBase ) :
COMMANDS = [ ' display interface brief' ]
COMMANDS = [ ' show interface brief' ]
def populate ( self ) :
super ( Interfaces , self ) . populate ( )
@ -350,10 +354,10 @@ class Interfaces(FactsBase):
self . facts [ ' all_ipv4_addresses ' ] = list ( )
self . facts [ ' all_ipv6_addresses ' ] = list ( )
data1 = self . run ( [ ' display interface status' ] )
data1 = self . run ( [ ' show interface status' ] )
data1 = to_text ( data1 , errors = ' surrogate_or_strict ' ) . strip ( )
data1 = data1 . replace ( r " \ n " , " \n " )
data2 = self . run ( [ ' display interface mac-address' ] )
data2 = self . run ( [ ' show interface mac-address' ] )
data2 = to_text ( data2 , errors = ' surrogate_or_strict ' ) . strip ( )
data2 = data2 . replace ( r " \ n " , " \n " )
lines1 = None
@ -364,7 +368,7 @@ class Interfaces(FactsBase):
lines2 = self . parse_interfaces ( data2 )
if lines1 is not None and lines2 is not None :
self . facts [ ' interfaces ' ] = self . populate_interfaces ( lines1 , lines2 )
data3 = self . run ( [ ' display lldp neighbors' ] )
data3 = self . run ( [ ' show lldp neighbors' ] )
data3 = to_text ( data3 , errors = ' surrogate_or_strict ' ) . strip ( )
data3 = data3 . replace ( r " \ n " , " \n " )
if data3 :
@ -372,9 +376,9 @@ class Interfaces(FactsBase):
if lines3 is not None :
self . facts [ ' neighbors ' ] = self . populate_neighbors ( lines3 )
data4 = self . run ( [ ' display ip interface brief vrf all' ] )
data5 = self . run ( [ ' display ipv6 interface brief vrf all' ] )
data4 = to_text ( data4 , errors = ' surrogate_or_st display ' ) . strip ( )
data4 = self . run ( [ ' show ip interface brief vrf all' ] )
data5 = self . run ( [ ' show ipv6 interface brief vrf all' ] )
data4 = to_text ( data4 , errors = ' surrogate_or_st rict ' ) . strip ( )
data4 = data4 . replace ( r " \ n " , " \n " )
data5 = to_text ( data5 , errors = ' surrogate_or_strict ' ) . strip ( )
data5 = data5 . replace ( r " \ n " , " \n " )
@ -484,14 +488,24 @@ class Interfaces(FactsBase):
def populate_neighbors ( self , lines3 ) :
neighbors = dict ( )
device_name = ' '
for line in lines3 :
neighborSplit = line . split ( )
innerData = dict ( )
innerData [ ' Local Interface ' ] = neighborSplit [ 1 ] . strip ( )
innerData [ ' Hold Time ' ] = neighborSplit [ 2 ] . strip ( )
innerData [ ' Capability ' ] = neighborSplit [ 3 ] . strip ( )
innerData [ ' Remote Port ' ] = neighborSplit [ 4 ] . strip ( )
neighbors [ neighborSplit [ 0 ] . strip ( ) ] = innerData
count = len ( neighborSplit )
if count == 5 :
local_interface = neighborSplit [ 1 ] . strip ( )
innerData [ ' Device Name ' ] = neighborSplit [ 0 ] . strip ( )
innerData [ ' Hold Time ' ] = neighborSplit [ 2 ] . strip ( )
innerData [ ' Capability ' ] = neighborSplit [ 3 ] . strip ( )
innerData [ ' Remote Port ' ] = neighborSplit [ 4 ] . strip ( )
neighbors [ local_interface ] = innerData
elif count == 4 :
local_interface = neighborSplit [ 0 ] . strip ( )
innerData [ ' Hold Time ' ] = neighborSplit [ 1 ] . strip ( )
innerData [ ' Capability ' ] = neighborSplit [ 2 ] . strip ( )
innerData [ ' Remote Port ' ] = neighborSplit [ 3 ] . strip ( )
neighbors [ local_interface ] = innerData
return neighbors
def parse_neighbors ( self , neighbors ) :