/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.vnxe.requests;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.vnxe.VNXeConstants;
import com.emc.storageos.vnxe.models.HostInitiatorCreateParam;
import com.emc.storageos.vnxe.models.HostInitiatorModifyParam;
import com.emc.storageos.vnxe.models.VNXeCommandResult;
import com.emc.storageos.vnxe.models.VNXeHostInitiator;
public class HostInitiatorRequest extends KHRequests<VNXeHostInitiator> {
private static final Logger _logger = LoggerFactory.getLogger(HostInitiatorRequest.class);
private static final String URL = "/api/instances/hostInitiator/";
private static final String URL_ALL = "/api/types/hostInitiator/instances";
private static final String MODIFY = "/action/modify";
private static final String FIELDS = "parentHost,nodeWWN,portWWN,type,initiatorId";
public HostInitiatorRequest(KHClient client) {
super(client);
_fields = FIELDS;
}
public VNXeHostInitiator get(String id) {
_url = URL + id;
return getDataForOneObject(VNXeHostInitiator.class);
}
public VNXeHostInitiator getByIQNorWWN(String initiatorId) {
_url = URL_ALL;
String filter = null;
if (_client.isUnity()) {
filter = VNXeConstants.INITIATORID_FILTER + "\"" + initiatorId + "\"";
} else {
filter = VNXeConstants.INITIATORID_FILTER + initiatorId;
}
setFilter(filter);
VNXeHostInitiator result = null;
List<VNXeHostInitiator> initList = getDataForObjects(VNXeHostInitiator.class);
// it should just return 1
if (initList != null && !initList.isEmpty()) {
result = initList.get(0);
} else {
_logger.info("No HostInitiator found using iqn: {}", initiatorId);
}
return result;
}
public List<VNXeHostInitiator> getByHostId(String hostId) {
_url = URL_ALL;
String filter = null;
if (_client.isUnity()) {
filter = VNXeConstants.PARENT_HOST_FILTER + "\"" + hostId + "\"";
} else {
filter = VNXeConstants.PARENT_HOST_FILTER + hostId;
}
setFilter(filter);
return getDataForObjects(VNXeHostInitiator.class);
}
public VNXeCommandResult createHostInitiator(HostInitiatorCreateParam param) {
_url = URL_ALL;
return postRequestSync(param);
}
/**
* Modify the host initiator
*
* @param param The parameters to modify the host initiator.
* @param id The host initiator Id
* @return VNXeCommandResult, indicating if the command is successful
*/
public VNXeCommandResult modifyHostInitiator(HostInitiatorModifyParam param, String id) {
_url = URL + id + MODIFY;
return postRequestSync(param);
}
}