From 6c8e5177bc54ba215aad310094b1eefd6ce709cf Mon Sep 17 00:00:00 2001
From: npraveen35 <npraveen35@gmail.com>
Date: Fri, 18 Aug 2017 15:48:54 +0530
Subject: [PATCH] Neutron agent delete: remove the wrong argument

The take_action() function was calling get_agent() with the wrong
attribute, causing agent deletion to fail. It turns out calling
get_agent() isn't necessary; this removes the call entirely and moves
the 'ignore_missing' argument to the delete_agent() function.

Change-Id: Iaa3754a3be0765112f396495fa5fb2e32e6eae4e
Closes-Bug: #1711301
---
 openstackclient/network/v2/network_agent.py   |  3 +--
 .../unit/network/v2/test_network_agent.py     | 23 ++++++-------------
 2 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/openstackclient/network/v2/network_agent.py b/openstackclient/network/v2/network_agent.py
index ed4970a488..ba2a2633ba 100644
--- a/openstackclient/network/v2/network_agent.py
+++ b/openstackclient/network/v2/network_agent.py
@@ -134,8 +134,7 @@ class DeleteNetworkAgent(command.Command):
 
         for agent in parsed_args.network_agent:
             try:
-                obj = client.get_agent(agent, ignore_missing=False)
-                client.delete_agent(obj)
+                client.delete_agent(agent, ignore_missing=False)
             except Exception as e:
                 result += 1
                 LOG.error(_("Failed to delete network agent with "
diff --git a/openstackclient/tests/unit/network/v2/test_network_agent.py b/openstackclient/tests/unit/network/v2/test_network_agent.py
index 12e40cdbc8..709fb1c6cd 100644
--- a/openstackclient/tests/unit/network/v2/test_network_agent.py
+++ b/openstackclient/tests/unit/network/v2/test_network_agent.py
@@ -121,10 +121,6 @@ class TestDeleteNetworkAgent(TestNetworkAgent):
     def setUp(self):
         super(TestDeleteNetworkAgent, self).setUp()
         self.network.delete_agent = mock.Mock(return_value=None)
-        self.network.get_agent = (
-            network_fakes.FakeNetworkAgent.get_network_agents(
-                agents=self.network_agents)
-        )
 
         # Get the command object to test
         self.cmd = network_agent.DeleteNetworkAgent(self.app, self.namespace)
@@ -140,10 +136,8 @@ class TestDeleteNetworkAgent(TestNetworkAgent):
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 
         result = self.cmd.take_action(parsed_args)
-        self.network.get_agent.assert_called_once_with(
-            self.network_agents[0].id, ignore_missing=False)
         self.network.delete_agent.assert_called_once_with(
-            self.network_agents[0])
+            self.network_agents[0].id, ignore_missing=False)
         self.assertIsNone(result)
 
     def test_multi_network_agents_delete(self):
@@ -160,7 +154,7 @@ class TestDeleteNetworkAgent(TestNetworkAgent):
 
         calls = []
         for n in self.network_agents:
-            calls.append(call(n))
+            calls.append(call(n.id, ignore_missing=False))
         self.network.delete_agent.assert_has_calls(calls)
         self.assertIsNone(result)
 
@@ -175,9 +169,9 @@ class TestDeleteNetworkAgent(TestNetworkAgent):
         ]
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 
-        find_mock_result = [self.network_agents[0], exceptions.CommandError]
-        self.network.get_agent = (
-            mock.Mock(side_effect=find_mock_result)
+        delete_mock_result = [True, exceptions.CommandError]
+        self.network.delete_agent = (
+            mock.Mock(side_effect=delete_mock_result)
         )
 
         try:
@@ -186,13 +180,10 @@ class TestDeleteNetworkAgent(TestNetworkAgent):
         except exceptions.CommandError as e:
             self.assertEqual('1 of 2 network agents failed to delete.', str(e))
 
-        self.network.get_agent.assert_any_call(
+        self.network.delete_agent.assert_any_call(
             self.network_agents[0].id, ignore_missing=False)
-        self.network.get_agent.assert_any_call(
+        self.network.delete_agent.assert_any_call(
             'unexist_network_agent', ignore_missing=False)
-        self.network.delete_agent.assert_called_once_with(
-            self.network_agents[0]
-        )
 
 
 class TestListNetworkAgent(TestNetworkAgent):