diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 16c86bd961..3e6903b701 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -260,7 +260,7 @@ class AddServerSecurityGroup(command.Command):
             parsed_args.group,
         )
 
-        server.add_security_group(security_group.name)
+        server.add_security_group(security_group.id)
 
 
 class AddServerVolume(command.Command):
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index e487d57c5b..a98398eed5 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -168,6 +168,54 @@ class TestServerAddFloatingIP(TestServer):
         self.assertIsNone(result)
 
 
+class TestServerAddSecurityGroup(TestServer):
+
+    def setUp(self):
+        super(TestServerAddSecurityGroup, self).setUp()
+
+        self.security_group = \
+            compute_fakes.FakeSecurityGroup.create_one_security_group()
+        # This is the return value for utils.find_resource() for security group
+        self.security_groups_mock.get.return_value = self.security_group
+
+        attrs = {
+            'security_groups': [{'name': self.security_group.id}]
+        }
+        methods = {
+            'add_security_group': None,
+        }
+
+        self.server = compute_fakes.FakeServer.create_one_server(
+            attrs=attrs,
+            methods=methods
+        )
+        # This is the return value for utils.find_resource() for server
+        self.servers_mock.get.return_value = self.server
+
+        # Get the command object to test
+        self.cmd = server.AddServerSecurityGroup(self.app, None)
+
+    def test_server_add_security_group(self):
+        arglist = [
+            self.server.id,
+            self.security_group.id
+        ]
+        verifylist = [
+            ('server', self.server.id),
+            ('group', self.security_group.id),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+        result = self.cmd.take_action(parsed_args)
+        self.security_groups_mock.get.assert_called_with(
+            self.security_group.id,
+        )
+        self.servers_mock.get.assert_called_with(self.server.id)
+        self.server.add_security_group.assert_called_with(
+            self.security_group.id,
+        )
+        self.assertIsNone(result)
+
+
 class TestServerCreate(TestServer):
 
     columns = (