Merge "Flag --force for nodes deploy command"

This commit is contained in:
Jenkins
2016-09-01 15:16:04 +00:00
committed by Gerrit Code Review
4 changed files with 38 additions and 5 deletions

View File

@@ -544,11 +544,16 @@ class EnvDeployNodes(EnvMixIn, base.BaseCommand):
type=int,
nargs='+',
help='Ids of nodes to deploy.')
parser.add_argument('-f',
'--force',
action='store_true',
help='Force deploy nodes.')
return parser
def take_action(self, parsed_args):
node_ids = parsed_args.nodes
task = self.client.deploy_nodes(parsed_args.env, node_ids)
task = self.client.deploy_nodes(parsed_args.env, node_ids,
force=parsed_args.force)
msg = ('Deployment task with id {t} for the nodes {n} within '
'the environment {e} has been '

View File

@@ -266,7 +266,20 @@ class TestEnvCommand(test_engine.BaseCLITest):
self.exec_command(args)
self.m_client.deploy_nodes.return_value = fake_task.get_fake_task()
self.m_client.deploy_nodes.assert_called_once_with(env_id, node_ids)
self.m_client.deploy_nodes.assert_called_once_with(env_id, node_ids,
force=False)
def test_env_nodes_deploy_force(self):
env_id = 42
node_ids = [43, 44]
args = ('env nodes deploy --force '
'--nodes {n[0]} {n[1]} --env {e}').format(e=env_id, n=node_ids)
self.exec_command(args)
self.m_client.deploy_nodes.return_value = fake_task.get_fake_task()
self.m_client.deploy_nodes.assert_called_once_with(env_id, node_ids,
force=True)
def test_env_nodes_provision(self):
env_id = 42

View File

@@ -334,6 +334,21 @@ class TestEnvFacade(test_api.BaseLibTest):
self.assertEqual([','.join(str(i) for i in node_ids)],
matcher.last_request.qs['nodes'])
def test_env_deploy_nodes_force(self):
env_id = 42
node_ids = [43, 44]
force = True
expected_url = self.get_object_uri(self.res_uri, env_id, '/deploy/')
matcher = self.m_request.put(expected_url, json=utils.get_fake_task())
self.client.deploy_nodes(env_id, node_ids, force=force)
self.assertTrue(matcher.called)
self.assertEqual([','.join(str(i) for i in node_ids)],
matcher.last_request.qs['nodes'])
self.assertEqual(matcher.last_request.qs['force'][0], str(int(force)))
def test_env_provision_nodes(self):
env_id = 42
node_ids = [43, 44]

View File

@@ -23,7 +23,7 @@ class EnvironmentClient(base_v1.BaseV1Client):
_updatable_attributes = ('name',)
provision_nodes_url = 'clusters/{env_id}/provision/?nodes={nodes}'
deploy_nodes_url = 'clusters/{env_id}/deploy/?nodes={nodes}'
deploy_nodes_url = 'clusters/{env_id}/deploy/?nodes={nodes}&force={force}'
def create(self, name, release_id, net_segment_type):
@@ -96,12 +96,12 @@ class EnvironmentClient(base_v1.BaseV1Client):
nodes=nodes)
return self.connection.put_request(uri, {})
def deploy_nodes(self, environment_id, node_ids):
def deploy_nodes(self, environment_id, node_ids, force=False):
"""Deploy specified nodes for the specified environment."""
nodes = ','.join(str(i) for i in node_ids)
uri = self.deploy_nodes_url.format(env_id=environment_id,
nodes=nodes)
nodes=nodes, force=int(force))
return self.connection.put_request(uri, {})
def redeploy_changes(self, environment_id, dry_run=False, noop_run=False):