/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.iwave.ext.linux.command.parser; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import com.google.common.collect.Lists; import com.iwave.ext.linux.model.IScsiTarget; public class DiscoverIScsiTargetsParser { private static final Pattern ISCSI_TARGETS = Pattern.compile("^([0-9.:,]+)\\s+(.*)$"); private static final Pattern PORTAL = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3}:\\d+,\\d+"); public List<IScsiTarget> parseTargets(String text) { List<IScsiTarget> targets = Lists.newArrayList(); for (String line : StringUtils.split(text, "\n")) { Matcher m = ISCSI_TARGETS.matcher(line); if (m.find()) { String portal = m.group(1); String iqn = m.group(2); if (isValidPortal(portal)) { targets.add(new IScsiTarget(iqn, portal, null)); } } } return targets; } private boolean isValidPortal(String value) { return PORTAL.matcher(value).matches(); } }