summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-16 04:37:02 +0000
committerGerrit Code Review <review@openstack.org>2016-02-16 04:37:02 +0000
commit7ee16eed9f251034c0da7a58b1b0f3f6c9f0d220 (patch)
tree046358941c353edbcfd679b340e1fc902dbdffbd
parent609c113d5cbfe38591fb140bf91b718991f63906 (diff)
parentc6221b0975e758d406fa2e9316c1aedfada7edfd (diff)
downloadpython-heatclient-7ee16eed9f251034c0da7a58b1b0f3f6c9f0d220.tar.gz
Merge "Add OpenstackClient plugin for software deployment show"
-rw-r--r--heatclient/osc/v1/software_deployment.py46
-rw-r--r--heatclient/tests/unit/osc/v1/test_software_deployment.py60
-rw-r--r--setup.cfg1
3 files changed, 107 insertions, 0 deletions
diff --git a/heatclient/osc/v1/software_deployment.py b/heatclient/osc/v1/software_deployment.py
index a0259ba..67d1c40 100644
--- a/heatclient/osc/v1/software_deployment.py
+++ b/heatclient/osc/v1/software_deployment.py
@@ -17,6 +17,7 @@ import logging
from cliff import command
from cliff import lister
+from cliff import show
from openstackclient.common import exceptions as exc
from openstackclient.common import utils
@@ -112,3 +113,48 @@ def _list_deployment(heat_client, args=None):
columns,
(utils.get_item_properties(s, columns) for s in deployments)
)
+
+
+class ShowDeployment(show.ShowOne):
+ """Show SoftwareDeployment Details."""
+
+ log = logging.getLogger(__name__ + ".ShowSoftwareDeployment")
+
+ def get_parser(self, prog_name):
+ parser = super(ShowDeployment, self).get_parser(prog_name)
+ parser.add_argument(
+ 'id',
+ metavar='<id>',
+ help=_('ID of the deployment')
+ )
+ parser.add_argument(
+ '--long',
+ action='store_true',
+ help=_('Show more fields in output')
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug("take_action(%s)", parsed_args)
+
+ heat_client = self.app.client_manager.orchestration
+ try:
+ data = heat_client.software_deployments.get(
+ deployment_id=parsed_args.id)
+ except heat_exc.HTTPNotFound:
+ raise exc.CommandError(_('Software Deployment not found: %s') % id)
+ else:
+ columns = [
+ 'id',
+ 'server_id',
+ 'config_id',
+ 'creation_time',
+ 'updated_time',
+ 'status',
+ 'status_reason',
+ 'input_values',
+ 'action',
+ ]
+ if parsed_args.long:
+ columns.append('output_values')
+ return columns, utils.get_item_properties(data, columns)
diff --git a/heatclient/tests/unit/osc/v1/test_software_deployment.py b/heatclient/tests/unit/osc/v1/test_software_deployment.py
index 36408b4..7157cf0 100644
--- a/heatclient/tests/unit/osc/v1/test_software_deployment.py
+++ b/heatclient/tests/unit/osc/v1/test_software_deployment.py
@@ -18,6 +18,7 @@ from openstackclient.common import exceptions as exc
from heatclient import exc as heat_exc
from heatclient.osc.v1 import software_deployment
from heatclient.tests.unit.osc.v1 import fakes as orchestration_fakes
+from heatclient.v1 import software_deployments
class TestDeployment(orchestration_fakes.TestOrchestrationv1):
@@ -136,3 +137,62 @@ class TestDeploymentList(TestDeployment):
self.mock_client.list.assert_called_with(**kwargs)
self.assertEqual(cols, columns)
+
+
+class TestDeploymentShow(TestDeployment):
+ get_response = {"software_deployment": {
+ "status": "IN_PROGRESS",
+ "server_id": "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5",
+ "config_id": "3d5ec2a8-7004-43b6-a7f6-542bdbe9d434",
+ "output_values": 'null',
+ "input_values": 'null',
+ "action": "CREATE",
+ "status_reason": "Deploy data available",
+ "id": "06e87bcc-33a2-4bce-aebd-533e698282d3",
+ "creation_time": "2015-01-31T15:12:36Z",
+ "updated_time": "2015-01-31T15:18:21Z"
+ }}
+
+ def setUp(self):
+ super(TestDeploymentShow, self).setUp()
+ self.cmd = software_deployment.ShowDeployment(self.app, None)
+
+ def test_deployment_show(self):
+ arglist = ['my_deployment']
+ cols = ['id', 'server_id', 'config_id', 'creation_time',
+ 'updated_time', 'status', 'status_reason',
+ 'input_values', 'action']
+ parsed_args = self.check_parser(self.cmd, arglist, [])
+ self.mock_client.get = mock.Mock(
+ return_value=software_deployments.SoftwareDeployment(
+ None, self.get_response))
+ columns, data = self.cmd.take_action(parsed_args)
+ self.mock_client.get.assert_called_with(**{
+ 'deployment_id': 'my_deployment',
+ })
+ self.assertEqual(cols, columns)
+
+ def test_deployment_show_long(self):
+ arglist = ['my_deployment', '--long']
+ cols = ['id', 'server_id', 'config_id', 'creation_time',
+ 'updated_time', 'status', 'status_reason',
+ 'input_values', 'action', 'output_values']
+ parsed_args = self.check_parser(self.cmd, arglist, [])
+ self.mock_client.get = mock.Mock(
+ return_value=software_deployments.SoftwareDeployment(
+ None, self.get_response))
+ columns, data = self.cmd.take_action(parsed_args)
+ self.mock_client.get.assert_called_once_with(**{
+ 'deployment_id': 'my_deployment',
+ })
+ self.assertEqual(cols, columns)
+
+ def test_deployment_not_found(self):
+ arglist = ['my_deployment']
+ parsed_args = self.check_parser(self.cmd, arglist, [])
+ self.mock_client.get = mock.Mock()
+ self.mock_client.get.side_effect = heat_exc.HTTPNotFound()
+ self.assertRaises(
+ exc.CommandError,
+ self.cmd.take_action,
+ parsed_args)
diff --git a/setup.cfg b/setup.cfg
index 9d86667..9d7dd2a 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -40,6 +40,7 @@ openstack.orchestration.v1 =
software_config_show = heatclient.osc.v1.software_config:ShowConfig
software_deployment_delete = heatclient.osc.v1.software_deployment:DeleteDeployment
software_deployment_list = heatclient.osc.v1.software_deployment:ListDeployment
+ software_deployment_show = heatclient.osc.v1.software_deployment:ShowDeployment
stack_abandon = heatclient.osc.v1.stack:AbandonStack
stack_adopt = heatclient.osc.v1.stack:AdoptStack
stack_check = heatclient.osc.v1.stack:CheckStack