/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.linux.tasks; import java.util.List; import org.apache.commons.lang.StringUtils; import com.emc.sa.service.linux.UnmountBlockVolumeHelper.VolumeSpec; import com.google.common.collect.Lists; import com.iwave.ext.linux.command.ListMultiPathEntriesCommand; import com.iwave.ext.linux.model.MultiPathEntry; public class FindMultiPathEntriesForMountPoint extends LinuxExecutionTask<Void> { private List<VolumeSpec> volumes; public FindMultiPathEntriesForMountPoint(List<VolumeSpec> volumes) { this.volumes = volumes; } @Override public Void executeTask() throws Exception { List<MultiPathEntry> allMultiPathEntries = executeCommand(new ListMultiPathEntriesCommand(), SHORT_TIMEOUT); for (VolumeSpec volume : volumes) { volume.multipathEntries = Lists.newArrayList(); String device = volume.mountPoint.getDevice(); if (StringUtils.startsWith(device, "/dev/mapper/")) { String deviceName = StringUtils.substringAfterLast(device, "/"); for (MultiPathEntry entry : allMultiPathEntries) { if (StringUtils.equals(deviceName, entry.getName())) { volume.multipathEntries.add(entry); break; } } } if (volume.multipathEntries.size() == 0) { warn("FindMultiPathEntriesForMountPoint.noMultipathEntries", volume.mountPoint.getPath()); } } return null; } }