Merge "nova security-group-* should support uuid as input"

This commit is contained in:
Jenkins 2013-12-03 15:35:26 +00:00 committed by Gerrit Code Review
commit 5b3a94aba8
2 changed files with 37 additions and 2 deletions
novaclient
tests/v1_1
v1_1

@ -30,6 +30,7 @@ from novaclient.openstack.common import timeutils
import novaclient.shell
from novaclient.tests.v1_1 import fakes
from novaclient.tests import utils
import novaclient.v1_1.shell
class ShellFixture(fixtures.Fixture):
@ -1820,3 +1821,35 @@ class ShellTest(utils.TestCase):
self.assert_called('GET',
'/os-migrations?cell_name=child1&host=host1'
'&status=finished')
class GetSecgroupTest(utils.TestCase):
def test_with_integer(self):
cs = mock.Mock(**{
'security_groups.get.return_value': 'sec_group',
'security_groups.list.return_value': [],
})
result = novaclient.v1_1.shell._get_secgroup(cs, '1')
self.assertEqual(result, 'sec_group')
cs.security_groups.get.assert_called_once_with('1')
def test_with_uuid(self):
cs = mock.Mock(**{
'security_groups.get.return_value': 'sec_group',
'security_groups.list.return_value': [],
})
result = novaclient.v1_1.shell._get_secgroup(
cs, 'c0c32459-dc5f-44dc-9a0a-473b28bac831')
self.assertEqual(result, 'sec_group')
cs.security_groups.get.assert_called_once_with(
'c0c32459-dc5f-44dc-9a0a-473b28bac831')
def test_with_an_nonexisting_name(self):
cs = mock.Mock(**{
'security_groups.get.return_value': 'sec_group',
'security_groups.list.return_value': [],
})
self.assertRaises(exceptions.CommandError,
novaclient.v1_1.shell._get_secgroup,
cs,
'abc')

@ -33,6 +33,7 @@ import six
from novaclient import exceptions
from novaclient.openstack.common import strutils
from novaclient.openstack.common import timeutils
from novaclient.openstack.common import uuidutils
from novaclient import utils
from novaclient.v1_1 import availability_zones
from novaclient.v1_1 import quotas
@ -2108,8 +2109,9 @@ def _print_secgroups(secgroups):
def _get_secgroup(cs, secgroup):
# Check secgroup is an ID
if utils.is_integer_like(strutils.safe_encode(secgroup)):
# Check secgroup is an ID (nova-network) or UUID (neutron)
if (utils.is_integer_like(strutils.safe_encode(secgroup))
or uuidutils.is_uuid_like(secgroup)):
try:
return cs.security_groups.get(secgroup)
except exceptions.NotFound: