update ce_vrrp to fix bugs (#60034)
* update ce_vrrp to resolve conflicts * Update ce_vrrp modified information * Update ce_vrrp modified information
This commit is contained in:
parent
777395ec18
commit
f75fbf94f8
2 changed files with 21 additions and 61 deletions
2
changelogs/fragments/59677-ce_vrrp-to-fix-bugs.yml
Normal file
2
changelogs/fragments/59677-ce_vrrp-to-fix-bugs.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- ce_vrrp - update to fix some bugs - Solving the mistake of parameter judgment, update_cmds statement missing. (https://github.com/ansible/ansible/pull/59677)
|
|
@ -49,7 +49,7 @@ options:
|
|||
description:
|
||||
- mVRRP ignores an interface Down event.
|
||||
type: bool
|
||||
default: 'no'
|
||||
default: 'false'
|
||||
admin_vrid:
|
||||
description:
|
||||
- Tracked mVRRP ID. The value is an integer ranging from 1 to 255.
|
||||
|
@ -60,7 +60,7 @@ options:
|
|||
description:
|
||||
- Disable the flowdown function for service VRRP.
|
||||
type: bool
|
||||
default: 'no'
|
||||
default: 'false'
|
||||
priority:
|
||||
description:
|
||||
- Configured VRRP priority.
|
||||
|
@ -101,7 +101,7 @@ options:
|
|||
- Select the display mode of an authentication key.
|
||||
By default, an authentication key is displayed in ciphertext.
|
||||
type: bool
|
||||
default: 'no'
|
||||
default: 'false'
|
||||
auth_key:
|
||||
description:
|
||||
- This object is set based on the authentication type.
|
||||
|
@ -117,7 +117,6 @@ options:
|
|||
- Specify desired state of the resource.
|
||||
default: present
|
||||
choices: ['present','absent']
|
||||
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
|
@ -132,60 +131,50 @@ EXAMPLES = '''
|
|||
username: "{{ username }}"
|
||||
password: "{{ password }}"
|
||||
transport: cli
|
||||
|
||||
tasks:
|
||||
|
||||
- name: Set vrrp version
|
||||
ce_vrrp:
|
||||
version: v3
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp gratuitous-arp interval
|
||||
ce_vrrp:
|
||||
gratuitous_arp_interval: 40
|
||||
mlag_id: 4
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp recover-delay
|
||||
ce_vrrp:
|
||||
recover_delay: 10
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp vrid virtual-ip
|
||||
ce_vrrp:
|
||||
interface: 40GE2/0/8
|
||||
vrid: 1
|
||||
virtual_ip: 10.14.2.7
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp vrid admin
|
||||
ce_vrrp:
|
||||
interface: 40GE2/0/8
|
||||
vrid: 1
|
||||
vrrp_type: admin
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp vrid fast_resume
|
||||
ce_vrrp:
|
||||
interface: 40GE2/0/8
|
||||
vrid: 1
|
||||
fast_resume: enable
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp vrid holding-multiplier
|
||||
ce_vrrp:
|
||||
interface: 40GE2/0/8
|
||||
vrid: 1
|
||||
holding_multiplier: 4
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp vrid preempt timer delay
|
||||
ce_vrrp:
|
||||
interface: 40GE2/0/8
|
||||
vrid: 1
|
||||
preempt_timer_delay: 10
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp vrid admin-vrrp
|
||||
ce_vrrp:
|
||||
interface: 40GE2/0/8
|
||||
|
@ -194,7 +183,6 @@ EXAMPLES = '''
|
|||
admin_vrid: 2
|
||||
vrrp_type: member
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Set vrrp vrid authentication-mode
|
||||
ce_vrrp:
|
||||
interface: 40GE2/0/8
|
||||
|
@ -278,14 +266,12 @@ CE_NC_SET_VRRP_GROUP_INFO_HEAD = """
|
|||
<vrrpGroup operation="merge">
|
||||
<ifName>%s</ifName>
|
||||
<vrrpId>%s</vrrpId>
|
||||
|
||||
"""
|
||||
CE_NC_SET_VRRP_GROUP_INFO_TAIL = """
|
||||
</vrrpGroup>
|
||||
</vrrpGroups>
|
||||
</vrrp>
|
||||
</config>
|
||||
|
||||
"""
|
||||
CE_NC_GET_VRRP_GLOBAL_INFO = """
|
||||
<filter type="subtree">
|
||||
|
@ -298,7 +284,6 @@ CE_NC_GET_VRRP_GLOBAL_INFO = """
|
|||
</vrrpGlobalCfg>
|
||||
</vrrp>
|
||||
</filter>
|
||||
|
||||
"""
|
||||
|
||||
CE_NC_SET_VRRP_GLOBAL_HEAD = """
|
||||
|
@ -310,7 +295,6 @@ CE_NC_SET_VRRP_GLOBAL_TAIL = """
|
|||
</vrrpGlobalCfg>
|
||||
</vrrp>
|
||||
</config>
|
||||
|
||||
"""
|
||||
|
||||
CE_NC_GET_VRRP_VIRTUAL_IP_INFO = """
|
||||
|
@ -329,7 +313,6 @@ CE_NC_GET_VRRP_VIRTUAL_IP_INFO = """
|
|||
</vrrpGroups>
|
||||
</vrrp>
|
||||
</filter>
|
||||
|
||||
"""
|
||||
CE_NC_CREATE_VRRP_VIRTUAL_IP_INFO = """
|
||||
<config>
|
||||
|
@ -347,7 +330,6 @@ CE_NC_CREATE_VRRP_VIRTUAL_IP_INFO = """
|
|||
</vrrpGroups>
|
||||
</vrrp>
|
||||
</config>
|
||||
|
||||
"""
|
||||
CE_NC_DELETE_VRRP_VIRTUAL_IP_INFO = """
|
||||
<config>
|
||||
|
@ -365,7 +347,6 @@ CE_NC_DELETE_VRRP_VIRTUAL_IP_INFO = """
|
|||
</vrrpGroups>
|
||||
</vrrp>
|
||||
</config>
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
@ -431,10 +412,10 @@ class Vrrp(object):
|
|||
self.vrid = self.module.params['vrid']
|
||||
self.virtual_ip = self.module.params['virtual_ip']
|
||||
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_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.version = self.module.params['version']
|
||||
self.advertise_interval = self.module.params['advertise_interval']
|
||||
|
@ -444,7 +425,7 @@ class Vrrp(object):
|
|||
self.recover_delay = self.module.params['recover_delay']
|
||||
self.holding_multiplier = self.module.params['holding_multiplier']
|
||||
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.fast_resume = self.module.params['fast_resume']
|
||||
self.state = self.module.params['state']
|
||||
|
@ -601,10 +582,12 @@ class Vrrp(object):
|
|||
if not self.advertise_interval.isdigit():
|
||||
self.module.fail_json(
|
||||
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(
|
||||
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
|
||||
if self.preempt_timer_delay:
|
||||
if not self.preempt_timer_delay.isdigit():
|
||||
|
@ -934,76 +917,57 @@ class Vrrp(object):
|
|||
if "<ok/>" not in recv_xml:
|
||||
self.module.fail_json(
|
||||
msg='Error: set vrrp group atrribute info failed.')
|
||||
|
||||
if self.interface and self.vrid:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
if self.vrrp_type == "admin":
|
||||
if self.admin_ignore_if_down is True:
|
||||
self.updates_cmd.append(
|
||||
"interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"vrrp vrid %s admin ignore-if-down" % self.vrid)
|
||||
else:
|
||||
self.updates_cmd.append(
|
||||
"interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"vrrp vrid %s admin" % self.vrid)
|
||||
|
||||
if self.priority:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"vrrp vrid %s priority %s" % (self.vrid, self.priority))
|
||||
|
||||
if self.fast_resume == "enable":
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"vrrp vrid %s fast-resume" % self.vrid)
|
||||
if self.fast_resume == "disable":
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s fast-resume" % self.vrid)
|
||||
|
||||
if self.advertise_interval:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append("vrrp vrid %s timer advertise %s" % (
|
||||
self.vrid, self.advertise_interval))
|
||||
advertise_interval = int(self.advertise_interval) / 1000
|
||||
self.updates_cmd.append("vrrp vrid %s timer advertise %s<seconds>" % (
|
||||
self.vrid, int(advertise_interval)))
|
||||
|
||||
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.preempt_timer_delay))
|
||||
|
||||
if self.holding_multiplier:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"vrrp vrid %s holding-multiplier %s" % (self.vrid, self.holding_multiplier))
|
||||
|
||||
if self.admin_vrid and self.admin_interface:
|
||||
if self.admin_flowdown is True:
|
||||
self.updates_cmd.append(
|
||||
"interface %s" % self.interface)
|
||||
if self.admin_flowdown == "true":
|
||||
self.updates_cmd.append("vrrp vrid %s track admin-vrrp interface %s vrid %s unflowdown" %
|
||||
(self.vrid, self.admin_interface, self.admin_vrid))
|
||||
else:
|
||||
self.updates_cmd.append(
|
||||
"interface %s" % self.interface)
|
||||
self.updates_cmd.append("vrrp vrid %s track admin-vrrp interface %s vrid %s" %
|
||||
(self.vrid, self.admin_interface, self.admin_vrid))
|
||||
|
||||
if self.auth_mode and self.auth_key:
|
||||
if self.auth_mode == "simple":
|
||||
if self.is_plain is True:
|
||||
self.updates_cmd.append(
|
||||
"interface %s" % self.interface)
|
||||
if self.is_plain == "true":
|
||||
self.updates_cmd.append("vrrp vrid %s authentication-mode simple plain %s" %
|
||||
(self.vrid, self.auth_key))
|
||||
else:
|
||||
self.updates_cmd.append(
|
||||
"interface %s" % self.interface)
|
||||
self.updates_cmd.append("vrrp vrid %s authentication-mode simple cipher %s" %
|
||||
(self.vrid, self.auth_key))
|
||||
if self.auth_mode == "md5":
|
||||
self.updates_cmd.append(
|
||||
"interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"vrrp vrid %s authentication-mode md5 %s" % (self.vrid, self.auth_key))
|
||||
self.changed = True
|
||||
|
@ -1063,42 +1027,36 @@ class Vrrp(object):
|
|||
self.module.fail_json(
|
||||
msg='Error: set vrrp global atrribute info failed.')
|
||||
if self.interface and self.vrid:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
if self.vrrp_type == "admin":
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s admin" % self.vrid)
|
||||
|
||||
if self.priority:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s priority" % self.vrid)
|
||||
|
||||
if self.fast_resume:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s fast-resume" % self.vrid)
|
||||
|
||||
if self.advertise_interval:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s timer advertise" % self.vrid)
|
||||
|
||||
if self.preempt_timer_delay:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s preempt timer delay" % self.vrid)
|
||||
|
||||
if self.holding_multiplier:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s holding-multiplier" % self.vrid)
|
||||
|
||||
if self.admin_vrid and self.admin_interface:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s track admin-vrrp" % self.vrid)
|
||||
|
||||
if self.auth_mode:
|
||||
self.updates_cmd.append("interface %s" % self.interface)
|
||||
self.updates_cmd.append(
|
||||
"undo vrrp vrid %s authentication-mode" % self.vrid)
|
||||
self.changed = True
|
||||
|
@ -1311,7 +1269,7 @@ class Vrrp(object):
|
|||
self.module.fail_json(
|
||||
msg='Error: admin_interface admin_vrid vrrp_type interface vrid must '
|
||||
'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(
|
||||
msg='Error: is_plain can not be True when auth_mode is md5.')
|
||||
|
||||
|
|
Loading…
Reference in a new issue