update to fix a bug (#59346)
This commit is contained in:
parent
ba90263c22
commit
6ff54c546e
1 changed files with 49 additions and 44 deletions
|
@ -132,27 +132,8 @@ updates:
|
||||||
|
|
||||||
import re
|
import re
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.network.cloudengine.ce import get_nc_config, ce_argument_spec, run_commands
|
from ansible.module_utils.network.cloudengine.ce import ce_argument_spec, run_commands
|
||||||
|
from ansible.module_utils.connection import exec_command
|
||||||
|
|
||||||
CE_NC_GET_STARTUP_INFO = """
|
|
||||||
<filter type="subtree">
|
|
||||||
<cfg xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
|
|
||||||
<startupInfos>
|
|
||||||
<startupInfo>
|
|
||||||
<position></position>
|
|
||||||
<configedSysSoft></configedSysSoft>
|
|
||||||
<curSysSoft></curSysSoft>
|
|
||||||
<nextSysSoft></nextSysSoft>
|
|
||||||
<curStartupFile></curStartupFile>
|
|
||||||
<nextStartupFile></nextStartupFile>
|
|
||||||
<curPatchFile></curPatchFile>
|
|
||||||
<nextPatchFile></nextPatchFile>
|
|
||||||
</startupInfo>
|
|
||||||
</startupInfos>
|
|
||||||
</cfg>
|
|
||||||
</filter>
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class StartUp(object):
|
class StartUp(object):
|
||||||
|
@ -196,28 +177,37 @@ class StartUp(object):
|
||||||
self.module.fail_json(msg='Error: %s failed.' % xml_name)
|
self.module.fail_json(msg='Error: %s failed.' % xml_name)
|
||||||
|
|
||||||
def get_startup_dict(self):
|
def get_startup_dict(self):
|
||||||
""" get rollback attributes dict."""
|
"""Retrieves the current config from the device or cache
|
||||||
|
"""
|
||||||
|
cmd = 'display startup'
|
||||||
|
rc, out, err = exec_command(self.module, cmd)
|
||||||
|
if rc != 0:
|
||||||
|
self.module.fail_json(msg=err)
|
||||||
|
cfg = str(out).strip()
|
||||||
|
|
||||||
startup_info = dict()
|
startup_info = dict()
|
||||||
conf_str = CE_NC_GET_STARTUP_INFO
|
|
||||||
xml_str = get_nc_config(self.module, conf_str)
|
|
||||||
|
|
||||||
startup_info["StartupInfos"] = list()
|
startup_info["StartupInfos"] = list()
|
||||||
if "<data/>" in xml_str:
|
if not cfg:
|
||||||
return startup_info
|
return startup_info
|
||||||
else:
|
else:
|
||||||
re_find = re.findall(r'.*<position>(.*)</position>.*\s*'
|
re_find = re.findall(r'(.*)\s*'
|
||||||
r'<nextStartupFile>(.*)</nextStartupFile>.*\s*'
|
r'\s*Configured\s*startup\s*system\s*software:\s*(.*)'
|
||||||
r'<configedSysSoft>(.*)</configedSysSoft>.*\s*'
|
r'\s*Startup\s*system\s*software:\s*(.*)'
|
||||||
r'<curSysSoft>(.*)</curSysSoft>.*\s*'
|
r'\s*Next\s*startup\s*system\s*software:\s*(.*)'
|
||||||
r'<nextSysSoft>(.*)</nextSysSoft>.*\s*'
|
r'\s*Startup\s*saved-configuration\s*file:\s*(.*)'
|
||||||
r'<curStartupFile>(.*)</curStartupFile>.*\s*'
|
r'\s*Next\s*startup\s*saved-configuration\s*file:\s*(.*)'
|
||||||
r'<curPatchFile>(.*)</curPatchFile>.*\s*'
|
r'\s*Startup\s*paf\s*file:\s*(.*)'
|
||||||
r'<nextPatchFile>(.*)</nextPatchFile>.*', xml_str)
|
r'\s*Next\s*startup\s*paf\s*file:\s*(.*)'
|
||||||
|
r'\s*Startup\s*patch\s*package:\s*(.*)'
|
||||||
|
r'\s*Next\s*startup\s*patch\s*package:\s*(.*)', cfg)
|
||||||
|
|
||||||
|
if re_find:
|
||||||
for mem in re_find:
|
for mem in re_find:
|
||||||
startup_info["StartupInfos"].append(
|
startup_info["StartupInfos"].append(
|
||||||
dict(position=mem[0], nextStartupFile=mem[1], configSysSoft=mem[2], curentSysSoft=mem[3],
|
dict(nextStartupFile=mem[5], configSysSoft=mem[1], curentSysSoft=mem[2],
|
||||||
nextSysSoft=mem[4], curentStartupFile=mem[5], curentPatchFile=mem[6], nextPatchFile=mem[7]))
|
nextSysSoft=mem[3], curentStartupFile=mem[4], curentPatchFile=mem[8],
|
||||||
|
nextPatchFile=mem[9], postion=mem[0]))
|
||||||
|
return startup_info
|
||||||
return startup_info
|
return startup_info
|
||||||
|
|
||||||
def get_cfg_filename_type(self, filename):
|
def get_cfg_filename_type(self, filename):
|
||||||
|
@ -404,30 +394,45 @@ class StartUp(object):
|
||||||
"""get existing info"""
|
"""get existing info"""
|
||||||
|
|
||||||
if not self.startup_info:
|
if not self.startup_info:
|
||||||
return
|
self.existing["StartupInfos"] = None
|
||||||
|
else:
|
||||||
self.existing["StartupInfos"] = self.startup_info["StartupInfos"]
|
self.existing["StartupInfos"] = self.startup_info["StartupInfos"]
|
||||||
|
|
||||||
def get_end_state(self):
|
def get_end_state(self):
|
||||||
"""get end state info"""
|
"""get end state info"""
|
||||||
|
if not self.startup_info:
|
||||||
self.end_state["StartupInfos"] = None
|
self.end_state["StartupInfos"] = None
|
||||||
|
else:
|
||||||
|
self.end_state["StartupInfos"] = self.startup_info["StartupInfos"]
|
||||||
|
if self.end_state == self.existing:
|
||||||
|
self.changed = False
|
||||||
|
|
||||||
def work(self):
|
def work(self):
|
||||||
"""worker"""
|
"""worker"""
|
||||||
|
|
||||||
self.check_params()
|
self.check_params()
|
||||||
self.get_proposed()
|
self.get_proposed()
|
||||||
|
|
||||||
self.startup_info = self.get_startup_dict()
|
self.startup_info = self.get_startup_dict()
|
||||||
self.get_existing()
|
self.get_existing()
|
||||||
|
|
||||||
|
startup_info = self.startup_info["StartupInfos"][0]
|
||||||
if self.cfg_file:
|
if self.cfg_file:
|
||||||
|
if self.cfg_file != startup_info["nextStartupFile"]:
|
||||||
self.startup_next_cfg_file()
|
self.startup_next_cfg_file()
|
||||||
|
|
||||||
if self.software_file:
|
if self.software_file:
|
||||||
|
if self.software_file != startup_info["nextSysSoft"]:
|
||||||
self.startup_next_software_file()
|
self.startup_next_software_file()
|
||||||
if self.patch_file:
|
if self.patch_file:
|
||||||
|
if self.patch_file != startup_info["nextPatchFile"]:
|
||||||
self.startup_next_pat_file()
|
self.startup_next_pat_file()
|
||||||
if self.action == "display":
|
if self.action == "display":
|
||||||
self.startup_info = self.get_startup_dict()
|
self.startup_info = self.get_startup_dict()
|
||||||
|
|
||||||
|
self.startup_info = self.get_startup_dict()
|
||||||
self.get_end_state()
|
self.get_end_state()
|
||||||
|
|
||||||
self.results['changed'] = self.changed
|
self.results['changed'] = self.changed
|
||||||
self.results['proposed'] = self.proposed
|
self.results['proposed'] = self.proposed
|
||||||
self.results['existing'] = self.existing
|
self.results['existing'] = self.existing
|
||||||
|
|
Loading…
Reference in a new issue