Merge "Noop run on specified set of nodes"

This commit is contained in:
Jenkins 2016-09-08 17:55:04 +00:00 committed by Gerrit Code Review
commit a966b5d719
4 changed files with 58 additions and 10 deletions

View File

@ -464,7 +464,7 @@ class EnvDeploy(EnvMixIn, base.BaseCommand):
'-d', '--dry-run', dest="dry_run",
action='store_true', help=dry_run_help_string)
parser.add_argument(
'-n', '--noop', dest="noop_run",
'--noop', dest="noop_run",
action='store_true', help=noop_run_help_string)
return parser
@ -548,12 +548,21 @@ class EnvDeployNodes(EnvMixIn, base.BaseCommand):
'--force',
action='store_true',
help='Force deploy nodes.')
noop_run_help_string = 'Specifies noop-run deployment ' \
'configuring tasks executor to run ' \
'puppet and shell tasks in noop mode and ' \
'skip all other. Stores noop-run result ' \
'summary in nailgun database'
parser.add_argument('--noop', dest="noop_run", action='store_true',
help=noop_run_help_string)
return parser
def take_action(self, parsed_args):
node_ids = parsed_args.nodes
task = self.client.deploy_nodes(parsed_args.env, node_ids,
force=parsed_args.force)
force=parsed_args.force,
noop_run=parsed_args.noop_run)
msg = ('Deployment task with id {t} for the nodes {n} within '
'the environment {e} has been '

View File

@ -130,7 +130,7 @@ class TestEnvCommand(test_engine.BaseCLITest):
dry_run = False
noop_run = True
args = 'env deploy -n'
args = 'env deploy --noop'
args += ' 42'
self.exec_command(args)
@ -180,7 +180,7 @@ class TestEnvCommand(test_engine.BaseCLITest):
def test_env_redeploy_noop_run(self):
dry_run = False
noop_run = True
args = 'env redeploy -n'
args = 'env redeploy --noop'
args += ' 42'
@ -260,6 +260,7 @@ class TestEnvCommand(test_engine.BaseCLITest):
def test_env_nodes_deploy(self):
env_id = 42
node_ids = [43, 44]
noop_run = False
args = ('env nodes deploy '
'--nodes {n[0]} {n[1]} --env {e}').format(e=env_id, n=node_ids)
@ -267,11 +268,14 @@ class TestEnvCommand(test_engine.BaseCLITest):
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=False)
force=False,
noop_run=noop_run)
def test_env_nodes_deploy_force(self):
env_id = 42
node_ids = [43, 44]
force = True
noop_run = False
args = ('env nodes deploy --force '
'--nodes {n[0]} {n[1]} --env {e}').format(e=env_id, n=node_ids)
@ -279,7 +283,23 @@ class TestEnvCommand(test_engine.BaseCLITest):
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)
noop_run=noop_run,
force=force)
def test_env_nodes_deploy_noop_run(self):
env_id = 42
node_ids = [43, 44]
force = False
noop_run = True
args = ('env nodes deploy --noop '
'--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=force,
noop_run=noop_run)
def test_env_nodes_provision(self):
env_id = 42

View File

@ -349,6 +349,22 @@ class TestEnvFacade(test_api.BaseLibTest):
matcher.last_request.qs['nodes'])
self.assertEqual(matcher.last_request.qs['force'][0], str(int(force)))
def test_env_deploy_nodes_noop_run(self):
env_id = 42
node_ids = [43, 44]
noop_run = 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, noop_run=noop_run)
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['noop_run'][0],
str(int(noop_run)))
def test_env_provision_nodes(self):
env_id = 42
node_ids = [43, 44]

View File

@ -23,7 +23,8 @@ 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}&force={force}'
deploy_nodes_url = ('clusters/{env_id}/deploy/?'
'nodes={nodes}&force={force}&noop_run={noop_run}')
def create(self, name, release_id, net_segment_type):
@ -96,12 +97,14 @@ class EnvironmentClient(base_v1.BaseV1Client):
nodes=nodes)
return self.connection.put_request(uri, {})
def deploy_nodes(self, environment_id, node_ids, force=False):
def deploy_nodes(self, environment_id, node_ids, force=False,
noop_run=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, force=int(force))
uri = self.deploy_nodes_url.format(env_id=environment_id, nodes=nodes,
force=int(force),
noop_run=int(noop_run))
return self.connection.put_request(uri, {})
def redeploy_changes(self, environment_id, dry_run=False, noop_run=False):