Merge "Add OpenstackClient plugin for software deployment show"
This commit is contained in:
commit
7ee16eed9f
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue