diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py
index 7cd877ef61..d7702a3f0f 100644
--- a/openstackclient/common/utils.py
+++ b/openstackclient/common/utils.py
@@ -74,6 +74,10 @@ def find_resource(manager, name_or_id):
             msg = "No %s with a name or ID of '%s' exists." % \
                 (manager.resource_class.__name__.lower(), name_or_id)
             raise exceptions.CommandError(msg)
+        if type(ex).__name__ == 'NoUniqueMatch':
+            msg = "More than one %s exists with the name '%s'." % \
+                (manager.resource_class.__name__.lower(), name_or_id)
+            raise exceptions.CommandError(msg)
         else:
             raise
 
diff --git a/openstackclient/tests/common/test_utils.py b/openstackclient/tests/common/test_utils.py
index 0ad4ca9bdb..3650746bc0 100644
--- a/openstackclient/tests/common/test_utils.py
+++ b/openstackclient/tests/common/test_utils.py
@@ -57,3 +57,75 @@ class TestUtils(test_utils.TestCase):
             self.assertRaises(exceptions.CommandError,
                               utils.get_password,
                               mock_stdin)
+
+
+class NoUniqueMatch(Exception):
+    pass
+
+
+class TestFindResource(test_utils.TestCase):
+    def setUp(self):
+        super(TestFindResource, self).setUp()
+        self.name = 'legos'
+        self.expected = mock.Mock()
+        self.manager = mock.Mock()
+        self.manager.resource_class = mock.Mock()
+        self.manager.resource_class.__name__ = 'lego'
+
+    def test_find_resource_get_int(self):
+        self.manager.get = mock.Mock(return_value=self.expected)
+        result = utils.find_resource(self.manager, 1)
+        self.assertEqual(self.expected, result)
+        self.manager.get.assert_called_with(1)
+
+    def test_find_resource_get_int_string(self):
+        self.manager.get = mock.Mock(return_value=self.expected)
+        result = utils.find_resource(self.manager, "2")
+        self.assertEqual(self.expected, result)
+        self.manager.get.assert_called_with(2)
+
+    def test_find_resource_get_uuid(self):
+        uuid = '9a0dc2a0-ad0d-11e3-a5e2-0800200c9a66'
+        self.manager.get = mock.Mock(return_value=self.expected)
+        result = utils.find_resource(self.manager, uuid)
+        self.assertEqual(self.expected, result)
+        self.manager.get.assert_called_with(uuid)
+
+    def test_find_resource_get_whatever(self):
+        self.manager.get = mock.Mock(return_value=self.expected)
+        result = utils.find_resource(self.manager, 'whatever')
+        self.assertEqual(self.expected, result)
+        self.manager.get.assert_called_with('whatever')
+
+    def test_find_resource_find(self):
+        self.manager.get = mock.Mock(side_effect=Exception('Boom!'))
+        self.manager.find = mock.Mock(return_value=self.expected)
+        result = utils.find_resource(self.manager, self.name)
+        self.assertEqual(self.expected, result)
+        self.manager.get.assert_called_with(self.name)
+        self.manager.find.assert_called_with(name=self.name)
+
+    def test_find_resource_find_not_found(self):
+        self.manager.get = mock.Mock(side_effect=Exception('Boom!'))
+        self.manager.find = mock.Mock(side_effect=
+                                      exceptions.NotFound(404, "2"))
+        result = self.assertRaises(exceptions.CommandError,
+                                   utils.find_resource,
+                                   self.manager,
+                                   self.name)
+        self.assertEqual("No lego with a name or ID of 'legos' exists.",
+                         str(result))
+        self.manager.get.assert_called_with(self.name)
+        self.manager.find.assert_called_with(display_name=self.name)
+
+    def test_find_resource_find_no_unique(self):
+        self.manager.get = mock.Mock(side_effect=Exception('Boom!'))
+        self.manager.find = mock.Mock(side_effect=NoUniqueMatch())
+        result = self.assertRaises(exceptions.CommandError,
+                                   utils.find_resource,
+                                   self.manager,
+                                   self.name)
+        self.assertEqual("More than one lego exists with the name 'legos'.",
+                         str(result))
+        self.manager.get.assert_called_with(self.name)
+        self.manager.find.assert_called_with(display_name=self.name)