Revision 402df383

b/lib/cmdlib/instance.py
993 993
                                         errors.ECODE_STATE)
994 994
            self.LogInfo("Chose IP %s from network %s", nic.ip, nobj.name)
995 995
          else:
996
            try:
997
              self.cfg.ReserveIp(net_uuid, nic.ip, ec_id)
998
            except errors.ReservationError:
999
              raise errors.OpPrereqError("IP address %s already in use"
1000
                                         " or does not belong to network %s" %
1001
                                         (nic.ip, nobj.name),
1002
                                         errors.ECODE_NOTUNIQUE)
996
            self.cfg.ReserveIp(net_uuid, nic.ip, ec_id)
1003 997

  
1004 998
      # net is None, ip None or given
1005 999
      elif self.op.conflicts_check:
......
2520 2514
                                       errors.ECODE_INVAL)
2521 2515
        # Reserve new IP if in the new network if any
2522 2516
        elif new_net_uuid:
2523
          try:
2524
            self.cfg.ReserveIp(new_net_uuid, new_ip, ec_id)
2525
            self.LogInfo("Reserving IP %s in network %s",
2526
                         new_ip, new_net_obj.name)
2527
          except errors.ReservationError:
2528
            raise errors.OpPrereqError("IP %s not available in network %s" %
2529
                                       (new_ip, new_net_obj.name),
2530
                                       errors.ECODE_NOTUNIQUE)
2517
          self.cfg.ReserveIp(new_net_uuid, new_ip, ec_id)
2531 2518
        # new network is None so check if new IP is a conflicting IP
2532 2519
        elif self.op.conflicts_check:
2533 2520
          _CheckForConflictingIp(self, new_ip, pnode)
2534 2521

  
2535 2522
      # release old IP if old network is not None
2536 2523
      if old_ip and old_net_uuid:
2537
        try:
2538
          self.cfg.ReleaseIp(old_net_uuid, old_ip, False, ec_id)
2539
        except errors.AddressPoolError:
2540
          logging.warning("Release IP %s not contained in network %s",
2541
                          old_ip, old_net_obj.name)
2524
        self.cfg.ReleaseIp(old_net_uuid, old_ip, False, ec_id)
2542 2525

  
2543 2526
    # there are no changes in (ip, network) tuple and old network is not None
2544 2527
    elif (old_net_uuid is not None and
b/lib/cmdlib/network.py
168 168
    if self.op.conflicts_check:
169 169
      for node in self.cfg.GetAllNodesInfo().values():
170 170
        for ip in [node.primary_ip, node.secondary_ip]:
171
          try:
172
            if self.pool.Contains(ip):
173
              self.pool.Reserve(ip, True)
174
              self.LogInfo("Reserved IP address of node '%s' (%s)",
175
                           node.name, ip)
176
          except errors.AddressPoolError, err:
177
            self.LogWarning("Cannot reserve IP address '%s' of node '%s': %s",
178
                            ip, node.name, err)
171
          if self.pool.Contains(ip):
172
            self.pool.Reserve(ip, True)
173
            self.LogInfo("Reserved IP address of node '%s' (%s)", node.name, ip)
179 174

  
180 175
      master_ip = self.cfg.GetClusterInfo().master_ip
181
      try:
182
        if self.pool.Contains(master_ip):
183
          self.pool.Reserve(master_ip, True)
184
          self.LogInfo("Reserved cluster master IP address (%s)", master_ip)
185
      except errors.AddressPoolError, err:
186
        self.LogWarning("Cannot reserve cluster master IP address (%s): %s",
187
                        master_ip, err)
176
      if self.pool.Contains(master_ip):
177
        self.pool.Reserve(master_ip, True)
178
        self.LogInfo("Reserved cluster master IP address (%s)", master_ip)
188 179

  
189 180
    if self.op.add_reserved_ips:
190 181
      for ip in self.op.add_reserved_ips:

Also available in: Unified diff