python-tripleoclient/tripleoclient/workflows/scale.py
Thomas Herve c821bbe2b7 Don't exit on RUNNING status on delete
In delete node and delete stack, we exit on non SUCCESS messages, but
mistral also sends us RUNNING messages when calling stack list, that we
should consume.

Change-Id: I45442ef2c622463a957c84be47f38ec4528001ac
Closes-Bug: #1804660
2018-11-22 15:16:54 +01:00

59 lines
1.9 KiB
Python

# Copyright 2016 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from __future__ import print_function
from tripleoclient.exceptions import InvalidConfiguration
from tripleoclient.workflows import base
def delete_node(clients, **workflow_input):
workflow_client = clients.workflow_engine
tripleoclients = clients.tripleoclient
with tripleoclients.messaging_websocket() as ws:
execution = base.start_workflow(
workflow_client,
'tripleo.scale.v1.delete_node',
workflow_input=workflow_input
)
for payload in base.wait_for_messages(workflow_client, ws, execution):
status = payload['status']
if status == 'RUNNING':
continue
if status != 'SUCCESS':
raise InvalidConfiguration(payload['message'])
def scale_down(clients, plan_name, nodes, timeout=None):
"""Deletes overcloud nodes from a heat stack.
:param clients: openstack clients
:param plan_name: name of the container holding the plan data
:param nodes: list of node id's to remove from the stack
:param timeout: timeout for stack update operation
"""
workflow_input = {
"container": plan_name,
"nodes": nodes,
}
if timeout is not None:
workflow_input['timeout'] = timeout
delete_node(clients, **workflow_input)