/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.linux.tasks; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Set; import com.google.common.collect.Sets; import com.iwave.ext.linux.command.iscsi.ListIScsiHostsCommand; import com.iwave.ext.linux.model.IScsiHost; import com.iwave.ext.linux.model.IScsiSession; public class FindIScsiInitiators extends LinuxExecutionTask<List<IScsiHost>> { private Set<String> iqns; public FindIScsiInitiators(Collection<String> iqns) { this.iqns = Sets.newHashSet(iqns); } @Override public List<IScsiHost> executeTask() throws Exception { List<IScsiHost> hosts = executeCommand(new ListIScsiHostsCommand(), SHORT_TIMEOUT); Iterator<IScsiHost> iter = hosts.iterator(); while (iter.hasNext()) { IScsiHost host = iter.next(); if (!isMatch(host)) { iter.remove(); } } return hosts; } private boolean isMatch(IScsiHost host) { for (IScsiSession session : host.getSessions()) { if (iqns.contains(session.getIfaceInitiatorName())) { return true; } } return false; } }