Use stack name or id for backwards compatibility
Heat used to accept either stack name or id Scale nodes in the documentation and in the argparse usage states that stacks can be identified by name or id but mistral only accepts stack names. This makes the client accept names or ids and pass names for the mistral workflow Change-Id: If7527e36c1e5d2214dc155392a2e3750b38ec365 Closes-Bug: #1640933
This commit is contained in:
parent
c212fbd065
commit
a3012ca424
|
@ -44,6 +44,8 @@ class TestDeleteNode(fakes.TestDeleteNode):
|
|||
self.app.client_manager.tripleoclient = self.tripleoclient
|
||||
|
||||
self.workflow = self.app.client_manager.workflow_engine
|
||||
self.stack_name = self.app.client_manager.orchestration.stacks.get
|
||||
self.stack_name.return_value = mock.Mock(stack_name="overcloud")
|
||||
|
||||
# Mock UUID4 generation for every test
|
||||
uuid4_patcher = mock.patch('uuid.uuid4', return_value="UUID4")
|
||||
|
@ -65,6 +67,8 @@ class TestDeleteNode(fakes.TestDeleteNode):
|
|||
"status": "SUCCESS"
|
||||
}
|
||||
|
||||
self.stack_name.return_value = mock.Mock(stack_name="overcast")
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
|
||||
# Verify
|
||||
|
@ -76,6 +80,28 @@ class TestDeleteNode(fakes.TestDeleteNode):
|
|||
'nodes': ['instance1', 'instance2']
|
||||
})
|
||||
|
||||
def test_node_wrong_stack(self):
|
||||
argslist = ['instance1', '--templates',
|
||||
'--stack', 'overcast']
|
||||
verifylist = [
|
||||
('stack', 'overcast'),
|
||||
('nodes', ['instance1', ])
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
|
||||
|
||||
self.websocket.wait_for_message.return_value = {
|
||||
"status": "SUCCESS"
|
||||
}
|
||||
|
||||
self.stack_name.return_value = None
|
||||
|
||||
self.assertRaises(exceptions.InvalidConfiguration,
|
||||
self.cmd.take_action,
|
||||
parsed_args)
|
||||
|
||||
# Verify
|
||||
self.workflow.executions.create.assert_not_called()
|
||||
|
||||
def test_node_delete_without_stack(self):
|
||||
|
||||
arglist = ['instance1', ]
|
||||
|
|
|
@ -22,6 +22,7 @@ from osc_lib.i18n import _
|
|||
from osc_lib import utils
|
||||
|
||||
from tripleoclient import constants
|
||||
from tripleoclient.exceptions import InvalidConfiguration
|
||||
from tripleoclient import utils as oooutils
|
||||
from tripleoclient.workflows import baremetal
|
||||
from tripleoclient.workflows import scale
|
||||
|
@ -65,12 +66,19 @@ class DeleteNode(command.Command):
|
|||
def take_action(self, parsed_args):
|
||||
self.log.debug("take_action(%s)" % parsed_args)
|
||||
clients = self.app.client_manager
|
||||
orchestration_client = clients.orchestration
|
||||
|
||||
stack = oooutils.get_stack(orchestration_client, parsed_args.stack)
|
||||
|
||||
if not stack:
|
||||
raise InvalidConfiguration("stack {} not found".format(
|
||||
parsed_args.stack))
|
||||
|
||||
nodes = '\n'.join('- %s' % node for node in parsed_args.nodes)
|
||||
print("Deleting the following nodes from stack {stack}:\n{nodes}"
|
||||
.format(stack=parsed_args.stack, nodes=nodes))
|
||||
.format(stack=stack.stack_name, nodes=nodes))
|
||||
|
||||
scale.scale_down(clients, parsed_args.stack, parsed_args.nodes)
|
||||
scale.scale_down(clients, stack.stack_name, parsed_args.nodes)
|
||||
|
||||
|
||||
class ProvideNode(command.Command):
|
||||
|
|
Loading…
Reference in New Issue