Revision 42f25b0b lib/cmdlib.py

b/lib/cmdlib.py
5733 5733
  """
5734 5734
  logging.info("Removing block devices for instance %s", instance.name)
5735 5735

  
5736
  if not _RemoveDisks(lu, instance):
5736
  if not _RemoveDisks(lu, instance, ignore_failures=ignore_failures):
5737 5737
    if not ignore_failures:
5738 5738
      raise errors.OpExecError("Can't remove instance's disks")
5739 5739
    feedback_fn("Warning: can't remove instance's disks")
......
6862 6862
      _CreateBlockDev(lu, node, instance, device, f_create, info, f_create)
6863 6863

  
6864 6864

  
6865
def _RemoveDisks(lu, instance, target_node=None):
6865
def _RemoveDisks(lu, instance, target_node=None, ignore_failures=False):
6866 6866
  """Remove all disks for an instance.
6867 6867

  
6868 6868
  This abstracts away some work from `AddInstance()` and
......
6883 6883
  logging.info("Removing block devices for instance %s", instance.name)
6884 6884

  
6885 6885
  all_result = True
6886
  ports_to_release = set()
6886 6887
  for device in instance.disks:
6887 6888
    if target_node:
6888 6889
      edata = [(target_node, device)]
......
6898 6899

  
6899 6900
    # if this is a DRBD disk, return its port to the pool
6900 6901
    if device.dev_type in constants.LDS_DRBD:
6901
      tcp_port = device.logical_id[2]
6902
      lu.cfg.AddTcpUdpPort(tcp_port)
6902
      ports_to_release.add(device.logical_id[2])
6903

  
6904
  if all_result or ignore_failures:
6905
    for port in ports_to_release:
6906
      lu.cfg.AddTcpUdpPort(port)
6903 6907

  
6904 6908
  if instance.disk_template == constants.DT_FILE:
6905 6909
    file_storage_dir = os.path.dirname(instance.disks[0].logical_id[1])

Also available in: Unified diff