/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.service.hpux; import java.net.URI; import java.util.List; import com.emc.hpux.HpuxSystem; import com.emc.sa.engine.bind.Param; import com.emc.sa.service.ServiceParams; import com.emc.sa.service.vipr.ViPRService; import com.emc.sa.service.vipr.block.BlockStorageUtils; import com.emc.storageos.db.client.model.Host; import com.emc.storageos.db.client.model.Initiator; import com.google.common.collect.Lists; public abstract class HpuxService extends ViPRService { @Param(ServiceParams.HOST) protected URI hostId; protected Host host; protected List<Host> hosts; protected List<Initiator> hostPorts = Lists.newArrayList(); protected HpuxSystem hpuxSystem; public HpuxSystem getHpuxSystem() { return hpuxSystem; } protected void initHost() { if (BlockStorageUtils.isCluster(hostId)) { throw new IllegalStateException("Hpux Services do not support clustering"); } host = getModelClient().hosts().findById(hostId); if (host == null) { throw new IllegalArgumentException("Host " + hostId + " not found"); } hosts = Lists.newArrayList(); logInfo("hpux.service.target.host", host.getLabel()); hostPorts = getModelClient().initiators().findByHost(host.getId()); hpuxSystem = convertHost(host); } @Override public void init() throws Exception { super.init(); initHost(); } protected void acquireHostsLock() { acquireHostLock(host, null); } public static HpuxSystem convertHost(Host host) { HpuxSystem cli = new HpuxSystem(); cli.setHost(host.getHostName()); cli.setPort(host.getPortNumber()); cli.setUsername(host.getUsername()); cli.setPassword(host.getPassword()); cli.setHostId(host.getId()); return cli; } }