Add timeout arg to node delete commands
We currently don't use the --timeout option during the node delete execution. This change adds the timeout arg to each playbook execution called. Change-Id: I814e5b14b6f22394417fe8fb808a03cabeb2629e
This commit is contained in:
parent
6e385b32c0
commit
cd940dbcc0
@ -88,7 +88,7 @@ TRIPLEO_PUPPET_MODULES = "/usr/share/openstack-puppet/modules/"
|
|||||||
PUPPET_MODULES = "/etc/puppet/modules/"
|
PUPPET_MODULES = "/etc/puppet/modules/"
|
||||||
PUPPET_BASE = "/etc/puppet/"
|
PUPPET_BASE = "/etc/puppet/"
|
||||||
|
|
||||||
STACK_TIMEOUT = 240
|
STACK_TIMEOUT = 60
|
||||||
STACK_OUTPUTS = ['BlacklistedHostnames',
|
STACK_OUTPUTS = ['BlacklistedHostnames',
|
||||||
'RoleNetIpMap',
|
'RoleNetIpMap',
|
||||||
'BlacklistedIpAddresses',
|
'BlacklistedIpAddresses',
|
||||||
|
@ -215,6 +215,7 @@ class TestDeleteNode(fakes.TestDeleteNode):
|
|||||||
verbosity=mock.ANY,
|
verbosity=mock.ANY,
|
||||||
workdir=mock.ANY,
|
workdir=mock.ANY,
|
||||||
playbook_dir='/usr/share/ansible/tripleo-playbooks',
|
playbook_dir='/usr/share/ansible/tripleo-playbooks',
|
||||||
|
timeout=mock.ANY,
|
||||||
extra_vars={
|
extra_vars={
|
||||||
'stack_name': 'overcast',
|
'stack_name': 'overcast',
|
||||||
'baremetal_deployment': [{
|
'baremetal_deployment': [{
|
||||||
@ -247,6 +248,7 @@ class TestDeleteNode(fakes.TestDeleteNode):
|
|||||||
limit_hosts='overcast-controller-1:overcast-compute-0',
|
limit_hosts='overcast-controller-1:overcast-compute-0',
|
||||||
reproduce_command=True,
|
reproduce_command=True,
|
||||||
ignore_unreachable=True,
|
ignore_unreachable=True,
|
||||||
|
timeout=mock.ANY,
|
||||||
extra_env_variables={
|
extra_env_variables={
|
||||||
"ANSIBLE_BECOME": True,
|
"ANSIBLE_BECOME": True,
|
||||||
"ANSIBLE_PRIVATE_KEY_FILE":
|
"ANSIBLE_PRIVATE_KEY_FILE":
|
||||||
@ -259,6 +261,7 @@ class TestDeleteNode(fakes.TestDeleteNode):
|
|||||||
verbosity=mock.ANY,
|
verbosity=mock.ANY,
|
||||||
workdir=mock.ANY,
|
workdir=mock.ANY,
|
||||||
playbook_dir='/usr/share/ansible/tripleo-playbooks',
|
playbook_dir='/usr/share/ansible/tripleo-playbooks',
|
||||||
|
timeout=mock.ANY,
|
||||||
extra_vars={
|
extra_vars={
|
||||||
'stack_name': 'overcast',
|
'stack_name': 'overcast',
|
||||||
'baremetal_deployment': [{
|
'baremetal_deployment': [{
|
||||||
|
@ -22,6 +22,7 @@ import json
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
from cliff.formatters import table
|
from cliff.formatters import table
|
||||||
from openstack import exceptions as openstack_exc
|
from openstack import exceptions as openstack_exc
|
||||||
@ -32,6 +33,7 @@ import yaml
|
|||||||
|
|
||||||
from tripleoclient import command
|
from tripleoclient import command
|
||||||
from tripleoclient import constants
|
from tripleoclient import constants
|
||||||
|
from tripleoclient import exceptions
|
||||||
from tripleoclient import utils as oooutils
|
from tripleoclient import utils as oooutils
|
||||||
from tripleoclient.workflows import baremetal
|
from tripleoclient.workflows import baremetal
|
||||||
from tripleoclient.workflows import tripleo_baremetal as tb
|
from tripleoclient.workflows import tripleo_baremetal as tb
|
||||||
@ -88,6 +90,7 @@ class DeleteNode(command.Command):
|
|||||||
playbook='cli-overcloud-node-unprovision.yaml',
|
playbook='cli-overcloud-node-unprovision.yaml',
|
||||||
inventory='localhost,',
|
inventory='localhost,',
|
||||||
workdir=tmp,
|
workdir=tmp,
|
||||||
|
timeout=parsed_args.timeout,
|
||||||
playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS,
|
playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS,
|
||||||
verbosity=oooutils.playbook_verbosity(self=self),
|
verbosity=oooutils.playbook_verbosity(self=self),
|
||||||
extra_vars={
|
extra_vars={
|
||||||
@ -136,9 +139,21 @@ class DeleteNode(command.Command):
|
|||||||
'any actions executed on them, please shut '
|
'any actions executed on them, please shut '
|
||||||
'them off prior to their removal.'))
|
'them off prior to their removal.'))
|
||||||
|
|
||||||
|
def _check_timeout(self, start, timeout):
|
||||||
|
used = int((time.time() - start) // 60)
|
||||||
|
remaining = timeout - used
|
||||||
|
if remaining <= 0:
|
||||||
|
raise exceptions.DeploymentError(
|
||||||
|
'Deployment timed out after %sm' % used
|
||||||
|
)
|
||||||
|
return remaining
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
self.log.debug("take_action(%s)" % parsed_args)
|
self.log.debug("take_action(%s)" % parsed_args)
|
||||||
|
|
||||||
|
# Start our timer. This will be used to calculate the timeout.
|
||||||
|
start = time.time()
|
||||||
|
|
||||||
if parsed_args.baremetal_deployment:
|
if parsed_args.baremetal_deployment:
|
||||||
with open(parsed_args.baremetal_deployment, 'r') as fp:
|
with open(parsed_args.baremetal_deployment, 'r') as fp:
|
||||||
roles = yaml.safe_load(fp)
|
roles = yaml.safe_load(fp)
|
||||||
@ -171,6 +186,8 @@ class DeleteNode(command.Command):
|
|||||||
ansible_cfg = os.path.join(ansible_dir, 'ansible.cfg')
|
ansible_cfg = os.path.join(ansible_dir, 'ansible.cfg')
|
||||||
key_file = oooutils.get_key(parsed_args.stack)
|
key_file = oooutils.get_key(parsed_args.stack)
|
||||||
|
|
||||||
|
remaining = self._check_timeout(start, parsed_args.timeout)
|
||||||
|
|
||||||
oooutils.run_ansible_playbook(
|
oooutils.run_ansible_playbook(
|
||||||
playbook='scale_playbook.yaml',
|
playbook='scale_playbook.yaml',
|
||||||
inventory=inventory,
|
inventory=inventory,
|
||||||
@ -181,12 +198,15 @@ class DeleteNode(command.Command):
|
|||||||
limit_hosts=':'.join('%s' % node for node in nodes),
|
limit_hosts=':'.join('%s' % node for node in nodes),
|
||||||
reproduce_command=True,
|
reproduce_command=True,
|
||||||
ignore_unreachable=True,
|
ignore_unreachable=True,
|
||||||
|
timeout=remaining,
|
||||||
extra_env_variables={
|
extra_env_variables={
|
||||||
"ANSIBLE_BECOME": True,
|
"ANSIBLE_BECOME": True,
|
||||||
"ANSIBLE_PRIVATE_KEY_FILE": key_file
|
"ANSIBLE_PRIVATE_KEY_FILE": key_file
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
remaining = self._check_timeout(start, parsed_args.timeout)
|
||||||
|
|
||||||
if parsed_args.baremetal_deployment:
|
if parsed_args.baremetal_deployment:
|
||||||
with oooutils.TempDirs() as tmp:
|
with oooutils.TempDirs() as tmp:
|
||||||
oooutils.run_ansible_playbook(
|
oooutils.run_ansible_playbook(
|
||||||
@ -194,6 +214,7 @@ class DeleteNode(command.Command):
|
|||||||
inventory='localhost,',
|
inventory='localhost,',
|
||||||
workdir=tmp,
|
workdir=tmp,
|
||||||
playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS,
|
playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS,
|
||||||
|
timeout=remaining,
|
||||||
verbosity=oooutils.playbook_verbosity(self=self),
|
verbosity=oooutils.playbook_verbosity(self=self),
|
||||||
extra_vars={
|
extra_vars={
|
||||||
"stack_name": parsed_args.stack,
|
"stack_name": parsed_args.stack,
|
||||||
|
Loading…
Reference in New Issue
Block a user