Add force disruptive option (#47694)

* Use expect module to copy files

* Add force option for disruptive upgrades

* Revert changes to copy_kick_system_images.yaml

(cherry picked from commit c53e3ca8e9)
This commit is contained in:
Mike Wiebe 2018-10-31 05:23:43 -04:00 committed by Toshio Kuratomi
parent 5f0d691716
commit 35eec7b1b0
4 changed files with 26 additions and 3 deletions

View file

@ -345,12 +345,32 @@ def massage_install_data(data):
def build_install_cmd_set(issu, image, kick, type): def build_install_cmd_set(issu, image, kick, type):
commands = ['terminal dont-ask'] commands = ['terminal dont-ask']
# Different NX-OS plaforms behave differently for
# disruptive and non-disruptive upgrade paths.
#
# 1) Combined kickstart/system image:
# * Use option 'non-disruptive' for issu.
# * Omit option non-disruptive' for distruptive upgrades.
# 2) Separate kickstart + system images.
# * Omit hidden 'force' option for issu.
# * Use hidden 'force' option for disruptive upgrades.
if re.search(r'required|desired|yes', issu): if re.search(r'required|desired|yes', issu):
issu_cmd = 'non-disruptive' if kick is None:
issu_cmd = 'non-disruptive'
else:
issu_cmd = ''
else: else:
issu_cmd = '' if kick is None:
issu_cmd = ''
else:
issu_cmd = 'force'
if type == 'impact': if type == 'impact':
rootcmd = 'show install all impact' rootcmd = 'show install all impact'
# The force option is not available for the impact command.
if kick:
issu_cmd = ''
else: else:
rootcmd = 'install all' rootcmd = 'install all'
if kick is None: if kick is None:
@ -358,7 +378,7 @@ def build_install_cmd_set(issu, image, kick, type):
'%s nxos %s %s' % (rootcmd, image, issu_cmd)) '%s nxos %s %s' % (rootcmd, image, issu_cmd))
else: else:
commands.append( commands.append(
'%s system %s kickstart %s' % (rootcmd, image, kick)) '%s %s system %s kickstart %s' % (rootcmd, issu_cmd, image, kick))
return commands return commands

View file

@ -3,6 +3,7 @@
when: delete_image_list is defined when: delete_image_list is defined
- include: targets/nxos_install_os/tasks/upgrade/copy_kick_system_images.yaml - include: targets/nxos_install_os/tasks/upgrade/copy_kick_system_images.yaml
when: copy_images is defined
- include: targets/nxos_install_os/tasks/upgrade/install_with_kick.yaml - include: targets/nxos_install_os/tasks/upgrade/install_with_kick.yaml
when: ki is defined and combined is undefined when: ki is defined and combined is undefined

View file

@ -3,6 +3,7 @@
when: delete_image_list is defined when: delete_image_list is defined
- include: targets/nxos_install_os/tasks/upgrade/copy_kick_system_images.yaml - include: targets/nxos_install_os/tasks/upgrade/copy_kick_system_images.yaml
when: copy_images is defined
- include: targets/nxos_install_os/tasks/upgrade/install_with_kick_provider.yaml - include: targets/nxos_install_os/tasks/upgrade/install_with_kick_provider.yaml
when: ki is defined and combined is undefined when: ki is defined and combined is undefined

View file

@ -5,6 +5,7 @@
- set_fact: checkmode='no' - set_fact: checkmode='no'
- set_fact: issu='desired' - set_fact: issu='desired'
- set_fact: copy_images='yes'
- set_fact: image_dir='/Users/mwiebe/Projects/nxos_ansible/images/' - set_fact: image_dir='/Users/mwiebe/Projects/nxos_ansible/images/'