IP version agnostic
This commit is contained in:
parent
4ef0eb329c
commit
e7d2c458ef
73
automonty
73
automonty
@ -201,41 +201,45 @@ def monty_provision( config, args, routers ):
|
|||||||
else:
|
else:
|
||||||
disabled = 'yes'
|
disabled = 'yes'
|
||||||
comment = make_comment( args.selector, rval, args.hostname )
|
comment = make_comment( args.selector, rval, args.hostname )
|
||||||
if args.dry_run:
|
|
||||||
if args.ipv4.network.prefixlen == 32:
|
|
||||||
print( '/ip address add interface="%s" address="%s" network="%s" disabled=%s comment="%s"' % ( vlan[ 'name' ], config[ 'default_ipv4_loopback' ], args.ipv4.network.network_address, disabled, comment ) )
|
|
||||||
else:
|
|
||||||
print( '/ip address add interface="%s" address="%s" disabled=%s comment="%s"' % ( vlan[ 'name' ], args.ipv4, disabled, comment ) )
|
|
||||||
if args.ipv6:
|
|
||||||
if args.static:
|
|
||||||
print( '/ipv6 address add interface="%s" address="%s" disabled=%s comment="%s" advertise=no' % ( vlan[ 'name' ], args.ipv6, disabled, comment ) )
|
|
||||||
else:
|
|
||||||
print( '/ipv6 address add interface="%s" address="%s" disabled=%s comment="%s" eui-64=yes advertise=yes' % ( vlan[ 'name' ], args.ipv6.network, disabled, comment ) )
|
|
||||||
|
|
||||||
else:
|
for addr in args.address:
|
||||||
v4addr = { 'interface': vlan[ 'name' ],
|
if args.dry_run:
|
||||||
'disabled': disabled,
|
if isinstance( addr, ipaddress.IPv4Interface ):
|
||||||
'comment': comment,
|
if addr.network.prefixlen == 32:
|
||||||
}
|
print( '/ip address add interface="%s" address="%s" network="%s" disabled=%s comment="%s"' % ( vlan[ 'name' ], config[ 'default_ipv4_loopback' ], addr.network.network_address, disabled, comment ) )
|
||||||
if args.ipv4.network.prefixlen == 32:
|
else:
|
||||||
v4addr[ 'address' ] = config[ 'default_ipv4_loopback' ]
|
print( '/ip address add interface="%s" address="%s" disabled=%s comment="%s"' % ( vlan[ 'name' ], addr, disabled, comment ) )
|
||||||
v4addr[ 'network' ] = str( args.ipv4.network.network_address )
|
elif isinstance( addr, ipaddress.IPv6Interface ):
|
||||||
else:
|
if args.static:
|
||||||
v4addr[ 'address' ] = str( args.ipv4 )
|
print( '/ipv6 address add interface="%s" address="%s" disabled=%s comment="%s" advertise=no' % ( vlan[ 'name' ], addr, disabled, comment ) )
|
||||||
ip_address.add( **v4addr )
|
else:
|
||||||
|
print( '/ipv6 address add interface="%s" address="%s" disabled=%s comment="%s" eui-64=yes advertise=yes' % ( vlan[ 'name' ], addr.network, disabled, comment ) )
|
||||||
|
|
||||||
if args.ipv6:
|
else:
|
||||||
v6addr = { 'interface': vlan[ 'name' ],
|
if isinstance( addr, ipaddress.IPv4Interface ):
|
||||||
'disabled': disabled,
|
v4addr = { 'interface': vlan[ 'name' ],
|
||||||
'comment': comment,
|
'disabled': disabled,
|
||||||
}
|
'comment': comment,
|
||||||
if args.static:
|
}
|
||||||
v6addr[ 'address' ] = str( args.ipv6 )
|
if addr.network.prefixlen == 32:
|
||||||
else:
|
v4addr[ 'address' ] = config[ 'default_ipv4_loopback' ]
|
||||||
v6addr[ 'address' ] = str( args.ipv6.network )
|
v4addr[ 'network' ] = str( addr.network.network_address )
|
||||||
v6addr[ 'eui-64' ] = 'yes'
|
else:
|
||||||
v6addr[ 'advertise' ] = 'yes'
|
v4addr[ 'address' ] = str( addr )
|
||||||
ipv6_address.add( **v6addr )
|
ip_address.add( **v4addr )
|
||||||
|
|
||||||
|
elif isinstance( addr, ipaddress.IPv6Interface ):
|
||||||
|
v6addr = { 'interface': vlan[ 'name' ],
|
||||||
|
'disabled': disabled,
|
||||||
|
'comment': comment,
|
||||||
|
}
|
||||||
|
if args.static:
|
||||||
|
v6addr[ 'address' ] = str( addr )
|
||||||
|
else:
|
||||||
|
v6addr[ 'address' ] = str( addr.network )
|
||||||
|
v6addr[ 'eui-64' ] = 'yes'
|
||||||
|
v6addr[ 'advertise' ] = 'yes'
|
||||||
|
ipv6_address.add( **v6addr )
|
||||||
|
|
||||||
if args.dry_run:
|
if args.dry_run:
|
||||||
print()
|
print()
|
||||||
@ -272,8 +276,7 @@ def main():
|
|||||||
parser_provision.add_argument( '--selector', type = str, default = None )
|
parser_provision.add_argument( '--selector', type = str, default = None )
|
||||||
parser_provision.add_argument( 'hostname' )
|
parser_provision.add_argument( 'hostname' )
|
||||||
parser_provision.add_argument( 'vlan', type = int )
|
parser_provision.add_argument( 'vlan', type = int )
|
||||||
parser_provision.add_argument( 'ipv4', type = ipaddress.IPv4Interface )
|
parser_provision.add_argument( 'address', type = ipaddress.ip_interface, nargs = "+" )
|
||||||
parser_provision.add_argument( 'ipv6', type = ipaddress.IPv6Interface, nargs = "?" )
|
|
||||||
parser_provision.set_defaults( func = monty_provision )
|
parser_provision.set_defaults( func = monty_provision )
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user