diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 38458b972e9ea343a9fc077e9a9929fa02f62ed1..b627325450497c2d3f4c84161bc0f2fed31a5166 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -15685,18 +15685,22 @@ class LUNetworkAdd(LogicalUnit):
       for node in self.cfg.GetAllNodesInfo().values():
         for ip in [node.primary_ip, node.secondary_ip]:
           try:
-            pool.Reserve(ip)
-            self.LogInfo("Reserved node %s's IP (%s)", node.name, ip)
-
+            if pool.Contains(ip):
+              pool.Reserve(ip)
+              self.LogInfo("Reserved IP address of node '%s' (%s)",
+                           node.name, ip)
           except errors.AddressPoolError:
-            pass
+            self.LogWarning("Cannot reserve IP address of node '%s' (%s)",
+                            node.name, ip)
 
       master_ip = self.cfg.GetClusterInfo().master_ip
       try:
-        pool.Reserve(master_ip)
-        self.LogInfo("Reserved cluster master IP (%s)", master_ip)
+        if pool.Contains(master_ip):
+          pool.Reserve(master_ip)
+          self.LogInfo("Reserved cluster master IP address (%s)", master_ip)
       except errors.AddressPoolError:
-        pass
+        self.LogWarning("Cannot reserve cluster master IP address (%s)",
+                        master_ip)
 
     if self.op.add_reserved_ips:
       for ip in self.op.add_reserved_ips: