importPackage(java.lang);
importPackage(java.util);
importPackage(com.cloupia.service.cIM.inframgr.reservation);


var LOCKNAME = "Host-IP-Reservation";
var RES_TYPE = "HOST_IP_RESERVATION";

function registerUndoTask(mainSrId)
{
    // register undo task    
    var undoHandler = "custom_HANA_RollbackAllocateBM_v1";
    var undoContext = ctxt.createInnerTaskContext(undoHandler);
    var undoConfig = undoContext.getConfigObject();
    undoConfig.srId = mainSrId;

    ctxt.getChangeTracker().undoableResourceModified("Host-IP_Reservation", 
                ""+mainSrId,"Host-IP-Reservation by SR "+mainSrId,
                "Host-IP-Reservation by SR "+mainSrId,undoHandler,
                undoConfig);

}

function getFreeHost(usedHostSet,inputHostSet){
	inputHostSet.removeAll(usedHostSet);
	logger.addInfo("List of free host "+inputHostSet);
	var inputHostSetArray = inputHostSet.toArray();
	
	if(inputHostSetArray.length > 0){
		var id = input.cell_name+";"+inputHostSetArray[0];
		logger.addInfo("Reserving the host "+inputHostSetArray[0]);
		var reservation = new CapacityReservation();
        reservation.setSrId(ctxt.getSrId());
        reservation.setGroupId(0);
        reservation.setResourceType(RES_TYPE);
        reservation.setResourceId(id);
		var hostIPNameArr = id.split(","); 
		var hostNameArr = new java.lang.String(hostIPNameArr[0]).split(";");
		output.esxi_hostname = hostNameArr[1];
		output.esxi_ipaddress = hostIPNameArr[1];
		
		return reservation;
	}
	
	ctxt.setFailed("No free host available");
    ctxt.exit();
	
}

try
{
    CriticalSectionUtil.enterCriticalSection(ctxt, logger, LOCKNAME);
	var inputHostList = input.host_list;
	var resList = CapacityReservationPersistentUtil.getCapacityReservationByTypeAndGroup(RES_TYPE,0);
    var usedSet = new TreeSet(); 
	var inputHostSet = new TreeSet(); 
		
	var inputHostListArr = inputHostList.split("[\\s\\n;]");
	for (var i=0; i

Additional Links: