diff --git a/fuelclient/cli/actions/nodegroup.py b/fuelclient/cli/actions/nodegroup.py index cd0a9a9..bd16378 100644 --- a/fuelclient/cli/actions/nodegroup.py +++ b/fuelclient/cli/actions/nodegroup.py @@ -63,7 +63,7 @@ class NodeGroupAction(Action): fuel --env 1 nodegroup --create --name "group 1" """ env_id = int(params.env) - NodeGroup.create(params.name, env_id) + data = NodeGroup.create(params.name, env_id) env = Environment(env_id) network_data = env.get_network_data() seg_type = network_data['networking_parameters'].get( @@ -77,6 +77,13 @@ class NodeGroupAction(Action): "situation.", file=sys.stderr) + self.serializer.print_to_output( + data, + u"Node group '{name}' with id={id} " + u"in environment {env} was created!" + .format(env=env_id, **data) + ) + def delete(self, params): """Delete the specified node groups fuel --env 1 nodegroup --delete --group 1 @@ -88,7 +95,12 @@ class NodeGroupAction(Action): raise ActionException( "Default node groups cannot be deleted." ) - NodeGroup.delete(n.id) + data = NodeGroup.delete(n.id) + self.serializer.print_to_output( + data, + u"Node group with id={id} was deleted!" + .format(id=n.id) + ) @check_all("env") def assign(self, params): diff --git a/fuelclient/tests/unit/v1/test_nodegroups.py b/fuelclient/tests/unit/v1/test_nodegroups.py index 55bef32..02d7768 100644 --- a/fuelclient/tests/unit/v1/test_nodegroups.py +++ b/fuelclient/tests/unit/v1/test_nodegroups.py @@ -14,6 +14,7 @@ import mock import requests_mock +from six import StringIO from fuelclient.tests import base from fuelclient.tests.utils import fake_env @@ -42,18 +43,27 @@ class TestNodeGroupActions(base.UnitTestCase): self.env['id'] ) - mreq.get('/api/v1/clusters/{0}/'.format(self.env['id']), - json={ - 'id': self.env['id'], - 'net_provider': self.env['net_provider'], - }) + mreq.get('/api/v1/clusters/{0}/'.format(self.env['id']), json={ + 'id': self.env['id'], + 'net_provider': self.env['net_provider'] + }) mpost = mreq.post(self.req_base_path, json={ 'id': self.ng['id'], 'name': self.ng['name'], }) mget = mreq.get(neutron_url, json={'networking_parameters': {}}) - self.execute(['fuel', 'nodegroup', '--create', - '--name', self.ng['name'], '--env', str(self.env['id'])]) + with mock.patch('sys.stdout', new=StringIO()) as m_stdout: + self.execute([ + 'fuel', 'nodegroup', '--create', + '--name', self.ng['name'], '--env', str(self.env['id']) + ]) + + msg = "Node group '{name}' with id={id} "\ + "in environment {cluster} was created!" + self.assertIn( + msg.format(cluster=self.env['id'], **self.ng), + m_stdout.getvalue() + ) call_data = mpost.last_request.json() self.assertEqual(self.env['id'], call_data['cluster_id']) @@ -66,8 +76,15 @@ class TestNodeGroupActions(base.UnitTestCase): mget = mreq.get(path, json={'name': 'test group'}) delete_path = self.req_base_path + str(self.env['id']) + '/' mdelete = mreq.delete(delete_path, status_code=204) - self.execute(['fuel', 'nodegroup', '--delete', '--group', - str(self.env['id'])]) + ngid = self.env['id'] + with mock.patch('sys.stdout', new=StringIO()) as m_stdout: + self.execute(['fuel', 'nodegroup', '--delete', '--group', + str(ngid)]) + msg = u"Node group with id={id} was deleted!" + self.assertIn( + msg.format(id=ngid), + m_stdout.getvalue() + ) self.assertTrue(mget.called) self.assertTrue(mdelete.called)