Update ce_vrrp to fix bugs (#59677)

* update ce_vrrp to fix bugs

* update ce_vrrp to fix bugs

* update ce_vrrp to fix bugs

* update ce_vrrp to fix bugs
pull/59940/head
yanzhangi 5 years ago committed by ansibot
parent 17f2b5f73e
commit a01ee2759d

@ -49,8 +49,8 @@ options:
admin_ignore_if_down: admin_ignore_if_down:
description: description:
- mVRRP ignores an interface Down event. - mVRRP ignores an interface Down event.
type: str type: bool
choices: ['true','false'] default: 'false'
admin_vrid: admin_vrid:
description: description:
- Tracked mVRRP ID. The value is an integer ranging from 1 to 255. - Tracked mVRRP ID. The value is an integer ranging from 1 to 255.
@ -60,8 +60,8 @@ options:
admin_flowdown: admin_flowdown:
description: description:
- Disable the flowdown function for service VRRP. - Disable the flowdown function for service VRRP.
type: str type: bool
choices: ['true','false'] default: 'false'
priority: priority:
description: description:
- Configured VRRP priority. - Configured VRRP priority.
@ -103,8 +103,8 @@ options:
description: description:
- Select the display mode of an authentication key. - Select the display mode of an authentication key.
By default, an authentication key is displayed in ciphertext. By default, an authentication key is displayed in ciphertext.
type: str type: bool
choices: ['true','false'] default: 'false'
auth_key: auth_key:
description: description:
- This object is set based on the authentication type. - This object is set based on the authentication type.
@ -122,7 +122,6 @@ options:
type: str type: str
default: present default: present
choices: ['present','absent'] choices: ['present','absent']
''' '''
EXAMPLES = ''' EXAMPLES = '''
@ -137,60 +136,50 @@ EXAMPLES = '''
username: "{{ username }}" username: "{{ username }}"
password: "{{ password }}" password: "{{ password }}"
transport: cli transport: cli
tasks: tasks:
- name: Set vrrp version - name: Set vrrp version
ce_vrrp: ce_vrrp:
version: v3 version: v3
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp gratuitous-arp interval - name: Set vrrp gratuitous-arp interval
ce_vrrp: ce_vrrp:
gratuitous_arp_interval: 40 gratuitous_arp_interval: 40
mlag_id: 4 mlag_id: 4
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp recover-delay - name: Set vrrp recover-delay
ce_vrrp: ce_vrrp:
recover_delay: 10 recover_delay: 10
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp vrid virtual-ip - name: Set vrrp vrid virtual-ip
ce_vrrp: ce_vrrp:
interface: 40GE2/0/8 interface: 40GE2/0/8
vrid: 1 vrid: 1
virtual_ip: 10.14.2.7 virtual_ip: 10.14.2.7
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp vrid admin - name: Set vrrp vrid admin
ce_vrrp: ce_vrrp:
interface: 40GE2/0/8 interface: 40GE2/0/8
vrid: 1 vrid: 1
vrrp_type: admin vrrp_type: admin
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp vrid fast_resume - name: Set vrrp vrid fast_resume
ce_vrrp: ce_vrrp:
interface: 40GE2/0/8 interface: 40GE2/0/8
vrid: 1 vrid: 1
fast_resume: enable fast_resume: enable
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp vrid holding-multiplier - name: Set vrrp vrid holding-multiplier
ce_vrrp: ce_vrrp:
interface: 40GE2/0/8 interface: 40GE2/0/8
vrid: 1 vrid: 1
holding_multiplier: 4 holding_multiplier: 4
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp vrid preempt timer delay - name: Set vrrp vrid preempt timer delay
ce_vrrp: ce_vrrp:
interface: 40GE2/0/8 interface: 40GE2/0/8
vrid: 1 vrid: 1
preempt_timer_delay: 10 preempt_timer_delay: 10
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp vrid admin-vrrp - name: Set vrrp vrid admin-vrrp
ce_vrrp: ce_vrrp:
interface: 40GE2/0/8 interface: 40GE2/0/8
@ -199,7 +188,6 @@ EXAMPLES = '''
admin_vrid: 2 admin_vrid: 2
vrrp_type: member vrrp_type: member
provider: "{{ cli }}" provider: "{{ cli }}"
- name: Set vrrp vrid authentication-mode - name: Set vrrp vrid authentication-mode
ce_vrrp: ce_vrrp:
interface: 40GE2/0/8 interface: 40GE2/0/8
@ -283,14 +271,12 @@ CE_NC_SET_VRRP_GROUP_INFO_HEAD = """
<vrrpGroup operation="merge"> <vrrpGroup operation="merge">
<ifName>%s</ifName> <ifName>%s</ifName>
<vrrpId>%s</vrrpId> <vrrpId>%s</vrrpId>
""" """
CE_NC_SET_VRRP_GROUP_INFO_TAIL = """ CE_NC_SET_VRRP_GROUP_INFO_TAIL = """
</vrrpGroup> </vrrpGroup>
</vrrpGroups> </vrrpGroups>
</vrrp> </vrrp>
</config> </config>
""" """
CE_NC_GET_VRRP_GLOBAL_INFO = """ CE_NC_GET_VRRP_GLOBAL_INFO = """
<filter type="subtree"> <filter type="subtree">
@ -303,7 +289,6 @@ CE_NC_GET_VRRP_GLOBAL_INFO = """
</vrrpGlobalCfg> </vrrpGlobalCfg>
</vrrp> </vrrp>
</filter> </filter>
""" """
CE_NC_SET_VRRP_GLOBAL_HEAD = """ CE_NC_SET_VRRP_GLOBAL_HEAD = """
@ -315,7 +300,6 @@ CE_NC_SET_VRRP_GLOBAL_TAIL = """
</vrrpGlobalCfg> </vrrpGlobalCfg>
</vrrp> </vrrp>
</config> </config>
""" """
CE_NC_GET_VRRP_VIRTUAL_IP_INFO = """ CE_NC_GET_VRRP_VIRTUAL_IP_INFO = """
@ -334,7 +318,6 @@ CE_NC_GET_VRRP_VIRTUAL_IP_INFO = """
</vrrpGroups> </vrrpGroups>
</vrrp> </vrrp>
</filter> </filter>
""" """
CE_NC_CREATE_VRRP_VIRTUAL_IP_INFO = """ CE_NC_CREATE_VRRP_VIRTUAL_IP_INFO = """
<config> <config>
@ -352,7 +335,6 @@ CE_NC_CREATE_VRRP_VIRTUAL_IP_INFO = """
</vrrpGroups> </vrrpGroups>
</vrrp> </vrrp>
</config> </config>
""" """
CE_NC_DELETE_VRRP_VIRTUAL_IP_INFO = """ CE_NC_DELETE_VRRP_VIRTUAL_IP_INFO = """
<config> <config>
@ -370,7 +352,6 @@ CE_NC_DELETE_VRRP_VIRTUAL_IP_INFO = """
</vrrpGroups> </vrrpGroups>
</vrrp> </vrrp>
</config> </config>
""" """
@ -436,10 +417,10 @@ class Vrrp(object):
self.vrid = self.module.params['vrid'] self.vrid = self.module.params['vrid']
self.virtual_ip = self.module.params['virtual_ip'] self.virtual_ip = self.module.params['virtual_ip']
self.vrrp_type = self.module.params['vrrp_type'] self.vrrp_type = self.module.params['vrrp_type']
self.admin_ignore_if_down = self.module.params['admin_ignore_if_down'] self.admin_ignore_if_down = 'false' if self.module.params['admin_ignore_if_down'] is False else 'true'
self.admin_vrid = self.module.params['admin_vrid'] self.admin_vrid = self.module.params['admin_vrid']
self.admin_interface = self.module.params['admin_interface'] self.admin_interface = self.module.params['admin_interface']
self.admin_flowdown = self.module.params['admin_flowdown'] self.admin_flowdown = 'false' if self.module.params['admin_flowdown'] is False else 'true'
self.priority = self.module.params['priority'] self.priority = self.module.params['priority']
self.version = self.module.params['version'] self.version = self.module.params['version']
self.advertise_interval = self.module.params['advertise_interval'] self.advertise_interval = self.module.params['advertise_interval']
@ -449,7 +430,7 @@ class Vrrp(object):
self.recover_delay = self.module.params['recover_delay'] self.recover_delay = self.module.params['recover_delay']
self.holding_multiplier = self.module.params['holding_multiplier'] self.holding_multiplier = self.module.params['holding_multiplier']
self.auth_mode = self.module.params['auth_mode'] self.auth_mode = self.module.params['auth_mode']
self.is_plain = self.module.params['is_plain'] self.is_plain = 'false' if self.module.params['is_plain'] is False else 'true'
self.auth_key = self.module.params['auth_key'] self.auth_key = self.module.params['auth_key']
self.fast_resume = self.module.params['fast_resume'] self.fast_resume = self.module.params['fast_resume']
self.state = self.module.params['state'] self.state = self.module.params['state']
@ -606,10 +587,12 @@ class Vrrp(object):
if not self.advertise_interval.isdigit(): if not self.advertise_interval.isdigit():
self.module.fail_json( self.module.fail_json(
msg='Error: The value of advertise_interval is an integer.') msg='Error: The value of advertise_interval is an integer.')
if int(self.advertise_interval) < 1 or int(self.advertise_interval) > 255000: if int(self.advertise_interval) < 1000 or int(self.advertise_interval) > 255000:
self.module.fail_json( self.module.fail_json(
msg='Error: The value of advertise_interval ranges from 1 to 255000. The default value is 1000.') msg='Error: The value of advertise_interval ranges from 1000 to 255000 milliseconds. The default value is 1000 milliseconds.')
if int(self.advertise_interval) % 1000 != 0:
self.module.fail_json(
msg='Error: The advertisement interval value of VRRP must be a multiple of 1000 milliseconds.')
# preempt_timer_delay check # preempt_timer_delay check
if self.preempt_timer_delay: if self.preempt_timer_delay:
if not self.preempt_timer_delay.isdigit(): if not self.preempt_timer_delay.isdigit():
@ -930,76 +913,57 @@ class Vrrp(object):
if "<ok/>" not in recv_xml: if "<ok/>" not in recv_xml:
self.module.fail_json( self.module.fail_json(
msg='Error: set vrrp group atrribute info failed.') msg='Error: set vrrp group atrribute info failed.')
if self.interface and self.vrid: if self.interface and self.vrid:
self.updates_cmd.append("interface %s" % self.interface)
if self.vrrp_type == "admin": if self.vrrp_type == "admin":
if self.admin_ignore_if_down == "true": if self.admin_ignore_if_down == "true":
self.updates_cmd.append(
"interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"vrrp vrid %s admin ignore-if-down" % self.vrid) "vrrp vrid %s admin ignore-if-down" % self.vrid)
else: else:
self.updates_cmd.append(
"interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"vrrp vrid %s admin" % self.vrid) "vrrp vrid %s admin" % self.vrid)
if self.priority: if self.priority:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"vrrp vrid %s priority %s" % (self.vrid, self.priority)) "vrrp vrid %s priority %s" % (self.vrid, self.priority))
if self.fast_resume == "enable": if self.fast_resume == "enable":
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"vrrp vrid %s fast-resume" % self.vrid) "vrrp vrid %s fast-resume" % self.vrid)
if self.fast_resume == "disable": if self.fast_resume == "disable":
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s fast-resume" % self.vrid) "undo vrrp vrid %s fast-resume" % self.vrid)
if self.advertise_interval: if self.advertise_interval:
self.updates_cmd.append("interface %s" % self.interface) advertise_interval = int(self.advertise_interval) / 1000
self.updates_cmd.append("vrrp vrid %s timer advertise %s" % ( self.updates_cmd.append("vrrp vrid %s timer advertise %s<seconds>" % (
self.vrid, self.advertise_interval)) self.vrid, int(advertise_interval)))
if self.preempt_timer_delay: if self.preempt_timer_delay:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append("vrrp vrid %s preempt timer delay %s" % (self.vrid, self.updates_cmd.append("vrrp vrid %s preempt timer delay %s" % (self.vrid,
self.preempt_timer_delay)) self.preempt_timer_delay))
if self.holding_multiplier: if self.holding_multiplier:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"vrrp vrid %s holding-multiplier %s" % (self.vrid, self.holding_multiplier)) "vrrp vrid %s holding-multiplier %s" % (self.vrid, self.holding_multiplier))
if self.admin_vrid and self.admin_interface: if self.admin_vrid and self.admin_interface:
if self.admin_flowdown == "true": if self.admin_flowdown == "true":
self.updates_cmd.append(
"interface %s" % self.interface)
self.updates_cmd.append("vrrp vrid %s track admin-vrrp interface %s vrid %s unflowdown" % self.updates_cmd.append("vrrp vrid %s track admin-vrrp interface %s vrid %s unflowdown" %
(self.vrid, self.admin_interface, self.admin_vrid)) (self.vrid, self.admin_interface, self.admin_vrid))
else: else:
self.updates_cmd.append(
"interface %s" % self.interface)
self.updates_cmd.append("vrrp vrid %s track admin-vrrp interface %s vrid %s" % self.updates_cmd.append("vrrp vrid %s track admin-vrrp interface %s vrid %s" %
(self.vrid, self.admin_interface, self.admin_vrid)) (self.vrid, self.admin_interface, self.admin_vrid))
if self.auth_mode and self.auth_key: if self.auth_mode and self.auth_key:
if self.auth_mode == "simple": if self.auth_mode == "simple":
if self.is_plain == "true": if self.is_plain == "true":
self.updates_cmd.append(
"interface %s" % self.interface)
self.updates_cmd.append("vrrp vrid %s authentication-mode simple plain %s" % self.updates_cmd.append("vrrp vrid %s authentication-mode simple plain %s" %
(self.vrid, self.auth_key)) (self.vrid, self.auth_key))
else: else:
self.updates_cmd.append(
"interface %s" % self.interface)
self.updates_cmd.append("vrrp vrid %s authentication-mode simple cipher %s" % self.updates_cmd.append("vrrp vrid %s authentication-mode simple cipher %s" %
(self.vrid, self.auth_key)) (self.vrid, self.auth_key))
if self.auth_mode == "md5": if self.auth_mode == "md5":
self.updates_cmd.append(
"interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"vrrp vrid %s authentication-mode md5 %s" % (self.vrid, self.auth_key)) "vrrp vrid %s authentication-mode md5 %s" % (self.vrid, self.auth_key))
self.changed = True self.changed = True
@ -1059,42 +1023,36 @@ class Vrrp(object):
self.module.fail_json( self.module.fail_json(
msg='Error: set vrrp global atrribute info failed.') msg='Error: set vrrp global atrribute info failed.')
if self.interface and self.vrid: if self.interface and self.vrid:
self.updates_cmd.append("interface %s" % self.interface)
if self.vrrp_type == "admin": if self.vrrp_type == "admin":
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s admin" % self.vrid) "undo vrrp vrid %s admin" % self.vrid)
if self.priority: if self.priority:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s priority" % self.vrid) "undo vrrp vrid %s priority" % self.vrid)
if self.fast_resume: if self.fast_resume:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s fast-resume" % self.vrid) "undo vrrp vrid %s fast-resume" % self.vrid)
if self.advertise_interval: if self.advertise_interval:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s timer advertise" % self.vrid) "undo vrrp vrid %s timer advertise" % self.vrid)
if self.preempt_timer_delay: if self.preempt_timer_delay:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s preempt timer delay" % self.vrid) "undo vrrp vrid %s preempt timer delay" % self.vrid)
if self.holding_multiplier: if self.holding_multiplier:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s holding-multiplier" % self.vrid) "undo vrrp vrid %s holding-multiplier" % self.vrid)
if self.admin_vrid and self.admin_interface: if self.admin_vrid and self.admin_interface:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s track admin-vrrp" % self.vrid) "undo vrrp vrid %s track admin-vrrp" % self.vrid)
if self.auth_mode: if self.auth_mode:
self.updates_cmd.append("interface %s" % self.interface)
self.updates_cmd.append( self.updates_cmd.append(
"undo vrrp vrid %s authentication-mode" % self.vrid) "undo vrrp vrid %s authentication-mode" % self.vrid)
self.changed = True self.changed = True
@ -1309,7 +1267,7 @@ class Vrrp(object):
self.module.fail_json( self.module.fail_json(
msg='Error: admin_interface admin_vrid vrrp_type interface vrid must ' msg='Error: admin_interface admin_vrid vrrp_type interface vrid must '
'be config at the same time.') 'be config at the same time.')
if self.auth_mode == "md5" and self.is_plain is True: if self.auth_mode == "md5" and self.is_plain == "true":
self.module.fail_json( self.module.fail_json(
msg='Error: is_plain can not be True when auth_mode is md5.') msg='Error: is_plain can not be True when auth_mode is md5.')
@ -1339,10 +1297,10 @@ def main():
vrid=dict(type='str'), vrid=dict(type='str'),
virtual_ip=dict(type='str'), virtual_ip=dict(type='str'),
vrrp_type=dict(type='str', choices=['normal', 'member', 'admin']), vrrp_type=dict(type='str', choices=['normal', 'member', 'admin']),
admin_ignore_if_down=dict(type='str', choices=['true', 'false']), admin_ignore_if_down=dict(type='bool', default=False),
admin_vrid=dict(type='str'), admin_vrid=dict(type='str'),
admin_interface=dict(type='str'), admin_interface=dict(type='str'),
admin_flowdown=dict(type='str', choices=['true', 'false']), admin_flowdown=dict(type='bool', default=False),
priority=dict(type='str'), priority=dict(type='str'),
version=dict(type='str', choices=['v2', 'v3']), version=dict(type='str', choices=['v2', 'v3']),
advertise_interval=dict(type='str'), advertise_interval=dict(type='str'),
@ -1351,7 +1309,7 @@ def main():
recover_delay=dict(type='str'), recover_delay=dict(type='str'),
holding_multiplier=dict(type='str'), holding_multiplier=dict(type='str'),
auth_mode=dict(type='str', choices=['simple', 'md5', 'none']), auth_mode=dict(type='str', choices=['simple', 'md5', 'none']),
is_plain=dict(type='str', choices=['true', 'false']), is_plain=dict(type='bool', default=False),
auth_key=dict(type='str'), auth_key=dict(type='str'),
fast_resume=dict(type='str', choices=['enable', 'disable']), fast_resume=dict(type='str', choices=['enable', 'disable']),
state=dict(type='str', default='present', state=dict(type='str', default='present',

Loading…
Cancel
Save