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